ucc::fsys Class Reference

A container for generic and o/s portable threadsafe file system functions. More...

#include <fsys.h>

Inheritance diagram for ucc::fsys:

Inheritance graph
[legend]

Public Types

enum  access_t {
  ACCESS_RDONLY, ACCESS_WRONLY, ACCESS_REWRITE, ACCESS_RDWR = ACCESS_REWRITE,
  ACCESS_APPEND, ACCESS_SHARED, ACCESS_DIRECTORY, ACCESS_STREAM,
  ACCESS_RANDOM
}
 Enumerated file access modes.
typedef struct stat fileinfo_t
typedef long offset_t
 File offset type.

Public Member Functions

void assign (fd_t descriptor)
 Assign descriptor directly.
void close (void)
 Close a fsys resource.
void create (char *path, access_t access, unsigned mode)
 Open a file descriptor directly.
int drop (offset_t size=0)
 Drop cached data from start of file.
int err (void)
 Get last error.
int fileinfo (fileinfo_t *buffer)
 fsys (char *path, access_t access, unsigned permission)
 Create a fsys descriptor by creating a file.
 fsys (char *path, access_t access)
 Create a fsys descriptor by opening an existing file or directory.
 fsys (fsys &descriptor)
 Copy (dup) an existing fsys descriptor.
 fsys (fd_t handle)
 Contruct fsys from raw file handle.
 fsys ()
 Construct an unattached fsys descriptor.
fd_t getHandle (void)
 Get the native system descriptor handle of the file descriptor.
bool istty (void)
 See if current file stream is a tty device.
void open (char *path, access_t access)
 Open a file or directory.
 operator bool ()
 Test if file descriptor is open.
 operator fd_t ()
 Get the descriptor from the object by casting reference.
bool operator! ()
 Test if file descriptor is closed.
fd_t operator* ()
 Get the descriptor from the object by pointer reference.
void operator= (fd_t descriptor)
 Assing file descriptor from system descriptor.
void operator= (fsys &descriptor)
 Assign file descriptor by duplicating another descriptor.
ssize_t read (void *buffer, size_t count)
 Read data from descriptor or scan directory.
fd_t release (void)
 Release descriptor, do not close.
int seek (offset_t offset)
 Set the position of a file descriptor.
void set (fd_t descriptor)
 Set with external descriptor.
int stat (struct stat *buffer)
 Get status of open descriptor.
int sync (void)
 Commit changes to the filesystem.
int trunc (offset_t offset)
 Truncate file to specified length.
ssize_t write (void *buffer, size_t count)
 Write data to descriptor.
 ~fsys ()
 Close and release a file descriptor.

Static Public Member Functions

static int access (char *path, unsigned mode)
 Test path access.
static void assign (fsys &object, fd_t descriptor)
 Assign a descriptor directly.
static int change (char *path, unsigned mode)
 Change file access mode.
static int changeDir (char *path)
 Set directory prefix (chdir).
static void close (fsys &descriptor)
 Close a file descriptor or directory directly.
static int copy (char *source, char *target, size_t size=1024)
 Copy a file.
static void create (fsys &object, char *path, access_t access, unsigned mode)
 create a file descriptor or directory directly.
static int createDir (char *path, unsigned mode)
 Simple direct method to create a directory.
static int drop (fsys &descriptor, offset_t size)
 Drop cached data from a file descriptor.
static int fileinfo (char *path, fileinfo_t *buffer)
static void * find (fsys &module, char *symbol)
 Find symbol in loaded module.
static int getPrefix (char *path, size_t size)
 Get current directory prefix (pwd).
static int hardlink (char *path, char *target)
 Create a hard link.
static bool ischar (struct stat *inode)
static bool isdev (struct stat *inode)
static bool isdir (struct stat *inode)
static bool isdir (char *path)
 Test if path is a directory.
static bool isdisk (struct stat *inode)
static bool isfile (struct stat *inode)
static bool isfile (char *path)
 Test if path is a file.
static bool ishidden (char *path)
 Test if path is a hidden file.
static bool islink (struct stat *inode)
static bool islink (char *path)
 Test if path is a symlink.
