diff options
author | Michael Adam <obnox@samba.org> | 2007-12-29 14:38:42 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2007-12-29 17:00:27 +0100 |
commit | e8cb7cecf2dde62f271a37376cefa5179eb7b7bc (patch) | |
tree | 8c26e22001f004a22427d4a6fa3b2d7328d4dd96 /source3 | |
parent | 0e8ca78720ed0fff3853b8dbd407d41044aa4275 (diff) | |
download | samba-e8cb7cecf2dde62f271a37376cefa5179eb7b7bc.tar.gz samba-e8cb7cecf2dde62f271a37376cefa5179eb7b7bc.tar.bz2 samba-e8cb7cecf2dde62f271a37376cefa5179eb7b7bc.zip |
Make sure libnet_smbconf_get_share_names() always lists "global" first.
And don't return count-1 but count.
Michael
(This used to be commit b7cb9b78231512dc4a88c307048d7fb5334fa319)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libnet/libnet_conf.c | 25 | ||||
-rw-r--r-- | source3/utils/net_conf.c | 2 |
2 files changed, 22 insertions, 5 deletions
diff --git a/source3/libnet/libnet_conf.c b/source3/libnet/libnet_conf.c index ad8deda04c..636e966a37 100644 --- a/source3/libnet/libnet_conf.c +++ b/source3/libnet/libnet_conf.c @@ -424,6 +424,7 @@ WERROR libnet_smbconf_get_share_names(TALLOC_CTX *mem_ctx, uint32_t *num_shares, char ***share_names) { uint32_t count; + uint32_t added_count = 0; TALLOC_CTX *tmp_ctx = NULL; WERROR werr = WERR_OK; struct registry_key *key = NULL; @@ -441,6 +442,17 @@ WERROR libnet_smbconf_get_share_names(TALLOC_CTX *mem_ctx, uint32_t *num_shares, goto done; } + /* make sure "global" is always listed first */ + if (libnet_smbconf_key_exists(GLOBAL_NAME)) { + werr = libnet_smbconf_add_string_to_array(tmp_ctx, + &tmp_share_names, + 0, GLOBAL_NAME); + if (!W_ERROR_IS_OK(werr)) { + goto done; + } + added_count++; + } + werr = libnet_smbconf_reg_open_basepath(tmp_ctx, SEC_RIGHTS_ENUM_SUBKEYS, &key); @@ -453,21 +465,26 @@ WERROR libnet_smbconf_get_share_names(TALLOC_CTX *mem_ctx, uint32_t *num_shares, &subkey_name, NULL)); count++) { + if (strequal(subkey_name, GLOBAL_NAME)) { + continue; + } + werr = libnet_smbconf_add_string_to_array(tmp_ctx, &tmp_share_names, - count, subkey_name); + added_count, + subkey_name); if (!W_ERROR_IS_OK(werr)) { goto done; } + added_count++; } if (!W_ERROR_EQUAL(WERR_NO_MORE_ITEMS, werr)) { goto done; } - werr = WERR_OK; - *num_shares = count - 1; - if (count > 0) { + *num_shares = added_count; + if (added_count > 0) { *share_names = talloc_move(mem_ctx, &tmp_share_names); } diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c index 651948c07c..8791d7cbdd 100644 --- a/source3/utils/net_conf.c +++ b/source3/utils/net_conf.c @@ -475,7 +475,7 @@ static int net_conf_listshares(int argc, const char **argv) goto done; } - for (count = 0; count <= num_shares; count++) + for (count = 0; count < num_shares; count++) { d_printf("%s\n", share_names[count]); } |