diff options
-rw-r--r-- | GNUmakefile | 3 | ||||
-rwxr-xr-x | configure | 5 | ||||
-rw-r--r-- | include/wolf/daemon/daemon.h | 4 | ||||
-rw-r--r-- | include/wolf/daemon/signals.h | 20 | ||||
-rw-r--r-- | include/wolf/errors.h | 23 | ||||
-rw-r--r-- | include/wolf/port/sys.h | 29 | ||||
-rw-r--r-- | makefiles/dist.mk | 38 | ||||
-rwxr-xr-x | makefiles/guess_env | 9 | ||||
-rw-r--r-- | makefiles/platform.mk | 3 | ||||
-rw-r--r-- | makefiles/top.mk | 2 | ||||
-rw-r--r-- | src/daemon/daemon.c | 129 | ||||
-rw-r--r-- | src/daemon/pidfile.c | 48 | ||||
-rw-r--r-- | src/daemon/pidfile.h | 8 | ||||
-rw-r--r-- | src/daemon/signals.c | 78 | ||||
-rw-r--r-- | src/port/snprintf.c | 2 | ||||
-rw-r--r-- | src/port/snprintf.h | 15 | ||||
-rw-r--r-- | src/port/stdint.h | 30 | ||||
-rw-r--r-- | tests/daemon/testd.c | 8 |
18 files changed, 285 insertions, 169 deletions
diff --git a/GNUmakefile b/GNUmakefile index 9e5cd85..ca6b9c1 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -2,4 +2,7 @@ TOPDIR = . SUBDIRS = src include tests docs +PACKAGE_NAME = WolfBones +PACKAGE_VERSION = 0.0.1 + -include $(TOPDIR)/makefiles/top.mk @@ -1,6 +1,6 @@ #!/bin/sh -cat >$$ <<EOF +cat <<EOF No way, Jose. Use 'make help' to see what you can do. @@ -9,6 +9,3 @@ Use the make of your platform, be it 'make', 'gmake', 'bmake', 'nmake', ... ...whatever... EOF - -cat $$ -rm -f $$ diff --git a/include/wolf/daemon/daemon.h b/include/wolf/daemon/daemon.h index 1359e6e..ef6e7d2 100644 --- a/include/wolf/daemon/daemon.h +++ b/include/wolf/daemon/daemon.h @@ -18,11 +18,11 @@ typedef struct daemon_params_t { } daemon_params_t; daemon_p daemon_new( daemon_params_t params, - error_t *error ); + wolf_error_t *error ); void daemon_free( daemon_p demon ); -error_t daemon_start( daemon_p demon ); +wolf_error_t daemon_start( daemon_p demon ); void daemon_exit( daemon_p demon ); diff --git a/include/wolf/daemon/signals.h b/include/wolf/daemon/signals.h index 2422425..4799406 100644 --- a/include/wolf/daemon/signals.h +++ b/include/wolf/daemon/signals.h @@ -15,29 +15,29 @@ const char *signal_get_short_name( int sig ); const char *signal_get_long_name( int sig ); -error_t signal_install_ignore( int sig, ... ); +wolf_error_t signal_install_ignore( int sig, ... ); -error_t signal_install_empty( int sig, ... ); +wolf_error_t signal_install_empty( int sig, ... ); typedef void (*signal_func_t)( int ); -error_t signal_install_func( signal_func_t func, int sig, ... ); +wolf_error_t signal_install_func( signal_func_t func, int sig, ... ); -error_t signal_install_fatal( int sig, ... ); +wolf_error_t signal_install_fatal( int sig, ... ); -error_t signal_install_notify( int sig, ... ); +wolf_error_t signal_install_notify( int sig, ... ); -error_t signal_install_notify_parent( int sig, ... ); +wolf_error_t signal_install_notify_parent( int sig, ... ); -error_t signal_initialize( void ); +wolf_error_t signal_initialize( void ); -int signal_suspend( int timeout, error_t *error ); +int signal_suspend( int timeout, wolf_error_t *error ); void signal_terminate( void ); -error_t signal_install_handlers_parent( void ); +wolf_error_t signal_install_handlers_parent( void ); -error_t signal_install_handlers_daemon( void ); +wolf_error_t signal_install_handlers_daemon( void ); #ifdef __cplusplus } diff --git a/include/wolf/errors.h b/include/wolf/errors.h index ed5ef82..282654b 100644 --- a/include/wolf/errors.h +++ b/include/wolf/errors.h @@ -5,16 +5,19 @@ extern "C" { #endif -typedef signed int error_t; - -#define OK 0 /* no error, everything is fine */ -#define ERR_OUT_OF_MEMORY -1 /* out of memory in malloc */ -#define ERR_INVALID_STATE -2 /* the object is called in an illegal moment */ -#define ERR_INVALID_VALUE -3 /* invalid parameter to a function */ -#define ERR_INTERNAL -4 /* internal error of the object, usualy rare */ -#define ERR_PROGRAMMING -5 /* programming mistake, should not happen */ -#define ERR_NOT_IMPLEMENTED -6 /* not implemented yet */ -#define ERR_TIMEOUT -7 /* timeout */ +/** + * @brief Possible error codes of the various libwolf functions + */ +typedef enum { + WOLF_OK = 0, /**< no error, everything is fine */ + WOLF_ERR_OUT_OF_MEMORY = -1, /**< out of memory in malloc */ + WOLF_ERR_INVALID_STATE = -2, /**< the object is called in an illegal moment */ + WOLF_ERR_INVALID_VALUE = -3, /**< invalid parameter to a function */ + WOLF_ERR_INTERNAL = -4, /**< internal error of the object, usualy rare */ + WOLF_ERR_PROGRAMMING = -5, /**< programming mistake, should not happen */ + WOLF_ERR_NOT_IMPLEMENTED= -6, /**< not implemented yet */ + WOLF_ERR_TIMEOUT = -7 /**< timeout */ +} wolf_error_t; #ifdef __cplusplus } diff --git a/include/wolf/port/sys.h b/include/wolf/port/sys.h index f13ca19..675e097 100644 --- a/include/wolf/port/sys.h +++ b/include/wolf/port/sys.h @@ -82,11 +82,12 @@ #define _XOPEN_SOURCE 600 #define __EXTENSIONS__ #endif +/* TODO: check this, I don't think Solaris 8 has a working + * snprintf! */ #define HAVE_SNPRINTF #define HAVE_VSNPRINTF #define HAVE_LOCKF #define HAVE_ENUM_BOOL -#define HAVE_LINK_H #else #if OS_MINOR_VERSION == 10 #if !defined __cplusplus @@ -110,12 +111,34 @@ #if defined CYGWIN #if OS_MAJOR_VERSION == 5 -#if OS_MINOR_VERSION == 0 +#if OS_MINOR_VERSION == 1 #define _XOPEN_SOURCE 600 #define HAVE_ENUM_BOOL +/* for *printf substitutes */ +#define HAVE_CONFIG_H 0 +#define TEST_SNPRINTF 0 +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 0 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_LOCALE_H 1 +#define HAVE_LOCALECONV 1 +#define HAVE_LCONV_DECIMAL_POINT 1 +#define HAVE_LCONV_THOUSANDS_SEP 1 +#define HAVE_LONG_DOUBLE 1 +#define HAVE_LONG_LONG_INT 1 +#define HAVE_UNSIGNED_LONG_LONG_INT 1 +#define HAVE_INTMAX_T 1 +#define HAVE_UINTMAX_T 1 +#define HAVE_UINTPTR_T 1 +#define HAVE_PTRDIFF_T 1 +#define HAVE_VA_COPY 0 +#define HAVE___VA_COPY 0 #else #error unknown platform -#endif /* OS_MINOR_VERSION == 0 */ +#endif /* OS_MINOR_VERSION == 1 */ #else #error unknown platform #endif /* OS_MAJOR_VERSION == 5 */ diff --git a/makefiles/dist.mk b/makefiles/dist.mk new file mode 100644 index 0000000..1fe852a --- /dev/null +++ b/makefiles/dist.mk @@ -0,0 +1,38 @@ +# creates a source tarball ready for distribution +# +# requires: +# - PACKAGE_NAME +# - PACKAGE_VERSION +# +# provides: +# - target: dist +# - target: dist-bz2, dist-gz, dist-Z + +.PHONY: dist dist-bz2 dist-gz dist-Z + +dist: + -@rm -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION) + -@rm -rf /tmp/$(PACKAGE_NAME)-$(PACKAGE_VERSION) + mkdir /tmp/$(PACKAGE_NAME)-$(PACKAGE_VERSION) + cp -r * /tmp/$(PACKAGE_NAME)-$(PACKAGE_VERSION)/. + -@cd /tmp/$(PACKAGE_NAME)-$(PACKAGE_VERSION) ; \ + $(MAKE) distclean ; \ + find . -name .svn -exec rm -rf {} \; ; \ + cd .. ; \ + tar cvf $(PACKAGE_NAME)-$(PACKAGE_VERSION).tar \ + $(PACKAGE_NAME)-$(PACKAGE_VERSION) + -@rm -rf /tmp/$(PACKAGE_NAME)-$(PACKAGE_VERSION) + @mv /tmp/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar . + +dist-bz2: dist + -@rm -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION).bz2 + @bzip2 -f $(PACKAGE_NAME)-$(PACKAGE_VERSION).tar + +dist-gz: dist + -@rm -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION).gz + @gzip $(PACKAGE_NAME)-$(PACKAGE_VERSION).tar + +dist-Z: dist + -@rm -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION).Z + @compress -f $(PACKAGE_NAME)-$(PACKAGE_VERSION).tar + diff --git a/makefiles/guess_env b/makefiles/guess_env index f11ef5a..ae7728a 100755 --- a/makefiles/guess_env +++ b/makefiles/guess_env @@ -10,12 +10,14 @@ case "$UNAME_SYSTEM.$UNAME_RELEASE" in Linux*) PLATFORM=LINUX OS_MAJOR_VERSION=`echo $UNAME_RELEASE | cut -d . -f 1` OS_MINOR_VERSION=`echo $UNAME_RELEASE | cut -d . -f 2` + INSTALL='install' LIBS_DL='-ldl' ;; FreeBSD*) PLATFORM=FREEBSD OS_MAJOR_VERSION=`echo $UNAME_RELEASE | cut -d . -f 1` OS_MINOR_VERSION=`echo $UNAME_RELEASE | cut -d . -f 2 | cut -d - -f 1` + INSTALL='install' LIBS_DL= LIBS_SSP= ;; @@ -23,6 +25,7 @@ case "$UNAME_SYSTEM.$UNAME_RELEASE" in OpenBSD*) PLATFORM=OPENBSD OS_MAJOR_VERSION=`echo $UNAME_RELEASE | cut -d . -f 1` OS_MINOR_VERSION=`echo $UNAME_RELEASE | cut -d . -f 2 | cut -d - -f 1` + INSTALL='install' LIBS_DL= LIBS_SSP= ;; @@ -30,6 +33,7 @@ case "$UNAME_SYSTEM.$UNAME_RELEASE" in SunOS*) PLATFORM=SUNOS OS_MAJOR_VERSION=`echo $UNAME_RELEASE | cut -d . -f 1` OS_MINOR_VERSION=`echo $UNAME_RELEASE | cut -d . -f 2` + INSTALL='/usr/ucb/install' LIBS_DL='-ldl' LIBS_SSP= ;; @@ -38,6 +42,7 @@ case "$UNAME_SYSTEM.$UNAME_RELEASE" in _tmp=`echo $UNAME_SYSTEM | cut -d - -f 2` OS_MAJOR_VERSION=`echo $_tmp | cut -d . -f 1` OS_MINOR_VERSION=`echo $_tmp | cut -d . -f 2` + INSTALL='install' LIBS_SSP= ;; @@ -90,6 +95,9 @@ case "$1" in --gcc-minor-version) echo $GCC_MINOR_VERSION ;; + + --install) echo $INSTALL + ;; *) cat <<EOF @@ -101,6 +109,7 @@ LIBS_DL = $LIBS_DL LIBS_SSL = $LIBS_SSL GCC_MAJOR_VERSION = $GCC_MAJOR_VERSION GCC_MINOR_VERSION = $GCC_MINOR_VERSION +INSTALL = $INSTALL EOF ;; esac diff --git a/makefiles/platform.mk b/makefiles/platform.mk index a837fa2..d77043b 100644 --- a/makefiles/platform.mk +++ b/makefiles/platform.mk @@ -30,7 +30,8 @@ LIBS_SSP = $(shell $(TOPDIR)/makefiles/guess_env --libs-ssl) EXE = SO = .so -INSTALL = install GCC_MAJOR_VERSION = $(shell $(TOPDIR)/makefiles/guess_env --gcc-major-version $(CC)) GCC_MINOR_VERSION = $(shell $(TOPDIR)/makefiles/guess_env --gcc-minor-version $(CC)) + +INSTALL = $(shell $(TOPDIR)/makefiles/guess_env --install $(CC)) diff --git a/makefiles/top.mk b/makefiles/top.mk index 79aab0b..8bf2acc 100644 --- a/makefiles/top.mk +++ b/makefiles/top.mk @@ -10,6 +10,7 @@ # - target 'distclean' # - target 'test' # - target 'doc' +# - target 'dist' # - target 'help' .PHONY: all @@ -44,3 +45,4 @@ doc: help: @cat makefiles/help.mk +-include $(TOPDIR)/makefiles/dist.mk diff --git a/src/daemon/daemon.c b/src/daemon/daemon.c index c79d43a..ad35298 100644 --- a/src/daemon/daemon.c +++ b/src/daemon/daemon.c @@ -23,32 +23,38 @@ static int exit_code_pipe[2] = { -1, -1 }; int daemon_parent_pipe[2] = { -1, -1 }; -#define TERMINATE_EXIT_CODE 99 -#define TERMINATE_PARENT 98 +typedef enum { + TERMINATE_OK, + TERMINATE_ERROR, + TERMINATE_EXIT_CODE, + TERMINATE_PARENT +} daemon_state_t; struct daemon_t { daemon_params_t params; /**< the parameters for creation */ - error_t error; /**< error of last start */ + daemon_state_t state; /**< last status of the daemon */ + wolf_error_t error; /**< error of last start */ struct pidfile_t pidfile; /**< pid/lock file of the daemon */ struct group *groupent; /**< group entry */ struct passwd *userent; /**< password entry */ }; daemon_p daemon_new( daemon_params_t params, - error_t *error ) { + wolf_error_t *error ) { daemon_p d; d = (struct daemon_t *)malloc( sizeof ( struct daemon_t ) ); if( d == NULL ) { - *error = ERR_OUT_OF_MEMORY; + *error = WOLF_ERR_OUT_OF_MEMORY; return NULL; } - d->error = -1; + d->state = TERMINATE_ERROR; + d->error = WOLF_ERR_INTERNAL; d->params = params; if( params.daemon_name == NULL ) { - *error = ERR_INVALID_VALUE; + *error = WOLF_ERR_INVALID_VALUE; return NULL; } @@ -58,7 +64,7 @@ daemon_p daemon_new( daemon_params_t params, pidfile_set_from_filename( &d->pidfile, params.pid_filename ); } - *error = OK; + *error = WOLF_OK; return d; } @@ -67,7 +73,7 @@ void daemon_free( daemon_p d ) { d = NULL; } -static error_t close_fd( int fd ) { +static wolf_error_t close_fd( int fd ) { if( close( fd ) < 0 ) { switch( errno ) { case EBADF: @@ -77,34 +83,34 @@ static error_t close_fd( int fd ) { default: LOG( log_EMERG, "Error while closing file descriptor %d: %s (%d)", fd, strerror( errno ), errno ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } } - return OK; + return WOLF_OK; } -static error_t daemon_close_standard_fds( void ) { - error_t error; +static wolf_error_t daemon_close_standard_fds( void ) { + wolf_error_t error; - if( ( error = close_fd( STDIN_FILENO ) ) != OK ) return error; - if( ( error = close_fd( STDOUT_FILENO ) ) != OK ) return error; - if( ( error = close_fd( STDERR_FILENO ) ) != OK ) return error; + if( ( error = close_fd( STDIN_FILENO ) ) != WOLF_OK ) return error; + if( ( error = close_fd( STDOUT_FILENO ) ) != WOLF_OK ) return error; + if( ( error = close_fd( STDERR_FILENO ) ) != WOLF_OK ) return error; - return OK; + return WOLF_OK; } -static error_t daemon_close_all_fds( void ) { +static wolf_error_t daemon_close_all_fds( void ) { long nof_files; int i; - error_t error; + wolf_error_t error; nof_files = sysconf( _SC_OPEN_MAX ); if( nof_files < 0 ) { LOG( log_EMERG, "Unable to retrieve maximal number of files: %s (%d)", strerror( errno ), errno ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } LOG( log_DEBUG, "Closing all filedescriptors up to %ld", nof_files ); @@ -120,28 +126,28 @@ static error_t daemon_close_all_fds( void ) { ( i == exit_code_pipe[1] ) ) { continue; } - if( ( error = close_fd( i ) ) != OK ) return error; + if( ( error = close_fd( i ) ) != WOLF_OK ) return error; } - return OK; + return WOLF_OK; } -static error_t open_null_fd( int must_fd, int flags ) { +static wolf_error_t open_null_fd( int must_fd, int flags ) { int fd; fd = open( "/dev/null", flags ); if( fd < 0 ) { LOG( log_EMERG, "Unable to open fd %d as /dev/null: %s (%d)", must_fd, strerror( errno ), errno ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } if( fd != must_fd ) { LOG( log_EMERG, "Something is wrong with the file descriptors (expecting %d,got %d)!", must_fd, fd ); - return ERR_PROGRAMMING; + return WOLF_ERR_PROGRAMMING; } - return OK; + return WOLF_OK; } static void atomar_write( int fd, void *data, size_t data_len ) { @@ -174,10 +180,10 @@ atomar_read_again: } } -error_t daemon_start( daemon_p d ) { +wolf_error_t daemon_start( daemon_p d ) { pid_t pid; mode_t mode; - error_t error; + wolf_error_t error; int exit_code; /* Our parent is already the init process (which has pid 1 by @@ -186,7 +192,7 @@ error_t daemon_start( daemon_p d ) { */ if( getppid( ) == 1 ) { LOG( log_EMERG, "Already running as daemon!" ); - return( d->error = ERR_PROGRAMMING ); + return( d->error = WOLF_ERR_PROGRAMMING ); } /* Are we starting as root? If not, bail out, we need root @@ -197,7 +203,7 @@ error_t daemon_start( daemon_p d ) { */ if( geteuid( ) != 0 ) { LOG( log_EMERG, "Unable to start daemon as not root user!" ); - return( d->error = ERR_INVALID_STATE ); + return( d->error = WOLF_ERR_INVALID_STATE ); } /* We fork so SIGCHLD signals get to the parent and grandfather. @@ -223,7 +229,7 @@ error_t daemon_start( daemon_p d ) { if( pipe( exit_code_pipe ) < 0 ) { LOG( log_EMERG, "Unable to create exit code pipe: %s (%d)", strerror( errno ), errno ); - return ( d->error = ERR_INTERNAL ); + return ( d->error = WOLF_ERR_INTERNAL ); } LOG( log_DEBUG, "Created exit code pipe (%d,%d)", exit_code_pipe[0], exit_code_pipe[1] ); @@ -234,7 +240,7 @@ error_t daemon_start( daemon_p d ) { case -1: /* error */ LOG( log_EMERG, "Unable to fork the first time: %s", strerror( errno ) ); - return ( d->error = ERR_INTERNAL ); + return ( d->error = WOLF_ERR_INTERNAL ); case 0: /* the child becomes the daemon */ @@ -249,7 +255,7 @@ error_t daemon_start( daemon_p d ) { * code from the error pipe */ LOG( log_DEBUG, "Parent after first fork: child is %d", pid ); - return ( d->error = TERMINATE_EXIT_CODE ); + return ( d->state = TERMINATE_EXIT_CODE ); } /* second pipe communicates from the daemon back to its parent @@ -258,7 +264,7 @@ error_t daemon_start( daemon_p d ) { if( pipe( daemon_parent_pipe ) < 0 ) { LOG( log_EMERG, "Unable to create parent pipe: %s (%d)", strerror( errno ), errno ); - return ( d->error = ERR_INTERNAL ); + return ( d->error = WOLF_ERR_INTERNAL ); } LOG( log_DEBUG, "Created parent pipe (%d,%d)", daemon_parent_pipe[0], daemon_parent_pipe[1] ); @@ -269,7 +275,7 @@ error_t daemon_start( daemon_p d ) { if( setsid( ) < 0 ) { /* should actually never fail */ LOG( log_EMERG, "Starting new process group session for the parent of the daemon failed: %s", strerror( errno ) ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } /* We fork so SIGCHLD signals get to the parent and grandfather. @@ -296,7 +302,7 @@ error_t daemon_start( daemon_p d ) { case -1: /* error */ LOG( log_EMERG, "Unable to fork the second time: %s", strerror( errno ) ); - return ( d->error = ERR_INTERNAL ); + return ( d->error = WOLF_ERR_INTERNAL ); case 0: /* the child becomes the daemon */ @@ -306,13 +312,13 @@ error_t daemon_start( daemon_p d ) { default: (void)signal_install_handlers_parent( ); LOG( log_DEBUG, "Parent after second fork: child (and daemon) is %d", pid ); - return ( d->error = TERMINATE_PARENT ); + return ( d->state = TERMINATE_PARENT ); } /* Now install signal handlers */ - if( ( error = signal_initialize( ) ) != OK ) + if( ( error = signal_initialize( ) ) != WOLF_OK ) return ( d->error = error ); - if( ( error = signal_install_handlers_daemon( ) ) != OK ) + if( ( error = signal_install_handlers_daemon( ) ) != WOLF_OK ) return ( d->error = error ); /* Put the daemon in it's own process group and finally detach it @@ -322,7 +328,7 @@ error_t daemon_start( daemon_p d ) { if( setsid( ) < 0 ) { /* should actually never fail */ LOG( log_EMERG, "Starting new process group for daemon session failed: %s", strerror( errno ) ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } /* Change to the root directory for several reasons: @@ -335,7 +341,7 @@ error_t daemon_start( daemon_p d ) { */ if( chdir( "/" ) < 0 ) { LOG( log_EMERG, "Changing to root diretory failed: %s", strerror( errno ) ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } LOG( log_DEBUG, "Changed to root directory /" ); @@ -348,11 +354,11 @@ error_t daemon_start( daemon_p d ) { LOG( log_DEBUG, "Switched umask from %04o to %04o", mode, 0133 ); /* check if another daemon is already running, if yes, bail out */ - if( is_daemon_running( &d->pidfile, &pid, &error ) || ( error != OK ) ) { - if( error == OK ) { + if( is_daemon_running( &d->pidfile, &pid, &error ) || ( error != WOLF_OK ) ) { + if( error == WOLF_OK ) { LOG( log_EMERG, "Another daemon is already running with pid '%d', can't start!", pid ); } - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } /* we loose logfile and syslog file descriptors anyway, so close @@ -362,16 +368,16 @@ error_t daemon_start( daemon_p d ) { closelogtostderr( ); /* close all filedescriptors */ - if( daemon_close_all_fds( ) != OK ) - return ERR_INTERNAL; + if( daemon_close_all_fds( ) != WOLF_OK ) + return WOLF_ERR_INTERNAL; /* reopen the logs to the logfile and syslog (not stderr) */ reopenlogtosyslog( ); reopenlogtofile( ); /* create and lock the pidfile now, write pid of daemon into it */ - if( pidfile_create( &d->pidfile ) != OK ) { - return ERR_INTERNAL; + if( pidfile_create( &d->pidfile ) != WOLF_OK ) { + return WOLF_ERR_INTERNAL; } /* Install the final permissions for new files. The reason is @@ -399,7 +405,7 @@ error_t daemon_start( daemon_p d ) { LOG( log_EMERG, "Unable to retrieve group information for group '%s': %s (%d)", d->params.group_name, strerror( errno ), errno ); } - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } errno = 0; @@ -411,19 +417,19 @@ error_t daemon_start( daemon_p d ) { LOG( log_EMERG, "Unable to retrieve user information for user '%s': %s (%d)", d->params.user_name, strerror( errno ), errno ); } - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } if( setgid( d->userent->pw_gid ) < 0 ) { LOG( log_EMERG, "Setting unprivileged group failed: %s (%d)", strerror( errno ), errno ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } if( setuid( d->userent->pw_uid ) < 0 ) { LOG( log_EMERG, "Setting unprivileged user failed: %s (%d)", strerror( errno ), errno ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } /* TODO: setsid and setting all groups of the user */ @@ -440,10 +446,10 @@ error_t daemon_start( daemon_p d ) { * starting the daemon by hand still gets error messages * on stderr. */ - if( ( error = daemon_close_standard_fds( ) ) != OK ) return error; - if( ( error = open_null_fd( STDIN_FILENO, O_RDONLY ) ) != OK ) return error; - if( ( error = open_null_fd( STDOUT_FILENO, O_WRONLY ) ) != OK ) return error; - if( ( error = open_null_fd( STDERR_FILENO, O_WRONLY ) ) != OK ) return error; + if( ( error = daemon_close_standard_fds( ) ) != WOLF_OK ) return error; + if( ( error = open_null_fd( STDIN_FILENO, O_RDONLY ) ) != WOLF_OK ) return error; + if( ( error = open_null_fd( STDOUT_FILENO, O_WRONLY ) ) != WOLF_OK ) return error; + if( ( error = open_null_fd( STDERR_FILENO, O_WRONLY ) ) != WOLF_OK ) return error; /* signal the grand-parent process, that he can return 0 to * the calling shell/script @@ -451,7 +457,8 @@ error_t daemon_start( daemon_p d ) { exit_code = EXIT_SUCCESS; atomar_write( exit_code_pipe[1], &exit_code, sizeof( int ) ); - return ( d->error = OK ); + d->state = TERMINATE_OK; + return ( d->error = WOLF_OK ); } NORETURN void daemon_exit( daemon_p d ) { @@ -460,7 +467,7 @@ NORETURN void daemon_exit( daemon_p d ) { LOG( log_DEBUG, "daemon_exit called with error %d", d->error ); - switch( d->error ) { + switch( d->state ) { case TERMINATE_EXIT_CODE: /* wait here for exit code in exit_code_pipe * so we can return the correct exit code to @@ -504,7 +511,7 @@ NORETURN void daemon_exit( daemon_p d ) { /* exit code is irrelevant here.. */ exit( EXIT_SUCCESS ); - case OK: + case TERMINATE_OK: /* close and unlock the pidfile here */ (void)pidfile_release( &d->pidfile ); @@ -519,8 +526,8 @@ NORETURN void daemon_exit( daemon_p d ) { /* exit code is irrelevant here */ _exit( EXIT_SUCCESS ); - - default: + + case TERMINATE_ERROR: /* no exit_code_pipe exists yet, we are before the * first fork, so terminate with proper exit code */ diff --git a/src/daemon/pidfile.c b/src/daemon/pidfile.c index 53f81c9..0456425 100644 --- a/src/daemon/pidfile.c +++ b/src/daemon/pidfile.c @@ -39,7 +39,7 @@ void pidfile_set_from_filename( struct pidfile_t *pidfile, const char *filename snprintf( pidfile->filename, PATH_MAX, "%s", filename ); } -bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, error_t *error ) { +bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, wolf_error_t *error ) { int res; ssize_t bytes_read; char buf[256]; @@ -55,11 +55,11 @@ bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, error_t *error ) /* this is good, pid file doesn't exist at all */ LOG( log_DEBUG, "No pidfile '%s' found, daemon is not running", pidfile->filename ); (void)close( pidfile->fd ); - *error = OK; + *error = WOLF_OK; return pidfile->running; } else { LOG( log_EMERG, "Unable to open pidfile '%s' for reading: %s", pidfile->filename, strerror( errno ) ); - *error = ERR_INTERNAL; + *error = WOLF_ERR_INTERNAL; return pidfile->running; } } @@ -70,13 +70,13 @@ bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, error_t *error ) if( errno == EAGAIN ) { /* another process locks the file already */ LOG( log_DEBUG, "Another process locks the pidfile, daemon already running" ); - *error = OK; + *error = WOLF_OK; pidfile->locked = true; pidfile->running = true; } else { LOG( log_EMERG, "Unable to lock pidfile '%s': %s", pidfile->filename, strerror( errno ) ); (void)close( pidfile->fd ); - *error = ERR_INTERNAL; + *error = WOLF_ERR_INTERNAL; pidfile->running = false; return pidfile->running; } @@ -89,7 +89,7 @@ bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, error_t *error ) if( bytes_read < 0 ) { LOG( log_EMERG, "Unable to read pid from pidfile '%s': %s", pidfile->filename, strerror( errno ) ); (void)close( pidfile->fd ); - *error = ERR_INTERNAL; + *error = WOLF_ERR_INTERNAL; return pidfile->running; } @@ -105,7 +105,7 @@ bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, error_t *error ) ( *pid < 2 ) /* too small value */ ) { LOG( log_EMERG, "pidfile '%s' contains invalid data, can't read PID from it!", pidfile->filename ); (void)close( pidfile->fd ); - *error = ERR_INTERNAL; + *error = WOLF_ERR_INTERNAL; return pidfile->running; } LOG( log_DEBUG, "Found PID '%lu' in pidfile", *pid ); @@ -119,12 +119,12 @@ bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, error_t *error ) /* this is fine, process doesn't exist with this PID */ LOG( log_EMERG, "Found PID '%lu' in pidfile '%s', but no such process is running. Check and manually delete the pidfile!", *pid, pidfile->filename ); (void)close( pidfile->fd ); - *error = ERR_INTERNAL; + *error = WOLF_ERR_INTERNAL; return pidfile->running; } else { LOG( log_EMERG, "Can't check if processor with PID '%lu' is alive: %s", *pid, strerror( errno ) ); (void)close( pidfile->fd ); - *error = ERR_INTERNAL; + *error = WOLF_ERR_INTERNAL; return pidfile->running; } } @@ -134,11 +134,11 @@ bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, error_t *error ) * (worst case, we assume, it's the daemon) */ (void)close( pidfile->fd ); - *error = OK; + *error = WOLF_OK; return pidfile->running; } -error_t pidfile_create( struct pidfile_t *pidfile ) { +wolf_error_t pidfile_create( struct pidfile_t *pidfile ) { int res; char pid_string[20]; ssize_t bytes_writen; @@ -147,7 +147,7 @@ error_t pidfile_create( struct pidfile_t *pidfile ) { pidfile->fd = open( pidfile->filename, O_CREAT | O_WRONLY | O_EXCL, 0644 ); if( pidfile->fd < 0 ) { LOG( log_EMERG, "Unable to open pidfile '%s' for writing: %s", pidfile->filename, strerror( errno ) ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } /* Try to lock the pid file (non-blocking) */ @@ -160,12 +160,12 @@ error_t pidfile_create( struct pidfile_t *pidfile ) { LOG( log_EMERG, "Unable to lock pidfile '%s' after creation, daemon started in parallel?", pidfile->filename ); (void)close( pidfile->fd ); (void)unlink( pidfile->filename ); - return ERR_INVALID_STATE; + return WOLF_ERR_INVALID_STATE; } else { LOG( log_EMERG, "Unable to lock pidfile '%s' after creation: %s", pidfile->filename, strerror( errno ) ); (void)close( pidfile->fd ); (void)unlink( pidfile->filename ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } } @@ -176,7 +176,7 @@ error_t pidfile_create( struct pidfile_t *pidfile ) { LOG( log_EMERG, "Unable to truncate the pidfile '%s' before writing to it", pidfile->filename, strerror( errno ) ); (void)close( pidfile->fd ); (void)unlink( pidfile->filename ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } /* We remember the pid in the file for init scripts which rely on the pid @@ -188,7 +188,7 @@ error_t pidfile_create( struct pidfile_t *pidfile ) { LOG( log_EMERG, "Unable to write PID into the pidfile '%s': %s", pidfile->filename, strerror( errno ) ); (void)close( pidfile->fd ); (void)unlink( pidfile->filename ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } else if( bytes_writen != (ssize_t)strlen( pid_string ) ) { /* non-atomic write on files with so little data, strange, should never happen! */ LOG( log_EMERG, "Non-atomic write failed when storing the PID into the pidfile '%s'", pidfile->filename ); @@ -197,11 +197,11 @@ error_t pidfile_create( struct pidfile_t *pidfile ) { pidfile->locked = true; - return OK; + return WOLF_OK; } -error_t pidfile_release( struct pidfile_t *pidfile ) { - error_t error = OK; +wolf_error_t pidfile_release( struct pidfile_t *pidfile ) { + wolf_error_t error = WOLF_OK; LOG( log_DEBUG, "Releasing (unlocking/closing) pidfile '%s' (fd: %d, locked: %d)", pidfile->filename, pidfile->fd, pidfile->locked ); @@ -210,7 +210,7 @@ error_t pidfile_release( struct pidfile_t *pidfile ) { if( lockf( pidfile->fd, F_ULOCK, (off_t)0 ) < 0 ) { LOG( log_ALERT, "Unable to unlock the pidfile '%s': %s (%d)", pidfile->filename, strerror( errno ), errno ); - error = ERR_INTERNAL; + error = WOLF_ERR_INTERNAL; } } @@ -218,7 +218,7 @@ error_t pidfile_release( struct pidfile_t *pidfile ) { if( close( pidfile->fd ) < 0 ) { LOG( log_ALERT, "Unable to close the pidfile '%s': %s (%d)", pidfile->filename, strerror( errno ), errno ); - error = ERR_INTERNAL; + error = WOLF_ERR_INTERNAL; } pidfile->fd = -1; } @@ -226,8 +226,8 @@ error_t pidfile_release( struct pidfile_t *pidfile ) { return error; } -error_t pidfile_remove( struct pidfile_t *pidfile ) { - error_t error = OK; +wolf_error_t pidfile_remove( struct pidfile_t *pidfile ) { + wolf_error_t error = WOLF_OK; LOG( log_DEBUG, "Removing pidfile '%s' (fd: %d, locked: %d, running: %d)", pidfile->filename, pidfile->fd, pidfile->locked, pidfile->running ); @@ -237,7 +237,7 @@ error_t pidfile_remove( struct pidfile_t *pidfile ) { if( unlink( pidfile->filename ) < 0 ) { LOG( log_ALERT, "Unable to remove the pidfile '%s': %s (%d)", pidfile->filename, strerror( errno ), errno ); - error = ERR_INTERNAL; + error = WOLF_ERR_INTERNAL; } return error; diff --git a/src/daemon/pidfile.h b/src/daemon/pidfile.h index 25ddd48..8b1c40e 100644 --- a/src/daemon/pidfile.h +++ b/src/daemon/pidfile.h @@ -21,12 +21,12 @@ void pidfile_set_from_daemon_name( struct pidfile_t *pidfile, const char *daemon void pidfile_set_from_filename( struct pidfile_t *pidfile, const char *filename ); -bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, error_t *error ); +bool is_daemon_running( struct pidfile_t *pidfile, pid_t *pid, wolf_error_t *error ); -error_t pidfile_create( struct pidfile_t *pidfile ); +wolf_error_t pidfile_create( struct pidfile_t *pidfile ); -error_t pidfile_release( struct pidfile_t *pidfile ); +wolf_error_t pidfile_release( struct pidfile_t *pidfile ); -error_t pidfile_remove( struct pidfile_t *pidfile ); +wolf_error_t pidfile_remove( struct pidfile_t *pidfile ); #endif /* ifndef __PIDFILE_H */ diff --git a/src/daemon/signals.c b/src/daemon/signals.c index b455838..c5b4563 100644 --- a/src/daemon/signals.c +++ b/src/daemon/signals.c @@ -150,7 +150,7 @@ const char *signal_get_long_name( int sig ) { } } -static error_t vsignal_install_ignore( int sig, va_list ap ) { +static wolf_error_t vsignal_install_ignore( int sig, va_list ap ) { struct sigaction sa; char errbuf[1024]; @@ -166,7 +166,7 @@ install_ignore_again: sig, errbuf, errno ); - return ERR_PROGRAMMING; + return WOLF_ERR_PROGRAMMING; } LOG( log_DEBUG, "Ignoring signal handler for signal '%s' (%s)", signal_get_long_name( sig ), @@ -174,7 +174,7 @@ install_ignore_again: sig = va_arg( ap, int ); if( sig > 0 ) goto install_ignore_again; - return OK; + return WOLF_OK; } /* some signals we should not ignore, like SIGPIPE or SIGC(H)LD, because @@ -185,7 +185,7 @@ static void empty_handler( int sig ) { UNUSED( sig ); } -static error_t vsignal_install_empty( int sig, va_list ap ) { +static wolf_error_t vsignal_install_empty( int sig, va_list ap ) { struct sigaction sa; char errbuf[1024]; @@ -201,7 +201,7 @@ install_empty_again: sig, errbuf, errno ); - return ERR_PROGRAMMING; + return WOLF_ERR_PROGRAMMING; } LOG( log_DEBUG, "Installed empty signal handler for signal '%s' (%s)", signal_get_long_name( sig ), @@ -209,7 +209,7 @@ install_empty_again: sig = va_arg( ap, int ); if( sig > 0 ) goto install_empty_again; - return OK; + return WOLF_OK; } static void fatal_handler( int sig ) { @@ -232,7 +232,7 @@ static void fatal_handler( int sig ) { kill( getpid( ), sig ); } -static error_t vsignal_install_func( signal_func_t func, int sig, va_list ap ) { +static wolf_error_t vsignal_install_func( signal_func_t func, int sig, va_list ap ) { struct sigaction sa; char errbuf[1024]; @@ -249,7 +249,7 @@ install_func_again: sig, errbuf, errno ); - return ERR_PROGRAMMING; + return WOLF_ERR_PROGRAMMING; } LOG( log_DEBUG, "Installed signal handler for signal '%s' (%s)", signal_get_long_name( sig ), @@ -257,12 +257,12 @@ install_func_again: sig = va_arg( ap, int ); if( sig > 0 ) goto install_func_again; - return OK; + return WOLF_OK; } -error_t signal_install_func( signal_func_t func, int sig, ... ) { +wolf_error_t signal_install_func( signal_func_t func, int sig, ... ) { va_list ap; - error_t error; + wolf_error_t error; va_start( ap, sig ); error = vsignal_install_func( func, sig, ap ); va_end( ap ); @@ -270,9 +270,9 @@ error_t signal_install_func( signal_func_t func, int sig, ... ) { } #define INSTALL_SIGNAL( MODE ) \ -error_t signal_install_##MODE( int sig, ... ) { \ +wolf_error_t signal_install_##MODE( int sig, ... ) { \ va_list ap; \ - error_t error; \ + wolf_error_t error; \ va_start( ap, sig ); \ error = vsignal_install_##MODE( sig, ap ); \ va_end( ap ); \ @@ -283,9 +283,9 @@ INSTALL_SIGNAL( ignore ) INSTALL_SIGNAL( empty ) #define INSTALL_SIGNAL_FUNC( MODE, FUNC ) \ -error_t signal_install_##MODE( int sig, ... ) { \ +wolf_error_t signal_install_##MODE( int sig, ... ) { \ va_list ap; \ - error_t error; \ + wolf_error_t error; \ va_start( ap, sig ); \ error = vsignal_install_func( FUNC, sig, ap ); \ va_end( ap ); \ @@ -309,13 +309,13 @@ static void notify_handler( int sig ) { INSTALL_SIGNAL_FUNC( notify, notify_handler ) INSTALL_SIGNAL_FUNC( notify_parent, notify_parent_handler ) -error_t signal_initialize( void ) { +wolf_error_t signal_initialize( void ) { int res; char errbuf[1024]; if( daemon_signal_pipe[0] != -1 || daemon_signal_pipe[1] != -1 ) { - return ERR_INVALID_STATE; + return WOLF_ERR_INVALID_STATE; } res = pipe( daemon_signal_pipe ); @@ -323,11 +323,11 @@ error_t signal_initialize( void ) { (void)strerror_r( errno, errbuf, 1024 ); LOG( log_EMERG, "Unable to create signal pipe: %s (%d)", errbuf, errno ); - return ERR_INTERNAL; + return WOLF_ERR_INTERNAL; } LOG( log_DEBUG, "Created signal pipe (%d,%d)", daemon_signal_pipe[0], daemon_signal_pipe[1] ); - return OK; + return WOLF_OK; } void signal_terminate( void ) { @@ -335,7 +335,7 @@ void signal_terminate( void ) { (void)close( daemon_signal_pipe[1] ); } -int signal_suspend( int timeout, error_t *error ) { +int signal_suspend( int timeout, wolf_error_t *error ) { struct timeval tv; fd_set fds; ssize_t res; @@ -343,7 +343,7 @@ int signal_suspend( int timeout, error_t *error ) { char errbuf[1024]; if( daemon_signal_pipe[0] == -1 ) { - *error = ERR_INVALID_STATE; + *error = WOLF_ERR_INVALID_STATE; return -1; } @@ -360,7 +360,7 @@ signal_select_again: break; case 0: /* timeout */ - *error = ERR_TIMEOUT; + *error = WOLF_ERR_TIMEOUT; return 0; case -1: /* error */ @@ -370,7 +370,7 @@ signal_select_again: (void)strerror_r( errno, errbuf, 1024 ); LOG( log_EMERG, "Error in select when waiting for signal from pipe: %s (%d)", errbuf, errno ); - *error = ERR_INTERNAL; + *error = WOLF_ERR_INTERNAL; return -1; } @@ -383,21 +383,21 @@ signal_select_again: (void)strerror_r( errno, errbuf, 1024 ); LOG( log_EMERG, "Error while reading a signal from the pipe: %s (%d)", errbuf, errno ); - *error = ERR_INTERNAL; + *error = WOLF_ERR_INTERNAL; return -1; default: /* unexpected result on atomic read */ LOG( log_EMERG, "Unexpected error in read: result is %d", res ); - *error = ERR_PROGRAMMING; + *error = WOLF_ERR_PROGRAMMING; return -1; } - *error = OK; + *error = WOLF_OK; return sig; } -error_t signal_install_handlers_parent( void ) { - error_t error; +wolf_error_t signal_install_handlers_parent( void ) { + wolf_error_t error; /* signals to ignore */ if( ( error = signal_install_ignore( @@ -429,7 +429,7 @@ error_t signal_install_handlers_parent( void ) { SIGHUP, SIGUSR1, SIGUSR2, - 0 ) ) != OK ) return error; + 0 ) ) != WOLF_OK ) return error; /* signals for empty handlers */ if( ( error = signal_install_empty( @@ -445,7 +445,7 @@ error_t signal_install_handlers_parent( void ) { #endif #endif #endif - 0 ) ) != OK ) return error; + 0 ) ) != WOLF_OK ) return error; /* fatal signal handlers, make sure the parent can read the * signal and clean up @@ -469,14 +469,14 @@ error_t signal_install_handlers_parent( void ) { SIGSYS, #endif SIGALRM, /* we don't use it, but maybe a plugin */ - 0 ) ) != OK ) return error; + 0 ) ) != WOLF_OK ) return error; - return OK; + return WOLF_OK; } -error_t signal_install_handlers_daemon( void ) { - error_t error; +wolf_error_t signal_install_handlers_daemon( void ) { + wolf_error_t error; /* signals to ignore */ if( ( error = signal_install_ignore( @@ -503,7 +503,7 @@ error_t signal_install_handlers_daemon( void ) { #if defined( SIGPWR ) SIGPWR, #endif - 0 ) ) != OK ) return error; + 0 ) ) != WOLF_OK ) return error; /* signals for empty handlers */ if( ( error = signal_install_empty( @@ -519,7 +519,7 @@ error_t signal_install_handlers_daemon( void ) { #endif #endif #endif - 0 ) ) != OK ) return error; + 0 ) ) != WOLF_OK ) return error; /* fatal signal handlers, log the exception and continue with * default behaviour of the system @@ -543,7 +543,7 @@ error_t signal_install_handlers_daemon( void ) { SIGSYS, #endif SIGALRM, /* we don't use it, but maybe a plugin */ - 0 ) ) != OK ) return error; + 0 ) ) != WOLF_OK ) return error; /* notify the following signals to the main loop */ if( ( error = signal_install_notify( @@ -552,8 +552,8 @@ error_t signal_install_handlers_daemon( void ) { SIGHUP, SIGUSR1, SIGUSR2, - 0 ) ) != OK ) return error; + 0 ) ) != WOLF_OK ) return error; - return OK; + return WOLF_OK; } diff --git a/src/port/snprintf.c b/src/port/snprintf.c index 65d9602..6062154 100644 --- a/src/port/snprintf.c +++ b/src/port/snprintf.c @@ -532,7 +532,9 @@ static UINTMAX_T cast(LDOUBLE); static UINTMAX_T myround(LDOUBLE); static LDOUBLE mypow10(int); +/* not really good! extern int errno; +*/ int rpl_vsnprintf(char *str, size_t size, const char *format, va_list args) diff --git a/src/port/snprintf.h b/src/port/snprintf.h index c374a15..4e06c8b 100644 --- a/src/port/snprintf.h +++ b/src/port/snprintf.h @@ -3,13 +3,28 @@ #include "port/sys.h" +/* impose some defaults, if we need snprintf and friends on the platform + * given, we define the proper values in include/port/sys.h + */ +#ifndef HAVE_CONFIG_H #define HAVE_CONFIG_H 0 +#endif #define TEST_SNPRINTF 0 +#ifndef HAVE_STDARG_H #define HAVE_STDARG_H 1 +#endif +#ifndef HAVE_STDDEF_H #define HAVE_STDDEF_H 1 +#endif +#ifndef HAVE_SYS_TYPES_H #define HAVE_SYS_TYPES_H 1 +#endif +#ifndef HAVE_STDLIB_H #define HAVE_STDLIB_H 1 +#endif +#ifndef HAVE_VA_COPY #define HAVE_VA_COPY 1 +#endif #if HAVE_STDARG_H #include <stdarg.h> /* for va_list */ diff --git a/src/port/stdint.h b/src/port/stdint.h index 345ec7e..ec4f0ce 100644 --- a/src/port/stdint.h +++ b/src/port/stdint.h @@ -3,13 +3,29 @@ #include "port/sys.h" -#if defined HAVE_STDINT_H -#include <stdint.h> -#endif /* defined HAVE_STDINT_H */ +/* for uintptr_t and snprintf placeholder PRIdPTR (FIXME: + * needs a lot of improvement!) + */ +#if defined SUNOS + +#if OS_MAJOR_VERSION == 5 -/* Solaris 8 weirdness */ -#if defined HAVE_LINK_H -#include <link.h> -#endif /* defined HAVE_LINK_H */ +#if OS_MINOR_VERSION == 8 +#include <sys/int_types.h> +/* FIXME: this may depend on 32/64-bit version of Solaris 8! */ +#define PRIdPTR "d" +typedef unsigned long long uint64_t; +#else +#include <inttypes.h> +#include <stdint.h> +#endif /* OS_MINOR_VERSION == 8 */ +#else +#include <inttypes.h> +#include <stdint.h> +#endif /* OS_MAJOR_VERSION == 5 */ +#else +#include <inttypes.h> +#include <stdint.h> +#endif /* defined SUNOS */ #endif /* ifndef __STDINT_H */ diff --git a/tests/daemon/testd.c b/tests/daemon/testd.c index 4b380ef..92dfc35 100644 --- a/tests/daemon/testd.c +++ b/tests/daemon/testd.c @@ -46,7 +46,7 @@ static int read_config( const char *filename, struct gengetopt_args_info *args_i int main( int argc, char *argv[] ) { struct gengetopt_args_info args_info; - error_t error; + wolf_error_t error; daemon_params_t daemon_params; daemon_p demon = NULL; int sig = 0; @@ -94,16 +94,16 @@ int main( int argc, char *argv[] ) { exit( EXIT_FAILURE ); } - if( ( error = daemon_start( demon ) ) != OK ) { + if( ( error = daemon_start( demon ) ) != WOLF_OK ) { cmdline_parser_free( &args_info ); daemon_exit( demon ); } } else { - if( ( error = signal_initialize( ) ) != OK ) { + if( ( error = signal_initialize( ) ) != WOLF_OK ) { cmdline_parser_free( &args_info ); exit( EXIT_FAILURE ); } - if( ( error = signal_install_handlers_daemon( ) ) != OK ) { + if( ( error = signal_install_handlers_daemon( ) ) != WOLF_OK ) { signal_terminate( ); cmdline_parser_free( &args_info ); exit( EXIT_FAILURE ); |