From 24eec914c0d5a2ff6b6e8b0ee0bc000a9af13d4f Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 15 Jul 2008 14:37:48 -0700 Subject: [PATCH] Fix swat. Bug #5613. Jeremy (This used to be commit 15920f838835f5dbbac8712202267c2a99237686) --- source3/include/proto.h | 1 - source3/param/loadparm.c | 9 --------- source3/web/swat.c | 31 ++++++++++++++++++------------- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/source3/include/proto.h b/source3/include/proto.h index 9958c91dca4..f7f0836c8fa 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -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); diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index b2cbbf1671f..18ca495cea6 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -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. ***************************************************************************/ diff --git a/source3/web/swat.c b/source3/web/swat.c index 373ab73127e..1502c5bc2f1 100644 --- a/source3/web/swat.c +++ b/source3/web/swat.c @@ -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("
\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("\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("\n"); -- 2.34.1