param: move parametric parameter dumping to lpcfg_dump_a_parameter
authorGarming Sam <garming@catalyst.net.nz>
Wed, 26 Feb 2014 00:22:33 +0000 (13:22 +1300)
committerJeremy Allison <jra@samba.org>
Wed, 7 May 2014 17:49:17 +0000 (19:49 +0200)
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/param/loadparm.c
source3/param/loadparm.c

index bf2002264a61971187bb714b16f11be2cb5ea51c..367c61d29df512a0b705f5ff86258842a6ad0ab0 100644 (file)
@@ -2002,7 +2002,33 @@ bool lpcfg_dump_a_parameter(struct loadparm_context *lp_ctx,
 {
        struct parm_struct *parm;
        void *ptr;
+       char *local_parm_name;
+       char *parm_opt;
+       const char *parm_opt_value;
 
+       /* check for parametrical option */
+       local_parm_name = talloc_strdup(lp_ctx, parm_name);
+       if (local_parm_name == NULL) {
+               return false;
+       }
+
+       parm_opt = strchr( local_parm_name, ':');
+
+       if (parm_opt) {
+               *parm_opt = '\0';
+               parm_opt++;
+               if (strlen(parm_opt)) {
+                       parm_opt_value = lpcfg_parm_string(lp_ctx, service,
+                               local_parm_name, parm_opt);
+                       if (parm_opt_value) {
+                               fprintf(f, "%s\n", parm_opt_value);
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       /* parameter is not parametric, search the table */
        parm = lpcfg_parm_struct(lp_ctx, parm_name);
        if (!parm) {
                return false;
index 358e62089e5316daafb8189023aa23e4f320a9f2..a0912ac95ffddb06fa060313e961b424cf3191a9 100644 (file)
@@ -3061,9 +3061,6 @@ static void dump_a_service(struct loadparm_service *pService, FILE * f)
 bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal)
 {
        bool result = false;
-       char *local_parm_name;
-       char *parm_opt;
-       const char *parm_opt_value;
 
        struct loadparm_context *lp_ctx;
 
@@ -3072,29 +3069,6 @@ bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal)
                return false;
        }
 
-       /* check for parametrical option */
-       local_parm_name = talloc_strdup(lp_ctx, parm_name);
-       if (local_parm_name == NULL) {
-               TALLOC_FREE(lp_ctx);
-               return false;
-       }
-
-       parm_opt = strchr( local_parm_name, ':');
-
-       if (parm_opt) {
-               *parm_opt = '\0';
-               parm_opt++;
-               if (strlen(parm_opt)) {
-                       parm_opt_value = lp_parm_const_string( snum,
-                               local_parm_name, parm_opt, NULL);
-                       if (parm_opt_value) {
-                               fprintf(f, "%s\n", parm_opt_value);
-                               result = true;
-                       }
-               }
-               return result;
-       }
-
        if (isGlobal) {
                result = lpcfg_dump_a_parameter(lp_ctx, NULL, parm_name, f);
        } else {