static bool issys (struct stat *inode)
static bool istty (fd_t fd)
 See if the file handle is a tty device.
static int link (char *path, char *target)
 Create a symbolic link.
static int linkinfo (char *path, char *buffer, size_t size)
 Read a symbolic link to get it's target.
static void load (fsys &module, char *path)
 Load a plugin into memory.
static int load (char *path)
 Load an unmaged plugin directly.
static void open (fsys &object, char *path, access_t access)
 Open a file or directory.
static ssize_t read (fsys &descriptor, void *buffer, size_t count)
 Read data from file descriptor or directory.
static int remapError (void)
static int remove (char *path)
 Remove a file.
static int removeDir (char *path)
 Simple direct method to remove a directory.
static int rename (char *oldpath, char *newpath)
 Rename a file.
static int seek (fsys &descriptor, offset_t offset)
 Set the position of a file descriptor.
static int stat (char *path, struct stat *buffer)
 Stat a file.
static int unlink (char *path)
 Remove a symbolic link explicitly.
static void unload (fsys &module)
 unload a specific plugin.
static ssize_t write (fsys &descriptor, void *buffer, size_t count)
 write data to file descriptor.

Static Public Attributes

static offset_t end
 Used to mark "append" in set position operations.

Protected Attributes

int error
fd_t fd
void * ptr

Detailed Description

A container for generic and o/s portable threadsafe file system functions.

These are based roughly on their posix equivilents. For libpth, the system calls are wrapped. The native file descriptor or handle may be used, but it is best to use "class fsys" instead because it can capture the errno of a file operation in a threadsafe and platform independent manner, including for mswindows targets.

Definition at line 125 of file fsys.h.


Constructor & Destructor Documentation

ucc::fsys::fsys ( fsys descriptor  ) 

Copy (dup) an existing fsys descriptor.

Parameters:
descriptor to copy from.

ucc::fsys::fsys ( char *  path,
access_t  access 
)

Create a fsys descriptor by opening an existing file or directory.

Parameters:
path of file to open for created descriptor.
access mode of file.

ucc::fsys::fsys ( char *  path,
access_t  access,
unsigned  permission 
)

Create a fsys descriptor by creating a file.

Parameters:
path of file to create for descriptor.
access mode of file access.
permission mode of file.


Member Function Documentation

static int ucc::fsys::access ( char *  path,
unsigned  mode 
) [static]

Test path access.

Parameters:
path to test.
mode to test for.
Returns:
error number or 0 on success.

static void ucc::fsys::assign ( fsys object,
fd_t  descriptor 
) [inline, static]

Assign a descriptor directly.

Parameters:
object to assign descriptor to.
descriptor to assign.

Definition at line 484 of file fsys.h.

void ucc::fsys::assign ( fd_t  descriptor  )  [inline]

Assign descriptor directly.

Parameters:
descriptor to assign.

Definition at line 476 of file fsys.h.

static int ucc::fsys::change ( char *  path,
unsigned  mode 
) [static]

Change file access mode.

Parameters:
path to change.
mode to assign.
Returns:
error number or 0 on success.

static int ucc::fsys::changeDir ( char *  path  )  [static]

Set directory prefix (chdir).

Parameters:
path to change to.
Returns:
error number or 0 on success.

static void ucc::fsys::close ( fsys descriptor  )  [inline, static]

Close a file descriptor or directory directly.

Parameters:
descriptor to close.

Definition at line 547 of file fsys.h.

Here is the call graph for this function:

static int ucc::fsys::copy ( char *  source,
char *  target,
size_t  size = 1024 
) [static]

Copy a file.

Parameters:
source file.
target file.
size of buffer.
Returns:
error number or 0 on success.

static void ucc::fsys::create ( fsys object,
char *  path,
access_t  access,
unsigned  mode 
) [inline, static]

create a file descriptor or directory directly.

Parameters:
object to assign descriptor for created file.
path of file to create.
access mode of descriptor.
mode of file if created.

Definition at line 578 of file fsys.h.

void ucc::fsys::create ( char *  path,
access_t  access,
unsigned  mode 
)

Open a file descriptor directly.

Parameters:
path of file to create.
access mode of descriptor.
mode of file if created.

