[Fedora-directory-commits] ldapserver/ldap/admin/src create_instance.c, 1.24, 1.25 create_instance.h, 1.5, 1.6 instindex.cpp, 1.8, 1.9

Noriko Hosoi (nhosoi) fedora-directory-commits at redhat.com
Tue Mar 14 17:13:49 UTC 2006


Author: nhosoi

Update of /cvs/dirsec/ldapserver/ldap/admin/src
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv1852

Modified Files:
	create_instance.c create_instance.h instindex.cpp 
Log Message:
[185364] Can't update scripts (e.g., start-slapd) in the instance
When ds_create is called with -r (update), scripts in the instance directory
were not updated.  They are recreated with this change.



Index: create_instance.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/admin/src/create_instance.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- create_instance.c	7 Dec 2005 21:29:08 -0000	1.24
+++ create_instance.c	14 Mar 2006 17:13:38 -0000	1.25
@@ -1057,74 +1057,15 @@
 }
 #endif
 
-/* ---------------------- Create configuration files ---------------------- */
-
-
-char *create_server(server_config_s *cf, char *param_name)
+static char *
+create_scripts(server_config_s *cf, char *param_name)
 {
-    char line[PATH_SIZE], *t, *sroot = cf->sroot;
+    char *t, *sroot = cf->sroot;
     char subdir[PATH_SIZE];
 
-#if defined( SOLARIS )
-    /*
-     * Solaris 9+ specific installation 
-     */
-    char otherline[PATH_SIZE];
-    char subdirvar[PATH_SIZE];
-    char subdiretc[PATH_SIZE];
-    char *sub;
-#endif /* SOLARIS */
-
-    if (param_name)
-        param_name[0] = 0; /* init to empty string */
-
-#ifdef XP_UNIX
-    if (!cf->servuser)
-        getSuiteSpotUserGroup(cf);
-#else
-    /* Abort if the service exists on NT */
-    if (t = service_exists(cf->servid)) {
-        PL_strncpyz(param_name, "servid", BIG_LINE);
-        return t;
-    }
-#endif
-
-    if( (t = sanity_check(cf, param_name)) )
-        return t;
-
     /* Create slapd-nickname directory */
     PR_snprintf(subdir, sizeof(subdir), "%s%c"PRODUCT_NAME"-%s", sroot, FILE_PATHSEP, 
                  cf->servid);
-    if( (create_instance_mkdir(subdir, NEWDIR_MODE)) )
-        return make_error("mkdir %s failed (%s)", subdir, ds_system_errmsg());
-    
-    /* Create slapd-nickname/config directory */
-    PR_snprintf(line, sizeof(line), "%s%cconfig", subdir, FILE_PATHSEP);
-    if( (create_instance_mkdir(line, NEWDIR_MODE)) ) 
-        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
-
-    /* Create slapd-nickname/config/schema directory */
-    PR_snprintf(line, sizeof(line), "%s%cconfig%cschema", subdir, FILE_PATHSEP, FILE_PATHSEP);
-    if( (create_instance_mkdir(line, NEWDIR_MODE)) ) 
-        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
-
-#if defined (BUILD_PRESENCE)
-    /* Create slapd-nickname/config/presence directory */
-    PR_snprintf(line, sizeof(line), "%s%cconfig%cpresence", subdir, FILE_PATHSEP, FILE_PATHSEP);
-    if( (create_instance_mkdir(line, NEWDIR_MODE)) ) 
-        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
-#endif
-
-    /* Create slapd-nickname/logs directory */
-    PR_snprintf(line, sizeof(line), "%s%clogs", subdir, FILE_PATHSEP);
-    if( (create_instance_mkdir(line, NEWSECDIR_MODE)) )
-        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
-
-    /* Create httpacl directory */
-    PR_snprintf(line, sizeof(line), "%s%chttpacl", cf->sroot, FILE_PATHSEP); 
-    if( (create_instance_mkdir(line, NEWDIR_MODE)) )
-        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
-
 #ifdef XP_UNIX
     /* Start/stop/rotate/restart scripts */
     if (getenv("USE_DEBUGGER"))
@@ -1180,17 +1121,6 @@
                subdir,
            cf->loglevel ? cf->loglevel : "0"
         );
-/*
-        t = gen_script(subdir, START_SCRIPT,
-               "NETSITE_ROOT=%s\n"
-               "export NETSITE_ROOT\n"
-               "cd %s/bin/%s/server; /usr/bin/X11/xterm -fn 10x20 -sb -sl 2000 -e /bin/ladebug "
-               "-I /u/richm/ds50/ldapserver/ldap/servers/slapd/back-ldbm "
-               "-I /u/richm/ds50/ldapserver/ldap/servers/slapd "
-               "%s &\n",
-               sroot, sroot, PRODUCT_NAME, PRODUCT_BIN
-        );
-*/
 #else
         t = gen_script(subdir, START_SCRIPT,
                "\n"
@@ -1418,12 +1348,137 @@
     t = gen_script(subdir, RESTART_SCRIPT".bat", "net stop slapd-%s\n"
                    "net start slapd-%s\n", cf->servid, cf->servid);
     if(t) return t;
+#endif  /* XP_WIN32 */
+}
 
