#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__) |
enum edit_ty |
int os_background | ( | void | ) |
test for backgroundness
The background function is used to determine if the curent process is running in the background.
The os_basename function strip directory and suffix from filenames. (see basename(1))
name | the filename to process | |
ext | the (optional) suffix to be stripped |
The os_basename function strip directory and suffix from filenames. (see basename(1))
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.
The os_below_dir function is used to test whether a given path (lower) is below another directory (upper).
upper | The top directory. | |
lower | The full directory including "higher" and exterding for additional path compenents. |
The os_below_dir function is used to test whether a given path (lower) is below another directory (upper).
higher | The top directory. | |
lower | The full directory including "higher" and exterding for additional path compenents. |
The os_canonify_dirname function is used transform a directory name in canonical form (without the trailing slash).
dirname | The name of the directory to be canonified. |
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.
dirname | The name of the directory to be canonified. |
void os_chdir | ( | const nstring & | path | ) |
The os_chdir function is used to changes the current directory to the specified path.
path | The directory to change to. |
void os_chdir | ( | string_ty * | path | ) |
The os_chdir function is used to changes the current directory to the specified path.
path | The directory to change to. |
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.
path | The directory path to walk and check. |
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.
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.
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.
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.
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.
The os_dirname function is used to extract the directory part of a path (i.e. the last /component removed).
path | The path to be dismembered. |
The os_dirname function is used to extract the directory part of a path (i.e. the last /component removed).
path | The path to be dismembered. |
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.
path | The path to be dismembered. |
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.
path | The path to be dismembered. |
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.
filename | The name of the file to be edited. | |
mode | How the editing is to be done. |
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.
filename | The name of the file to be edited. | |
mode | How the editing is to be done. |
string_ty* os_edit_filename | ( | int | ) |
The os_entryname function is used to extract the last pathname portion of the given path.
path | The path to be dismembered. |
The os_entryname function is used to extract the last pathname portion of the given path.
path | The path to be dismembered. |
The os_entryname_relative function is used to extract the last pathname portion of the given path.
path | The path to be dismembered. |
The os_entryname_relative function is used to extract the last pathname portion of the given path.
path | The path to be dismembered. |
bool os_executable | ( | string_ty * | ) |
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.
cmd | The command to be executed. | |
flags | specific conditions to run the command | |
dir | The current directory to execute the command from. |
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.
cmd | The command to be executed. | |
flags | specific conditions to run the command | |
dir | The current directory to execute the command from. |
The os_execute_retcode function is used to execute a command an returns its exit status.
cmd | The command to execute | |
flags | flags for how to run the command | |
dir | the directory in which to run the command |
The os_execute_retcode function is used to execute a command an returns its exit status.
cmd | The command to execute | |
flags | flags for how to run the command | |
dir | the directory in which to run the command |
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.
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. |
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.
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. |
long os_file_size | ( | 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.
path | The absolute file path to be examined. |
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.
path | The absolute file path to be examined. |
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.
path | The absolute file path to be examined. |
The os_link function is used to make a hard link between two files.
from | The existing file. | |
to | The new file to be a hard link of the existing file. |
The os_link function is used to make a hard link between two files.
from | The existing file. | |
to | The new file to be a hard link of the existing file. |
The os_magic_file function is used to determine a file type from file contents. This is for compatibility and will eventually disappear.
filename | The name of the file to be examined to determine the file type. |
The os_magic_file function is used to determine a file type from file contents.
filename | The name of the file to be examined to determine the file type. |
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.
path | The path opf the directory to be created. | |
mode | The mode of the created directory. |
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.
path | The path opf the directory to be created. | |
mode | The mode of the created directory. |
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.
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. |
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.
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. |
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 * | ||||
) |
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.
lhs | The directory the next part is relative to. | |
rhs | The additional path, relative to the first argument. |
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 join two path components together with a slash. Care is taken to remove redundant "." components and redundant slashes.
lhs | The directory the next part is relative to. | |
rhs | The additional path, relative to the first argument. |
The os_path_join function may be used to joint two strings together with a slash between them.
lhs | The root or upper portion. | |
rhs | The relative or lower portion. |
The os_path_join function may be used to joint two strings together with a slash between them.
lhs | The root or upper portion. | |
rhs | The relative or lower portion. |
The os_path_rel2abs function is used to make relative paths absolute, if they need it.
root | The root for relative paths. | |
path | The path to (conditionally) be made absolute. |
The os_path_rel2abs function is used to make relative paths absolute, if they need it.
root | The root for relative paths. | |
path | The path to (conditionally) be made 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.
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.
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.
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.
path | the file or directory of interest |
Os_pathname is used to determine the full path name of a partial path given.
path | path to canonicalize | |
resolve | true if should resolve symlinks, false if not |
Os_pathname is used to determine the full path name of a partial path given.
path | path to canonicalize | |
resolve | non-zero if should resolve symlinks, 0 if not |
int os_readable | ( | const nstring & | path | ) |
The os_readable function may be used to determine whether or not the given file is readable.
path | The path (aabsolute or relative) of the file to test. |
int os_readable | ( | string_ty * | path | ) |
The os_readable function may be used to determine whether or not the given file is readable.
path | The path (aabsolute or relative) of the file to test. |
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.
oldpath | The name of the file on entry. | |
newpath | The name of the file on return. |
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.
oldpath | The name of the file on entry. | |
newpath | The name of the file on return. |
void os_rmdir | ( | const nstring & | path | ) |
The os_rmdir function is used to remove an empty directory.
path | The path of the directory to be removed. |
void os_rmdir | ( | string_ty * | path | ) |
The os_rmdir function is used to remove an empty directory.
path | The path of the directory to be removed. |
void os_rmdir_bg | ( | const nstring & | path | ) |
The os_rmdir_bg function removes a directory tree in the background.
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.
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.
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.
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.
path | The path of the directory tree to be removed. |
void os_rmdir_tree | ( | string_ty * | path | ) |
The os_rmdir_tree function is used to remive directory trees.
path | The path of the directory tree to be removed. |
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.
id | The GID to assume. |
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.
id | The UID to assume. |
const char* os_shell | ( | void | ) |
The os_symlink function is used to make symbolic links.
src | The src paramter is the source file to be linked from. | |
dst | The dst paramter is the destination file to be created. |
The os_symlink function is used to make symbolic links.
src | The src paramter is the source file to be linked from. | |
dst | The dst paramter is the destination file to be created. |
The os_symlink_or_copy function is used to make symbolic links if possible otherwise hard links otherwise make a complete copy.
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.
path | The name of the file to be deleted. |
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.
path | The name of the file to be deleted. |
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.
path | The name of the file to be deleted. |
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.
path | The name of the file to be deleted. |
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.
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.
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.
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. |