static int ucc::fsys::createDir ( char *  path,
unsigned  mode 
) [static]

Simple direct method to create a directory.

Parameters:
path of directory to create.
mode of directory.
Returns:
error number or 0 on success.

static int ucc::fsys::drop ( fsys descriptor,
offset_t  size 
) [inline, static]

Drop cached data from a file descriptor.

Parameters:
descriptor to set.
size of region from start of file to drop or all.
Returns:
error number or 0 on success.

Definition at line 462 of file fsys.h.

Here is the call graph for this function:

int ucc::fsys::drop ( offset_t  size = 0  ) 

Drop cached data from start of file.

Parameters:
size of region to drop or until end of file.
Returns:
error number or 0 on success.

int ucc::fsys::err ( void   )  [inline]

Get last error.

Returns:
error number.

Definition at line 559 of file fsys.h.

static void* ucc::fsys::find ( fsys module,
char *  symbol 
) [static]

Find symbol in loaded module.

Parameters:
module to search.
symbol to search for.
Returns:
address of symbol or NULL if not found.

fd_t ucc::fsys::getHandle ( void   )  [inline]

Get the native system descriptor handle of the file descriptor.

Returns:
native os descriptor.

Definition at line 252 of file fsys.h.

static int ucc::fsys::getPrefix ( char *  path,
size_t  size 
) [static]

Get current directory prefix (pwd).

Parameters:
path to save directory into.
size of path we can save.
Returns:
error number or 0 on success.

static int ucc::fsys::hardlink ( char *  path,
char *  target 
) [static]

Create a hard link.

Parameters:
path to create link to.
target of link.
Returns:
error number or 0 on success.

static bool ucc::fsys::isdir ( char *  path  )  [static]

Test if path is a directory.

Parameters:
path to test.
Returns:
true if exists and is directory.

static bool ucc::fsys::isfile ( char *  path  )  [static]

Test if path is a file.

Parameters:
path to test.
Returns:
true if exists and is file.

static bool ucc::fsys::ishidden ( char *  path  )  [static]

Test if path is a hidden file.

Parameters:
path to test.
Returns:
true if exists and is hidden.

static bool ucc::fsys::islink ( char *  path  )  [static]

Test if path is a symlink.

Parameters:
path to test.
Returns:
true if exists and is symlink.

static bool ucc::fsys::istty ( fd_t  fd  )  [static]

See if the file handle is a tty device.

Returns:
true if device.

bool ucc::fsys::istty ( void   ) 

See if current file stream is a tty device.

Returns:
true if device.

static int ucc::fsys::link ( char *  path,
char *  target 
) [static]

Create a symbolic link.

Parameters:
path to create.
target of link.
Returns:
error number or 0 on success.

static int ucc::fsys::linkinfo ( char *  path,
char *  buffer,
size_t  size 
) [static]

Read a symbolic link to get it's target.

Parameters:
path of link.
buffer to save target into.
size of buffer.

static void ucc::fsys::load ( fsys module,
char *  path 
) [static]

Load a plugin into memory.

Parameters:
module for management.
path to plugin.

static int ucc::fsys::load ( char *  path  )  [static]

Load an unmaged plugin directly.

Parameters:
path to plugin.
Returns:
error number or 0 on success.

static void ucc::fsys::open ( fsys object,
char *  path,
access_t  access 
) [inline, static]

Open a file or directory.

Parameters:
object to assign descriptor for opened file.
path of file to open.
access mode of descriptor.

Definition at line 568 of file fsys.h.

void ucc::fsys::open ( char *  path,
access_t  access 
)

Open a file or directory.

Parameters:
path of file to open.
access mode of descriptor.

ucc::fsys::operator bool (  )  [inline]

Test if file descriptor is open.

Returns:
true if open.

Definition at line 226 of file fsys.h.

ucc::fsys::operator fd_t (  )  [inline]

Get the descriptor from the object by casting reference.

Returns:
low level file handle.

Definition at line 219 of file fsys.h.

bool ucc::fsys::operator! (  )  [inline]

Test if file descriptor is closed.

Returns:
true if closed.

Definition at line 233 of file fsys.h.

