OS

Access OS services. More...

Defines

#define OS_EXEC_FLAG_NO_INPUT   0
#define OS_EXEC_FLAG_INPUT   1
#define OS_EXEC_FLAG_ERROK   2
#define OS_EXEC_FLAG_SILENT   4
#define os_become_must_be_active()   os_become_must_be_active_gizzards(__FILE__, __LINE__)
#define os_become_must_not_be_active()   os_become_must_not_be_active_gizzards(__FILE__, __LINE__)

Enumerations

enum  edit_ty { edit_not_set, edit_foreground, edit_background }

Functions

int os_exists (string_ty *path, bool eaccess_is_ok=false)
bool os_exists (const nstring &path, bool eaccess_is_ok=false)
void os_mkdir (string_ty *path, int mode)
void os_mkdir (const nstring &path, int mode)
void os_rmdir (string_ty *path)
void os_rmdir (const nstring &path)
void os_rmdir_errok (string_ty *path)
void os_rmdir_errok (const nstring &path)
void os_rmdir_bg (string_ty *path)
void os_rmdir_bg (const nstring &path)
void os_rmdir_tree (string_ty *path)
void os_rmdir_tree (const nstring &path)
void os_mkdir_between (string_ty *root, string_ty *rel, int mode)
void os_mkdir_between (const nstring &root, const nstring &rel, int mode)
void os_rename (string_ty *oldpath, string_ty *newpath)
void os_rename (const nstring &oldpath, const nstring &newpath)
void os_unlink (string_ty *path)
void os_unlink (const nstring &path)
void os_unlink_errok (string_ty *path)
void os_unlink_errok (const nstring &path)
string_tyos_curdir (void)
string_tyos_path_join (string_ty *lhs, string_ty *rhs)
nstring os_path_join (const nstring &lhs, const nstring &rhs)
string_tyos_path_cat (string_ty *lhs, string_ty *rhs)
nstring os_path_cat (const nstring &lhs, const nstring &rhs)
string_tyos_path_rel2abs (string_ty *root, string_ty *path)
nstring os_path_rel2abs (const nstring &root, const nstring &path)
string_tyos_pathname (string_ty *path, int resolve)
nstring os_pathname (const nstring &path, bool resolve)
string_tyos_basename (string_ty *name, string_ty *ext=NULL)
nstring os_basename (const nstring &name, const nstring &ext="")
string_tyos_dirname (string_ty *path)
nstring os_dirname (const nstring &path)
string_tyos_dirname_relative (string_ty *path)
nstring os_dirname_relative (const nstring &path)
string_tyos_entryname (string_ty *path)
nstring os_entryname (const nstring &path)
string_tyos_entryname_relative (string_ty *path)
nstring os_entryname_relative (const nstring &path)
string_tyos_below_dir (string_ty *higher, string_ty *lower)
nstring os_below_dir (const nstring &upper, const nstring &lower)
void os_chdir (string_ty *path)
void os_chdir (const nstring &path)
void os_setuid (int id)
void os_setgid (int id)
void os_execute (string_ty *cmd, int flags, string_ty *dir)
void os_execute (const nstring &cmd, int flags, const nstring &dir)
int os_execute_retcode (string_ty *cmd, int flags, string_ty *dir)
int os_execute_retcode (const nstring &cmd, int flags, const nstring &dir)
string_tyos_execute_slurp (string_ty *cmd, int flags, string_ty *dir)
void os_xargs (string_ty *the_command, struct string_list_ty *the_list, string_ty *dir)
void os_xargs (const nstring &the_command, const nstring_list &the_list, const nstring &dir)
long os_file_size (string_ty *)
void os_mtime_range (string_ty *, time_t *, time_t *)
time_t os_mtime_actual (string_ty *)
void os_mtime_set (string_ty *, time_t)
void os_mtime_set_errok (string_ty *, time_t)
void os_chown_check (string_ty *path, int mode, int uid, int gid)
void os_chmod (string_ty *path, int mode)
void os_chmod (const nstring &path, int mode)
void os_chmod_errok (string_ty *path, int mode)
void os_chmod_errok (const nstring &path, int mode)
int os_chmod_query (string_ty *)
void os_link (string_ty *from, string_ty *to)
void os_link (const nstring &from, const nstring &to)
int os_testing_mode (void)
void os_become_init (void)
void os_become_init_mortal (void)
void os_become_reinit_mortal (void)
void os_become (int uid, int gid, int umsk)
void os_become_undo (void)
void os_become_undo (int uid, int gid)
void os_become_undo_atexit (void)
void os_become_orig (void)
void os_become_query (int *uid, int *gid, int *umsk)
void os_become_orig_query (int *uid, int *gid, int *umsk)
int os_become_active (void)
void os_become_must_be_active_gizzards (const char *, int)
void os_become_must_not_be_active_gizzards (const char *, int)
int os_background (void)
 test for backgroundness
