/src/samba/dynconfig/dynconfig.c
Line | Count | Source |
1 | | /* |
2 | | Unix SMB/CIFS implementation. |
3 | | Copyright (C) 2001 by Martin Pool <mbp@samba.org> |
4 | | Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2003. |
5 | | Copyright (C) Stefan Metzmacher 2003 |
6 | | |
7 | | This program is free software; you can redistribute it and/or modify |
8 | | it under the terms of the GNU General Public License as published by |
9 | | the Free Software Foundation; either version 3 of the License, or |
10 | | (at your option) any later version. |
11 | | |
12 | | This program is distributed in the hope that it will be useful, |
13 | | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | | GNU General Public License for more details. |
16 | | |
17 | | You should have received a copy of the GNU General Public License |
18 | | along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 | | */ |
20 | | |
21 | | /** |
22 | | * @file dynconfig.c |
23 | | * |
24 | | * @brief Global configurations, initialized to configured defaults. |
25 | | * |
26 | | * This file should be the only file that depends on path |
27 | | * configuration (--prefix, etc), so that if ./configure is re-run, |
28 | | * all programs will be appropriately updated. Everything else in |
29 | | * Samba should import extern variables from here, rather than relying |
30 | | * on preprocessor macros. |
31 | | * |
32 | | * Eventually some of these may become even more variable, so that |
33 | | * they can for example consistently be set across the whole of Samba |
34 | | * by command-line parameters, config file entries, or environment |
35 | | * variables. |
36 | | * |
37 | | * @todo Perhaps eventually these should be merged into the parameter |
38 | | * table? There's kind of a chicken-and-egg situation there... |
39 | | **/ |
40 | | |
41 | | #include "replace.h" |
42 | | #include "dynconfig.h" |
43 | | #include "lib/util/memory.h" |
44 | | |
45 | | #define DEFINE_DYN_CONFIG_PARAM(name) \ |
46 | | const char *dyn_##name = name; \ |
47 | | \ |
48 | 0 | bool is_default_dyn_##name(void) \ |
49 | 0 | {\ |
50 | 0 | if (strcmp(name, dyn_##name) == 0) { \ |
51 | 0 | return true; \ |
52 | 0 | } \ |
53 | 0 | return false; \ |
54 | 0 | }\ |
55 | | \ |
56 | 0 | const char *get_dyn_##name(void) \ |
57 | 0 | {\ |
58 | 0 | return dyn_##name;\ |
59 | 0 | }\ Unexecuted instantiation: get_dyn_SBINDIR Unexecuted instantiation: get_dyn_BINDIR Unexecuted instantiation: get_dyn_CONFIGFILE Unexecuted instantiation: get_dyn_LOGFILEBASE Unexecuted instantiation: get_dyn_LMHOSTSFILE Unexecuted instantiation: get_dyn_CODEPAGEDIR Unexecuted instantiation: get_dyn_LIBDIR Unexecuted instantiation: get_dyn_MODULESDIR Unexecuted instantiation: get_dyn_SAMBA_LIBEXECDIR Unexecuted instantiation: get_dyn_SHLIBEXT Unexecuted instantiation: get_dyn_LOCKDIR Unexecuted instantiation: get_dyn_STATEDIR Unexecuted instantiation: get_dyn_CACHEDIR Unexecuted instantiation: get_dyn_PIDDIR Unexecuted instantiation: get_dyn_NCALRPCDIR Unexecuted instantiation: get_dyn_SMB_PASSWD_FILE Unexecuted instantiation: get_dyn_PRIVATE_DIR Unexecuted instantiation: get_dyn_BINDDNS_DIR Unexecuted instantiation: get_dyn_LOCALEDIR Unexecuted instantiation: get_dyn_NMBDSOCKETDIR Unexecuted instantiation: get_dyn_DATADIR Unexecuted instantiation: get_dyn_SAMBA_DATADIR Unexecuted instantiation: get_dyn_SETUPDIR Unexecuted instantiation: get_dyn_WINBINDD_SOCKET_DIR Unexecuted instantiation: get_dyn_NTP_SIGND_SOCKET_DIR Unexecuted instantiation: get_dyn_PYTHONDIR Unexecuted instantiation: get_dyn_PYTHONARCHDIR Unexecuted instantiation: get_dyn_SCRIPTSBINDIR |
60 | | \ |
61 | 0 | const char *set_dyn_##name(const char *newpath) \ |
62 | 0 | {\ |
63 | 0 | if (newpath == NULL) { \ |
64 | 0 | return NULL; \ |
65 | 0 | } \ |
66 | 0 | if (strcmp(name, newpath) == 0) { \ |
67 | 0 | return dyn_##name; \ |
68 | 0 | } \ |
69 | 0 | newpath = strdup(newpath);\ |
70 | 0 | if (newpath == NULL) { \ |
71 | 0 | return NULL; \ |
72 | 0 | } \ |
73 | 0 | if (is_default_dyn_##name()) { \ |
74 | 0 | /* do not free a static string */ \ |
75 | 0 | } else if (dyn_##name) {\ |
76 | 0 | free(discard_const(dyn_##name)); \ |
77 | 0 | }\ |
78 | 0 | dyn_##name = newpath; \ |
79 | 0 | return dyn_##name;\ |
80 | 0 | } |
81 | | |
82 | 0 | DEFINE_DYN_CONFIG_PARAM(SBINDIR) Unexecuted instantiation: is_default_dyn_SBINDIR Unexecuted instantiation: set_dyn_SBINDIR |
83 | 0 | DEFINE_DYN_CONFIG_PARAM(BINDIR) Unexecuted instantiation: is_default_dyn_BINDIR Unexecuted instantiation: set_dyn_BINDIR |
84 | 0 | DEFINE_DYN_CONFIG_PARAM(CONFIGFILE) /**< Location of smb.conf file. **/ Unexecuted instantiation: is_default_dyn_CONFIGFILE Unexecuted instantiation: set_dyn_CONFIGFILE |
85 | 0 | DEFINE_DYN_CONFIG_PARAM(LOGFILEBASE) /** Log file directory. **/ Unexecuted instantiation: is_default_dyn_LOGFILEBASE Unexecuted instantiation: set_dyn_LOGFILEBASE |
86 | 0 | DEFINE_DYN_CONFIG_PARAM(LMHOSTSFILE) /** Statically configured LanMan hosts. **/ Unexecuted instantiation: is_default_dyn_LMHOSTSFILE Unexecuted instantiation: set_dyn_LMHOSTSFILE |
87 | 0 | DEFINE_DYN_CONFIG_PARAM(CODEPAGEDIR) Unexecuted instantiation: is_default_dyn_CODEPAGEDIR Unexecuted instantiation: set_dyn_CODEPAGEDIR |
88 | 0 | DEFINE_DYN_CONFIG_PARAM(LIBDIR) Unexecuted instantiation: is_default_dyn_LIBDIR Unexecuted instantiation: set_dyn_LIBDIR |
89 | 0 | DEFINE_DYN_CONFIG_PARAM(MODULESDIR) Unexecuted instantiation: is_default_dyn_MODULESDIR Unexecuted instantiation: set_dyn_MODULESDIR |
90 | 0 | DEFINE_DYN_CONFIG_PARAM(SAMBA_LIBEXECDIR) Unexecuted instantiation: is_default_dyn_SAMBA_LIBEXECDIR Unexecuted instantiation: set_dyn_SAMBA_LIBEXECDIR |
91 | 0 | DEFINE_DYN_CONFIG_PARAM(SHLIBEXT) Unexecuted instantiation: is_default_dyn_SHLIBEXT Unexecuted instantiation: set_dyn_SHLIBEXT |
92 | 0 | DEFINE_DYN_CONFIG_PARAM(LOCKDIR) Unexecuted instantiation: is_default_dyn_LOCKDIR Unexecuted instantiation: set_dyn_LOCKDIR |
93 | 0 | DEFINE_DYN_CONFIG_PARAM(STATEDIR) /** Persistent state files. Default LOCKDIR */ Unexecuted instantiation: is_default_dyn_STATEDIR Unexecuted instantiation: set_dyn_STATEDIR |
94 | 0 | DEFINE_DYN_CONFIG_PARAM(CACHEDIR) /** Temporary cache files. Default LOCKDIR */ Unexecuted instantiation: is_default_dyn_CACHEDIR Unexecuted instantiation: set_dyn_CACHEDIR |
95 | 0 | DEFINE_DYN_CONFIG_PARAM(PIDDIR) Unexecuted instantiation: is_default_dyn_PIDDIR Unexecuted instantiation: set_dyn_PIDDIR |
96 | 0 | DEFINE_DYN_CONFIG_PARAM(NCALRPCDIR) Unexecuted instantiation: is_default_dyn_NCALRPCDIR Unexecuted instantiation: set_dyn_NCALRPCDIR |
97 | 0 | DEFINE_DYN_CONFIG_PARAM(SMB_PASSWD_FILE) Unexecuted instantiation: is_default_dyn_SMB_PASSWD_FILE Unexecuted instantiation: set_dyn_SMB_PASSWD_FILE |
98 | 0 | DEFINE_DYN_CONFIG_PARAM(PRIVATE_DIR) Unexecuted instantiation: is_default_dyn_PRIVATE_DIR Unexecuted instantiation: set_dyn_PRIVATE_DIR |
99 | 0 | DEFINE_DYN_CONFIG_PARAM(BINDDNS_DIR) Unexecuted instantiation: is_default_dyn_BINDDNS_DIR Unexecuted instantiation: set_dyn_BINDDNS_DIR |
100 | 0 | DEFINE_DYN_CONFIG_PARAM(LOCALEDIR) Unexecuted instantiation: is_default_dyn_LOCALEDIR Unexecuted instantiation: set_dyn_LOCALEDIR |
101 | 0 | DEFINE_DYN_CONFIG_PARAM(NMBDSOCKETDIR) Unexecuted instantiation: is_default_dyn_NMBDSOCKETDIR Unexecuted instantiation: set_dyn_NMBDSOCKETDIR |
102 | 0 | DEFINE_DYN_CONFIG_PARAM(DATADIR) Unexecuted instantiation: is_default_dyn_DATADIR Unexecuted instantiation: set_dyn_DATADIR |
103 | 0 | DEFINE_DYN_CONFIG_PARAM(SAMBA_DATADIR) Unexecuted instantiation: is_default_dyn_SAMBA_DATADIR Unexecuted instantiation: set_dyn_SAMBA_DATADIR |
104 | 0 | DEFINE_DYN_CONFIG_PARAM(SETUPDIR) Unexecuted instantiation: is_default_dyn_SETUPDIR Unexecuted instantiation: set_dyn_SETUPDIR |
105 | 0 | DEFINE_DYN_CONFIG_PARAM(WINBINDD_SOCKET_DIR) /* from winbind_struct_protocol.h in s3 autoconf */ Unexecuted instantiation: is_default_dyn_WINBINDD_SOCKET_DIR Unexecuted instantiation: set_dyn_WINBINDD_SOCKET_DIR |
106 | 0 | DEFINE_DYN_CONFIG_PARAM(NTP_SIGND_SOCKET_DIR) Unexecuted instantiation: is_default_dyn_NTP_SIGND_SOCKET_DIR Unexecuted instantiation: set_dyn_NTP_SIGND_SOCKET_DIR |
107 | 0 | DEFINE_DYN_CONFIG_PARAM(PYTHONDIR) Unexecuted instantiation: is_default_dyn_PYTHONDIR Unexecuted instantiation: set_dyn_PYTHONDIR |
108 | 0 | DEFINE_DYN_CONFIG_PARAM(PYTHONARCHDIR) Unexecuted instantiation: is_default_dyn_PYTHONARCHDIR Unexecuted instantiation: set_dyn_PYTHONARCHDIR |
109 | | DEFINE_DYN_CONFIG_PARAM(SCRIPTSBINDIR) Unexecuted instantiation: is_default_dyn_SCRIPTSBINDIR Unexecuted instantiation: set_dyn_SCRIPTSBINDIR |