Пример #1
0
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;

}
Пример #2
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;
		
}