int os_readable (string_ty *path)
int os_readable (const nstring &path)
bool os_executable (string_ty *)
int os_waitpid (int child, int *status)
int os_waitpid_status (int child, const char *cmd)
const char * os_shell (void)
void os_edit (string_ty *filename, edit_ty mode)
void os_edit (const nstring &filename, edit_ty mode)
string_tyos_edit_string (string_ty *, edit_ty)
string_tyos_edit_new (edit_ty)
string_tyos_edit_filename (int)
string_tyos_tmpdir (void)
int os_pathconf_name_max (const nstring &path)
int os_pathconf_name_max (string_ty *path)
int os_pathconf_path_max (const nstring &path)
int os_pathconf_path_max (string_ty *path)
void os_symlink (string_ty *src, string_ty *dst)
void os_symlink (const nstring &src, const nstring &dst)
void os_symlink_or_copy (string_ty *src, string_ty *dst)
string_tyos_readlink (string_ty *)
int os_symlink_query (string_ty *)
void os_throttle (void)
bool os_unthrottle (void)
void os_owner_query (string_ty *, int *, int *)
string_tyos_fingerprint (string_ty *)
void os_interrupt_register (void)
void os_interrupt_cope (void)
void os_interrupt_ignore (void)
int os_interrupt_has_occurred (void)
int os_isa_directory (string_ty *path)
bool os_isa_symlink (string_ty *path)
int os_isa_special_file (string_ty *path)
nstring os_magic_file (const nstring &filename)
nstring os_magic_file (string_ty *filename)
string_tyos_canonify_dirname (string_ty *dirname)
nstring os_canonify_dirname (const nstring &dirname)
void os_check_path_traversable (string_ty *path)

Detailed Description

Access OS services.


Define Documentation

 
#define os_become_must_be_active (  )     os_become_must_be_active_gizzards(__FILE__, __LINE__)

Definition at line 946 of file os.h.

 
#define os_become_must_not_be_active (  )     os_become_must_not_be_active_gizzards(__FILE__, __LINE__)

Definition at line 949 of file os.h.

#define OS_EXEC_FLAG_ERROK   2

Definition at line 38 of file os.h.

#define OS_EXEC_FLAG_INPUT   1

Definition at line 37 of file os.h.

#define OS_EXEC_FLAG_NO_INPUT   0

Definition at line 36 of file os.h.

#define OS_EXEC_FLAG_SILENT   4

Definition at line 39 of file os.h.


Enumeration Type Documentation

enum edit_ty

Enumerator:
edit_not_set 
edit_foreground 
edit_background 

Definition at line 995 of file os.h.


Function Documentation

int os_background ( void   ) 

test for backgroundness

The background function is used to determine if the curent process is running in the background.

Returns:
zero if process is not in the background, nonzero if the process is in the background.

nstring os_basename ( const nstring name,
const nstring ext = "" 
)

The os_basename function strip directory and suffix from filenames. (see basename(1))

Parameters:
name the filename to process
ext the (optional) suffix to be stripped

string_ty* os_basename ( string_ty name,
string_ty ext = NULL 
)

The os_basename function strip directory and suffix from filenames. (see basename(1))

Parameters:
name the filename to process
ext the (optional) suffix to be stripped

void os_become ( int  uid,
int  gid,
int  umsk 
)

int os_become_active ( void   ) 

void os_become_init ( void   ) 

void os_become_init_mortal ( void   ) 

void os_become_must_be_active_gizzards ( const char *  ,
int   
)

void os_become_must_not_be_active_gizzards ( const char *  ,
int   
)

void os_become_orig ( void   ) 

