Esempio n. 1
0
void test_hcreateresfile(void)
{
    OSErr err;

    // will 0, 0 work on real macos?

    HDelete(0, 0, fname);
    HCreateResFile(0, 0, fname);
    if ( (err = ResError()) != 0) {
        fprintf(stderr, "HCreateResFile failed (File does not exist): %d\n", err);
        exit(1);
    }

    // Verify it doesn't fail if the file/fork already exist.
    HCreateResFile(0, 0, fname);
    if ( (err = ResError()) != 0) {
        fprintf(stderr, "HCreateResFile (File/Fork exist) failed: %d\n", err);
        exit(2);
    }

    // Verify it doesn't fail if the file exists w/o a resource fork.
    HDelete(0, 0, fname);
    HCreate(0, 0, fname, 'TEST', 'BINA');
    HCreateResFile(0, 0, fname);
    if ( (err = ResError()) != 0) {
        fprintf(stderr, "HCreateResFile (File exists) failed: %d\n", err);
        exit(2);
    }

    HDelete(0, 0, fname);
}
Esempio n. 2
0
static PyObject *Res_HCreateResFile(PyObject *_self, PyObject *_args)
{
    PyObject *_res = NULL;
    short vRefNum;
    long dirID;
    Str255 fileName;
#ifndef HCreateResFile
    PyMac_PRECHECK(HCreateResFile);
#endif
    if (!PyArg_ParseTuple(_args, "hlO&",
                          &vRefNum,
                          &dirID,
                          PyMac_GetStr255, fileName))
        return NULL;
    HCreateResFile(vRefNum,
                   dirID,
                   fileName);
    {
        OSErr _err = ResError();
        if (_err != noErr) return PyMac_Error(_err);
    }
    Py_INCREF(Py_None);
    _res = Py_None;
    return _res;
}
Esempio n. 3
0
pascal	void	FSpCreateResFileCompat(const FSSpec *spec,
                                       OSType creator,
                                       OSType fileType,
                                       ScriptCode scriptTag)
{
#if !__MACOSSEVENFIVEONEORLATER
    if (
#if !__MACOSSEVENORLATER
        (!FSHasFSSpecCalls() && !QTHasFSSpecCalls()) ||
#endif	/* !__MACOSSEVENORLATER */
        !HasFSpCreateScriptSupportFix() )
    {
        OSErr			result;
        CInfoPBRec		pb;

        HCreateResFile(spec->vRefNum, spec->parID, spec->name);
        if ( ResError() == noErr )
        {
            /* get info on created item */
            pb.hFileInfo.ioVRefNum = spec->vRefNum;
            pb.hFileInfo.ioDirID = spec->parID;
            pb.hFileInfo.ioNamePtr = (StringPtr) &(spec->name);
            pb.hFileInfo.ioFDirIndex = 0;
            result = PBGetCatInfoSync(&pb);
            if ( result == noErr )
            {
                /* Set fdScript in FXInfo */
                /* The negative script constants (smSystemScript, smCurrentScript, and smAllScripts) */
                /* don't make sense on disk, so only use scriptTag if scriptTag >= smRoman */
                /* (smRoman is 0). fdScript is valid if high bit is set (see IM-6, page 9-38) */
                pb.hFileInfo.ioFlXFndrInfo.fdScript = (scriptTag >= smRoman) ?
                                                      ((char)scriptTag | (char)0x80) :
                                                      (smRoman);
                /* Set creator/fileType */
                pb.hFileInfo.ioFlFndrInfo.fdCreator = creator;
                pb.hFileInfo.ioFlFndrInfo.fdType = fileType;

                /* Restore ioDirID field in pb which was changed by PBGetCatInfo */
                pb.hFileInfo.ioDirID = spec->parID;
                result = PBSetCatInfoSync(&pb);
            }
            /* Set ResErr low memory global to result */
            LMSetResErr(result);
        }
        return;
    }
    else
#endif	/* !__MACOSSEVENFIVEONEORLATER */
    {
        FSpCreateResFile(spec, creator, fileType, scriptTag);
        return;
    }
}
Esempio n. 4
0
static void
FlushWinFile (void)
{
	short ref;
	long len;

	if (!winFileInit) {
		if (!winFileName [0]) {
			return;
		}
		HCreate (winFileVol, winFileDir, winFileName, MAC_CREATOR, PREF_TYPE);
		HCreateResFile (winFileVol, winFileDir, winFileName);
	}
	if (HOpen (winFileVol, winFileDir, winFileName, fsWrPerm, &ref)) {
		return;
	}
	winFileInit = 1;
	len = sizeof (savePos);
	(void) FSWrite (ref, &len, savePos); /* Don't care about error */
	FSClose (ref);
}