char *read_setting_s(void *handle, char const *key, char *buffer, int buflen) { int fd; Handle h; size_t len; Str255 pkey; if (handle == NULL) goto out; fd = *(int *)handle; UseResFile(fd); if (ResError() != noErr) goto out; c2pstrcpy(pkey, key); h = Get1NamedResource(FOUR_CHAR_CODE('TEXT'), pkey); if (h == NULL) goto out; len = GetHandleSize(h); if (len + 1 > buflen) goto out; memcpy(buffer, *h, len); buffer[len] = '\0'; ReleaseResource(h); if (ResError() != noErr) goto out; return buffer; out: return NULL; }
pascal Handle SafeGet1NamedResource(ResType type, ConstStr255Param name) { Handle result = NULL; if (gLocaleResFile) { StAcroResourceContext resContext(gLocaleResFile); result = Get1NamedResource(type, name); } if (result == NULL && GetAcroPluginResourceMap()) { StAcroResourceContext resContext(GetAcroPluginResourceMap()); result = Get1NamedResource(type, name); } return result; }
pascal Handle SafeGet1NamedResource(ResType type, ConstStr255Param name) { #if TARGET_API_MAC_CARBON Handle result = NULL; if (gLocaleResFile) { StAcroResourceContext resContext(gLocaleResFile); result = Get1NamedResource(type, name); } if (result == NULL && gResFile) { StAcroResourceContext resContext(gResFile); result = Get1NamedResource(type, name); } return result; #else Handle result; short oldResFile = CurResFile(); if( gLocaleResFile ) { // Look in the Locale file first UseResFile( gLocaleResFile ); result = Get1NamedResource(type, name); if( result ) { // If the resource was there, then UseResFile( oldResFile ); // restore the chain and exit return result; } } UseResFile( gResFile ); // Default to base resource file result = Get1NamedResource(type, name); // and get resource UseResFile(oldResFile); // Restore and exit return result; #endif }
int read_setting_i(void *handle, char const *key, int defvalue) { int fd; Handle h; int value; Str255 pkey; if (handle == NULL) goto out; fd = *(int *)handle; UseResFile(fd); if (ResError() != noErr) goto out; c2pstrcpy(pkey, key); h = Get1NamedResource(FOUR_CHAR_CODE('Int '), pkey); if (h == NULL) goto out; value = *(int *)*h; ReleaseResource(h); if (ResError() != noErr) goto out; return value; out: return defvalue; }
int read_setting_filename(void *handle, const char *key, Filename *result) { int fd; AliasHandle h; Boolean changed; OSErr err; Str255 pkey; if (handle == NULL) goto out; fd = *(int *)handle; UseResFile(fd); if (ResError() != noErr) goto out; c2pstrcpy(pkey, key); h = (AliasHandle)Get1NamedResource(rAliasType, pkey); if (h == NULL) goto out; if ((*h)->userType == 'pTTY' && (*h)->aliasSize == sizeof(**h)) memset(result, 0, sizeof(*result)); else { err = ResolveAlias(NULL, h, &result->fss, &changed); if (err != noErr && err != fnfErr) goto out; if ((*h)->userType == 'pTTY') { long dirid; StrFileName fname; /* Tail of record is pascal string contaning leafname */ if (FSpGetDirID(&result->fss, &dirid, FALSE) != noErr) goto out; memcpy(fname, (char *)*h + (*h)->aliasSize, GetHandleSize((Handle)h) - (*h)->aliasSize); err = FSMakeFSSpec(result->fss.vRefNum, dirid, fname, &result->fss); if (err != noErr && err != fnfErr) goto out; } } ReleaseResource((Handle)h); if (ResError() != noErr) goto out; return 1; out: return 0; }
static PyObject *Res_Get1NamedResource(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Handle _rv; ResType theType; Str255 name; #ifndef Get1NamedResource PyMac_PRECHECK(Get1NamedResource); #endif if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetOSType, &theType, PyMac_GetStr255, name)) return NULL; _rv = Get1NamedResource(theType, name); { OSErr _err = ResError(); if (_err != noErr) return PyMac_Error(_err); } _res = Py_BuildValue("O&", ResObj_New, _rv); return _res; }
LOCAL_FUNC TT_Error TT_Open_Stream( const String* filepathname, TT_Stream* stream ) { TT_Error error; Int file; PStream_Rec stream_rec; TFileMap* map; int size, err = 0; short vRefNum, res = -1; Str255 FontName; char *cp, *p, *fname, *sep; Str63 myName; long dirID; if ( ALLOC( *stream, sizeof ( TStream_Rec ) ) ) return error; map = Allocate_Map(); if ( !map ) { error = TT_Err_Out_Of_Memory; goto Memory_Fail; } stream_rec = STREAM2REC( *stream ); /* Find the dirID of the Fonts folder in the current System folder */ if (FindFolder(kOnSystemDisk, kFontsFolderType, kDontCreateFolder, &vRefNum, &dirID)) goto File_Fail; /* Break the name apart */ fname = mystrdup(filepathname); /* Make a copy so we can muck with it */ sep = ":/"; /* Things that can seperate file path componants */ strtok(fname, sep); /* Skip over "fonts:" */ if ((p = strtok(NULL, sep)) == NULL) /* Get filename */ goto File_Fail; strcpy(myName + 1, p); /* Make this a Pascal string (Yuck!) */ myName[0] = strlen(p); if ((p = strtok(NULL, sep)) == NULL) /* Get res name */ goto File_Fail; strcpy(FontName+1, p); /* Make this a Pascal string (Yuck!) */ FontName[0] = strlen(p); FREE( fname ); if ((cp = strchr(FontName, '.')) != NULL) /* Strip off ".ttf" , if any */ *cp = 0; /* Read the font into a buffer */ if ((map->resid = HOpenResFile(vRefNum, dirID, myName, fsRdPerm)) == -1) goto File_Fail; if ((map->handle = Get1NamedResource('sfnt', FontName)) == NULL) goto Map_Fail; HLock(map->handle); map->base = *map->handle; map->offset = 0; map->size = GetResourceSizeOnDisk(map->handle); if ( map->base == NULL ) goto Lock_Fail; stream_rec->map = map; stream_rec->pos = 0; #ifndef TT_CONFIG_OPTION_THREAD_SAFE CUR_Stream = stream_rec; #endif return TT_Err_Ok; Lock_Fail: ReleaseResource(map->handle); Map_Fail: CloseResFile(map->resid); File_Fail: error = TT_Err_Could_Not_Open_File; FREE( map ); Memory_Fail: FREE( *stream ); FREE( fname ); return error; }