void os_become_orig_query ( int *  uid,
int *  gid,
int *  umsk 
)

void os_become_query ( int *  uid,
int *  gid,
int *  umsk 
)

void os_become_reinit_mortal ( void   ) 

void os_become_undo ( int  uid,
int  gid 
)

The os_become_undo function is used to undo the effects of the os_become function. It returns the effective uid and gid to root, so that future os_become call will work.

It is a bug (and a fatal error will be issued) if there is no matching os_become call. If DEBUG is enabled, it will cause an assert failure if the uid and gid in the undo does not match the os_become.

void os_become_undo ( void   ) 

The os_become_undo function is used to undo the effects of the os_become function. It returns the effective uid and gid to root, so that future os_become call will work.

It is a bug (and a fatal error will be issued) if there is no matching os_become call.

void os_become_undo_atexit ( void   ) 

The os_become_undo_atexit function is used to cancel any os_become setting, if one is active. It performs all of the functions of_os_become_undo, except it is not an error if there has been no matching os_become call. This function may only be called from quite_action derived classes.

nstring os_below_dir ( const nstring upper,
const nstring lower 
)

The os_below_dir function is used to test whether a given path (lower) is below another directory (upper).

Parameters:
upper The top directory.
lower The full directory including "higher" and exterding for additional path compenents.
Returns:
narrow string; being the relative portion below "higher"; or "" if "lower" is not below "higher"; or "." if lower equals higher.
Note:
The return values are not the same as the old string_ty version of this function.

string_ty* os_below_dir ( string_ty higher,
string_ty lower 
)

The os_below_dir function is used to test whether a given path (lower) is below another directory (upper).

Parameters:
higher The top directory.
lower The full directory including "higher" and exterding for additional path compenents.
Returns:
pointer to string in dynamic memory, being the relative portion below "higher"; NULL if "lower" is not below "higher"; the empty string if lower equals upper.

nstring os_canonify_dirname ( const nstring dirname  ) 

The os_canonify_dirname function is used transform a directory name in canonical form (without the trailing slash).

Parameters:
dirname The name of the directory to be canonified.
Returns:
A string with the canonified name of the directory.

string_ty* os_canonify_dirname ( string_ty dirname  ) 

The os_canonify_dirname function is used transform a directory name in canonical form (without the trailing slash). This is for compatibility and will eventually disappear.

Parameters:
dirname The name of the directory to be canonified.
Returns:
A string with the canonified name of the directory.

void os_chdir ( const nstring path  ) 

The os_chdir function is used to changes the current directory to the specified path.

Parameters:
path The directory to change to.
Note:
This function does not return if there is an error; it printf an error message and exits.

void os_chdir ( string_ty path  ) 

The os_chdir function is used to changes the current directory to the specified path.

Parameters:
path The directory to change to.
Note:
This function does not return if there is an error; it printf an error message and exits.

void os_check_path_traversable ( string_ty path  ) 

The os_check_path_traversable function is used to check that a path, consisting entirely of existing directories, is traversable (has directory 'x' permissions) by the current user.

Parameters:
path The directory path to walk and check.
Note:
This function does not return if any problem is found; instead it prints a fatal error message and exits.

void os_chmod ( const nstring path,
int  mode 
)

The os_chmod function is used to change the permission mode of a file. This function does not return if there is an error; instead it prints an error messages and exits.

Parameters:
path The path of the file to be changed.
mode The permissions mode the file is to assume.

void os_chmod ( string_ty path,
int  mode 
)

The os_chmod function is used to change the permission mode of a file. This function does not return if there is an error; instead it prints an error messages and exits.

Parameters:
path The path of the file to be changed.
mode The permissions mode the file is to assume.

void os_chmod_errok ( const nstring path,
int  mode 
)

The os_chmod_errok function is used to change the permission mode of a file. This function ignores arror.

Parameters:
path The path of the file to be changed.
mode The permissions mode the file is to assume.

void os_chmod_errok ( string_ty path,
int  mode 
)

The os_chmod_errok function is used to change the permission mode of a file. This function ignores arror.

Parameters:
path The path of the file to be changed.
mode The permissions mode the file is to assume.

int os_chmod_query ( string_ty  ) 

void os_chown_check ( string_ty path,
int  mode,
int  uid,
int  gid 
)

