--- np2/macosx/macossub.cpp 2003/11/03 10:19:43 1.2 +++ 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); @@ -156,30 +159,21 @@ bool getLongFileName(char* dst, const ch FSSpec fss; Str255 fname; FSRef fref; - char buffer[1024]; - char *ret, *val; + HFSUniStr255 name; if (*path == '\0') { return(false); } mkstr255(fname, path); - if (FSMakeFSSpec(0, 0, fname, &fss) != noErr) { - return(false); - } - if (FSpMakeFSRef(&fss, &fref) != noErr) { + FSMakeFSSpec(0, 0, fname, &fss); + FSpMakeFSRef(&fss, &fref); + if (FSGetCatalogInfo(&fref, kFSCatInfoNone, NULL, &name, NULL, NULL) != noErr) { return(false); } - if (FSRefMakePath(&fref, (UInt8*)buffer, 1024) != noErr) { + char2str(dst, 512, name.unicode, name.length); + if (!dst) { return(false); } - val = buffer; - ret = val; - while(*val != '\0') { - if (*val++ == '/') { - ret = val; - } - } - strcpy(dst, ret); return(true); } @@ -192,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; @@ -224,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: @@ -235,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; @@ -254,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); @@ -270,7 +265,7 @@ ffn_err: return(FAILURE); } -void file_listclose(void *hdl) { +void file_listclose(FLISTH hdl) { if (hdl) { _MFREE(hdl); @@ -278,8 +273,8 @@ void file_listclose(void *hdl) { } bool getLongFileName(char* dst, const char* path) { + return(false); } #endif -