diff options
Diffstat (limited to 'jabberd/main.c')
-rw-r--r-- | jabberd/main.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/jabberd/main.c b/jabberd/main.c index e92c492..e2a00ac 100644 --- a/jabberd/main.c +++ b/jabberd/main.c @@ -29,7 +29,8 @@ int log_facility = LOG_LOCAL7; int x_argc; char **x_argv; char *pidfile; -unsigned long shutdown_timeout = 3; +unsigned long shutdown_timeout = 5; +mode_t jabberd_umask = 037; void syslog_printer (int prio, const char *fmt, va_list ap) @@ -148,8 +149,8 @@ usage () struct kw_int { - char *name; - int tok; + char *name; + int tok; }; int @@ -175,7 +176,8 @@ str_to_facility (char *str, int *pfacility) static struct kw_int kw_facility[] = { { "USER", LOG_USER }, { "DAEMON", LOG_DAEMON }, - { "AUTH", LOG_AUTH }, + { "AUTH", LOG_AUTH }, + { "AUTHPRIV",LOG_AUTHPRIV }, { "LOCAL0", LOG_LOCAL0 }, { "LOCAL1", LOG_LOCAL1 }, { "LOCAL2", LOG_LOCAL2 }, @@ -354,6 +356,18 @@ cfg_pidfile (struct cfg_file *file, char *kw, char *val, void *unused) } void +cfg_umask (struct cfg_file *file, char *kw, char *val, void *unused) +{ + char *p; + unsigned long n = strtoul (val, &p, 8); + if (*p) + logmsg(LOG_ERR, "%s:%u: invalid umask; stopped near `%s'", config_file, + file->line, p); + else + jabberd_umask = (mode_t) n; +} + +void cfg_prog (struct cfg_file *file, char *kw, char *val, void *unused) { char *prog = val; @@ -468,6 +482,7 @@ struct kw_handler kw_handler[] = { { "user", cfg_user }, { "group", cfg_group }, { "pidfile", cfg_pidfile }, + { "umask", cfg_umask }, { "prog", cfg_prog }, { "exec", cfg_exec }, { "shutdown-timeout", cfg_shutdown_timeout }, @@ -799,7 +814,7 @@ main(int argc, char **argv) logmsg (LOG_NOTICE, "jabberd not started as an absolute pathname; SIGHUP will not work"); priv_setup (); - umask (037); + umask (jabberd_umask); logmsg (LOG_NOTICE, "jabberd started"); if (!foreground && daemon (0, 0) == -1) { |