string_ty* os_curdir ( void   ) 

The os_curdir function is used to obtain the absolute path of the current directory.

Note:
This function does not return if there is an error; it prints an error message and exits.

nstring os_dirname ( const nstring path  ) 

The os_dirname function is used to extract the directory part of a path (i.e. the last /component removed).

Parameters:
path The path to be dismembered.
Note:
The pash is resolved via os_pathname before the directory part is extracted.

string_ty* os_dirname ( string_ty path  ) 

The os_dirname function is used to extract the directory part of a path (i.e. the last /component removed).

Parameters:
path The path to be dismembered.
Note:
The pash is resolved via os_pathname before the directory part is extracted.

nstring os_dirname_relative ( const nstring path  ) 

The os_dirname_relative function is used to extract the directory part of a path (i.e. the last /component removed). If there is no slash (/) in the filename, "." is returned.

Parameters:
path The path to be dismembered.

string_ty* os_dirname_relative ( string_ty path  ) 

The os_dirname_relative function is used to extract the directory part of a path (i.e. the last /component removed). If there is no slash (/) in the filename, "." is returned.

Parameters:
path The path to be dismembered.

void os_edit ( const nstring filename,
edit_ty  mode 
)

The os_edit function is used to pass the named file to an edirot for the user to edit. It returns whn the user quit the editor.

Parameters:
filename The name of the file to be edited.
mode How the editing is to be done.

void os_edit ( string_ty filename,
edit_ty  mode 
)

The os_edit function is used to pass the named file to an edirot for the user to edit. It returns whn the user quit the editor.

Parameters:
filename The name of the file to be edited.
mode How the editing is to be done.

string_ty* os_edit_filename ( int   ) 

string_ty* os_edit_new ( edit_ty   ) 

string_ty* os_edit_string ( string_ty ,
edit_ty   
)

nstring os_entryname ( const nstring path  ) 

The os_entryname function is used to extract the last pathname portion of the given path.

Parameters:
path The path to be dismembered.
Note:
The path is resolved via os_pathname before the last portion of the path is extracted.

string_ty* os_entryname ( string_ty path  ) 

The os_entryname function is used to extract the last pathname portion of the given path.

Parameters:
path The path to be dismembered.
Note:
The path is resolved via os_pathname before the last portion of the path is extracted.

nstring os_entryname_relative ( const nstring path  ) 

The os_entryname_relative function is used to extract the last pathname portion of the given path.

Parameters:
path The path to be dismembered.

string_ty* os_entryname_relative ( string_ty path  ) 

The os_entryname_relative function is used to extract the last pathname portion of the given path.

Parameters:
path The path to be dismembered.

bool os_executable ( string_ty  ) 

void os_execute ( const nstring cmd,
int  flags,
const nstring dir 
)

The os_execute function i sused to execute a command. It is expected that you have already called os_become to set the user the command is to be executed as.

This function does not return if the command returns a non-zero exit status.

Parameters:
cmd The command to be executed.
flags specific conditions to run the command
dir The current directory to execute the command from.

void os_execute ( string_ty cmd,
int  flags,
string_ty dir 
)

The os_execute function i sused to execute a command. It is expected that you have already called os_become to set the user the command is to be executed as.

This function does not return if the command returns a non-zero exit status.

Parameters:
cmd The command to be executed.
flags specific conditions to run the command
dir The current directory to execute the command from.

int os_execute_retcode ( const nstring cmd,
int  flags,
const nstring dir 
)

The os_execute_retcode function is used to execute a command an returns its exit status.

Parameters:
cmd The command to execute
flags flags for how to run the command
dir the directory in which to run the command
Returns:
the exit status: zero on success, non-zero on failure

int os_execute_retcode ( string_ty cmd,
int  flags,
string_ty dir 
)

The os_execute_retcode function is used to execute a command an returns its exit status.

Parameters:
cmd The command to execute
flags flags for how to run the command
dir the directory in which to run the command
Returns:
the exit status: zero on success, non-zero on failure

string_ty* os_execute_slurp ( string_ty cmd,
int  flags,
string_ty dir 
)

bool os_exists ( const nstring path,
bool  eaccess_is_ok = false 
)

The os_exists function is used to determine if the given path exists. It does not follow symlinks.

