diff options
author | Stefan Metzmacher <metze@samba.org> | 2011-07-12 13:04:08 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2011-07-12 14:58:34 +0200 |
commit | c0eb56d1599fee0f0f5cf757b5381f56e04b74c1 (patch) | |
tree | c5e8dab9b820a775c3463075c7142802f4c677e9 /source4/param | |
parent | 8a234cbe1589439497608d35f35768c6841750c9 (diff) | |
download | samba-c0eb56d1599fee0f0f5cf757b5381f56e04b74c1.tar.gz samba-c0eb56d1599fee0f0f5cf757b5381f56e04b74c1.tar.bz2 samba-c0eb56d1599fee0f0f5cf757b5381f56e04b74c1.zip |
s4:param: add "state dir" and "cache dir" options
metze
Diffstat (limited to 'source4/param')
-rw-r--r-- | source4/param/loadparm.c | 20 | ||||
-rw-r--r-- | source4/param/util.c | 56 |
2 files changed, 76 insertions, 0 deletions
diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index b890ad81a9..df8b054d30 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1083,6 +1083,22 @@ static struct parm_struct parm_table[] = { .enum_list = NULL }, { + .label = "state dir", + .type = P_STRING, + .p_class = P_GLOBAL, + .offset = GLOBAL_VAR(szStateDir), + .special = NULL, + .enum_list = NULL + }, + { + .label = "cache dir", + .type = P_STRING, + .p_class = P_GLOBAL, + .offset = GLOBAL_VAR(szCacheDir), + .special = NULL, + .enum_list = NULL + }, + { .label = "pid directory", .type = P_STRING, .p_class = P_GLOBAL, @@ -1476,6 +1492,8 @@ FN_GLOBAL_BOOL(idmap_trusted_only, bIdmapTrustedOnly) FN_GLOBAL_STRING(private_dir, szPrivateDir) FN_GLOBAL_STRING(serverstring, szServerString) FN_GLOBAL_STRING(lockdir, szLockDir) +FN_GLOBAL_STRING(statedir, szStateDir) +FN_GLOBAL_STRING(cachedir, szCacheDir) FN_GLOBAL_STRING(ncalrpc_dir, ncalrpc_dir) FN_GLOBAL_STRING(dos_charset, dos_charset) FN_GLOBAL_STRING(unix_charset, unix_charset) @@ -3263,6 +3281,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lpcfg_do_global_parameter(lp_ctx, "pid directory", dyn_PIDDIR); lpcfg_do_global_parameter(lp_ctx, "lock dir", dyn_LOCKDIR); + lpcfg_do_global_parameter(lp_ctx, "state dir", dyn_STATEDIR); + lpcfg_do_global_parameter(lp_ctx, "cache dir", dyn_CACHEDIR); lpcfg_do_global_parameter(lp_ctx, "ncalrpc dir", dyn_NCALRPCDIR); lpcfg_do_global_parameter(lp_ctx, "socket address", ""); diff --git a/source4/param/util.c b/source4/param/util.c index b1a7a571e6..92672ecba2 100644 --- a/source4/param/util.c +++ b/source4/param/util.c @@ -101,6 +101,62 @@ char *lpcfg_lock_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx, } /** + A useful function for returning a path in the Samba state directory. +**/ +char *lpcfg_state_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx, + const char *name) +{ + char *fname, *dname; + if (name == NULL) { + return NULL; + } + if (name[0] == 0 || name[0] == '/' || strstr(name, ":/")) { + return talloc_strdup(mem_ctx, name); + } + + dname = talloc_strdup(mem_ctx, lpcfg_statedir(lp_ctx)); + trim_string(dname,"","/"); + + if (!directory_exist(dname)) { + mkdir(dname,0755); + } + + fname = talloc_asprintf(mem_ctx, "%s/%s", dname, name); + + talloc_free(dname); + + return fname; +} + +/** + A useful function for returning a path in the Samba cache directory. +**/ +char *lpcfg_cache_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx, + const char *name) +{ + char *fname, *dname; + if (name == NULL) { + return NULL; + } + if (name[0] == 0 || name[0] == '/' || strstr(name, ":/")) { + return talloc_strdup(mem_ctx, name); + } + + dname = talloc_strdup(mem_ctx, lpcfg_cachedir(lp_ctx)); + trim_string(dname,"","/"); + + if (!directory_exist(dname)) { + mkdir(dname,0755); + } + + fname = talloc_asprintf(mem_ctx, "%s/%s", dname, name); + + talloc_free(dname); + + return fname; +} + +/** * @brief Returns an absolute path to a file in the directory containing the current config file * * @param name File to find, relative to the config file directory. |