#include "sysutil.h"
#include "utility.h"
#include "tunables.h"
#include "port/porting_junk.h"
#include <signal.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <stdio.h>
#include <dirent.h>
#include <time.h>
#include <arpa/inet.h>
#include <errno.h>
#include <pwd.h>
#include <grp.h>
#include <ctype.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <limits.h>
#include <syslog.h>
#include <utime.h>
#include <netdb.h>
構成 | |
struct | vsf_sysutil_sig_details |
struct | vsf_sysutil_sockaddr |
マクロ定義 | |
#define | PRIVATE_HANDS_OFF_syscall_retval syscall_retval |
#define | PRIVATE_HANDS_OFF_exit_status exit_status |
#define | _FILE_OFFSET_BITS 64 |
#define | _LARGEFILE_SOURCE 1 |
#define | _LARGEFILE64_SOURCE 1 |
#define | _LARGE_FILES 1 |
#define | SHUT_RDWR 2 |
#define | SHUT_RD 0 |
関数 | |
static void | vsf_sysutil_common_sighandler (int signum) |
static int | vsf_sysutil_translate_sig (const enum EVSFSysUtilSignal sig) |
static void | vsf_sysutil_set_sighandler (int sig, void(*p_handlefunc)(int)) |
static int | vsf_sysutil_translate_memprot (const enum EVSFSysUtilMapPermission perm) |
static int | vsf_sysutil_translate_openmode (const enum EVSFSysUtilOpenMode mode) |
static void | vsf_sysutil_alloc_statbuf (struct vsf_sysutil_statbuf **p_ptr) |
void | vsf_sysutil_sockaddr_alloc (struct vsf_sysutil_sockaddr **p_sockptr) |
static int | lock_internal (int fd, int lock_type) |
void | vsf_sysutil_check_pending_actions (const enum EVSFSysUtilInterruptContext context, int retval, int fd) |
void | vsf_sysutil_install_sighandler (const enum EVSFSysUtilSignal sig, vsf_sighandle_t handler, void *p_private) |
void | vsf_sysutil_default_sig (const enum EVSFSysUtilSignal sig) |
void | vsf_sysutil_install_null_sighandler (const enum EVSFSysUtilSignal sig) |
void | vsf_sysutil_install_async_sighandler (const enum EVSFSysUtilSignal sig, vsf_async_sighandle_t handler) |
void | vsf_sysutil_block_sig (const enum EVSFSysUtilSignal sig) |
void | vsf_sysutil_unblock_sig (const enum EVSFSysUtilSignal sig) |
void | vsf_sysutil_install_io_handler (vsf_context_io_t handler, void *p_private) |
void | vsf_sysutil_uninstall_io_handler (void) |
void | vsf_sysutil_set_alarm (const unsigned int trigger_seconds) |
void | vsf_sysutil_clear_alarm (void) |
int | vsf_sysutil_read (const int fd, void *p_buf, const unsigned int size) |
int | vsf_sysutil_write (const int fd, const void *p_buf, const unsigned int size) |
int | vsf_sysutil_read_loop (const int fd, void *p_buf, unsigned int size) |
int | vsf_sysutil_write_loop (const int fd, const void *p_buf, unsigned int size) |
filesize_t | vsf_sysutil_get_file_offset (const int file_fd) |
void | vsf_sysutil_lseek_to (const int fd, filesize_t seek_pos) |
void * | vsf_sysutil_malloc (unsigned int size) |
void * | vsf_sysutil_realloc (void *p_ptr, unsigned int size) |
void | vsf_sysutil_free (void *p_ptr) |
unsigned int | vsf_sysutil_getpid (void) |
int | vsf_sysutil_fork (void) |
int | vsf_sysutil_fork_failok (void) |
void | vsf_sysutil_set_exit_func (exitfunc_t exitfunc) |
void | vsf_sysutil_exit (int exit_code) |
vsf_sysutil_wait_retval | vsf_sysutil_wait (void) |
int | vsf_sysutil_wait_reap_one (void) |
int | vsf_sysutil_wait_get_retval (const struct vsf_sysutil_wait_retval *p_waitret) |
int | vsf_sysutil_wait_exited_normally (const struct vsf_sysutil_wait_retval *p_waitret) |
int | vsf_sysutil_wait_get_exitcode (const struct vsf_sysutil_wait_retval *p_waitret) |
void | vsf_sysutil_activate_keepalive (int fd) |
void | vsf_sysutil_activate_reuseaddr (int fd) |
void | vsf_sysutil_set_nodelay (int fd) |
void | vsf_sysutil_activate_sigurg (int fd) |
void | vsf_sysutil_activate_oobinline (int fd) |
void | vsf_sysutil_set_iptos_throughput (int fd) |
void | vsf_sysutil_activate_linger (int fd) |
void | vsf_sysutil_deactivate_linger_failok (int fd) |
void | vsf_sysutil_activate_noblock (int fd) |
void | vsf_sysutil_deactivate_noblock (int fd) |
int | vsf_sysutil_recv_peek (const int fd, void *p_buf, unsigned int len) |
int | vsf_sysutil_atoi (const char *p_str) |
filesize_t | vsf_sysutil_a_to_filesize_t (const char *p_str) |
const char * | vsf_sysutil_ulong_to_str (unsigned long the_ulong) |
const char * | vsf_sysutil_filesize_t_to_str (filesize_t the_filesize) |
const char * | vsf_sysutil_double_to_str (double the_double) |
const char * | vsf_sysutil_uint_to_octal (unsigned int the_uint) |
unsigned int | vsf_sysutil_octal_to_uint (const char *p_str) |
int | vsf_sysutil_toupper (int the_char) |
int | vsf_sysutil_isspace (int the_char) |
int | vsf_sysutil_isprint (int the_char) |
int | vsf_sysutil_isalnum (int the_char) |
int | vsf_sysutil_isdigit (int the_char) |
char * | vsf_sysutil_getcwd (char *p_dest, const unsigned int buf_size) |
int | vsf_sysutil_mkdir (const char *p_dirname, const unsigned int mode) |
int | vsf_sysutil_rmdir (const char *p_dirname) |
int | vsf_sysutil_chdir (const char *p_dirname) |
int | vsf_sysutil_rename (const char *p_from, const char *p_to) |
vsf_sysutil_dir * | vsf_sysutil_opendir (const char *p_dirname) |
void | vsf_sysutil_closedir (struct vsf_sysutil_dir *p_dir) |
const char * | vsf_sysutil_next_dirent (struct vsf_sysutil_dir *p_dir) |
unsigned int | vsf_sysutil_strlen (const char *p_text) |
char * | vsf_sysutil_strdup (const char *p_str) |
void | vsf_sysutil_memclr (void *p_dest, unsigned int size) |
void | vsf_sysutil_memcpy (void *p_dest, const void *p_src, const unsigned int size) |
void | vsf_sysutil_strcpy (char *p_dest, const char *p_src, unsigned int maxsize) |
int | vsf_sysutil_memcmp (const void *p_src1, const void *p_src2, unsigned int size) |
int | vsf_sysutil_strcmp (const char *p_src1, const char *p_src2) |
unsigned int | vsf_sysutil_getpagesize (void) |
void | vsf_sysutil_memprotect (void *p_addr, unsigned int len, const enum EVSFSysUtilMapPermission perm) |
void | vsf_sysutil_memunmap (void *p_start, unsigned int length) |
int | vsf_sysutil_open_file (const char *p_filename, const enum EVSFSysUtilOpenMode mode) |
int | vsf_sysutil_create_file (const char *p_filename) |
int | vsf_sysutil_create_overwrite_file (const char *p_filename) |
int | vsf_sysutil_create_or_open_file (const char *p_filename, unsigned int mode) |
void | vsf_sysutil_dupfd2 (int old_fd, int new_fd) |
void | vsf_sysutil_close (int fd) |
int | vsf_sysutil_close_failok (int fd) |
int | vsf_sysutil_truncate (int fd, filesize_t length) |
int | vsf_sysutil_unlink (const char *p_dead) |
int | vsf_sysutil_write_access (const char *p_filename) |
void | vsf_sysutil_fstat (int fd, struct vsf_sysutil_statbuf **p_ptr) |
int | vsf_sysutil_stat (const char *p_name, struct vsf_sysutil_statbuf **p_ptr) |
int | vsf_sysutil_lstat (const char *p_name, struct vsf_sysutil_statbuf **p_ptr) |
void | vsf_sysutil_dir_stat (const struct vsf_sysutil_dir *p_dir, struct vsf_sysutil_statbuf **p_ptr) |
int | vsf_sysutil_statbuf_is_regfile (const struct vsf_sysutil_statbuf *p_stat) |
int | vsf_sysutil_statbuf_is_symlink (const struct vsf_sysutil_statbuf *p_stat) |
int | vsf_sysutil_statbuf_is_socket (const struct vsf_sysutil_statbuf *p_stat) |
int | vsf_sysutil_statbuf_is_dir (const struct vsf_sysutil_statbuf *p_stat) |
const char * | vsf_sysutil_statbuf_get_perms (const struct vsf_sysutil_statbuf *p_statbuf) |
const char * | vsf_sysutil_statbuf_get_date (const struct vsf_sysutil_statbuf *p_statbuf, int use_localtime) |
const char * | vsf_sysutil_statbuf_get_numeric_date (const struct vsf_sysutil_statbuf *p_statbuf, int use_localtime) |
filesize_t | vsf_sysutil_statbuf_get_size (const struct vsf_sysutil_statbuf *p_statbuf) |
int | vsf_sysutil_statbuf_get_uid (const struct vsf_sysutil_statbuf *p_statbuf) |
int | vsf_sysutil_statbuf_get_gid (const struct vsf_sysutil_statbuf *p_statbuf) |
unsigned int | vsf_sysutil_statbuf_get_links (const struct vsf_sysutil_statbuf *p_statbuf) |
int | vsf_sysutil_statbuf_is_readable_other (const struct vsf_sysutil_statbuf *p_statbuf) |
const char * | vsf_sysutil_statbuf_get_sortkey_mtime (const struct vsf_sysutil_statbuf *p_statbuf) |
void | vsf_sysutil_fchown (const int fd, const int uid, const int gid) |
void | vsf_sysutil_fchmod (const int fd, unsigned int mode) |
int | vsf_sysutil_chmod (const char *p_filename, unsigned int mode) |
int | vsf_sysutil_lock_file_write (int fd) |
int | vsf_sysutil_lock_file_read (int fd) |
void | vsf_sysutil_unlock_file (int fd) |
int | vsf_sysutil_readlink (const char *p_filename, char *p_dest, unsigned int bufsiz) |
int | vsf_sysutil_retval_is_error (int retval) |
enum EVSFSysUtilError | vsf_sysutil_get_error (void) |
int | vsf_sysutil_get_ipv4_sock (void) |
int | vsf_sysutil_get_ipv6_sock (void) |
vsf_sysutil_socketpair_retval | vsf_sysutil_unix_stream_socketpair (void) |
int | vsf_sysutil_bind (int fd, const struct vsf_sysutil_sockaddr *p_sockptr) |
void | vsf_sysutil_listen (int fd, const unsigned int backlog) |
int | vsf_sysutil_accept_timeout (int fd, struct vsf_sysutil_sockaddr *p_sockaddr, unsigned int wait_seconds) |
int | vsf_sysutil_connect_timeout (int fd, const struct vsf_sysutil_sockaddr *p_addr, unsigned int wait_seconds) |
void | vsf_sysutil_getsockname (int fd, struct vsf_sysutil_sockaddr **p_sockptr) |
void | vsf_sysutil_getpeername (int fd, struct vsf_sysutil_sockaddr **p_sockptr) |
void | vsf_sysutil_shutdown_failok (int fd) |
void | vsf_sysutil_shutdown_read_failok (int fd) |
void | vsf_sysutil_sockaddr_clear (struct vsf_sysutil_sockaddr **p_sockptr) |
void | vsf_sysutil_sockaddr_alloc_ipv4 (struct vsf_sysutil_sockaddr **p_sockptr) |
void | vsf_sysutil_sockaddr_alloc_ipv6 (struct vsf_sysutil_sockaddr **p_sockptr) |
void | vsf_sysutil_sockaddr_clone (struct vsf_sysutil_sockaddr **p_sockptr, const struct vsf_sysutil_sockaddr *p_src) |
int | vsf_sysutil_sockaddr_addr_equal (const struct vsf_sysutil_sockaddr *p1, const struct vsf_sysutil_sockaddr *p2) |
int | vsf_sysutil_sockaddr_is_ipv6 (const struct vsf_sysutil_sockaddr *p_sockaddr) |
void | vsf_sysutil_sockaddr_set_ipv4addr (struct vsf_sysutil_sockaddr *p_sockptr, const unsigned char *p_raw) |
void | vsf_sysutil_sockaddr_set_ipv6addr (struct vsf_sysutil_sockaddr *p_sockptr, const unsigned char *p_raw) |
const void * | vsf_sysutil_sockaddr_ipv6_v4 (const struct vsf_sysutil_sockaddr *p_addr) |
const void * | vsf_sysutil_sockaddr_ipv4_v6 (const struct vsf_sysutil_sockaddr *p_addr) |
void * | vsf_sysutil_sockaddr_get_raw_addr (struct vsf_sysutil_sockaddr *p_sockptr) |
unsigned int | vsf_sysutil_get_ipaddr_size (void) |
int | vsf_sysutil_get_ipsock (const struct vsf_sysutil_sockaddr *p_addr) |
void | vsf_sysutil_sockaddr_set_any (struct vsf_sysutil_sockaddr *p_sockaddr) |
void | vsf_sysutil_sockaddr_set_port (struct vsf_sysutil_sockaddr *p_sockptr, unsigned short the_port) |
int | vsf_sysutil_is_port_reserved (unsigned short the_port) |
const char * | vsf_sysutil_inet_ntop (const struct vsf_sysutil_sockaddr *p_sockptr) |
const char * | vsf_sysutil_inet_ntoa (const void *p_raw_addr) |
int | vsf_sysutil_inet_aton (const char *p_text, struct vsf_sysutil_sockaddr *p_addr) |
void | vsf_sysutil_dns_resolve (struct vsf_sysutil_sockaddr **p_sockptr, const char *p_name) |
vsf_sysutil_user * | vsf_sysutil_getpwuid (const int uid) |
vsf_sysutil_user * | vsf_sysutil_getpwnam (const char *p_user) |
const char * | vsf_sysutil_user_getname (const struct vsf_sysutil_user *p_user) |
const char * | vsf_sysutil_user_get_homedir (const struct vsf_sysutil_user *p_user) |
int | vsf_sysutil_user_getuid (const struct vsf_sysutil_user *p_user) |
int | vsf_sysutil_user_getgid (const struct vsf_sysutil_user *p_user) |
vsf_sysutil_group * | vsf_sysutil_getgrgid (const int gid) |
const char * | vsf_sysutil_group_getname (const struct vsf_sysutil_group *p_group) |
unsigned char | vsf_sysutil_get_random_byte (void) |
int | vsf_sysutil_running_as_root (void) |
void | vsf_sysutil_setuid (const struct vsf_sysutil_user *p_user) |
void | vsf_sysutil_setuid_numeric (int uid) |
void | vsf_sysutil_setgid (const struct vsf_sysutil_user *p_user) |
void | vsf_sysutil_setgid_numeric (int gid) |
int | vsf_sysutil_geteuid (void) |
int | vsf_sysutil_getegid (void) |
void | vsf_sysutil_seteuid (const struct vsf_sysutil_user *p_user) |
void | vsf_sysutil_setegid (const struct vsf_sysutil_user *p_user) |
void | vsf_sysutil_seteuid_numeric (int uid) |
void | vsf_sysutil_setegid_numeric (int gid) |
void | vsf_sysutil_clear_supp_groups (void) |
void | vsf_sysutil_initgroups (const struct vsf_sysutil_user *p_user) |
void | vsf_sysutil_chroot (const char *p_root_path) |
unsigned int | vsf_sysutil_get_umask (void) |
void | vsf_sysutil_set_umask (unsigned int new_umask) |
void | vsf_sysutil_make_session_leader (void) |
void | vsf_sysutil_reopen_standard_fds (void) |
void | vsf_sysutil_tzset (void) |
const char * | vsf_sysutil_get_current_date (int use_localtime) |
void | vsf_sysutil_update_cached_time (void) |
long | vsf_sysutil_get_cached_time_sec (void) |
long | vsf_sysutil_get_cached_time_usec (void) |
void | vsf_sysutil_qsort (void *p_base, unsigned int num_elem, unsigned int elem_size, int(*p_compar)(const void *, const void *)) |
void | vsf_sysutil_sleep (double seconds) |
char * | vsf_sysutil_getenv (const char *p_var) |
void | vsf_sysutil_openlog (void) |
void | vsf_sysutil_syslog (const char *p_text, int severe) |
long | vsf_sysutil_parse_time (const char *p_text) |
int | vsf_sysutil_setmodtime (const char *p_file, long the_time, int is_localtime) |
変数 | |
static unsigned int | s_current_umask |
static struct timeval | s_current_time |
static int | s_current_pid = -1 |
static exitfunc_t | s_exit_func |
static long | s_timezone |
static struct vsf_sysutil_sig_details | s_sig_details [NSIG] |
static vsf_context_io_t | s_io_handler |
static void * | s_p_io_handler_private |
static int | s_io_handler_running |