Parameters:
path The path to check for existance.
eaccess_is_ok If true, the EACCES error is also cause for returning false, rather than reporting a fatal error and exiting.
Returns:
bool; true if the file exists, false if the file doesn't exist (ENOENT or ENOTDIR).
Note:
This function does not return for any error other than ENOENT or ENOTDIR, but prints an error and exits.

int os_exists ( string_ty path,
bool  eaccess_is_ok = false 
)

The os_exists function is used to determine if the given path exists. It does not follow symlinks.

Parameters:
path The path to check for existance.
eaccess_is_ok If true, the EACCES error is also cause for returning false, rather than reporting a fatal error and exiting.
Returns:
int; non-zero if the file exists, zero if the file doesn't (ENOENT or ENOTDIR)
Note:
This function does not return for any error other than ENOENT or ENOTDIR, but prints an error and exits.

long os_file_size ( string_ty  ) 

string_ty* os_fingerprint ( string_ty  ) 

void os_interrupt_cope ( void   ) 

int os_interrupt_has_occurred ( void   ) 

void os_interrupt_ignore ( void   ) 

void os_interrupt_register ( void   ) 

int os_isa_directory ( string_ty path  ) 

The os_isa_directory function is used to test whether the given absolute path is a directory.

Parameters:
path The absolute file path to be examined.
Returns:
bool; true if the file exists and is a directory, false if the file does not exist, false if the file exists and is not a directory.

int os_isa_special_file ( string_ty path  ) 

The os_isa_special_file function is used to test whether the given absolute path is a regular file or not.

Parameters:
path The absolute file path to be examined.
Returns:
bool; false if the file does not exist, false if the file exists and is a regular file, true if the file exists and is a directory, true if the file exists and is a symlink, true if the file exists and is not a regular file,

bool os_isa_symlink ( string_ty path  ) 

The os_isa_symlink function is used to test whether the given absolute path is a symbolic link.

Parameters:
path The absolute file path to be examined.
Returns:
bool; true if the file exists and is a symbolic link, false if the file does not exists, false if the file exists and is not a symbolic link.

void os_link ( const nstring from,
const nstring to 
)

The os_link function is used to make a hard link between two files.

Parameters:
from The existing file.
to The new file to be a hard link of the existing file.

void os_link ( string_ty from,
string_ty to 
)

The os_link function is used to make a hard link between two files.

Parameters:
from The existing file.
to The new file to be a hard link of the existing file.

nstring os_magic_file ( string_ty filename  ) 

The os_magic_file function is used to determine a file type from file contents. This is for compatibility and will eventually disappear.

Parameters:
filename The name of the file to be examined to determine the file type.
Returns:
A string describing the file, as a MIME content-type. E.g. most source files will be "text/plain; charset=us-ascii"

nstring os_magic_file ( const nstring filename  ) 

The os_magic_file function is used to determine a file type from file contents.

Parameters:
filename The name of the file to be examined to determine the file type.
Returns:
A string describing the file, as a MIME content-type. E.g. most source files will be "text/plain; charset=us-ascii"

void os_mkdir ( const nstring path,
int  mode 
)

The os_mkdir function is used to create a new directory. It does not mak intermediate directories.

Parameters:
path The path opf the directory to be created.
mode The mode of the created directory.
Note:
This function does not return for any error, but prints an error and exits.

void os_mkdir ( string_ty path,
int  mode 
)

The os_mkdir function is used to create a new directory. It does not mak intermediate directories.

Parameters:
path The path opf the directory to be created.
mode The mode of the created directory.
Note:
This function does not return for any error, but prints an error and exits.

void os_mkdir_between ( const nstring root,
const nstring rel,
int  mode 
)

The os_mkdir_between function is used to make intermediate directories, of necessary between a root and a relative destination. The final portion is not created.

Parameters:
root The root directory.
rel The path, relative to the root, which needs to have intermediate directories created.
mode The permissions mode for any created directories.
Note:
This function will not return if there is any error creating a directory, instead it will report the error and exit.

void os_mkdir_between ( string_ty root,
string_ty rel,
int  mode 
)

The os_mkdir_between function is used to make intermediate directories, of necessary between a root and a relative destination. The final portion is not created.

