os::SymLink Class Reference
[The Syllable high level filesystem API]

Symbolic link handling class. More...

Inheritance diagram for os::SymLink:

os::FSNode List of all members.

Public Member Functions

 SymLink ()
 SymLink (const String &cPath, int nOpenMode=O_RDONLY)
 SymLink (const Directory &cDir, const String &cName, int nOpenMode=O_RDONLY)
 SymLink (const FileReference &cRef, int nOpenMode=O_RDONLY)
 SymLink (const FSNode &cNode)
 SymLink (const SymLink &cNode)
virtual ~SymLink ()
virtual status_t SetTo (const String &cPath, int nOpenMode=O_RDONLY)
 Open a node using a path.
virtual status_t SetTo (const Directory &cDir, const String &cPath, int nOpenMode=O_RDONLY)
 Open a node using a dir/path pair.
virtual status_t SetTo (const FileReference &cRef, int nOpenMode=O_RDONLY)
 Open the node referred to by the given os::FileReference.
virtual status_t SetTo (const FSNode &cNode)
 Copy another FSNode.
virtual status_t SetTo (const SymLink &cLink)
status_t ReadLink (String *pcBuffer)
String ReadLink ()
status_t ConstructPath (const Directory &cParent, Path *pcBuffer)
status_t ConstructPath (const String &cParent, Path *pcBuffer)

Detailed Description

Description:
See also:
FSNode, FileReference
Author:
Kurt Skauen ([email protected])


Constructor & Destructor Documentation

SymLink::SymLink (  ) 

SymLink::SymLink ( const String cPath,
int  nOpenMode = O_RDONLY 
)

SymLink::SymLink ( const Directory cDir,
const String cName,
int  nOpenMode = O_RDONLY 
)

SymLink::SymLink ( const FileReference cRef,
int  nOpenMode = O_RDONLY 
)

SymLink::SymLink ( const FSNode cNode  ) 

SymLink::SymLink ( const SymLink cNode  ) 

SymLink::~SymLink (  )  [virtual]


Member Function Documentation

status_t SymLink::SetTo ( const String cPath,
int  nOpenMode = O_RDONLY 
) [virtual]

Description:
Open a node by path. The path must be valid and the process must have access to it but it can point to any kind of FS-node (file, directory, symlink).
The path can start with "~/" to make it relative to the current users home directory or it can start with "^/" to make it relative to the directory where the executable our application was started from lives in. This path expansion is performed by the os::FSNode class itself and is not part of the low-level filesystem.

The nOpenMode should be a compination of any of the O_* flags defined in <fcntl.h>. Their meaning is the same as when opening a file with the open() POSIX function except you can not create a file by setting the O_CREAT flag.

The following flags are accepted:

Note:
If this call fail the old state of the FSNode will remain unchanged
Parameters:
cPath Path pointing at the node to open.
nOpenMode Flags controlling how to open the node.
Returns:
On success 0 is returned. On error -1 is returned and a error code is assigned to the global variable "errno". The error code can be any of the errors returned by the open() POSIX function.
Author:
Kurt Skauen ([email protected])

Reimplemented from os::FSNode.

status_t SymLink::SetTo ( const Directory cDir,
const String cPath,
int  nOpenMode = O_RDONLY 
) [virtual]

Description:
Open a node by using a directory and a path relative to that directory.
The path can eighter be absolute (cDir will then be ignored) or it can be relative to cDir. This have much the same semantics as setting the current working directory to cDir and then open the node by calling SetTo( const String& cPath, int nOpenMode ) with the path. The main advantage with this function is that it is thread-safe. You don't get any races while temporarily changing the current working directory.

For a more detailed description look at: SetTo( const String& cPath, int nOpenMode )

Note:
If this call fail the old state of the FSNode will remain unchanged
Parameters:
cDir A valid directory from which the cPath is relative to.
cPath The file path relative to cDir. The path can eighter be absoulute (in which case cDir is ignored) or it can be relative to cDir.
nOpenMode Flags controlling how to open the node. See SetTo( const String& cPath, int nOpenMode ) for a full description of the various flags.
Returns:
On success 0 is returned. On error -1 is returned and a error code is assigned to the global variable "errno". The error code can be any of the errors returned by the open() POSIX function.
See also:
FSNode( const String& cPath, int nOpenMode )
Author:
Kurt Skauen ([email protected])

Reimplemented from os::FSNode.

status_t SymLink::SetTo ( const FileReference cRef,
int  nOpenMode = O_RDONLY 
) [virtual]

Description:
Same semantics SetTo( const String& cPath, int nOpenMode ) except that the node to open is targeted by a file reference rather than a regular path.
Note:
If this call fail the old state of the FSNode will remain unchanged
Returns:
On success 0 is returned. On error -1 is returned and a error code is assigned to the global variable "errno". The error code can be any of the errors returned by the open() POSIX function.
See also:
SetTo( const String& cPath, int nOpenMode )
Author:
Kurt Skauen ([email protected])

Reimplemented from os::FSNode.

status_t SymLink::SetTo ( const FSNode cNode  )  [virtual]

Description:
Make this node a clone of cNode.
Note:
If this call fail the old state of the FSNode will remain unchanged
Parameters:
cNode The FSNode to copy.
Returns:
On success 0 is returned. On error -1 is returned and a error code is assigned to the global variable "errno". The error code can be any of the errors returned by the open() POSIX function.
See also:
Author:
Kurt Skauen ([email protected])

Reimplemented from os::FSNode.

status_t SymLink::SetTo ( const SymLink cLink  )  [virtual]

status_t SymLink::ReadLink ( String pcBuffer  ) 

String SymLink::ReadLink (  ) 

status_t SymLink::ConstructPath ( const Directory cParent,
Path pcBuffer 
)

status_t SymLink::ConstructPath ( const String cParent,
Path pcBuffer 
)


Generated on Sat May 9 22:51:59 2009 for Syllable higlevel API by  doxygen 1.5.1