mirror of
https://github.com/depp/syncfiles.git
synced 2024-11-26 00:49:17 +00:00
Add Mac OS sync tool
GitOrigin-RevId: 2f0f21e037dd7c00fffd0827e80438a5de1968d7
This commit is contained in:
commit
fa2f0d12a0
76
Makefile
Normal file
76
Makefile
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
Sym-PPC = -sym Full
|
||||||
|
Sym-68K = -sym Full
|
||||||
|
|
||||||
|
COptions = -proto strict
|
||||||
|
COptions-PPC = {COptions} {Sym-PPC}
|
||||||
|
COptions-68K = {COptions} {Sym-68K}
|
||||||
|
|
||||||
|
### Source Files ###
|
||||||
|
|
||||||
|
SrcFiles = ∂
|
||||||
|
sync.c
|
||||||
|
|
||||||
|
### Object Files ###
|
||||||
|
|
||||||
|
ObjFiles-PPC = ∂
|
||||||
|
sync.c.x
|
||||||
|
|
||||||
|
ObjFiles-68K = ∂
|
||||||
|
sync.c.o
|
||||||
|
|
||||||
|
### Libraries ###
|
||||||
|
|
||||||
|
LibFiles-PPC = ∂
|
||||||
|
"{SharedLibraries}InterfaceLib" ∂
|
||||||
|
"{SharedLibraries}StdCLib" ∂
|
||||||
|
"{PPCLibraries}StdCRuntime.o" ∂
|
||||||
|
"{PPCLibraries}PPCCRuntime.o" ∂
|
||||||
|
"{PPCLibraries}PPCToolLibs.o"
|
||||||
|
|
||||||
|
LibFiles-68K = ∂
|
||||||
|
"{Libraries}Stubs.o" ∂
|
||||||
|
"{CLibraries}StdCLib.o" ∂
|
||||||
|
"{Libraries}MacRuntime.o" ∂
|
||||||
|
"{Libraries}IntEnv.o" ∂
|
||||||
|
"{Libraries}ToolLibs.o" ∂
|
||||||
|
"{Libraries}Interface.o"
|
||||||
|
|
||||||
|
### Default Rules ###
|
||||||
|
|
||||||
|
.c.x ƒ .c
|
||||||
|
{PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {COptions-PPC}
|
||||||
|
|
||||||
|
.c.o ƒ .c
|
||||||
|
{C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions-68K}
|
||||||
|
|
||||||
|
### Build Rules ###
|
||||||
|
|
||||||
|
SyncFiles ƒƒ {ObjFiles-PPC} {LibFiles-PPC}
|
||||||
|
PPCLink ∂
|
||||||
|
-o {Targ} ∂
|
||||||
|
{ObjFiles-PPC} ∂
|
||||||
|
{LibFiles-PPC} ∂
|
||||||
|
{Sym-PPC} ∂
|
||||||
|
-mf -d ∂
|
||||||
|
-t 'MPST' ∂
|
||||||
|
-c 'MPS '
|
||||||
|
|
||||||
|
SyncFiles ƒƒ {ObjFiles-68K} {LibFiles-68K}
|
||||||
|
Link ∂
|
||||||
|
-o {Targ} ∂
|
||||||
|
{ObjFiles-68K} ∂
|
||||||
|
{LibFiles-68K} ∂
|
||||||
|
{Sym-68K} ∂
|
||||||
|
-mf -d ∂
|
||||||
|
-t 'MPST' ∂
|
||||||
|
-c 'MPS '
|
||||||
|
|
||||||
|
### Build this target to generate "include file" dependencies. ###
|
||||||
|
|
||||||
|
Dependencies ƒ $OutOfDate
|
||||||
|
MakeDepend ∂
|
||||||
|
-append {MAKEFILE} ∂
|
||||||
|
-ignore "{CIncludes}" ∂
|
||||||
|
-objext .x ∂
|
||||||
|
-objext .o ∂
|
||||||
|
{SrcFiles}
|
74
sync.c
Normal file
74
sync.c
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#include <Files.h>
|
||||||
|
#include <MacMemory.h>
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
static int c2pstr(Str255 ostr, const char *istr) {
|
||||||
|
size_t n = strlen(istr);
|
||||||
|
if (n > 255) {
|
||||||
|
fprintf(stderr, "## Error: path too long: %s\n", istr);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
ostr[0] = n;
|
||||||
|
memcpy(ostr + 1, istr, n);
|
||||||
|
memset(ostr + 1 + n, 0, 255 - n);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int list_dir(const char *dirpath) {
|
||||||
|
unsigned char path[257];
|
||||||
|
WDPBRec wd;
|
||||||
|
CInfoPBRec ci;
|
||||||
|
OSErr err;
|
||||||
|
int i, result = 0;
|
||||||
|
|
||||||
|
if (c2pstr(path, dirpath)) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
memset(&wd, 0, sizeof(wd));
|
||||||
|
wd.ioNamePtr = path;
|
||||||
|
err = PBOpenWDSync(&wd);
|
||||||
|
if (err != 0) {
|
||||||
|
fprintf(stderr, "## Error: could not open directory '%s' (err = %d)\n", dirpath, err);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
printf("Path: %s\n", dirpath);
|
||||||
|
printf(" VREF: %d\n", wd.ioVRefNum);
|
||||||
|
|
||||||
|
for (i = 1; i < 10; i++) {
|
||||||
|
memset(&ci, 0, sizeof(ci));
|
||||||
|
ci.dirInfo.ioNamePtr = path;
|
||||||
|
ci.dirInfo.ioVRefNum = wd.ioVRefNum;
|
||||||
|
ci.dirInfo.ioFDirIndex = i;
|
||||||
|
err = PBGetCatInfoSync(&ci);
|
||||||
|
if (err != 0) {
|
||||||
|
printf(" err\n");
|
||||||
|
if (err != fnfErr) {
|
||||||
|
result = 1;
|
||||||
|
fprintf(stderr, "## Error: could not list directory '%s' (err = %d)\n", dirpath, err);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
path[path[0] + 1] = '\0';
|
||||||
|
printf(" File: '%s'\n", path + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
err = PBCloseWDSync(&wd);
|
||||||
|
if (err != 0) {
|
||||||
|
fprintf(stderr, "## Error: could not close directory '%s' (err = %d)\n", dirpath, err);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv, char **envp) {
|
||||||
|
int i;
|
||||||
|
(void)envp;
|
||||||
|
for (i = 1; i < argc; i++) {
|
||||||
|
if (list_dir(argv[i])) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user