extract setup of the logging subsystem into a function of its own.

Signed-off-by: Michael Adam <obnox@samba.org>
This commit is contained in:
Michael Adam 2009-11-04 00:42:05 +01:00
parent d8da7f55f7
commit ea2eaef173
3 changed files with 42 additions and 17 deletions

View File

@ -243,3 +243,40 @@ void send_stored_logs (void)
vector_delete (log_message_storage);
log_message_storage = NULL;
}
/**
* Initialize the logging subsystem, based on the configuration.
* Returns 0 upon success, -1 upon failure.
*
* This function uses fprintf() instead of log_message(), since
* the logging is not yet set up...
*/
int setup_logging (void)
{
int ret = -1;
/* Write to a user supplied log file if it's defined. This will
* override using the syslog even if syslog is defined. */
if (config.logf_name) {
if (open_log_file (config.logf_name) < 0) {
fprintf (stderr,
"%s: Could not create log file.\n", PACKAGE);
goto done;
}
config.syslog = FALSE; /* disable syslog */
} else if (config.syslog) {
if (config.godaemon == TRUE)
openlog ("tinyproxy", LOG_PID, LOG_DAEMON);
else
openlog ("tinyproxy", LOG_PID, LOG_USER);
} else {
fprintf (stderr, "%s: Either define a logfile or "
"enable syslog logging.\n", PACKAGE);
goto done;
}
ret = 0;
done:
return ret;
}

View File

@ -117,4 +117,6 @@ extern void log_message (int level, const char *fmt, ...);
extern void set_log_level (int level);
extern void send_stored_logs (void);
extern int setup_logging (void);
#endif

View File

@ -305,6 +305,7 @@ int
main (int argc, char **argv)
{
FILE *config_file;
int ret;
/* Only allow u+rw bits. This may be required for some versions
* of glibc so that mkstemp() doesn't make us vulnerable.
@ -340,23 +341,8 @@ main (int argc, char **argv)
fclose (config_file);
/* Write to a user supplied log file if it's defined. This will
* override using the syslog even if syslog is defined. */
if (config.logf_name) {
if (open_log_file (config.logf_name) < 0) {
fprintf (stderr,
"%s: Could not create log file.\n", argv[0]);
exit (EX_SOFTWARE);
}
config.syslog = FALSE; /* disable syslog */
} else if (config.syslog) {
if (config.godaemon == TRUE)
openlog ("tinyproxy", LOG_PID, LOG_DAEMON);
else
openlog ("tinyproxy", LOG_PID, LOG_USER);
} else {
fprintf (stderr, "%s: Either define a logfile or "
"enable syslog logging.\n", argv[0]);
ret = setup_logging ();
if (ret != 0) {
exit (EX_SOFTWARE);
}