UCommon
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes
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 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 (const 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) const
 Get last error.
 fsys (const char *path, access_t access, unsigned permission)
 Create a fsys descriptor by creating a file.
 fsys (const fsys &descriptor)
 Copy (dup) an existing fsys descriptor.
 fsys ()
 Construct an unattached fsys descriptor.
 fsys (const char *path, access_t access)
 Create a fsys descriptor by opening an existing file or directory.
fd_t getHandle (void) const
 Get the native system descriptor handle of the file descriptor.
void open (const char *path, access_t access)
 Open a file or directory.
 operator bool () const
 Test if file descriptor is open.
 operator fd_t () const
 Get the descriptor from the object by casting reference.
bool operator! () const
 Test if file descriptor is closed.
fd_t operator* () const
 Get the descriptor from the object by pointer reference.
void operator= (fd_t descriptor)
 Assing file descriptor from system descriptor.
void operator= (const fsys &descriptor)
 Assign file descriptor by duplicating another descriptor.
ssize_t read (void *buffer, size_t count)
 Read data from descriptor or scan directory.
int seek (offset_t offset)
 Set the position of a file 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 (const void *buffer, size_t count)
 Write data to descriptor.
 ~fsys ()
 Close and release a file descriptor.

Static Public Member Functions

static int access (const char *path, unsigned mode)
 Test path access.
static void assign (fsys &object, fd_t descriptor)
 Assign a descriptor directly.
static int change (const char *path, unsigned mode)
 Change file access mode.
static int changeDir (const char *path)
 Set directory prefix (chdir).
static void close (fsys &descriptor)
 Close a file descriptor or directory directly.
static void create (fsys &object, const char *path, access_t access, unsigned mode)
 create a file descriptor or directory directly.
