--- np2/macos9/macossub.cpp 2004/01/09 04:36:02 1.3 +++ np2/macos9/macossub.cpp 2004/01/09 07:27:15 1.5 @@ -75,7 +75,7 @@ static void char2str(char *dst, int size void *file_list1st(const char *dir, FLINFO *fli) { - void *ret; + FLISTH ret; Str255 fname; FSSpec fss; FSRef fsr; @@ -104,7 +104,7 @@ ff1_err1: return(NULL); } -BOOL file_listnext(void *hdl, FLINFO *fli) { +BOOL file_listnext(FLISTH hdl, FLINFO *fli) { FLHDL flhdl; ItemCount count; @@ -130,12 +130,13 @@ BOOL file_listnext(void *hdl, FLINFO *fl if (fli) { char2str(fli->path, sizeof(fli->path), flhdl->name.unicode, flhdl->name.length); - fli->size = (UINT32)flhdl->fsci.dataLogicalSize; if (flhdl->fsci.nodeFlags & kFSNodeIsDirectoryMask) { fli->attr = FILEATTR_DIRECTORY; + fli->size = 0; } else { fli->attr = FILEATTR_ARCHIVE; + fli->size = (UINT32)flhdl->fsci.dataLogicalSize; } } return(SUCCESS); @@ -144,7 +145,7 @@ ffn_err: return(FAILURE); } -void file_listclose(void *hdl) { +void file_listclose(FLISTH hdl) { if (hdl) { FSCloseIterator(((FLHDL)hdl)->fsi); @@ -152,6 +153,30 @@ void file_listclose(void *hdl) { } } +bool getLongFileName(char* dst, const char* path) { + + FSSpec fss; + Str255 fname; + FSRef fref; + HFSUniStr255 name; + + if (*path == '\0') { + return(false); + } + mkstr255(fname, path); + FSMakeFSSpec(0, 0, fname, &fss); + FSpMakeFSRef(&fss, &fref); + if (FSGetCatalogInfo(&fref, kFSCatInfoNone, NULL, &name, NULL, NULL) + != noErr) { + return(false); + } + char2str(dst, 512, name.unicode, name.length); + if (!dst) { + return(false); + } + return(true); +} + #else typedef struct { @@ -161,7 +186,7 @@ typedef struct { long tagid; } _FLHDL, *FLHDL; -void *file_list1st(const char *dir, FLINFO *fli) { +FLISTH file_list1st(const char *dir, FLINFO *fli) { Str255 fname; FSSpec fss; @@ -193,8 +218,8 @@ void *file_list1st(const char *dir, FLIN } ret->eoff = FALSE; ret->index = 1; - if (file_listnext((void *)ret, fli) == SUCCESS) { - return((void *)ret); + if (file_listnext((FLISTH)ret, fli) == SUCCESS) { + return((FLISTH)ret); } ff1_err2: @@ -204,7 +229,7 @@ ff1_err1: return(NULL); } -BOOL file_listnext(void *hdl, FLINFO *fli) { +BOOL file_listnext(FLISTH hdl, FLINFO *fli) { FLHDL flhdl; Str255 fname; @@ -225,12 +250,13 @@ BOOL file_listnext(void *hdl, FLINFO *fl flhdl->index++; if (fli) { mkcstr(fli->path, sizeof(fli->path), fname); - fli->size = 0; if (flhdl->pb.hFileInfo.ioFlAttrib & 0x10) { fli->attr = FILEATTR_DIRECTORY; + fli->size = 0; } else { fli->attr = FILEATTR_ARCHIVE; + fli->size = flhdl->pb.hFileInfo.ioFlLgLen; } } return(SUCCESS); @@ -239,12 +265,16 @@ ffn_err: return(FAILURE); } -void file_listclose(void *hdl) { +void file_listclose(FLISTH hdl) { if (hdl) { _MFREE(hdl); } } +bool getLongFileName(char* dst, const char* path) { + + return(false); +} #endif