X-Git-Url: http://git.samba.org/samba.git/?p=ira%2Fwip.git;a=blobdiff_plain;f=source3%2Fdynconfig.c;h=dfec0c3baa8a3562c52be1aabfc51e7b33f488c8;hp=76b5bce5c9820b954644a7a4aaaaee5ba461f4b3;hb=0e261d0e9c89ff11dc37b2bfd70c74c3a06486bd;hpb=cd68afe31256ad60748b34f7318a180cfc2127cc diff --git a/source3/dynconfig.c b/source3/dynconfig.c index 76b5bce5c98..dfec0c3baa8 100644 --- a/source3/dynconfig.c +++ b/source3/dynconfig.c @@ -1,20 +1,21 @@ -/* +/* Unix SMB/CIFS implementation. Copyright (C) 2001 by Martin Pool - + Copyright (C) 2003 by Jim McDonough + Copyright (C) 2007 by Jeremy Allison + 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 2 of the License, or + 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with this program. If not, see . */ #include "includes.h" @@ -39,35 +40,45 @@ * table? There's kind of a chicken-and-egg situation there... **/ -char const *dyn_SBINDIR = SBINDIR, - *dyn_BINDIR = BINDIR, - *dyn_SWATDIR = SWATDIR; - -pstring dyn_CONFIGFILE = CONFIGFILE; /**< Location of smb.conf file. **/ - -/** Log file directory. **/ -pstring dyn_LOGFILEBASE = LOGFILEBASE; - -/** Statically configured LanMan hosts. **/ -pstring dyn_LMHOSTSFILE = LMHOSTSFILE; - -/** - * @brief Samba library directory. - * - * @sa lib_path() to get the path to a file inside the LIBDIR. - **/ -pstring dyn_LIBDIR = LIBDIR; - -/** - * @brief Directory holding lock files. - * - * Not writable, but used to set a default in the parameter table. - **/ -const pstring dyn_LOCKDIR = LOCKDIR; - -const pstring dyn_DRIVERFILE = DRIVERFILE; - -const pstring dyn_SMB_PASSWD_FILE = SMB_PASSWD_FILE; -const pstring dyn_PRIVATE_DIR = PRIVATE_DIR; - +#define DEFINE_DYN_CONFIG_PARAM(name) \ +static char *dyn_##name; \ +\ + const char *get_dyn_##name(void) \ +{\ + if (dyn_##name == NULL) {\ + return name;\ + }\ + return dyn_##name;\ +}\ +\ + const char *set_dyn_##name(const char *newpath) \ +{\ + if (dyn_##name) {\ + SAFE_FREE(dyn_##name);\ + }\ + dyn_##name = SMB_STRDUP(newpath);\ + return dyn_##name;\ +}\ +\ + bool is_default_dyn_##name(void) \ +{\ + return (dyn_##name == NULL);\ +} +DEFINE_DYN_CONFIG_PARAM(SBINDIR) +DEFINE_DYN_CONFIG_PARAM(BINDIR) +DEFINE_DYN_CONFIG_PARAM(SWATDIR) +DEFINE_DYN_CONFIG_PARAM(CONFIGFILE) /**< Location of smb.conf file. **/ +DEFINE_DYN_CONFIG_PARAM(LOGFILEBASE) /** Log file directory. **/ +DEFINE_DYN_CONFIG_PARAM(LMHOSTSFILE) /** Statically configured LanMan hosts. **/ +DEFINE_DYN_CONFIG_PARAM(CODEPAGEDIR) +DEFINE_DYN_CONFIG_PARAM(LIBDIR) +DEFINE_DYN_CONFIG_PARAM(MODULESDIR) +DEFINE_DYN_CONFIG_PARAM(SHLIBEXT) +DEFINE_DYN_CONFIG_PARAM(LOCKDIR) +DEFINE_DYN_CONFIG_PARAM(STATEDIR) /** Persistent state files. Default LOCKDIR */ +DEFINE_DYN_CONFIG_PARAM(CACHEDIR) /** Temporary cache files. Default LOCKDIR */ +DEFINE_DYN_CONFIG_PARAM(PIDDIR) +DEFINE_DYN_CONFIG_PARAM(NCALRPCDIR) +DEFINE_DYN_CONFIG_PARAM(SMB_PASSWD_FILE) +DEFINE_DYN_CONFIG_PARAM(PRIVATE_DIR)