ucommon
|
A container for generic and o/s portable threadsafe file system functions. More...
#include <fsys.h>
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 (fd_t handle) | |
Contruct fsys from raw file handle. | |
fsys (char *path, access_t access) | |
Create a fsys descriptor by opening an existing file or directory. | |
fsys () | |
Construct an unattached fsys descriptor. | |
fsys (char *path, access_t access, unsigned permission) | |
Create a fsys descriptor by creating a file. | |
fsys (fsys &descriptor) | |
Copy (dup) an existing fsys descriptor. | |
fd_t | getHandle (void) |
Get the native system descriptor handle of the file descriptor. | |
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= (fsys &descriptor) |
Assign file descriptor by duplicating another descriptor. | |
void | operator= (fd_t descriptor) |
Assing file descriptor from system 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 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 | 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 (char *path) |
Test if path is a file. | |
static bool | isfile (struct stat *inode) |
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 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 int | load (char *path) |
Load an unmaged plugin directly. | |
static void | load (fsys &module, char *path) |
Load a plugin into memory. | |
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 |
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.
fsys::fsys | ( | fsys & | descriptor | ) |
Copy (dup) an existing fsys descriptor.
descriptor | to copy from. |
fsys::fsys | ( | char * | path, |
access_t | access | ||
) |
Create a fsys descriptor by opening an existing file or directory.
path | of file to open for created descriptor. |
access | mode of file. |
fsys::fsys | ( | char * | path, |
access_t | access, | ||
unsigned | permission | ||
) |
Create a fsys descriptor by creating a file.
path | of file to create for descriptor. |
access | mode of file access. |
permission | mode of file. |
static int fsys::access | ( | char * | path, |
unsigned | mode | ||
) | [static] |
Test path access.
path | to test. |
mode | to test for. |
void fsys::assign | ( | fd_t | descriptor | ) | [inline] |
static void fsys::assign | ( | fsys & | object, |
fd_t | descriptor | ||
) | [inline, static] |
static int fsys::change | ( | char * | path, |
unsigned | mode | ||
) | [static] |
Change file access mode.
path | to change. |
mode | to assign. |
static int fsys::changeDir | ( | char * | path | ) | [static] |
Set directory prefix (chdir).
path | to change to. |
static void fsys::close | ( | fsys & | descriptor | ) | [inline, static] |
void fsys::create | ( | char * | path, |
access_t | access, | ||
unsigned | mode | ||
) |
Open a file descriptor directly.
path | of file to create. |
access | mode of descriptor. |
mode | of file if created. |
static int fsys::createDir | ( | char * | path, |
unsigned | mode | ||
) | [static] |
Simple direct method to create a directory.
path | of directory to create. |
mode | of directory. |
int fsys::drop | ( | offset_t | size = 0 | ) |
Drop cached data from start of file.
size | of region to drop or until end of file. |
int fsys::err | ( | void | ) | [inline] |
static void* fsys::find | ( | fsys & | module, |
char * | symbol | ||
) | [static] |
Find symbol in loaded module.
module | to search. |
symbol | to search for. |
fd_t fsys::getHandle | ( | void | ) | [inline] |
static int fsys::getPrefix | ( | char * | path, |
size_t | size | ||
) | [static] |
Get current directory prefix (pwd).
path | to save directory into. |
size | of path we can save. |
static int fsys::hardlink | ( | char * | path, |
char * | target | ||
) | [static] |
Create a hard link.
path | to create link to. |
target | of link. |
static bool fsys::isdir | ( | char * | path | ) | [static] |
Test if path is a directory.
path | to test. |
static bool fsys::isfile | ( | char * | path | ) | [static] |
Test if path is a file.
path | to test. |
static bool fsys::ishidden | ( | char * | path | ) | [static] |
Test if path is a hidden file.
path | to test. |
static bool fsys::islink | ( | char * | path | ) | [static] |
Test if path is a symlink.
path | to test. |
static int fsys::link | ( | char * | path, |
char * | target | ||
) | [static] |
Create a symbolic link.
path | to create. |
target | of link. |
static int fsys::linkinfo | ( | char * | path, |
char * | buffer, | ||
size_t | size | ||
) | [static] |
Read a symbolic link to get it's target.
path | of link. |
buffer | to save target into. |
size | of buffer. |
static void fsys::load | ( | fsys & | module, |
char * | path | ||
) | [static] |
Load a plugin into memory.
module | for management. |
path | to plugin. |
static int fsys::load | ( | char * | path | ) | [static] |
Load an unmaged plugin directly.
path | to plugin. |
void fsys::open | ( | char * | path, |
access_t | access | ||
) |
Open a file or directory.
path | of file to open. |
access | mode of descriptor. |
fsys::operator bool | ( | ) | [inline] |
fsys::operator fd_t | ( | ) | [inline] |
bool fsys::operator! | ( | ) | [inline] |
fd_t fsys::operator* | ( | ) | [inline] |
void fsys::operator= | ( | fd_t | descriptor | ) |
Assing file descriptor from system descriptor.
descriptor | to dup from. |
void fsys::operator= | ( | fsys & | descriptor | ) |
Assign file descriptor by duplicating another descriptor.
descriptor | to dup from. |
ssize_t fsys::read | ( | void * | buffer, |
size_t | count | ||
) |
Read data from descriptor or scan directory.
buffer | to read into. |
count | of bytes to read. |
static ssize_t fsys::read | ( | fsys & | descriptor, |
void * | buffer, | ||
size_t | count | ||
) | [inline, static] |
fd_t fsys::release | ( | void | ) |
Release descriptor, do not close.
static int fsys::remove | ( | char * | path | ) | [static] |
Remove a file.
path | of file. |
static int fsys::removeDir | ( | char * | path | ) | [static] |
Simple direct method to remove a directory.
path | to remove. |
static int fsys::rename | ( | char * | oldpath, |
char * | newpath | ||
) | [static] |
Rename a file.
oldpath | to rename from. |
newpath | to rename to. |
int fsys::seek | ( | offset_t | offset | ) |
Set the position of a file descriptor.
offset | from start of file or "end" to append. |
Reimplemented in fbuf.
void fsys::set | ( | fd_t | descriptor | ) |
Set with external descriptor.
Closes existing file if open.
descriptor | of open file. |
int fsys::stat | ( | struct stat * | buffer | ) |
Get status of open descriptor.
buffer | to save status info in. |
static int fsys::stat | ( | char * | path, |
struct stat * | buffer | ||
) | [static] |
Stat a file.
path | of file to stat. |
buffer | to save stat info. |
int fsys::sync | ( | void | ) |
Commit changes to the filesystem.
int fsys::trunc | ( | offset_t | offset | ) |
Truncate file to specified length.
The file pointer is positioned to the new end of file.
offset | to truncate to. |
Reimplemented in fbuf.
static int 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.
path | to remove. |
static void fsys::unload | ( | fsys & | module | ) | [static] |
unload a specific plugin.
module | to unload |
ssize_t fsys::write | ( | void * | buffer, |
size_t | count | ||
) |
Write data to descriptor.
buffer | to write from. |
count | of bytes to write. |
static ssize_t fsys::write | ( | fsys & | descriptor, |
void * | buffer, | ||
size_t | count | ||
) | [inline, static] |