diff options
author | Michael Adam <obnox@samba.org> | 2008-01-03 11:30:14 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2008-01-03 11:30:14 +0100 |
commit | fd597c7e6d1b5d89c75dd24f2b62916ec81a67ae (patch) | |
tree | 9df3a6f4b4cc1b291f529aca6597d89ae908573f /source3 | |
parent | 40079c4eb47b590a88ac8d568a5d5f039bc02af6 (diff) | |
download | samba-fd597c7e6d1b5d89c75dd24f2b62916ec81a67ae.tar.gz samba-fd597c7e6d1b5d89c75dd24f2b62916ec81a67ae.tar.bz2 samba-fd597c7e6d1b5d89c75dd24f2b62916ec81a67ae.zip |
Add libnet_conf API function libnet_smbconf_create_share().
And make libnet_smbconf_setparm() return error if the share
does not already exist. Adapt net_conf_addshare to this new
situation.
Michael
(This used to be commit de349bd26db3341815f6d8f6c18a5ca1fd664dca)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libnet/libnet_conf.c | 31 | ||||
-rw-r--r-- | source3/utils/net_conf.c | 13 |
2 files changed, 38 insertions, 6 deletions
diff --git a/source3/libnet/libnet_conf.c b/source3/libnet/libnet_conf.c index ebdfd75744..2c67d4735e 100644 --- a/source3/libnet/libnet_conf.c +++ b/source3/libnet/libnet_conf.c @@ -612,6 +612,27 @@ bool libnet_smbconf_share_exists(const char *servicename) } /** + * Add a service if it does not already exist. + */ +WERROR libnet_smbconf_create_share(const char *servicename) +{ + WERROR werr; + TALLOC_CTX *mem_ctx = talloc_stackframe(); + struct registry_key *key = NULL; + + if (libnet_smbconf_share_exists(servicename)) { + werr = WERR_ALREADY_EXISTS; + goto done; + } + + werr = libnet_smbconf_reg_createkey_internal(mem_ctx, servicename, &key); + +done: + TALLOC_FREE(mem_ctx); + return werr; +} + +/** * get a definition of a share (service) from configuration. */ WERROR libnet_smbconf_getshare(TALLOC_CTX *mem_ctx, const char *servicename, @@ -668,12 +689,12 @@ WERROR libnet_smbconf_setparm(const char *service, TALLOC_CTX *mem_ctx = talloc_stackframe(); if (!libnet_smbconf_share_exists(service)) { - werr = libnet_smbconf_reg_createkey_internal(mem_ctx, service, - &key); - } else { - werr = libnet_smbconf_reg_open_service_key(mem_ctx, service, - REG_KEY_WRITE, &key); + werr = WERR_NO_SUCH_SERVICE; + goto done; } + + werr = libnet_smbconf_reg_open_service_key(mem_ctx, service, + REG_KEY_WRITE, &key); if (!W_ERROR_IS_OK(werr)) { goto done; } diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c index 07eb3b890f..feee16f564 100644 --- a/source3/utils/net_conf.c +++ b/source3/utils/net_conf.c @@ -628,7 +628,18 @@ static int net_conf_addshare(int argc, const char **argv) } /* - * create the share by adding the parameters + * create the share + */ + + werr = libnet_smbconf_create_share(sharename); + if (!W_ERROR_IS_OK(werr)) { + d_fprintf(stderr, "Error creating share %s: %s\n", + sharename, dos_errstr(werr)); + goto done; + } + + /* + * fill the share with parameters */ werr = libnet_smbconf_setparm(sharename, "path", path); |