ftp.nice.ch/pub/next/developer/resources/classes/misckit/MiscKit.1.10.0.s.gnutar.gz#/MiscKit/Documentation/Classes/MiscFileFinder.rtf

This is MiscFileFinder.rtf in view mode; [Download] [Up]

DMA Release 0.8  Copyright ©1994 by Genesis Project, Ltd.  All Rights Reserved.






MiscFileFinder






Inherits From:	Object

Declared In:	misckit/MiscFileFinder.h





Class Description

The MiscFileFinder Class is a service provider. Each MiscFileFinder object defines a type of file and contains all the information on where to look for them. If the MiscFileFinder object is named, it is kept in a hash list and no other object may be created with the same name. An named instance can be found by name.

The MiscFileFinder handles all the messy lookup activities that are associated with files in large file systems. It is often the case that a file might reside in one of many places, or that a file earlier in a search list should be used in preference to a later one. And even if a file is found earlier in the search list than another by the same name, it does little good if the first file cannot be accessed in the way requiredÐread, write, etc.

	1) If filename is an absolute path name, ie it begins with "/", it is used as is.
	2) The paths in your environment variable (pathVariable) are searched.
	3) The defaultPath in this class as set by you.  If you have never set it, it will be the same as the contents of the environment variable named by pathVariable.

The defaultPath is a compile time colon seperated list of places to look, in the order they are to be searched. The environment variable named in pathVariable allows  runtime change to this search sequence. By creating and initing this environment variable, you can override the selection that the compiled in search list would make.

The first full path found that allows the required access is the one returned. A typical situation:  you have a user copy of a file in a standard placeÐsuch as one of the App directoriesÐand you are debugging the same app in a working directory.  A file that otherwise matches will be bypassed if the sender does not have at least the capabilities list that is or'd together  in fileMode.

The following sample code shows a typical usage:

if (![MiscFileFinder findFileTypeNamed: "Cursors"])
	[[MiscFileFinder alloc] initName: "Cursors"
			                defaultPath: "~/Library/Cursors:/Library/Cursors:/LocalLibrary/Cursors"
			             pathVariable: "IMAGEPATH"
			                          mode: R_OK];
file = [[MiscFileFinder findFileTypeNamed: "Cursors"] fullPathForFile: "cursor.tiff"];


Instance Variables

const char *typeName;
const char *defaultPath;
const char *pathVariable;
int  fileMode;
char *pathTmp;	

typeName 	Name of this type object 
defaultPath	Default path for this type.
pathVariable	Environment PATH variable name.
fileMode	Required attributes of file type: R_OK, X_OK, etc.
pathTmp	Private.




Method Types

Initializing and freeing	- initName:defaultPath:pathVariable:mode:
	- init
	- free

FileType Name	+ findFileTypeNamed:
	- setTypeName:
	- typeName

File Lookup	- fullPathForFile:
	- setDefaultPath:
	- defaultPath
	- setPathVariable:
	- pathVariable
	- setFileMode:
	- fileMode

Diagnostics	+ setDebug:
	+ isDebug:

Archiving	- read:
	- write:





Class Methods

debug
	+ (BOOL)debug

Returns YES if the debug flag is set.

See also:  + setDebug




findFileTypeNamed:
	+ findFileTypeNamed:(const char*)aKey

If there is a MiscFileFinder object with the typeName of aKey, return it. Otherwise return nil.

See also:  - typeName, - setTypeName:




setDebug:
	+ setDebug:(BOOL)flag

Turn diagnostic printouts on or off  for all objects of this class.  YES means on. If on, a localized message is printed on the Workspace console or on the GDB console each time one of the debug trace points is executed.  Returns self.

See also:  + debug




Instance Methods

defaultPath
- (const char*)defaultPath

Returns the defaultPath.

See also:  - fullPathForFile:, - pathVariable, - fileMode,   - setDefaultPath:, - setPathVariable:,
- setFileMode:




fileMode
- (int)fileMode

Returns the fileMode.