+/* ---------------------- Update server script files ---------------------- */
+int update_server(server_config_s *cf)
+{
+    char line[PATH_SIZE], *t, *sroot = cf->sroot;
+    char subdir[PATH_SIZE];
+	char error_param[BIG_LINE] = {0};
 
-#endif /* XP_WIN32 */
+#if defined( SOLARIS )
+    /*
+     * Solaris 9+ specific installation 
+     */
+    char otherline[PATH_SIZE];
+    char subdirvar[PATH_SIZE];
+    char subdiretc[PATH_SIZE];
+    char *sub;
+#endif /* SOLARIS */
 
-#ifdef XP_WIN32
+    error_param[0] = 0; /* init to empty string */
+
+#ifdef XP_UNIX
+    if (!cf->servuser)
+        getSuiteSpotUserGroup(cf);
+#else
+    /* Abort if the service exists on NT */
+    if (t = service_exists(cf->servid)) {
+        PL_strncpyz(error_param, "servid", BIG_LINE);
+        goto out;
+    }
+#endif
+
+    if( (t = sanity_check(cf, error_param)) )
+        goto out;
+
+    t = create_scripts(cf, error_param);
+    if(t) goto out;
+
+out:
+    if(t)
+	{
+		char *msg;
+		if (error_param[0])
+		{
+			msg = PR_smprintf("%s.error:could not update server %s - %s",
+							  error_param, cf->servid, t);
+		}
+		else
+		{
+			msg = PR_smprintf("error:could not update server %s - %s",
+							  cf->servid, t);
+		}
+		ds_show_message(msg);
+		PR_smprintf_free(msg);
+		return 1;
+	}
+	else
+		return 0;
+}
+
+/* ---------------------- Create configuration files ---------------------- */
+char *create_server(server_config_s *cf, char *param_name)
+{
+    char line[PATH_SIZE], *t, *sroot = cf->sroot;
+    char subdir[PATH_SIZE];
+
+#if defined( SOLARIS )
+    /*
+     * Solaris 9+ specific installation 
+     */
+    char otherline[PATH_SIZE];
+    char subdirvar[PATH_SIZE];
+    char subdiretc[PATH_SIZE];
+    char *sub;
+#endif /* SOLARIS */
+
+    if (param_name)
+        param_name[0] = 0; /* init to empty string */
+
+#ifdef XP_UNIX
+    if (!cf->servuser)
+        getSuiteSpotUserGroup(cf);
+#else
+    /* Abort if the service exists on NT */
+    if (t = service_exists(cf->servid)) {
+        PL_strncpyz(param_name, "servid", BIG_LINE);
+        return t;
+    }
+#endif
+
+    if( (t = sanity_check(cf, param_name)) )
+        return t;
+
+    /* Create slapd-nickname directory */
+    PR_snprintf(subdir, sizeof(subdir), "%s%c"PRODUCT_NAME"-%s", sroot, FILE_PATHSEP, 
+                 cf->servid);
+    if( (create_instance_mkdir(subdir, NEWDIR_MODE)) )
+        return make_error("mkdir %s failed (%s)", subdir, ds_system_errmsg());
+    
+    /* Create slapd-nickname/config directory */
+    PR_snprintf(line, sizeof(line), "%s%cconfig", subdir, FILE_PATHSEP);
+    if( (create_instance_mkdir(line, NEWDIR_MODE)) ) 
+        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
+
+    /* Create slapd-nickname/config/schema directory */
+    PR_snprintf(line, sizeof(line), "%s%cconfig%cschema", subdir, FILE_PATHSEP, FILE_PATHSEP);
+    if( (create_instance_mkdir(line, NEWDIR_MODE)) ) 
+        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
+
+#if defined (BUILD_PRESENCE)
+    /* Create slapd-nickname/config/presence directory */
+    PR_snprintf(line, sizeof(line), "%s%cconfig%cpresence", subdir, FILE_PATHSEP, FILE_PATHSEP);
+    if( (create_instance_mkdir(line, NEWDIR_MODE)) ) 
+        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
+#endif
 
+    /* Create slapd-nickname/logs directory */
+    PR_snprintf(line, sizeof(line), "%s%clogs", subdir, FILE_PATHSEP);
+    if( (create_instance_mkdir(line, NEWSECDIR_MODE)) )
+        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
+
+    /* Create httpacl directory */
+    PR_snprintf(line, sizeof(line), "%s%chttpacl", cf->sroot, FILE_PATHSEP); 
+    if( (create_instance_mkdir(line, NEWDIR_MODE)) )
+        return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
+
+    t = create_scripts(cf, param_name);
+    if(t) return t;
+
+#ifdef XP_WIN32
     if ( INFO_GetOperatingSystem () == OS_WINNT ) {
 
         if( (t =  add_ntservice(cf)) )


Index: create_instance.h
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/admin/src/create_instance.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- create_instance.h	19 Apr 2005 22:06:55 -0000	1.5
+++ create_instance.h	14 Mar 2006 17:13:38 -0000	1.6
@@ -132,6 +132,10 @@
    additional detail
  */
 char *create_server(server_config_s *cf, char *param_name);
+/*
+   Update script files in the instance directory
+*/
+int update_server(server_config_s *cf);
 
 /* from script-gen.c */
 int generate_script(const char *inpath, const char *outpath, int mode,


Index: instindex.cpp
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/admin/src/instindex.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- instindex.cpp	19 Apr 2005 22:06:55 -0000	1.8
+++ instindex.cpp	14 Mar 2006 17:13:38 -0000	1.9
@@ -134,12 +134,16 @@
 		else
 			fclose(infFile);
 
+		if (!status)
+			status = create_config_from_inf(&cf, argc, argv);
 		if (reconfig)
-			status = reconfigure_instance(argc, argv);
-		else
 		{
+			status = update_server(&cf);
 			if (!status)
-				status = create_config_from_inf(&cf, argc, argv);
+				status = reconfigure_instance(argc, argv);
+		}
+		else
+		{
 			if (!status)
 				status = create_config(&cf);
 			if (!status)




More information about the Fedora-directory-commits mailing list