summaryrefslogtreecommitdiffstats
path: root/source/lib/popt_common.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2002-11-09 16:57:45 +0000
committerJelmer Vernooij <jelmer@samba.org>2002-11-09 16:57:45 +0000
commit1a25dc776ddc36de9a214e023becff1ceb10290c (patch)
tree709677b7bbc9f49fcf407dc65e6e83323086ebb5 /source/lib/popt_common.c
parenteac350e09f5cdcf1b6ec1a3b7cde2c9aa3268143 (diff)
downloadsamba-1a25dc776ddc36de9a214e023becff1ceb10290c.tar.gz
samba-1a25dc776ddc36de9a214e023becff1ceb10290c.tar.xz
samba-1a25dc776ddc36de9a214e023becff1ceb10290c.zip
Sync with HEAD
Diffstat (limited to 'source/lib/popt_common.c')
-rw-r--r--source/lib/popt_common.c53
1 files changed, 46 insertions, 7 deletions
diff --git a/source/lib/popt_common.c b/source/lib/popt_common.c
index 21ee94d2e6c..aaec4487625 100644
--- a/source/lib/popt_common.c
+++ b/source/lib/popt_common.c
@@ -23,9 +23,12 @@
#include "includes.h"
/* Handle command line options:
- * -d,--debuglevel
- * -s,--configfile
- * -O,--socket-options
+ * d,--debuglevel
+ * s,--configfile
+ * O,--socket-options
+ * V,--version
+ * l,--log-base
+ * n,--netbios-name
*/
extern pstring user_socket_options;
@@ -37,6 +40,23 @@ static void popt_common_callback(poptContext con,
const struct poptOption *opt,
const char *arg, const void *data)
{
+ pstring logfile;
+ const char *pname;
+
+ /* Find out basename of current program */
+ pname = strrchr_m(poptGetInvocationName(con),'/');
+
+ if (!pname)
+ pname = poptGetInvocationName(con);
+ else
+ pname++;
+
+ if (reason == POPT_CALLBACK_REASON_PRE) {
+ pstr_sprintf(logfile, "%s/log.%s", dyn_LOGFILEBASE, pname);
+ lp_set_logfile(logfile);
+ return;
+ }
+
switch(opt->val) {
case 'd':
if (arg) {
@@ -51,16 +71,29 @@ static void popt_common_callback(poptContext con,
break;
case 'O':
- pstrcpy(user_socket_options,arg);
+ if (arg) {
+ pstrcpy(user_socket_options,arg);
+ }
break;
case 's':
- pstrcpy(dyn_CONFIGFILE, arg);
+ if (arg) {
+ pstrcpy(dyn_CONFIGFILE, arg);
+ }
break;
case 'n':
- pstrcpy(global_myname,arg);
- strupper(global_myname);
+ if (arg) {
+ pstrcpy(global_myname,arg);
+ strupper(global_myname);
+ }
+ break;
+
+ case 'l':
+ if (arg) {
+ pstr_sprintf(logfile, "%s/log.%s", arg, pname);
+ lp_set_logfile(logfile);
+ }
break;
}
}
@@ -95,3 +128,9 @@ struct poptOption popt_common_netbios_name[] = {
{"netbiosname", 'n', POPT_ARG_STRING, NULL, 'n', "Primary netbios name"},
{ 0 }
};
+
+struct poptOption popt_common_log_base[] = {
+ { NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE, popt_common_callback },
+ { "log-basename", 'l', POPT_ARG_STRING, NULL, 'l', "Basename for log/debug files"},
+ { 0 }
+};