param: Move enum values into a common (included) .c file
authorAndrew Bartlett <abartlet@samba.org>
Thu, 10 Nov 2011 04:19:33 +0000 (15:19 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 16 Nov 2011 23:34:09 +0000 (00:34 +0100)
This #include hack is required as it is not possible to declare a
compile-time sized array in a header file.

Andrew Bartlett

Pair-Programmed-With: Amitay Isaacs <amitay@samba.org>

lib/param/loadparm.c
lib/param/param_enums.c [new file with mode: 0644]
source3/param/loadparm.c

index 9de009f092457c71a656d7c479e8dcc732769dff..5f2feca51fd957d9a07c7fa300ba8e297118fa51 100644 (file)
@@ -104,87 +104,7 @@ static bool handle_debuglevel(struct loadparm_context *lp_ctx, int unused,
 static bool handle_logfile(struct loadparm_context *lp_ctx, int unused,
                           const char *pszParmValue, char **ptr);
 
-static const struct enum_list enum_protocol[] = {
-       {PROTOCOL_SMB2_02, "SMB2"},
-       {PROTOCOL_SMB2_02, "SMB2_02"},
-       {PROTOCOL_NT1, "NT1"},
-       {PROTOCOL_LANMAN2, "LANMAN2"},
-       {PROTOCOL_LANMAN1, "LANMAN1"},
-       {PROTOCOL_CORE, "CORE"},
-       {PROTOCOL_COREPLUS, "COREPLUS"},
-       {PROTOCOL_COREPLUS, "CORE+"},
-       {-1, NULL}
-};
-
-static const struct enum_list enum_security[] = {
-       {SEC_AUTO, "AUTO"},
-       {SEC_SHARE, "SHARE"},
-       {SEC_USER, "USER"},
-       {SEC_DOMAIN, "DOMAIN"},
-       {SEC_ADS, "ADS"},
-       {-1, NULL}
-};
-
-static const struct enum_list enum_bool_auto[] = {
-       {false, "No"},
-       {false, "False"},
-       {false, "0"},
-       {true, "Yes"},
-       {true, "True"},
-       {true, "1"},
-       {Auto, "Auto"},
-       {-1, NULL}
-};
-
-/* Client-side offline caching policy types */
-
-static const struct enum_list enum_csc_policy[] = {
-       {CSC_POLICY_MANUAL, "manual"},
-       {CSC_POLICY_DOCUMENTS, "documents"},
-       {CSC_POLICY_PROGRAMS, "programs"},
-       {CSC_POLICY_DISABLE, "disable"},
-       {-1, NULL}
-};
-
-/* SMB signing types. */
-static const struct enum_list enum_smb_signing_vals[] = {
-       {SMB_SIGNING_DEFAULT, "default"},
-       {SMB_SIGNING_OFF, "No"},
-       {SMB_SIGNING_OFF, "False"},
-       {SMB_SIGNING_OFF, "0"},
-       {SMB_SIGNING_OFF, "Off"},
-       {SMB_SIGNING_OFF, "disabled"},
-       {SMB_SIGNING_IF_REQUIRED, "if_required"},
-       {SMB_SIGNING_IF_REQUIRED, "Yes"},
-       {SMB_SIGNING_IF_REQUIRED, "True"},
-       {SMB_SIGNING_IF_REQUIRED, "1"},
-       {SMB_SIGNING_IF_REQUIRED, "On"},
-       {SMB_SIGNING_IF_REQUIRED, "enabled"},
-       {SMB_SIGNING_IF_REQUIRED, "auto"},
-       {SMB_SIGNING_REQUIRED, "required"},
-       {SMB_SIGNING_REQUIRED, "mandatory"},
-       {SMB_SIGNING_REQUIRED, "force"},
-       {SMB_SIGNING_REQUIRED, "forced"},
-       {SMB_SIGNING_REQUIRED, "enforced"},
-       {-1, NULL}
-};
-
-/* Server role options */
-static const struct enum_list enum_server_role[] = {
-       {ROLE_AUTO, "auto"},
-       {ROLE_STANDALONE, "standalone"},
-       {ROLE_DOMAIN_MEMBER, "member server"},
-       {ROLE_DOMAIN_MEMBER, "member"},
-       /* note that currently
-          ROLE_DOMAIN_CONTROLLER == ROLE_DOMAIN_BDC */
-       {ROLE_DOMAIN_CONTROLLER, "domain controller"},
-       {ROLE_DOMAIN_BDC, "backup domain controller"},
-       {ROLE_DOMAIN_BDC, "bdc"},
-       {ROLE_DOMAIN_BDC, "dc"},
-       {ROLE_DOMAIN_PDC, "primary domain controller"},
-       {ROLE_DOMAIN_PDC, "pdc"},
-       {-1, NULL}
-};
+#include "param_enums.c"
 
 #define GLOBAL_VAR(name) offsetof(struct loadparm_global, name)
 #define LOCAL_VAR(name) offsetof(struct loadparm_service, name)
diff --git a/lib/param/param_enums.c b/lib/param/param_enums.c
new file mode 100644 (file)
index 0000000..185f6dd
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+   Unix SMB/CIFS implementation.
+   Parameter loading functions
+   Copyright (C) Karl Auer 1993-1998
+
+   Largely re-written by Andrew Tridgell, September 1994
+
+   Copyright (C) Simo Sorce 2001
+   Copyright (C) Alexander Bokovoy 2002
+   Copyright (C) Stefan (metze) Metzmacher 2002
+   Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2003
+   Copyright (C) Michael Adam 2008
+   Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007
+   Copyright (C) Andrew Bartlett 2011
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+static const struct enum_list enum_protocol[] = {
+       {PROTOCOL_SMB2_02, "SMB2"}, /* for now keep PROTOCOL_SMB2_02 */
+       {PROTOCOL_SMB2_10, "SMB2_10"},
+       {PROTOCOL_SMB2_02, "SMB2_02"},
+       {PROTOCOL_NT1, "NT1"},
+       {PROTOCOL_LANMAN2, "LANMAN2"},
+       {PROTOCOL_LANMAN1, "LANMAN1"},
+       {PROTOCOL_CORE, "CORE"},
+       {PROTOCOL_COREPLUS, "COREPLUS"},
+       {PROTOCOL_COREPLUS, "CORE+"},
+       {-1, NULL}
+};
+
+static const struct enum_list enum_security[] = {
+       {SEC_AUTO, "AUTO"},
+       {SEC_SHARE, "SHARE"},
+       {SEC_USER, "USER"},
+       {SEC_SERVER, "SERVER"},
+       {SEC_DOMAIN, "DOMAIN"},
+#if (defined(HAVE_ADS) || _SAMBA_BUILD_ >= 4)
+       {SEC_ADS, "ADS"},
+#endif
+       {-1, NULL}
+};
+
+static const struct enum_list enum_bool_auto[] = {
+       {false, "No"},
+       {false, "False"},
+       {false, "0"},
+       {true, "Yes"},
+       {true, "True"},
+       {true, "1"},
+       {Auto, "Auto"},
+       {-1, NULL}
+};
+
+static const struct enum_list enum_csc_policy[] = {
+       {CSC_POLICY_MANUAL, "manual"},
+       {CSC_POLICY_DOCUMENTS, "documents"},
+       {CSC_POLICY_PROGRAMS, "programs"},
+       {CSC_POLICY_DISABLE, "disable"},
+       {-1, NULL}
+};
+
+/* Server role options */
+static const struct enum_list enum_server_role[] = {
+       {ROLE_AUTO, "auto"},
+       {ROLE_STANDALONE, "standalone"},
+       {ROLE_DOMAIN_MEMBER, "member server"},
+       {ROLE_DOMAIN_MEMBER, "member"},
+       /* note that currently
+          ROLE_DOMAIN_CONTROLLER == ROLE_DOMAIN_BDC */
+       {ROLE_DOMAIN_CONTROLLER, "domain controller"},
+       {ROLE_DOMAIN_BDC, "backup domain controller"},
+       {ROLE_DOMAIN_BDC, "bdc"},
+       {ROLE_DOMAIN_BDC, "dc"},
+       {ROLE_DOMAIN_PDC, "primary domain controller"},
+       {ROLE_DOMAIN_PDC, "pdc"},
+       {-1, NULL}
+};
+
+/* SMB signing types. */
+static const struct enum_list enum_smb_signing_vals[] = {
+       {SMB_SIGNING_DEFAULT, "default"},
+       {SMB_SIGNING_OFF, "No"},
+       {SMB_SIGNING_OFF, "False"},
+       {SMB_SIGNING_OFF, "0"},
+       {SMB_SIGNING_OFF, "Off"},
+       {SMB_SIGNING_OFF, "disabled"},
+       {SMB_SIGNING_IF_REQUIRED, "if_required"},
+       {SMB_SIGNING_IF_REQUIRED, "Yes"},
+       {SMB_SIGNING_IF_REQUIRED, "True"},
+       {SMB_SIGNING_IF_REQUIRED, "1"},
+       {SMB_SIGNING_IF_REQUIRED, "On"},
+       {SMB_SIGNING_IF_REQUIRED, "enabled"},
+       {SMB_SIGNING_IF_REQUIRED, "auto"},
+       {SMB_SIGNING_REQUIRED, "required"},
+       {SMB_SIGNING_REQUIRED, "mandatory"},
+       {SMB_SIGNING_REQUIRED, "force"},
+       {SMB_SIGNING_REQUIRED, "forced"},
+       {SMB_SIGNING_REQUIRED, "enforced"},
+       {-1, NULL}
+};
index 3cbc70f997af19520b48f7191ad0f41b5ba55d73..c044f655a4170d8ce5cc3a0bb7c2e9edabbb77f0 100644 (file)
@@ -313,29 +313,7 @@ static void add_to_file_list(const char *fname, const char *subfname);
 static bool lp_set_cmdline_helper(const char *pszParmName, const char *pszParmValue, bool store_values);
 static void free_param_opts(struct parmlist_entry **popts);
 
-static const struct enum_list enum_protocol[] = {
-       {PROTOCOL_SMB2_02, "SMB2"}, /* for now keep PROTOCOL_SMB2_02 */
-       {PROTOCOL_SMB2_10, "SMB2_10"},
-       {PROTOCOL_SMB2_02, "SMB2_02"},
-       {PROTOCOL_NT1, "NT1"},
-       {PROTOCOL_LANMAN2, "LANMAN2"},
-       {PROTOCOL_LANMAN1, "LANMAN1"},
-       {PROTOCOL_CORE, "CORE"},
-       {PROTOCOL_COREPLUS, "COREPLUS"},
-       {PROTOCOL_COREPLUS, "CORE+"},
-       {-1, NULL}
-};
-
-static const struct enum_list enum_security[] = {
-       {SEC_SHARE, "SHARE"},
-       {SEC_USER, "USER"},
-       {SEC_SERVER, "SERVER"},
-       {SEC_DOMAIN, "DOMAIN"},
-#ifdef HAVE_ADS
-       {SEC_ADS, "ADS"},
-#endif
-       {-1, NULL}
-};
+#include "lib/param/param_enums.c"
 
 static const struct enum_list enum_printing[] = {
        {PRINT_SYSV, "sysv"},
@@ -413,49 +391,6 @@ static const struct enum_list enum_case[] = {
 };
 
 
-
-static const struct enum_list enum_bool_auto[] = {
-       {false, "No"},
-       {false, "False"},
-       {false, "0"},
-       {true, "Yes"},
-       {true, "True"},
-       {true, "1"},
-       {Auto, "Auto"},
-       {-1, NULL}
-};
-
-static const struct enum_list enum_csc_policy[] = {
-       {CSC_POLICY_MANUAL, "manual"},
-       {CSC_POLICY_DOCUMENTS, "documents"},
-       {CSC_POLICY_PROGRAMS, "programs"},
-       {CSC_POLICY_DISABLE, "disable"},
-       {-1, NULL}
-};
-
-/* SMB signing types. */
-static const struct enum_list enum_smb_signing_vals[] = {
-       {SMB_SIGNING_DEFAULT, "default"},
-       {SMB_SIGNING_OFF, "No"},
-       {SMB_SIGNING_OFF, "False"},
-       {SMB_SIGNING_OFF, "0"},
-       {SMB_SIGNING_OFF, "Off"},
-       {SMB_SIGNING_OFF, "disabled"},
-       {SMB_SIGNING_IF_REQUIRED, "if_required"},
-       {SMB_SIGNING_IF_REQUIRED, "Yes"},
-       {SMB_SIGNING_IF_REQUIRED, "True"},
-       {SMB_SIGNING_IF_REQUIRED, "1"},
-       {SMB_SIGNING_IF_REQUIRED, "On"},
-       {SMB_SIGNING_IF_REQUIRED, "enabled"},
-       {SMB_SIGNING_IF_REQUIRED, "auto"},
-       {SMB_SIGNING_REQUIRED, "required"},
-       {SMB_SIGNING_REQUIRED, "mandatory"},
-       {SMB_SIGNING_REQUIRED, "force"},
-       {SMB_SIGNING_REQUIRED, "forced"},
-       {SMB_SIGNING_REQUIRED, "enforced"},
-       {-1, NULL}
-};
-
 /* ACL compatibility options. */
 static const struct enum_list enum_acl_compat_vals[] = {
     { ACL_COMPAT_AUTO, "auto" },
@@ -512,23 +447,6 @@ static const struct enum_list enum_kerberos_method[] = {
        {-1, NULL}
 };
 
-/* Server role options */
-static const struct enum_list enum_server_role[] = {
-       {ROLE_AUTO, "auto"},
-       {ROLE_STANDALONE, "standalone"},
-       {ROLE_DOMAIN_MEMBER, "member server"},
-       {ROLE_DOMAIN_MEMBER, "member"},
-       /* note that currently
-          ROLE_DOMAIN_CONTROLLER == ROLE_DOMAIN_BDC */
-       {ROLE_DOMAIN_CONTROLLER, "domain controller"},
-       {ROLE_DOMAIN_BDC, "backup domain controller"},
-       {ROLE_DOMAIN_BDC, "bdc"},
-       {ROLE_DOMAIN_BDC, "dc"},
-       {ROLE_DOMAIN_PDC, "primary domain controller"},
-       {ROLE_DOMAIN_PDC, "pdc"},
-       {-1, NULL}
-};
-
 /* Note: We do not initialise the defaults union - it is not allowed in ANSI C
  *
  * The FLAG_HIDE is explicit. Parameters set this way do NOT appear in any edit