fd_t ucc::fsys::operator* (  )  [inline]

Get the descriptor from the object by pointer reference.

Returns:
low level file handle.

Definition at line 212 of file fsys.h.

void ucc::fsys::operator= ( fd_t  descriptor  ) 

Assing file descriptor from system descriptor.

Parameters:
descriptor to dup from.

void ucc::fsys::operator= ( fsys descriptor  ) 

Assign file descriptor by duplicating another descriptor.

Parameters:
descriptor to dup from.

static ssize_t ucc::fsys::read ( fsys descriptor,
void *  buffer,
size_t  count 
) [inline, static]

Read data from file descriptor or directory.

Parameters:
descriptor to read from.
buffer to read into.
count of bytes to read.
Returns:
bytes transferred, -1 if error.

Definition at line 434 of file fsys.h.

Here is the call graph for this function:

ssize_t ucc::fsys::read ( void *  buffer,
size_t  count 
)

Read data from descriptor or scan directory.

Parameters:
buffer to read into.
count of bytes to read.
Returns:
bytes transferred, -1 if error.

fd_t ucc::fsys::release ( void   ) 

Release descriptor, do not close.

Returns:
handle being released.

static int ucc::fsys::remove ( char *  path  )  [static]

Remove a file.

Parameters:
path of file.
Returns:
error number or 0 on success.

static int ucc::fsys::removeDir ( char *  path  )  [static]

Simple direct method to remove a directory.

Parameters:
path to remove.
Returns:
error number or 0 on success.

static int ucc::fsys::rename ( char *  oldpath,
char *  newpath 
) [static]

Rename a file.

Parameters:
oldpath to rename from.
newpath to rename to.
Returns:
error number or 0 on success.

static int ucc::fsys::seek ( fsys descriptor,
offset_t  offset 
) [inline, static]

Set the position of a file descriptor.

Parameters:
descriptor to set.
offset from start of file or "end" to append.
Returns:
error number or 0 on success.

Definition at line 453 of file fsys.h.

Here is the call graph for this function:

int ucc::fsys::seek ( offset_t  offset  ) 

Set the position of a file descriptor.

Parameters:
offset from start of file or "end" to append.
Returns:
error number or 0 on success.

void ucc::fsys::set ( fd_t  descriptor  ) 

Set with external descriptor.

Closes existing file if open.

Parameters:
descriptor of open file.

static int ucc::fsys::stat ( char *  path,
struct stat *  buffer 
) [static]

Stat a file.

Parameters:
path of file to stat.
buffer to save stat info.
Returns:
error number or 0 on success.

int ucc::fsys::stat ( struct stat *  buffer  ) 

Get status of open descriptor.

Parameters:
buffer to save status info in.
Returns:
error number or 0 on success.

int ucc::fsys::sync ( void   ) 

Commit changes to the filesystem.

Returns:
error number or 0 on success.

int ucc::fsys::trunc ( offset_t  offset  ) 

Truncate file to specified length.

The file pointer is positioned to the new end of file.

Parameters:
offset to truncate to.
Returns:
true if truncate successful.

static int ucc::fsys::unlink ( char *  path  )  [static]

Remove a symbolic link explicitly.

Other kinds of files are also deleted. This should be used when uncertain about symlinks requiring special support.

Parameters:
path to remove.
Returns:
error number or 0 on success.

static void ucc::fsys::unload ( fsys module  )  [static]

unload a specific plugin.

Parameters:
module to unload

static ssize_t ucc::fsys::write ( fsys descriptor,
void *  buffer,
size_t  count 
) [inline, static]

write data to file descriptor.

Parameters:
descriptor to write to.
buffer to write from.
count of bytes to write.
Returns:
bytes transferred, -1 if error.

Definition at line 444 of file fsys.h.

Here is the call graph for this function:

ssize_t ucc::fsys::write ( void *  buffer,
size_t  count 
)

Write data to descriptor.

Parameters:
buffer to write from.
count of bytes to write.
Returns:
bytes transferred, -1 if error.


The documentation for this class was generated from the following file:

Generated on Tue May 17 12:15:28 2011 for UCommon by  doxygen 1.5.6