--- np2/macosx/macossub.cpp 2003/10/16 17:59:36 1.1 +++ np2/macosx/macossub.cpp 2004/01/09 07:27:15 1.5 @@ -20,7 +20,7 @@ UINT32 macos_gettick(void) { UnsignedWide current; Microseconds(¤t); - return((UINT32)(current.lo / 1000)); + return((UINT32)((current.hi * 4294967) + (current.lo / 1000))); } @@ -69,13 +69,15 @@ static void char2str(char *dst, int size CFStringRef cfsr; cfsr = CFStringCreateWithCharacters(NULL, uni, unicnt); - CFStringGetCString(cfsr, dst, size, CFStringGetSystemEncoding()); - CFRelease(cfsr); + if (cfsr) { + CFStringGetCString(cfsr, dst, size, CFStringGetSystemEncoding()); + CFRelease(cfsr); + } } -void *file_list1st(const char *dir, FLDATA *fl) { +void *file_list1st(const char *dir, FLINFO *fli) { - void *ret; + FLISTH ret; Str255 fname; FSSpec fss; FSRef fsr; @@ -93,7 +95,7 @@ void *file_list1st(const char *dir, FLDA } ((FLHDL)ret)->eoff = FALSE; ((FLHDL)ret)->fsi = fsi; - if (file_listnext(ret, fl) == SUCCESS) { + if (file_listnext(ret, fli) == SUCCESS) { return(ret); } @@ -104,7 +106,7 @@ ff1_err1: return(NULL); } -BOOL file_listnext(void *hdl, FLDATA *fl) { +BOOL file_listnext(FLISTH hdl, FLINFO *fli) { FLHDL flhdl; ItemCount count; @@ -127,15 +129,16 @@ BOOL file_listnext(void *hdl, FLDATA *fl flhdl->eoff = TRUE; goto ffn_err; } - if (fl) { - char2str(fl->path, sizeof(fl->path), + if (fli) { + char2str(fli->path, sizeof(fli->path), flhdl->name.unicode, flhdl->name.length); - fl->size = (UINT32)flhdl->fsci.dataLogicalSize; if (flhdl->fsci.nodeFlags & kFSNodeIsDirectoryMask) { - fl->attr = FILEATTR_DIRECTORY; + fli->attr = FILEATTR_DIRECTORY; + fli->size = 0; } else { - fl->attr = FILEATTR_ARCHIVE; + fli->attr = FILEATTR_ARCHIVE; + fli->size = (UINT32)flhdl->fsci.dataLogicalSize; } } return(SUCCESS); @@ -144,7 +147,7 @@ ffn_err: return(FAILURE); } -void file_listclose(void *hdl) { +void file_listclose(FLISTH hdl) { if (hdl) { FSCloseIterator(((FLHDL)hdl)->fsi); @@ -152,6 +155,28 @@ 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, FLDATA *fl) { +FLISTH file_list1st(const char *dir, FLINFO *fli) { Str255 fname; FSSpec fss; @@ -193,8 +218,8 @@ void *file_list1st(const char *dir, FLDA } ret->eoff = FALSE; ret->index = 1; - if (file_listnext((void *)ret, fl) == 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, FLDATA *fl) { +BOOL file_listnext(FLISTH hdl, FLINFO *fli) { FLHDL flhdl; Str255 fname; @@ -223,14 +248,15 @@ BOOL file_listnext(void *hdl, FLDATA *fl goto ffn_err; } flhdl->index++; - if (fl) { - mkcstr(fl->path, sizeof(fl->path), fname); - fl->size = 0; + if (fli) { + mkcstr(fli->path, sizeof(fli->path), fname); if (flhdl->pb.hFileInfo.ioFlAttrib & 0x10) { - fl->attr = FILEATTR_DIRECTORY; + fli->attr = FILEATTR_DIRECTORY; + fli->size = 0; } else { - fl->attr = FILEATTR_ARCHIVE; + 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