param: move handle printing into lib/param
authorGarming Sam <garming@catalyst.net.nz>
Fri, 21 Feb 2014 04:59:41 +0000 (17:59 +1300)
committerJeremy Allison <jra@samba.org>
Wed, 7 May 2014 17:49:16 +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
lib/param/loadparm.h
lib/param/s3_param.h
source3/param/loadparm.c
source3/param/loadparm_ctx.c

index 2b8ea237a0624f094ce18b69e1a3ea24ad47bc69..5b89a4f1dba21bea0781efd1e376b75906611971 100644 (file)
@@ -81,7 +81,6 @@ static bool defaults_saved = false;
  * non-source3 code
  */
 #define handle_netbios_aliases NULL
-#define handle_printing NULL
 #define handle_ldap_debug_level NULL
 #define handle_idmap_backend NULL
 #define handle_idmap_uid NULL
@@ -1262,6 +1261,34 @@ bool handle_dos_charset(struct loadparm_context *lp_ctx, int snum,
        return lpcfg_string_set(lp_ctx, ptr, pszParmValue);
 }
 
+bool handle_printing(struct loadparm_context *lp_ctx, int snum,
+                           const char *pszParmValue, char **ptr)
+{
+       static int parm_num = -1;
+       struct loadparm_service *s;
+
+       if (parm_num == -1) {
+               parm_num = lpcfg_map_parameter("printing");
+       }
+
+       if (!lp_set_enum_parm(&parm_table[parm_num], pszParmValue, (int*)ptr)) {
+               return false;
+       }
+
+       if (lp_ctx->s3_fns) {
+               if ( snum < 0 ) {
+                       s = lp_ctx->sDefault;
+                       lp_ctx->s3_fns->init_printer_values(lp_ctx->globals->ctx, s);
+               } else {
+                       s = lp_ctx->services[snum];
+                       lp_ctx->s3_fns->init_printer_values(s, s);
+               }
+       }
+
+       return true;
+}
+
+
 /***************************************************************************
  Initialise a copymap.
 ***************************************************************************/
index 3f934139d7df956dcb5e7349382811b218ebe041..9be01ef7b969b88d2be0f2bb6254bec8f8b3530f 100644 (file)
@@ -280,6 +280,7 @@ char * lp_string(TALLOC_CTX *, const char *);
 bool lp_string_set(char **, const char *);
 int getservicebyname(const char *, struct loadparm_service *);
 bool lp_include(struct loadparm_context *, int, const char *, char **);
+void init_printer_values(TALLOC_CTX *, struct loadparm_service *);
 
 /**
  * Check if two parameters are equal.
index e1d68cf04fb988ea6e25ac8b91a5ac40e3766fff..e6996f261be0154138ba030297937396832b7f60 100644 (file)
@@ -18,6 +18,7 @@ struct loadparm_s3_helpers
        char * (*lp_string)(TALLOC_CTX *ctx, const char *in);
        bool (*lp_string_set)(char **dest, const char *src);
        bool (*lp_include)(struct loadparm_context*, int, const char *, char **);
+       void (*init_printer_values)(TALLOC_CTX *, struct loadparm_service *);
        struct loadparm_global *globals;
 };
 
index ff1f7250cbf08d034f9afad509f5e83479317323..968a87e136f18cb2c5ae0d81404974156814e8e4 100644 (file)
@@ -265,7 +265,6 @@ static bool handle_idmap_backend(struct loadparm_context *unused, int snum, cons
 static bool handle_idmap_uid(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
 static bool handle_idmap_gid(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
 static bool handle_netbios_aliases(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
-static bool handle_printing(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
 static bool handle_ldap_debug_level(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
 
 static void set_allowed_client_auth(void);
@@ -321,7 +320,7 @@ bool lp_string_set(char **dest, const char *src) {
  Initialise the sDefault parameter structure for the printer values.
 ***************************************************************************/
 
-static void init_printer_values(TALLOC_CTX *ctx, struct loadparm_service *pService)
+void init_printer_values(TALLOC_CTX *ctx, struct loadparm_service *pService)
 {
        /* choose defaults depending on the type of printing */
        switch (pService->printing) {
@@ -2635,32 +2634,6 @@ const char *lp_ldap_idmap_suffix(TALLOC_CTX *ctx)
        return lp_string(ctx, Globals.ldap_suffix);
 }
 
-/***************************************************************************
-***************************************************************************/
-
-static bool handle_printing(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr)
-{
-       static int parm_num = -1;
-       struct loadparm_service *s;
-
-       if ( parm_num == -1 )
-               parm_num = lpcfg_map_parameter( "printing" );
-
-       if (!lp_set_enum_parm(&parm_table[parm_num], pszParmValue, (int*)ptr)) {
-               return false;
-       }
-
-       if ( snum < 0 ) {
-               s = &sDefault;
-               init_printer_values(Globals.ctx, s);
-       } else {
-               s = ServicePtrs[snum];
-               init_printer_values(s, s);
-       }
-
-       return true;
-}
-
 /**
   return the parameter pointer for a parameter
 */
index b6e185e653a2ab24ecda06a28d768e60998f1537..b1e318f6d350bedea204c725c64f603770dc6420 100644 (file)
@@ -72,6 +72,7 @@ static struct loadparm_s3_helpers s3_fns =
        .lp_string = lp_string,
        .lp_string_set = lp_string_set,
        .lp_include = lp_include,
+       .init_printer_values = init_printer_values,
 };
 
 const struct loadparm_s3_helpers *loadparm_s3_helpers(void)