See also:  - defaultPath, - pathVariable, - fullPathForFile:,  - setDefaultPath:, - setPathVariable:,
- setFileMode:




free
- free

Free the MiscFileFinder object.

See also:  - initFrame:, - init




fullPathForFile:
- (char *)fullPathForFile:(const char *)filename

Return a full pathname if we successfully find a file with the specified name. The following places are searched, in order:

	1) If filename is an absolute path name, ie it begins with "/", it is used as is.
	2) The paths in your environment variable (pathVariable) are searched.
	3) The defaultPath in this Class as set by you.  If you have never set it, it will be the same as the contents of your
	     the environment variable named by pathVariable.

The first path found is the one returned. A typical situation:  you have a user copy of a file in a standard placeÐsuch as one of the App directoriesÐand you are debugging the same app in a working directory. A file that otherwise matches will be bypassed if the sender does not have at least the capabilities listed in fileMode.

Returns a pathname string allocated from the default zone. Freeing it is the senders responsibility.

See also:  - defaultPath, - pathVariable, - fileMode,   - setDefaultPath:, - setPathVariable:, - setFileMode:




init
- init

Create a MiscFileFinder with a NULL typeName. and a NULL defaultPath. Uses the PATH environment variable and requires files allow at least R_OK mode by the sender.  Returns self.

See also:  - free, - initFrame:




initName:defaultPath:pathVariable:mode:
- initName:(const char  *)name defaultPath:(const char *)path pathVariable:(const char *)var mode:(int)fmode

Designated initializer. Create a MiscFileFinder with a typeName of name; a default search path named path;  an environment path name variable var and fileMode of fmode.  Mode can be any combination of  R_OK, W_OK, and so forth (see ctypes.h).  All strings are copied into local storage and managed by the MiscFileFinder object thereafter. If  name already exists a nil is returned (a special allowance is made for reinitializing an existing object). Once it has been set, the name of a file type is unchangeable. Returns self.

See also:  - free, - initFrame:




pathVariable
- (const char*)pathVariable

Returns the pathVariable.

See also:  - defaultPath, - fullPathForFile:, - fileMode,   - setDefaultPath:, - setPathVariable:,
- setFileMode:




read:
- read:(NXTypedStream *)stream

Reads the object from the typed stream stream.  Returns self.

See also:  - write:




typeName
- (const char*)typeName

Returns the typeName.

See also:  - setTypeName:, + findFileTypeNamed:




setDefaultPath:
- setDefaultPath:(const char*)path

Set the defaultPath by copying path.  The defaultPath is a colon seperated list of directory path names. If an old  defaultPath exists, it is freed. Returns self

See also:  - defaultPath, - pathVariable, - fileMode,   - fullPathForFile:, - setPathVariable:, - setFileMode:




setFileMode:
- setFileMode:(int)mode

Set the fileMode requirements. Any file found must allow the sender at least the capabilities in  fileMode for it to be acceptable and ªfoundº.  Returns self

See also:  - defaultPath, - pathVariable, - fileMode,   - setDefaultPath:, - setPathVariable:, -fullPathForFile:




setPathVariable:
- setPathVariable:(const char*)var

Set the pathVariable by copying var.  The pathVariable is the name of an envirnoment variable that contains a colon seperated list of directory path names. If an old  pathVariable exists, it is freed.  Returns self

See also:  - defaultPath, - pathVariable, - fileMode,   - setDefaultPath:, - fullPathForFile:, - setFileMode:




setTypeName:
- (BOOL)setTypeName:(const char*)name

Set the typeName by copying name.  The typeName allows lookup of MiscFileFinder instances by name. If an old  typeName exists, it is freed.  Once it has been set, the name of a file type is unchangeable. Thus setTypeName: would only be of use if an object was initially created  with a NULL typeName.  Returns YES if the name was set.

See also:  - typeName, + findFileTypeNamed:




write:

- write:(NXTypedStream *)stream

Writes the object to the typed stream stream.  Returns self.

See also:  - read:



These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.