popt: Use SMB_CONF_PATH environment var if no other configfile is set.
authorKai Blin <kai@samba.org>
Mon, 4 Feb 2008 15:16:59 +0000 (16:16 +0100)
committerKai Blin <kai@samba.org>
Mon, 4 Feb 2008 16:41:23 +0000 (17:41 +0100)
Now --configfile (or -s) will have precedence, if that's not given
SMB_CONF_PATH is checked, otherwise the $(CONFIGDIR)/smb.conf default
value is used.

Thanks to Michael for his comments.
(This used to be commit 92a9c6c56fa90aead3b7f4a07bf4f3973ba23555)

source3/dynconfig.c
source3/include/dynconfig.h
source3/lib/popt_common.c

index ab0dd48da7ccd1b3d46d9091fb14a0283ec9c22f..57008ece44825a25b8f96c148749cf15aadbc4a5 100644 (file)
@@ -64,6 +64,11 @@ static char *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)
index bb7e2c20f4140158671bd1f4a8a96983a0effa64..cba71645bddd8d1a57d523da5ee43403c778b502 100644 (file)
@@ -41,42 +41,58 @@ extern char dyn_PRIVATE_DIR[1024];
 
 const char *get_dyn_SBINDIR(void);
 const char *set_dyn_SBINDIR(const char *newpath);
+bool is_default_dyn_SBINDIR(void);
 
 const char *get_dyn_BINDIR(void);
 const char *set_dyn_BINDIR(const char *newpath);
+bool is_default_dyn_BINDIR(void);
 
 const char *get_dyn_SWATDIR(void);
 const char *set_dyn_SWATDIR(const char *newpath);
+bool is_default_dyn_SWATDIR(void);
 
 const char *get_dyn_CONFIGFILE(void);
 const char *set_dyn_CONFIGFILE(const char *newpath);
+bool is_default_dyn_CONFIGFILE(void);
 
 const char *get_dyn_dyn_LOGFILEBASE(void);
 const char *set_dyn_dyn_LOGFILEBASE(const char *newpath);
+bool is_default_dyn_LOGFILEBASE(void);
 
 const char *get_dyn_LMHOSTSFILE(void);
 const char *set_dyn_LMHOSTSFILE(const char *newpath);
+bool is_default_dyn_LOGFILEBASE(void);
 
 const char *get_dyn_CODEPAGEDIR(void);
 const char *set_dyn_CODEPAGEDIR(const char *newpath);
+bool is_default_dyn_CODEPAGEDIR(void);
 
 const char *get_dyn_LIBDIR(void);
 const char *set_dyn_LIBDIR(const char *newpath);
+bool is_default_dyn_LIBDIR(void);
 
 const char *get_dyn_SHLIBEXT(void);
 const char *set_dyn_SHLIBEXT(const char *newpath);
+bool is_default_dyn_SHLIBEXT(void);
 
 const char *get_dyn_LOCKDIR(void);
 const char *set_dyn_LOCKDIR(const char *newpath);
+bool is_default_dyn_LOCKDIR(void);
 
 const char *get_dyn_PIDDIR(void);
 const char *set_dyn_PIDDIR(const char *newpath);
+bool is_default_dyn_PIDDIR(void);
 
 const char *get_dyn_SMB_PASSWD_FILE(void);
 const char *set_dyn_SMB_PASSWD_FILE(const char *newpath);
+bool is_default_dyn_SMB_PASSWD_FILE(void);
 
 const char *get_dyn_PRIVATE_DIR(void);
 const char *set_dyn_PRIVATE_DIR(const char *newpath);
+bool is_default_dyn_PRIVATE_DIR(void);
 
 const char *get_dyn_STATEDIR(void);
+bool is_default_dyn_STATEDIR(void);
+
 const char *get_dyn_CACHEDIR(void);
+bool is_default_dyn_CACHEDIR(bool);
index 5a9d39d181a36e57093d8ddf7092c01fe8872205..7f7d23fa00b9daff311984ecd93c46f7714e1ee1 100644 (file)
@@ -71,10 +71,19 @@ static void popt_common_callback(poptContext con,
        }
 
        if (reason == POPT_CALLBACK_REASON_POST) {
-               if (!PrintSambaVersionString) return;
 
-               printf( "Version %s\n", SAMBA_VERSION_STRING);
-               exit(0);
+               if (PrintSambaVersionString) {
+                       printf( "Version %s\n", SAMBA_VERSION_STRING);
+                       exit(0);
+               }
+
+               if (is_default_dyn_CONFIGFILE()) {
+                       if(getenv("SMB_CONF_PATH")) {
+                               set_dyn_CONFIGFILE(getenv("SMB_CONF_PATH"));
+                       }
+               }
+
+               /* Further 'every Samba program must do this' hooks here. */
                return;
        }