Ignore:
Timestamp:
Jun 4, 2010, 3:11:43 PM (15 years ago)
Author:
Silvan Scherrer
Message:

Samba Server 3.5: merged changes from 3.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server/source3/dynconfig.c

    r414 r454  
    4141 **/
    4242
     43#ifndef __OS2__
    4344#define DEFINE_DYN_CONFIG_PARAM(name) \
    4445static char *dyn_##name; \
     
    6566        return (dyn_##name == NULL);\
    6667}
     68#else
     69#define DEFINE_DYN_CONFIG_PARAM(name) \
     70static char *dyn_##name; \
     71\
     72 const char *set_dyn_##name(const char *newpath) \
     73{\
     74        if (dyn_##name) {\
     75                SAFE_FREE(dyn_##name);\
     76        }\
     77        dyn_##name = SMB_STRDUP(newpath);\
     78        return dyn_##name;\
     79}\
     80\
     81 bool is_default_dyn_##name(void) \
     82{\
     83        return (dyn_##name == NULL);\
     84}
     85#endif
    6786
    6887DEFINE_DYN_CONFIG_PARAM(SBINDIR)
     
    83102DEFINE_DYN_CONFIG_PARAM(SMB_PASSWD_FILE)
    84103DEFINE_DYN_CONFIG_PARAM(PRIVATE_DIR)
     104
     105#ifdef __OS2__
     106
     107/* Directory the binary was called from, same as getbindir() */
     108const char *get_dyn_SBINDIR(void)
     109{
     110        static char buffer[1024] = "";
     111        if (!*buffer)
     112        {
     113                char exedir[1024] = "";
     114                if (os2_GetExePath(exedir) != 0)
     115                {
     116                        snprintf(buffer, 260, "%s", SBINDIR);
     117                } else {
     118                        snprintf(buffer, 260, "%s", exedir);
     119                }
     120        }
     121
     122        if (dyn_SBINDIR == NULL) {
     123                return buffer;
     124        }
     125        return dyn_SBINDIR;
     126}
     127
     128/* Directory the binary was called from, same as getsbindir() */
     129const char *get_dyn_BINDIR(void)
     130{
     131        static char buffer[1024] = "";
     132        if (!*buffer)
     133        {
     134                char exedir[1024] = "";
     135                if (os2_GetExePath(exedir) != 0)
     136                {
     137                        snprintf(buffer, 260, "%s", BINDIR);
     138                } else {
     139                        snprintf(buffer, 260, "%s", exedir);
     140                }
     141        }
     142
     143        if (dyn_BINDIR == NULL) {
     144                return buffer;
     145        }
     146        return dyn_BINDIR;
     147}
     148
     149/* Directory holding the SWAT files */
     150const char *get_dyn_SWATDIR(void)
     151{
     152        static char buffer[1024] = "";
     153        if (!*buffer)
     154        {
     155                char exedir[1024] = "";
     156                if (os2_GetExePath(exedir) != 0)
     157                {
     158                        snprintf(buffer, 260, "%s", SWATDIR);
     159                } else {
     160                        snprintf(buffer, 260, "%s/%s", exedir,"swat");
     161                }
     162        }
     163
     164        if (dyn_SWATDIR == NULL) {
     165                return buffer;
     166        }
     167        return dyn_SWATDIR;
     168}
     169
     170/* Location of smb.conf file. */
     171const char *get_dyn_CONFIGFILE(void)
     172{
     173        static char buffer[1024] = "";
     174        if (!*buffer)
     175        {
     176                snprintf(buffer, 260, "%s/samba/smb.conf", getenv("ETC"));
     177        }
     178        /* Set UNIXROOT to x:\MPTN if UNIXROOT is undefined */
     179        if (getenv("UNIXROOT") == NULL) {
     180                static char unixroot[1024] = "";
     181                strncpy(unixroot,getenv("ETC"),strlen(getenv("ETC"))-4);
     182                setenv("UNIXROOT",unixroot,0);
     183        }
     184        /* Make sure TMPIR points to a proper value */
     185        static char tmpdir[1024] = "";
     186        if (getenv("TMPDIR") == NULL && getenv("TEMP") != NULL) {
     187                strncpy(tmpdir,getenv("TEMP"),strlen(getenv("TEMP")));
     188                setenv("TMPDIR",tmpdir,0);
     189        }
     190        if (getenv("TMPDIR") == NULL) {
     191                strncpy(tmpdir,getenv("ETC"),2);
     192                stpcpy(tmpdir,"/OS2/SYSTEM");
     193                setenv("TMPDIR",tmpdir,0);
     194        }
     195
     196        if (dyn_CONFIGFILE == NULL) {
     197                return buffer;
     198        }
     199        return dyn_CONFIGFILE;
     200}
     201
     202/** Log file directory. **/
     203const char *get_dyn_LOGFILEBASE(void)
     204{
     205        static char buffer[1024] = "";
     206        if (!*buffer)
     207        {
     208                snprintf(buffer, 260, "%s/samba/log", getenv("ETC"));
     209        }
     210        if (dyn_LOGFILEBASE == NULL) {
     211                return buffer;
     212        }
     213        return dyn_LOGFILEBASE;
     214}
     215
     216/** Statically configured LanMan hosts. **/
     217const char *get_dyn_LMHOSTSFILE(void)
     218{
     219        static char buffer[1024] = "";
     220        if (!*buffer)
     221        {
     222                snprintf(buffer, 260, "%s/samba/lmhosts", getenv("ETC"));
     223        }
     224        if (dyn_LMHOSTSFILE == NULL) {
     225                return buffer;
     226        }
     227        return dyn_LMHOSTSFILE;
     228}
     229
     230/* Directory holding the codepages */
     231const char *get_dyn_CODEPAGEDIR(void)
     232{
     233        static char buffer[1024] = "";
     234        if (!*buffer)
     235        {
     236                char exedir[1024] = "";
     237                if (os2_GetExePath(exedir) != 0)
     238                {
     239                        snprintf(buffer, 260, "%s", CODEPAGEDIR);
     240                } else {
     241                        snprintf(buffer, 260, "%s/%s", exedir, "codepages");
     242                }
     243        }
     244
     245        if (dyn_CODEPAGEDIR == NULL) {
     246                return buffer;
     247        }
     248        return dyn_CODEPAGEDIR;
     249}
     250
     251/* Directory holding the libs */
     252const char *get_dyn_LIBDIR(void)
     253{
     254        static char buffer[1024] = "";
     255        if (!*buffer)
     256        {
     257                char exedir[1024] = "";
     258                if (os2_GetExePath(exedir) != 0)
     259                {
     260                        snprintf(buffer, 260, "%s", LIBDIR);
     261                } else {
     262                        snprintf(buffer, 260, "%s/%s", exedir, "lib");
     263                }
     264        }
     265
     266        if (dyn_LIBDIR == NULL) {
     267                return buffer;
     268        }
     269        return dyn_LIBDIR;
     270}
     271
     272/* Directory holding the modules */
     273const char *get_dyn_MODULESDIR(void)
     274{
     275        static char buffer[1024] = "";
     276        if (!*buffer)
     277        {
     278                char exedir[1024] = "";
     279                if (os2_GetExePath(exedir) != 0)
     280                {
     281                        snprintf(buffer, 260, "%s", MODULESDIR);
     282                } else {
     283                        snprintf(buffer, 260, "%s/%s", exedir, "modules");
     284                }
     285        }
     286
     287        if (dyn_MODULESDIR == NULL) {
     288                return buffer;
     289        }
     290        return dyn_MODULESDIR;
     291}
     292
     293/* Directory holding lock files */
     294const char *get_dyn_LOCKDIR(void)
     295{
     296        static char buffer[1024] = "";
     297        if (!*buffer)
     298        {
     299                snprintf(buffer, 260, "%s/samba/lock", getenv("ETC"));
     300        }
     301        if (dyn_LOCKDIR == NULL) {
     302                return buffer;
     303        }
     304        return dyn_LOCKDIR;
     305}
     306
     307/* Directory holding the pid files */
     308const char *get_dyn_PIDDIR(void)
     309{
     310        static char buffer[1024] = "";
     311        if (!*buffer)
     312        {
     313                snprintf(buffer, 260, "%s/samba/pid", getenv("ETC"));
     314        }
     315        if (dyn_PIDDIR == NULL) {
     316                return buffer;
     317        }
     318        return dyn_PIDDIR;
     319}
     320
     321/* Location of smbpasswd */
     322const char *get_dyn_SMB_PASSWD_FILE(void)
     323{
     324        static char buffer[1024] = "";
     325        if (!*buffer)
     326        {
     327                snprintf(buffer, 260, "%s/samba/private/smbpasswd", getenv("ETC"));
     328        }
     329        if (dyn_SMB_PASSWD_FILE == NULL) {
     330                return buffer;
     331        }
     332        return dyn_SMB_PASSWD_FILE;
     333}
     334
     335/* Directory holding the private files */
     336const char *get_dyn_PRIVATE_DIR(void)
     337{
     338        static char buffer[1024] = "";
     339        if (!*buffer)
     340        {
     341                snprintf(buffer, 260, "%s/samba/private", getenv("ETC"));
     342        }
     343        if (dyn_PRIVATE_DIR == NULL) {
     344                return buffer;
     345        }
     346        return dyn_PRIVATE_DIR;
     347}
     348
     349/* @todo define NCALRPCDIR and SHLIBDIR eventually different */
     350
     351/* Directory holding the shared libs (same as libdir) */
     352const char *get_dyn_SHLIBEXT(void)
     353{
     354        static char buffer[1024] = "";
     355        if (!*buffer)
     356        {
     357                char exedir[1024] = "";
     358                if (os2_GetExePath(exedir) != 0)
     359                {
     360                        snprintf(buffer, 260, "%s", LIBDIR);
     361                } else {
     362                        snprintf(buffer, 260, "%s/%s", exedir, "lib");
     363                }
     364        }
     365
     366        if (dyn_SHLIBEXT == NULL) {
     367                return buffer;
     368        }
     369        return dyn_SHLIBEXT;
     370}
     371
     372/* Directory holding the NCALRPCDIR (whatever that is) */
     373const char *get_dyn_NCALRPCDIR(void)
     374{
     375        static char buffer[1024] = "";
     376        if (!*buffer)
     377        {
     378                char exedir[1024] = "";
     379                if (os2_GetExePath(exedir) != 0)
     380                {
     381                        snprintf(buffer, 260, "%s", NCALRPCDIR);
     382                } else {
     383                        snprintf(buffer, 260, "%s/%s", exedir, "lib");
     384                }
     385        }
     386
     387        if (dyn_NCALRPCDIR == NULL) {
     388                return buffer;
     389        }
     390        return dyn_NCALRPCDIR;
     391}
     392
     393#endif /* __OS2__ */
     394
     395/* In non-FHS mode, these should be configurable using 'lock dir =';
     396   but in FHS mode, they are their own directory.  Implement as wrapper
     397   functions so that everything can still be kept in dynconfig.c.
     398 */
     399
     400const char *get_dyn_STATEDIR(void)
     401{
     402#ifdef FHS_COMPATIBLE
     403        return STATEDIR;
     404#else
     405        return lp_lockdir();
     406#endif
     407}
     408
     409const char *get_dyn_CACHEDIR(void)
     410{
     411#ifdef FHS_COMPATIBLE
     412        return CACHEDIR;
     413#else
     414        return lp_lockdir();
     415#endif
     416}
Note: See TracChangeset for help on using the changeset viewer.