00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <unistd.h>
00019 #include <stdlib.h>
00020 #include <syslog.h>
00021 #include <sys/stat.h>
00022
00023 #include "log.h"
00024 #include "str.h"
00025
00026 log_options_t *_log_options = NULL;
00027
00028 void log_init(log_options_t *options)
00029 {
00030 struct stat sb;
00031
00032 if (options->file && (options->fd < 0 || fstat(options->fd, &sb) == -1))
00033 options->file = false;
00034
00035 if (options->stderr && fstat(STDERR_FILENO, &sb) == -1)
00036 options->stderr = false;
00037
00038 if (options->mask == 0)
00039 options->mask = LOG_UPTO(LOG_INFO);
00040
00041 if (!options->ident || str_len(options->ident) < 1)
00042 options->ident = "(none)";
00043
00044 options->flags &= ~LOG_PERROR;
00045
00046 if (options->syslog) {
00047 openlog(options->ident, options->flags, options->facility);
00048 setlogmask(options->mask);
00049 }
00050
00051 _log_options = (log_options_t *)malloc(sizeof(log_options_t));
00052
00053 str_cpyn(_log_options, options, sizeof(log_options_t));
00054 }