Fix swat. Bug #5613.
authorJeremy Allison <jra@samba.org>
Tue, 15 Jul 2008 21:37:48 +0000 (14:37 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 15 Jul 2008 21:37:48 +0000 (14:37 -0700)
Jeremy

source/include/proto.h
source/param/loadparm.c
source/web/swat.c

index 9958c91dca4dd1fa5e6bce910cece1400585d94f..f7f0836c8faf48622b18ec659fa9957f93955616 100644 (file)
@@ -6166,7 +6166,6 @@ bool lp_load_with_registry_shares(const char *pszFname,
                                  bool save_defaults,
                                  bool add_ipc,
                                  bool initialize_globals);
-void lp_resetnumservices(void);
 int lp_numservices(void);
 void lp_dump(FILE *f, bool show_defaults, int maxtoprint);
 void lp_dump_one(FILE * f, bool show_defaults, int snum);
index b2cbbf1671f3bc724b47f91dffba9ee00bd46a6c..18ca495cea6d698761f5039caba5f96e1d36ce41 100644 (file)
@@ -8902,15 +8902,6 @@ bool lp_load_with_registry_shares(const char *pszFname,
                          true);
 }
 
-/***************************************************************************
- Reset the max number of services.
-***************************************************************************/
-
-void lp_resetnumservices(void)
-{
-       iNumServices = 0;
-}
-
 /***************************************************************************
  Return the max number of services.
 ***************************************************************************/
index 373ab73127ef8047c52ace0e9f201f0bb4fd7908..1502c5bc2f13519daef3016f42c9a3071398d8d3 100644 (file)
@@ -430,7 +430,6 @@ static void show_parameters(int snum, int allparameters, unsigned int parm_filte
 ****************************************************************************/
 static bool load_config(bool save_def)
 {
-       lp_resetnumservices();
        return lp_load(get_dyn_CONFIGFILE(),False,save_def,False,True);
 }
 
@@ -740,12 +739,12 @@ static void wizard_page(void)
 
                        load_config(False);
                        lp_copy_service(GLOBAL_SECTION_SNUM, unix_share);
-                       iNumNonAutoPrintServices = lp_numservices();
                        have_home = lp_servicenumber(HOMES_NAME);
                        lp_do_parameter( have_home, "read only", "No");
                        lp_do_parameter( have_home, "valid users", "%S");
                        lp_do_parameter( have_home, "browseable", "No");
                        commit_parameters(have_home);
+                       save_reload(have_home);
                }
 
                /* Need to Delete Homes share? */
@@ -908,6 +907,7 @@ static void shares_page(void)
        if (cgi_variable("Commit") && snum >= 0) {
                commit_parameters(snum);
                save_reload(0);
+               snum = lp_servicenumber(share);
        }
 
        if (cgi_variable("Delete") && snum >= 0) {
@@ -918,11 +918,14 @@ static void shares_page(void)
        }
 
        if (cgi_variable("createshare") && (share=cgi_variable("newshare"))) {
-               load_config(False);
-               lp_copy_service(GLOBAL_SECTION_SNUM, share);
-               iNumNonAutoPrintServices = lp_numservices();
-               save_reload(0);
                snum = lp_servicenumber(share);
+               if (snum < 0) {
+                       load_config(False);
+                       lp_copy_service(GLOBAL_SECTION_SNUM, share);
+                       snum = lp_servicenumber(share);
+                       save_reload(snum);
+                       snum = lp_servicenumber(share);
+               }
        }
 
        printf("<FORM name=\"swatform\" method=post>\n");
@@ -958,7 +961,6 @@ static void shares_page(void)
                               (share && strcmp(share,s)==0)?"SELECTED":"",
                               utf8_s, utf8_s);
                        SAFE_FREE(utf8_s);
-                       
                }
        }
        printf("</select></td>\n");
@@ -1261,6 +1263,7 @@ static void printers_page(void)
                    save_reload(snum);
                else
                    save_reload(0);
+               snum = lp_servicenumber(share);
        }
 
        if (cgi_variable("Delete") && snum >= 0) {
@@ -1271,13 +1274,15 @@ static void printers_page(void)
        }
 
        if (cgi_variable("createshare") && (share=cgi_variable("newshare"))) {
-               load_config(False);
-               lp_copy_service(GLOBAL_SECTION_SNUM, share);
-               iNumNonAutoPrintServices = lp_numservices();
-               snum = lp_servicenumber(share);
-               lp_do_parameter(snum, "print ok", "Yes");
-               save_reload(0);
                snum = lp_servicenumber(share);
+               if (snum < 0 || snum >= iNumNonAutoPrintServices) {
+                       load_config(False);
+                       lp_copy_service(GLOBAL_SECTION_SNUM, share);
+                       snum = lp_servicenumber(share);
+                       lp_do_parameter(snum, "print ok", "Yes");
+                       save_reload(snum);
+                       snum = lp_servicenumber(share);
+               }
        }
 
        printf("<FORM name=\"swatform\" method=post>\n");