libsmbconf: make sure to always list the NULL section first in text backend.
authorMichael Adam <obnox@samba.org>
Tue, 15 Apr 2008 14:06:57 +0000 (16:06 +0200)
committerMichael Adam <obnox@samba.org>
Tue, 15 Apr 2008 15:40:27 +0000 (17:40 +0200)
Michael

source/lib/smbconf/smbconf_txt_simple.c

index bd7693047c9aa0b23ed2c9469707d60ebd07d91f..d2dc24a117bde412891b994f02493d428d446026 100644 (file)
@@ -307,10 +307,21 @@ static WERROR smbconf_txt_get_share_names(struct smbconf_ctx *ctx,
                goto done;
        }
 
-       /* make sure "global" is always listed first */
+       /* make sure "global" is always listed first,
+        * possibly after NULL section */
+
+       if (smbconf_share_exists(ctx, NULL)) {
+               werr = smbconf_add_string_to_array(tmp_ctx, &tmp_share_names,
+                                                  0, NULL);
+               if (!W_ERROR_IS_OK(werr)) {
+                       goto done;
+               }
+               added_count++;
+       }
+
        if (smbconf_share_exists(ctx, GLOBAL_NAME)) {
                werr = smbconf_add_string_to_array(tmp_ctx, &tmp_share_names,
-                                                  0, GLOBAL_NAME);
+                                                  added_count, GLOBAL_NAME);
                if (!W_ERROR_IS_OK(werr)) {
                        goto done;
                }
@@ -318,7 +329,9 @@ static WERROR smbconf_txt_get_share_names(struct smbconf_ctx *ctx,
        }
 
        for (count = 0; count < pd(ctx)->cache->num_shares; count++) {
-               if (strequal(pd(ctx)->cache->share_names[count], GLOBAL_NAME)) {
+               if (strequal(pd(ctx)->cache->share_names[count], GLOBAL_NAME) ||
+                   (pd(ctx)->cache->share_names[count] == NULL))
+               {
                        continue;
                }