--- np2/macos9/dosio.cpp 2004/01/10 17:24:01 1.2 +++ np2/macos9/dosio.cpp 2005/02/14 06:25:31 1.5 @@ -229,6 +229,7 @@ short file_attr(const char *path) { FSSpec fss; FSRef fsr; FSCatalogInfo fsci; + short ret; mkstr255(fname, path); if ((FSMakeFSSpec(0, 0, fname, &fss) != noErr) || @@ -237,16 +238,21 @@ short file_attr(const char *path) { NULL, NULL, NULL) != noErr)) { return(-1); } - else if (fsci.nodeFlags & kFSNodeIsDirectoryMask) { - return(FILEATTR_DIRECTORY); + if (fsci.nodeFlags & kFSNodeIsDirectoryMask) { + ret = FILEATTR_DIRECTORY; } else { - return(FILEATTR_ARCHIVE); + ret = FILEATTR_ARCHIVE; } + if (fsci.nodeFlags & kFSNodeLockedMask) { + ret |= FILEATTR_READONLY; + } + return(ret); #else Str255 fname; FSSpec fss; CInfoPBRec pb; + short ret; mkstr255(fname, path); FSMakeFSSpec(0, 0, fname, &fss); @@ -262,12 +268,16 @@ short file_attr(const char *path) { if (PBGetCatInfo(&pb, false) != noErr) { return(-1); } - if (pb.hFileInfo.ioFlAttrib & 0x10) { - return(FILEATTR_DIRECTORY); + if (pb.hFileInfo.ioFlAttrib & ioDirMask) { + ret = FILEATTR_DIRECTORY; } else { - return(FILEATTR_ARCHIVE); + ret = FILEATTR_ARCHIVE; + } + if (pb.hFileInfo.ioFlAttrib & 0x01) { + ret |= FILEATTR_READONLY; } + return(ret); #endif } @@ -422,6 +432,9 @@ BOOL file_listnext(FLISTH hdl, FLINFO *f fli->size = (UINT32)flhdl->fsci.dataLogicalSize; dt = &flhdl->fsci.contentModDate; } + if (flhdl->fsci.nodeFlags & kFSNodeLockedMask) { + fli->attr |= FILEATTR_READONLY; + } cnvdatetime(dt, &fli->date, &fli->time); char2str(fli->path, sizeof(fli->path), flhdl->name.unicode, flhdl->name.length); @@ -538,7 +551,7 @@ BOOL file_listnext(FLISTH hdl, FLINFO *f flhdl->index++; if (fli) { fli->caps = FLICAPS_SIZE | FLICAPS_ATTR | FLICAPS_DATE | FLICAPS_TIME; - if (flhdl->pb.hFileInfo.ioFlAttrib & 0x10) { + if (flhdl->pb.hFileInfo.ioFlAttrib & ioDirMask) { fli->attr = FILEATTR_DIRECTORY; fli->size = 0; dt = flhdl->pb.dirInfo.ioDrCrDat; @@ -548,6 +561,9 @@ BOOL file_listnext(FLISTH hdl, FLINFO *f fli->size = flhdl->pb.hFileInfo.ioFlLgLen; dt = flhdl->pb.hFileInfo.ioFlMdDat; } + if (flhdl->pb.hFileInfo.ioFlAttrib & 0x01) { + fli->attr |= FILEATTR_READONLY; + } cnvdatetime(dt, &fli->date, &fli->time); mkcstr(fli->path, sizeof(fli->path), fname); } @@ -596,9 +612,9 @@ void file_catname(char *path, const char } } -char *file_getname(char *path) { +char *file_getname(const char *path) { - char *ret; +const char *ret; ret = path; while(*path != '\0') { @@ -606,7 +622,7 @@ char *file_getname(char *path) { ret = path; } } - return(ret); + return((char *)ret); } void file_cutname(char *path) { @@ -617,10 +633,10 @@ void file_cutname(char *path) { p[0] = '\0'; } -char *file_getext(char *path) { +char *file_getext(const char *path) { - char *p; - char *q; +const char *p; +const char *q; p = file_getname(path); q = NULL; @@ -633,7 +649,7 @@ char *file_getext(char *path) { if (!q) { q = p; } - return(q); + return((char *)q); } void file_cutext(char *path) {