Parameters:
root The root directory.
rel The path, relative to the root, which needs to have intermediate directories created.
mode The permissions mode for any created directories.
Note:
This function will not return if there is any error creating a directory, instead it will report the error and exit.

time_t os_mtime_actual ( string_ty  ) 

void os_mtime_range ( string_ty ,
time_t *  ,
time_t *   
)

void os_mtime_set ( string_ty ,
time_t   
)

void os_mtime_set_errok ( string_ty ,
time_t   
)

void os_owner_query ( string_ty ,
int *  ,
int *   
)

nstring os_path_cat ( const nstring lhs,
const nstring rhs 
)

The os_path_cat function is used to carefully join two path components together with a slash. Care is taken to remove redundant "." components and redundant slashes.

Parameters:
lhs The directory the next part is relative to.
rhs The additional path, relative to the first argument.
The os_path_cat function is used to carefully joint two path components together with a slash. Care is taken to remove redundant "." components and redundant slashes.

Parameters:
lhs The directory the next part is relative to.
rhs The additional path, relative to the first argument.

string_ty* os_path_cat ( string_ty lhs,
string_ty rhs 
)

The os_path_cat function is used to carefully join two path components together with a slash. Care is taken to remove redundant "." components and redundant slashes.

Parameters:
lhs The directory the next part is relative to.
rhs The additional path, relative to the first argument.

nstring os_path_join ( const nstring lhs,
const nstring rhs 
)

The os_path_join function may be used to joint two strings together with a slash between them.

Parameters:
lhs The root or upper portion.
rhs The relative or lower portion.

string_ty* os_path_join ( string_ty lhs,
string_ty rhs 
)

The os_path_join function may be used to joint two strings together with a slash between them.

Parameters:
lhs The root or upper portion.
rhs The relative or lower portion.

nstring os_path_rel2abs ( const nstring root,
const nstring path 
)

The os_path_rel2abs function is used to make relative paths absolute, if they need it.

Parameters:
root The root for relative paths.
path The path to (conditionally) be made absolute.
Returns:
The "path" if it was already abvsolute, otherwise the "root" is used to make the "path" absolute.

string_ty* os_path_rel2abs ( string_ty root,
string_ty path 
)

The os_path_rel2abs function is used to make relative paths absolute, if they need it.

Parameters:
root The root for relative paths.
path The path to (conditionally) be made absolute.
Returns:
The "path" if it was already abvsolute, otherwise the "root" is used to make the "path" absolute.

int os_pathconf_name_max ( string_ty path  ) 

The os_pathconf_name_max function may be used to determine the maximum length of a path name component.

Parameters:
path the file or directory of interest

int os_pathconf_name_max ( const nstring path  ) 

The os_pathconf_name_max function may be used to determine the maximum length of a path name component.

Parameters:
path the file or directory of interest

int os_pathconf_path_max ( string_ty path  ) 

The os_pathconf_path_max function may be used to determine the maximum length of a file name path, over all components, including separators.

Parameters:
path the file or directory of interest

int os_pathconf_path_max ( const nstring path  ) 

The os_pathconf_path_max function may be used to determine the maximum length of a file name path, over all components, including separators.

Parameters:
path the file or directory of interest

nstring os_pathname ( const nstring path,
bool  resolve 
)

Os_pathname is used to determine the full path name of a partial path given.

Parameters:
path path to canonicalize
resolve true if should resolve symlinks, false if not

string_ty* os_pathname ( string_ty path,
int  resolve 
)

Os_pathname is used to determine the full path name of a partial path given.

Parameters:
path path to canonicalize
resolve non-zero if should resolve symlinks, 0 if not
Returns:
pointer to dynamically allocated string.
Note:
Use str_free() when you are done with the value returned.

int os_readable ( const nstring path  ) 

The os_readable function may be used to determine whether or not the given file is readable.

Parameters:
path The path (aabsolute or relative) of the file to test.
Returns:
zero on success, or the errno value on failure.

int os_readable ( string_ty path  ) 

The os_readable function may be used to determine whether or not the given file is readable.

Parameters:
path The path (aabsolute or relative) of the file to test.
Returns:
zero on success, or the errno value on failure.

string_ty* os_readlink ( string_ty  ) 

void os_rename ( const nstring oldpath,
const nstring newpath 
)