static int createDir (const 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 void * find (fsys &module, const char *symbol)
 Find symbol in loaded module.
static int getPrefix (char *path, size_t size)
 Get current directory prefix (pwd).
static bool isdev (struct stat *inode)
static bool isdir (const char *path)
 Test if path is a directory.
static bool isdir (struct stat *inode)
static bool isdisk (struct stat *inode)
static bool isfile (const char *path)
 Test if path is a file.
static bool isfile (struct stat *inode)
static bool islink (struct stat *inode)
static bool issys (struct stat *inode)
static int load (const char *path)
 Load an unmaged plugin directly.
static void load (fsys &module, const char *path)
 Load a plugin into memory.
static void open (fsys &object, const 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 (const char *path)
 Remove a file.
static int removeDir (const char *path)
 Simple direct method to remove a directory.
static int rename (const char *oldpath, const char *newpath)
 Rename a file.
static int seek (fsys &descriptor, offset_t offset)
 Set the position of a file descriptor.
static int stat (const char *path, struct stat *buffer)
 Stat a file.
static void unload (fsys &module)
 unload a specific plugin.
static ssize_t write (fsys &descriptor, const void *buffer, size_t count)
 write data to file descriptor.

Static Public Attributes

static const 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 103 of file fsys.h.


Constructor & Destructor Documentation

ucc::fsys::fsys ( const fsys descriptor)

Copy (dup) an existing fsys descriptor.

Parameters:
descriptorto copy from.
ucc::fsys::fsys ( const char *  path,
access_t  access 
)

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

Parameters:
pathof file to open for created descriptor.
accessmode of file.
ucc::fsys::fsys ( const char *  path,
access_t  access,
unsigned  permission 
)

Create a fsys descriptor by creating a file.

Parameters:
pathof file to create for descriptor.
accessmode of file access.
permissionmode of file.

Member Function Documentation

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

Test path access.

Parameters:
pathto test.
modeto test for.
Returns:
error number or 0 on success.
void ucc::fsys::assign ( fd_t  descriptor) [inline]

Assign descriptor directly.

Parameters:
descriptorto assign.

Definition at line 395 of file fsys.h.

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

Assign a descriptor directly.

Parameters:
objectto assign descriptor to.
descriptorto assign.

Definition at line 403 of file fsys.h.

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

Change file access mode.

Parameters:
pathto change.
modeto assign.
Returns:
error number or 0 on success.
static int ucc::fsys::changeDir ( const char *  path) [static]

Set directory prefix (chdir).

Parameters:
pathto 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:
descriptorto close.

Definition at line 433 of file fsys.h.

Here is the call graph for this function:

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

Open a file descriptor directly.

Parameters:
pathof file to create.
accessmode of descriptor.
modeof file if created.
static void ucc::fsys::create ( fsys object,
const char *  path,
access_t  access,
unsigned  mode 
) [inline, static]

create a file descriptor or directory directly.

Parameters:
objectto assign descriptor for created file.
pathof file to create.
accessmode of descriptor.
modeof file if created.

Definition at line 464 of file fsys.h.

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

Simple direct method to create a directory.

Parameters:
pathof directory to create.
modeof directory.
Returns:
error number or 0 on success.
int ucc::fsys::drop ( offset_t  size = 0)

Drop cached data from start of file.

Parameters:
sizeof region to drop or until end of file.
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:
descriptorto set.
sizeof region from start of file to drop or all.
Returns:
error number or 0 on success.

Definition at line 381 of file fsys.h.

Here is the call graph for this function:

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

Get last error.

Returns:
error number.

Definition at line 445 of file fsys.h.

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

Find symbol in loaded module.

Parameters:
moduleto search.
symbolto search for.
Returns:
address of symbol or NULL if not found.
fd_t ucc::fsys::getHandle ( void  ) const [inline]

Get the native system descriptor handle of the file descriptor.

Returns:
native os descriptor.

Definition at line 223 of file fsys.h.

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

Get current directory prefix (pwd).

Parameters:
pathto save directory into.
sizeof path we can save.
Returns:
error number or 0 on success.
static bool ucc::fsys::isdir ( const char *  path) [static]

Test if path is a directory.

Parameters:
pathto test.
Returns:
true if exists and is directory.
static bool ucc::fsys::isfile ( const char *  path) [static]

Test if path is a file.

Parameters:
pathto test.
Returns:
true if exists and is file.
static void ucc::fsys::load ( fsys module,
const char *  path 
) [static]

Load a plugin into memory.

Parameters:
modulefor management.
pathto plugin.
static int ucc::fsys::load ( const char *  path) [static]

Load an unmaged plugin directly.

Parameters:
pathto plugin.
Returns:
error number or 0 on success.
static void ucc::fsys::open ( fsys object,
const char *  path,
access_t  access 
) [inline, static]

Open a file or directory.

Parameters:
objectto assign descriptor for opened file.
pathof file to open.
accessmode of descriptor.

Definition at line 454 of file fsys.h.

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

Open a file or directory.

Parameters:
pathof file to open.
accessmode of descriptor.
ucc::fsys::operator bool ( ) const [inline]

Test if file descriptor is open.

Returns:
true if open.

Definition at line 197 of file fsys.h.

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

Get the descriptor from the object by casting reference.

Returns:
low level file handle.

Definition at line 190 of file fsys.h.

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

Test if file descriptor is closed.

Returns:
true if closed.

Definition at line 204 of file fsys.h.

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

Get the descriptor from the object by pointer reference.

Returns:
low level file handle.

Definition at line 183 of file fsys.h.

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

Assing file descriptor from system descriptor.

Parameters:
descriptorto dup from.
void ucc::fsys::operator= ( const fsys descriptor)

Assign file descriptor by duplicating another descriptor.

Parameters:
descriptorto dup from.
ssize_t ucc::fsys::read ( void *  buffer,
size_t  count 
)

Read data from descriptor or scan directory.

Parameters:
bufferto read into.
countof bytes to read.
Returns:
bytes transferred, -1 if error.
static ssize_t ucc::fsys::read ( fsys descriptor,
void *  buffer,
size_t  count 
) [inline, static]

Read data from file descriptor or directory.

Parameters:
descriptorto read from.
bufferto read into.
countof bytes to read.
Returns:
bytes transferred, -1 if error.

Definition at line 353 of file fsys.h.

Here is the call graph for this function:

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

Remove a file.

Parameters:
pathof file.
Returns:
error number or 0 on success.
static int ucc::fsys::removeDir ( const char *  path) [static]

Simple direct method to remove a directory.

Parameters:
pathto remove.
Returns:
error number or 0 on success.
static int ucc::fsys::rename ( const char *  oldpath,
const char *  newpath 
) [static]

Rename a file.

Parameters:
oldpathto rename from.
newpathto rename to.
Returns:
error number or 0 on success.
int ucc::fsys::seek ( offset_t  offset)

Set the position of a file descriptor.

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

Reimplemented in ucc::fbuf.

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

Set the position of a file descriptor.

Parameters:
descriptorto set.
offsetfrom start of file or "end" to append.
Returns:
error number or 0 on success.

Definition at line 372 of file fsys.h.

Here is the call graph for this function:

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

Stat a file.

Parameters:
pathof file to stat.
bufferto save stat info.
Returns:
error number or 0 on success.
int ucc::fsys::stat ( struct stat *  buffer)

Get status of open descriptor.

Parameters:
bufferto 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:
offsetto truncate to.
Returns:
true if truncate successful.

Reimplemented in ucc::fbuf.

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

unload a specific plugin.

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

write data to file descriptor.

Parameters:
descriptorto write to.
bufferto write from.
countof bytes to write.
Returns:
bytes transferred, -1 if error.

Definition at line 363 of file fsys.h.

Here is the call graph for this function:

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

Write data to descriptor.

Parameters:
bufferto write from.
countof bytes to write.
Returns:
bytes transferred, -1 if error.

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