Changeset 454 for trunk/server/source3/dynconfig.c
- Timestamp:
- Jun 4, 2010, 3:11:43 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server/source3/dynconfig.c
r414 r454 41 41 **/ 42 42 43 #ifndef __OS2__ 43 44 #define DEFINE_DYN_CONFIG_PARAM(name) \ 44 45 static char *dyn_##name; \ … … 65 66 return (dyn_##name == NULL);\ 66 67 } 68 #else 69 #define DEFINE_DYN_CONFIG_PARAM(name) \ 70 static 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 67 86 68 87 DEFINE_DYN_CONFIG_PARAM(SBINDIR) … … 83 102 DEFINE_DYN_CONFIG_PARAM(SMB_PASSWD_FILE) 84 103 DEFINE_DYN_CONFIG_PARAM(PRIVATE_DIR) 104 105 #ifdef __OS2__ 106 107 /* Directory the binary was called from, same as getbindir() */ 108 const 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() */ 129 const 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 */ 150 const 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. */ 171 const 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. **/ 203 const 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. **/ 217 const 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 */ 231 const 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 */ 252 const 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 */ 273 const 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 */ 294 const 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 */ 308 const 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 */ 322 const 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 */ 336 const 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) */ 352 const 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) */ 373 const 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 400 const char *get_dyn_STATEDIR(void) 401 { 402 #ifdef FHS_COMPATIBLE 403 return STATEDIR; 404 #else 405 return lp_lockdir(); 406 #endif 407 } 408 409 const 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.