The os_rename function is used to change the name of a file.

Any other hard links to the file (as created using link(2)) are unaffected.

If newpath already exists it will be atomically replaced (subject to a few conditions), so that there is no point at which another process attempting to access newpath will find it missing.

If newpath exists but the operation fails for some reason rename guarantees to leave an instance of newpath in place.

However, when overwriting there will probably be a window in which both oldpath and newpath refer to the file being renamed.

If oldpath refers to a symbolic link the link is renamed; if newpath refers to a symbolic link the link will be overwritten.

Parameters:
oldpath The name of the file on entry.
newpath The name of the file on return.
Note:
This function does not return if there is an error; it prints an error message and exits.

void os_rename ( string_ty oldpath,
string_ty newpath 
)

The os_rename function is used to change the name of a file.

Any other hard links to the file (as created using link(2)) are unaffected.

If newpath already exists it will be atomically replaced (subject to a few conditions), so that there is no point at which another process attempting to access newpath will find it missing.

If newpath exists but the operation fails for some reason rename guarantees to leave an instance of newpath in place.

However, when overwriting there will probably be a window in which both oldpath and newpath refer to the file being renamed.

If oldpath refers to a symbolic link the link is renamed; if newpath refers to a symbolic link the link will be overwritten.

Parameters:
oldpath The name of the file on entry.
newpath The name of the file on return.
Note:
This function will not return if there are any errors.

void os_rmdir ( const nstring path  ) 

The os_rmdir function is used to remove an empty directory.

Parameters:
path The path of the directory to be removed.
Note:
This funtion does not return if the is an error; instead it prints an error message and exits.

void os_rmdir ( string_ty path  ) 

The os_rmdir function is used to remove an empty directory.

Parameters:
path The path of the directory to be removed.
Note:
This funtion does not return if the is an error; instead it prints an error message and exits.

void os_rmdir_bg ( const nstring path  ) 

The os_rmdir_bg function removes a directory tree in the background.

Parameters:
path The directory tree to be removed.

void os_rmdir_bg ( string_ty path  ) 

The os_rmdir_bg function removes a directory tree in the background.

Parameters:
path The directory tree to be removed.

void os_rmdir_errok ( const nstring path  ) 

The os_rmdir_errok function is used to remove an empty directory. It ignores errors.

Parameters:
path The path of the directory to be removed.

void os_rmdir_errok ( string_ty path  ) 

The os_rmdir_errok function is used to remove an empty directory. It ignores errors.

Parameters:
path The path of the directory to be removed.

void os_rmdir_tree ( const nstring path  ) 

The os_rmdir_tree function is used to remive directory trees.

Parameters:
path The path of the directory tree to be removed.
Note:
This function will not return if there is any error removing the directory tree, instead it will report the error, abort the remove, and exit.

void os_rmdir_tree ( string_ty path  ) 

The os_rmdir_tree function is used to remive directory trees.

Parameters:
path The path of the directory tree to be removed.
Note:
This function will not return if there is any error removing the directory tree, instead it will report the error, abort the remove, and exit.

void os_setgid ( int  id  ) 

The os_setgid function si used to set the effective group ID of the current process. If the caller is the superuser, the real and saved group IDs are also set.

Under Linux, setgid is implemented like the POSIX version with the _POSIX_SAVED_IDS feature. This allows a setgid program that is not suid root to drop all of its group privileges, do some un-privileged work, and then re-engage the original effective group ID in a secure manner.

Parameters:
id The GID to assume.
Note:
This function does not return in the event of an error; instead it prints an error message and exits.

void os_setuid ( int  id  ) 

The os_setuid function is used to set the effective user ID of the current process. If the effective userid of the caller is root, the real and saved user IDs are also set.

Under Linux, setuid is implemented like the POSIX version with the _POSIX_SAVED_IDS feature. This allows a setuid (other than root) program to drop all of its user privileges, do some un-privileged work, and then re-engage the original effective user ID in a secure manner.

If the user is root or the program is setuid root, special care must be taken. The setuid function checks the effective uid of the caller and if it is the superuser, all process related user IDs are set to uid. After this has occurred, it is impossible for the program to regain root privileges.

