int __cdecl _rmdir ( const char *path ) { ParamBlockRec parm; HParamBlockRec hparm; OSErr osErr; char stPath[256]; if (!*path || strlen(path) > 255) { errno = ENOENT; return -1; } strcpy(stPath, path); _c2pstr(stPath); memset(&hparm, '\0', sizeof(HParamBlockRec)); hparm.fileParam.ioNamePtr = stPath; /* hparm.fileParam.ioVRefNum = 0; */ /* hparm.fileParam.ioFDirIndex = 0; */ if ((osErr = PBHGetFInfoSync(&hparm)) == fnfErr) { memset(&parm, '\0', sizeof(ParamBlockRec)); parm.fileParam.ioNamePtr = stPath; /* parm.fileParam.ioVRefNum = 0; */ osErr = PBDeleteSync(&parm); } else if (!osErr) { osErr = fnfErr; /* Can't rmdir a file */ } if (osErr) { /* error occured -- map error code and return */ _dosmaperr(osErr); return -1; } return 0; }
int _CALLTYPE1 _unlink ( const char *path ) { ParamBlockRec parm; OSErr osErr; char stPath[256]; if (!*path || strlen(path) > 255) { errno = ENOENT; return -1; } strcpy(stPath, path); _c2pstr(stPath); memset(&parm, '\0', sizeof(ParamBlockRec)); parm.fileParam.ioNamePtr = stPath; /* parm.fileParam.ioVRefNum = 0; */ /* parm.fileParam.ioFDirIndex = 0; */ if (!(osErr = PBGetFInfoSync(&parm))) /* Make sure it's not a dir */ { memset(&parm, '\0', sizeof(ParamBlockRec)); parm.ioParam.ioNamePtr = stPath; /* parm.ioParam.ioVRefNum = 0; */ osErr = PBDeleteSync(&parm); } if (osErr) { /* error occured -- map error code and return */ _dosmaperr(osErr); return -1; } return 0; }