Important: The information in this document is obsolete and should not be used for new development.
SetResFileAttrs
You can use theSetResFileAttrs
procedure to change a resource fork's attributes.
PROCEDURE SetResFileAttrs (refNum: Integer; attrs: Integer);
refNum
- A file reference number for the resource fork whose attributes you want to set.
attrs
- The attributes to set.
DESCRIPTION
Given a file reference number, theSetResFileAttrs
procedure sets the attributes of the file's resource fork to those specified in theattrs
parameter. If therefNum
parameter is 0, it represents the System file's resource fork. However, you shouldn't change the attributes of the System file's resource fork. If there's no resource fork with the given reference number,SetResFileAttrs
does nothing, and theResError
function returns the result codenoErr
.Like individual resources, resource forks have attributes that are specified by bits in the low-order byte of a word. The Resource Manager provides the following masks for setting these bits:
CONST mapReadOnly = 128; {set to make file read-only} mapCompact = 64; {set to compact file on update} mapChanged = 32; {set to write map on update}When themapReadOnly
attribute is set to 1, the Resource Manager doesn't write anything to the resource fork on disk. It also doesn't check whether the resource data can be written to disk when the resource map is modified. When this attribute is set to 1, theUpdateResFile
andWriteResource
procedures do nothing, but theResError
function returns the result codenoErr
.
When the
- WARNING
- If you set the
mapReadOnly
attribute but later clear it, the resource data is written to disk even if there's no room for it. This operation may destroy the resource fork.mapCompact
attribute is set to 1, the Resource Manager compacts the resource fork when it updates the file. The Resource Manager sets this attribute when a resource is removed or when a resource is made larger and thus must be written at the end of a resource fork. You may want to set themapCompact
attribute to force the Resource Manager to compact a resource fork when your changes make resources smaller.When the
mapChanged
attribute is set to 1, the Resource Manager writes the resource map to disk when the file is updated. For example, you can setmapChanged
if you've changed resource attributes only and don't want to callChangedResource
because you don't want to write the resource data to disk.When the Resource Manager first creates a resource fork after a call to
FSpOpenResFile
or a related routine, it does not set any of the resource forks's attributes--that is, they are all set to 0.SPECIAL CONSIDERATIONS
The Resource Manager sets themapChanged
attribute for the resource fork when you call theChangedResource
, theAddResource
, or theRemoveResource
procedure.RESULT CODES
noErr 0 No error resFNotFound -193 Resource file not found SEE ALSO
To check for errors, call theResError
function as described on page 1-47.For descriptions of the
ChangedResource
andAddResource
procedures, see page 1-83 and page 1-85, respectively. For descriptions of theUpdateResFile
andWriteResource
procedures, see page 1-87 and page 1-88, respectively. For a description of theRemoveResource
procedure, see page 1-103.