svn commit: samba r2302 - in branches/SAMBA_4_0/source: lib/cmdline
param
tridge at samba.org
tridge at samba.org
Mon Sep 13 01:27:37 GMT 2004
Author: tridge
Date: 2004-09-13 01:27:37 +0000 (Mon, 13 Sep 2004)
New Revision: 2302
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=2302&nolog=1
Log:
added a '--option' option, allowing any global or default option in
smb.conf to be set on the command line. For example, you can use:
smbtorture --option 'unicode=false'
or
smbtorture --option 'netbios name=myname'
Modified:
branches/SAMBA_4_0/source/lib/cmdline/popt_common.c
branches/SAMBA_4_0/source/param/loadparm.c
Changeset:
Modified: branches/SAMBA_4_0/source/lib/cmdline/popt_common.c
===================================================================
--- branches/SAMBA_4_0/source/lib/cmdline/popt_common.c 2004-09-13 01:23:09 UTC (rev 2301)
+++ branches/SAMBA_4_0/source/lib/cmdline/popt_common.c 2004-09-13 01:27:37 UTC (rev 2302)
@@ -33,6 +33,9 @@
* -i,--scope
*/
+
+enum {OPT_OPTION=1};
+
static struct cmdline_auth_info cmdline_auth_info;
static void popt_common_callback(poptContext con,
@@ -40,7 +43,6 @@
const struct poptOption *opt,
const char *arg, const void *data)
{
- pstring logfile;
const char *pname;
/* Find out basename of current program */
@@ -52,8 +54,9 @@
pname++;
if (reason == POPT_CALLBACK_REASON_PRE) {
- pstr_sprintf(logfile, "%s/log.%s", dyn_LOGFILEBASE, pname);
+ char *logfile = talloc_asprintf(NULL, "%s/log.%s", dyn_LOGFILEBASE, pname);
lp_set_cmdline("log file", logfile);
+ talloc_free(logfile);
return;
}
@@ -81,8 +84,9 @@
case 'l':
if (arg) {
- pstr_sprintf(logfile, "%s/log.%s", arg, pname);
+ char *logfile = talloc_asprintf(NULL, "%s/log.%s", arg, pname);
lp_set_cmdline("log file", logfile);
+ talloc_free(logfile);
}
break;
@@ -105,6 +109,13 @@
case 'R':
lp_set_cmdline("name resolve order", arg);
break;
+
+ case OPT_OPTION:
+ if (!lp_set_option(arg)) {
+ fprintf(stderr, "Error setting option '%s'\n", arg);
+ exit(1);
+ }
+ break;
}
}
@@ -123,6 +134,7 @@
{ NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE, popt_common_callback },
{ "debuglevel", 'd', POPT_ARG_STRING, NULL, 'd', "Set debug level", "DEBUGLEVEL" },
{ "configfile", 's', POPT_ARG_STRING, NULL, 's', "Use alternative configuration file", "CONFIGFILE" },
+ { "option", 0, POPT_ARG_STRING, NULL, OPT_OPTION, "Set smb.conf option from command line", "name=value" },
{ "log-basename", 'l', POPT_ARG_STRING, NULL, 'l', "Basename for log/debug files", "LOGFILEBASE" },
POPT_TABLEEND
};
Modified: branches/SAMBA_4_0/source/param/loadparm.c
===================================================================
--- branches/SAMBA_4_0/source/param/loadparm.c 2004-09-13 01:23:09 UTC (rev 2301)
+++ branches/SAMBA_4_0/source/param/loadparm.c 2004-09-13 01:27:37 UTC (rev 2302)
@@ -2639,6 +2639,33 @@
return True;
}
+/*
+ set a option from the commandline in 'a=b' format. Use to support --option
+*/
+BOOL lp_set_option(const char *option)
+{
+ char *p, *s;
+ BOOL ret;
+
+ s = strdup(option);
+ if (!s) {
+ return False;
+ }
+
+ p = strchr(s, '=');
+ if (!p) {
+ free(s);
+ return False;
+ }
+
+ *p = 0;
+
+ ret = lp_set_cmdline(s, p+1);
+ free(s);
+ return ret;
+}
+
+
/***************************************************************************
Print a parameter of the specified type.
***************************************************************************/
More information about the samba-cvs
mailing list