Thus, a setuid-root program wishing to temporarily drop root privileges, assume the identity of a non-root user, and then regain root privileges afterwards cannot use setuid. You can accomplish this with the (non-POSIX, BSD) call seteuid.

Parameters:
id The UID to assume.
Note:
This function does not return in the event of an error; instead it prints an error message and exits.

const char* os_shell ( void   ) 

void os_symlink ( const nstring src,
const nstring dst 
)

The os_symlink function is used to make symbolic links.

Parameters:
src The src paramter is the source file to be linked from.
dst The dst paramter is the destination file to be created.

void os_symlink ( string_ty src,
string_ty dst 
)

The os_symlink function is used to make symbolic links.

Parameters:
src The src paramter is the source file to be linked from.
dst The dst paramter is the destination file to be created.

void os_symlink_or_copy ( string_ty src,
string_ty dst 
)

The os_symlink_or_copy function is used to make symbolic links if possible otherwise hard links otherwise make a complete copy.

Parameters:
src The src paramter is the source file to be linked from.
dst The dst paramter is the destination file to be created.

int os_symlink_query ( string_ty  ) 

int os_testing_mode ( void   ) 

void os_throttle ( void   ) 

This unlikely function is used to slow aegis down. It is primarily used for Aegis' own tests, to ensure that the time stamps are kosher even on ultra-fast machines. It is also useful in shell scripts, e.g. automatic integration queue handling.

The AEGIS_THROTTLE environment variable is set to the number of seconds to throttle, typically 2.

string_ty* os_tmpdir ( void   ) 

void os_unlink ( const nstring path  ) 

The os_unlink function deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse.

If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it is closed.

If the name referred to a symbolic link the link is removed.

If the name referred to a socket, fifo or device the name for it is removed but processes which have the object open may continue to use it.

Parameters:
path The name of the file to be deleted.
Note:
This function does not return if there is an error; it prints an error message and exits.

void os_unlink ( string_ty path  ) 

The os_unlink function deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse.

If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it is closed.

If the name referred to a symbolic link the link is removed.

If the name referred to a socket, fifo or device the name for it is removed but processes which have the object open may continue to use it.

Parameters:
path The name of the file to be deleted.
Note:
This function does not return if there is an error; it prints an error message and exits.

void os_unlink_errok ( const nstring path  ) 

The os_unlink_errok function deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse.

If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it is closed.

If the name referred to a symbolic link the link is removed.

If the name referred to a socket, fifo or device the name for it is removed but processes which have the object open may continue to use it.

Parameters:
path The name of the file to be deleted.
Note:
This function ignores any errors.

void os_unlink_errok ( string_ty path  ) 

The os_unlink_errok function deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse.

If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it is closed.

If the name referred to a symbolic link the link is removed.

If the name referred to a socket, fifo or device the name for it is removed but processes which have the object open may continue to use it.

Parameters:
path The name of the file to be deleted.
Note:
This function ignores any errors.

bool os_unthrottle ( void   ) 

The os_unthrottle method is used to determine whether or not strict timestamp checks should be performed, because no throoline is in effect.

Returns:
bool; true if AEGIS_THROTTLE is less than zero,; false if unset or zero or positive.

int os_waitpid ( int  child,
int *  status 
)

int os_waitpid_status ( int  child,
const char *  cmd 
)

void os_xargs ( const nstring the_command,
const nstring_list the_list,
const nstring dir 
)

The os_xargs function is used to run a command with command line arguments supplied by a list of strings. It will break it into chunks if necessary. This is analogous to the unix xargs(1) command.

Parameters:
the_command The command to be executed. Additional arguments are expected to have been quoted appropriately already.
the_list The arguments to the command. They will be quoted to protect shell special characters if necessary.
dir The directory the command is to be run in.

void os_xargs ( string_ty the_command,
struct string_list_ty the_list,
string_ty dir 
)

The os_xargs function is used to run a command with command line arguments supplied by a list of strings. It will break it into chunks if necessary. This is analogous to the unix xargs(1) command.

Parameters:
the_command The command to be executed. Additional arguments are expected to have been quoted appropriately already.
the_list The arguments to the command. They will be quoted to protect shell special characters if necessary.
dir The directory the command is to be run in.


Generated on Wed Mar 12 23:37:38 2008 for Aegis by  doxygen 1.5.5