s3-param Fix lp_set_cmdline() to set the flag on alias values too
authorAndrew Bartlett <abartlet@samba.org>
Fri, 26 Nov 2010 21:17:09 +0000 (08:17 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Sat, 27 Nov 2010 00:02:40 +0000 (01:02 +0100)
Otherwise, -d10 would be overridden by 'debug level = 1', because
debug level is an alias of 'log level' which -d was setting.

Andrew Bartlett

Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Sat Nov 27 01:02:40 CET 2010 on sn-devel-104

source3/param/loadparm.c

index 31402cc0a24fa0c1408aba7a9a3bb65959d1fd24..0bc27dca0337b55be513ce04377ad64b967ee20c 100644 (file)
@@ -7891,7 +7891,7 @@ FLAG_CMDLINE won't be overridden by loads from smb.conf.
 
 static bool lp_set_cmdline_helper(const char *pszParmName, const char *pszParmValue, bool store_values)
 {
-       int parmnum;
+       int parmnum, i;
        parmnum = map_parameter(pszParmName);
        if (parmnum >= 0) {
                parm_table[parmnum].flags &= ~FLAG_CMDLINE;
@@ -7900,6 +7900,16 @@ static bool lp_set_cmdline_helper(const char *pszParmName, const char *pszParmVa
                }
                parm_table[parmnum].flags |= FLAG_CMDLINE;
 
+               /* we have to also set FLAG_CMDLINE on aliases.  Aliases must
+                * be grouped in the table, so we don't have to search the
+                * whole table */
+               for (i=parmnum-1;i>=0 && parm_table[i].ptr == parm_table[parmnum].ptr;i--) {
+                       parm_table[i].flags |= FLAG_CMDLINE;
+               }
+               for (i=parmnum+1;i<NUMPARAMETERS && parm_table[i].ptr == parm_table[parmnum].ptr;i++) {
+                       parm_table[i].flags |= FLAG_CMDLINE;
+               }
+
                if (store_values) {
                        store_lp_set_cmdline(pszParmName, pszParmValue);
                }