X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=options.c;h=f58d7f94058e0734b35376c9e07850fe43d25442;hp=6f74533f02700f959820017aafa0be24f1719017;hb=320159175adced71da64efa80e9334f7bcab96c8;hpb=e5d55b64f753e419fcfa48b5b8355c9d401589e3 diff --git a/options.c b/options.c index 6f74533..f58d7f9 100644 --- a/options.c +++ b/options.c @@ -17,6 +17,8 @@ #include "macro.h" #include "extension.h" #include "options.h" +#include +#include struct options options = { "/usr/local/lcr/log", /* log file */ @@ -31,6 +33,8 @@ struct options options = { "lcr@your.machine", /* source mail adress */ "/var/tmp", /* path of lock files */ 0700, /* rights of lcr admin socket */ + -1, /* socket user (-1= no change) */ + -1, /* socket group (-1= no change) */ 0 /* enable gsm */ }; @@ -202,6 +206,30 @@ int read_options(void) SCPY(options.lock, param); } else + if (!strcmp(option,"socketuser")) { + char * endptr = NULL; + options.socketuser = strtol(param, &endptr, 10); + if (*endptr != '\0') { + struct passwd * pwd = getpwnam(param); + if (pwd == NULL) { + SPRINT(options_error, "Error in %s (line %d): no such user: %s.\n",filename,line,param); + goto error; + } + options.socketuser = pwd->pw_uid; + } + } else + if (!strcmp(option,"socketgroup")) { + char * endptr = NULL; + options.socketgroup = strtol(param, &endptr, 10); + if (*endptr != '\0') { + struct group * grp = getgrnam(param); + if (grp == NULL) { + SPRINT(options_error, "Error in %s (line %d): no such group: %s.\n",filename,line,param); + goto error; + } + options.socketgroup = grp->gr_gid; + } + } else if (!strcmp(option,"socketrights")) { options.socketrights = strtol(param, NULL, 0); } else