[mpich2-commits] r4005 - in mpich2/trunk/src/pm/hydra: . include pm/central pm/utils utils utils/args utils/env utils/launch utils/string

balaji at mcs.anl.gov balaji at mcs.anl.gov
Wed Mar 11 02:57:06 CDT 2009


Author: balaji
Date: 2009-03-11 02:57:05 -0500 (Wed, 11 Mar 2009)
New Revision: 4005

Added:
   mpich2/trunk/src/pm/hydra/utils/args/
   mpich2/trunk/src/pm/hydra/utils/args/Makefile.sm
   mpich2/trunk/src/pm/hydra/utils/args/args.c
   mpich2/trunk/src/pm/hydra/utils/string/
   mpich2/trunk/src/pm/hydra/utils/string/Makefile.sm
   mpich2/trunk/src/pm/hydra/utils/string/string.c
Removed:
   mpich2/trunk/src/pm/hydra/utils/launch/args.c
Modified:
   mpich2/trunk/src/pm/hydra/configure.in
   mpich2/trunk/src/pm/hydra/include/hydra_utils.h
   mpich2/trunk/src/pm/hydra/pm/central/central_launch.c
   mpich2/trunk/src/pm/hydra/pm/central/proxy.c
   mpich2/trunk/src/pm/hydra/pm/utils/pmi.c
   mpich2/trunk/src/pm/hydra/utils/Makefile.sm
   mpich2/trunk/src/pm/hydra/utils/env/env.c
   mpich2/trunk/src/pm/hydra/utils/launch/Makefile.sm
Log:
Fixed a bad bug that occurred when a macro was using the same variable
as the program causing the value to be overwritten. Moved all macros
that declare variables as functions as a good programming practice.


Modified: mpich2/trunk/src/pm/hydra/configure.in
===================================================================
--- mpich2/trunk/src/pm/hydra/configure.in	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/configure.in	2009-03-11 07:57:05 UTC (rev 4005)
@@ -256,11 +256,13 @@
 dnl Final output
 AC_OUTPUT(Makefile \
 	utils/Makefile \
+	utils/args/Makefile \
 	utils/dbg/Makefile \
 	utils/env/Makefile \
+	utils/launch/Makefile \
+	utils/signals/Makefile \
 	utils/sock/Makefile \
-	utils/signals/Makefile \
-	utils/launch/Makefile \
+	utils/string/Makefile \
 	utils/timer/Makefile \
 	launcher/Makefile \
 	launcher/utils/Makefile \

Modified: mpich2/trunk/src/pm/hydra/include/hydra_utils.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2009-03-11 07:57:05 UTC (rev 4005)
@@ -96,51 +96,10 @@
         }                                                               \
     }
 
-#define HYDU_PRINT_ARGS(str)                                    \
-    {                                                           \
-        int i;                                                  \
-        for (i = 0; (str) != NULL && (str)[i] != NULL; i++)     \
-            printf("%s ", (str)[i]);                            \
-        printf("\n");                                           \
-    }
+HYD_Status HYDU_String_alloc_and_join(char **strlist, char **strjoin);
+HYD_Status HYDU_String_int_to_str(int x, char **str);
 
-#define HYDU_STR_ALLOC_AND_JOIN(strlist, strjoin, status)               \
-    {                                                                   \
-        int len = 0, i, count;                                          \
-        for (i = 0; (strlist)[i] != NULL; i++)                          \
-            len += strlen((strlist)[i]);                                \
-        HYDU_MALLOC((strjoin), char *, len + 1, (status));              \
-        count = 0;                                                      \
-        (strjoin)[0] = 0;                                               \
-        for (i = 0; (strlist)[i] != NULL; i++) {                        \
-            MPIU_Snprintf((strjoin) + count, len - count + 1, "%s", (strlist)[i]); \
-            count += strlen((strlist)[i]);                              \
-        }                                                               \
-    }
 
-#define HYDU_Int_to_str(x, str, status)                                 \
-    {                                                                   \
-        int len = 1, max = 10, y;                                       \
-        if ((x) < 0) {                                                  \
-            len++;                                                      \
-            y = -(x);                                                   \
-        }                                                               \
-        else                                                            \
-            y = (x);                                                    \
-        while (y >= max) {                                              \
-            len++;                                                      \
-            max *= 10;                                                  \
-        }                                                               \
-        (str) = (char *) MPIU_Malloc(len + 1);                          \
-        if ((str) == NULL) {                                            \
-            HYDU_Error_printf("failed trying to allocate %d bytes\n", len + 1); \
-            (status) = HYD_NO_MEM;                                      \
-            goto fn_fail;                                               \
-        }                                                               \
-        MPIU_Snprintf((str), len + 1, "%d", (x));                       \
-    }
-
-
 /* Signal utilities */
 #ifdef NEEDS_POSIX_FOR_SIGACTION
 #define _POSIX_SOURCE

Modified: mpich2/trunk/src/pm/hydra/pm/central/central_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/central_launch.c	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/pm/central/central_launch.c	2009-03-11 07:57:05 UTC (rev 4005)
@@ -79,7 +79,11 @@
         goto fn_fail;
     }
 
-    HYDU_Int_to_str(port, sport, status);
+    status = HYDU_String_int_to_str(port, &sport);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
     HYDU_MALLOC(port_str, char *, strlen(hostname) + 1 + strlen(sport) + 1, status);
     MPIU_Snprintf(port_str, strlen(hostname) + 1 + strlen(sport) + 1,
                   "%s:%s", hostname, sport);
@@ -145,10 +149,19 @@
             path_str[i++] = MPIU_Strdup(handle.base_path);
             path_str[i++] = MPIU_Strdup("proxy");
             path_str[i] = NULL;
-            HYDU_STR_ALLOC_AND_JOIN(path_str, partition->args[arg], status);
+            status = HYDU_String_alloc_and_join(path_str, &partition->args[arg]);
+            if (status != HYD_SUCCESS) {
+                HYDU_Error_printf("String utils returned error when joining strings\n");
+                goto fn_fail;
+            }
             arg++;
 
-            HYDU_Int_to_str(partition->proc_count, str, status);
+            status = HYDU_String_int_to_str(partition->proc_count, &str);
+            if (status != HYD_SUCCESS) {
+                HYDU_Error_printf
+                    ("String utils returned error while converting int to string\n");
+                goto fn_fail;
+            }
             partition->args[arg++] = MPIU_Strdup("--proc-count");
             partition->args[arg++] = MPIU_Strdup(str);
 
@@ -157,7 +170,12 @@
             partition->args[arg++] = MPIU_Strdup(str);
             HYDU_FREE(str);
 
-            HYDU_Int_to_str(process_id, str, status);
+            status = HYDU_String_int_to_str(process_id, &str);
+            if (status != HYD_SUCCESS) {
+                HYDU_Error_printf
+                    ("String utils returned error while converting int to string\n");
+                goto fn_fail;
+            }
             partition->args[arg++] = MPIU_Strdup("--pmi-id");
             partition->args[arg++] = MPIU_Strdup(str);
             HYDU_FREE(str);
@@ -167,7 +185,12 @@
                 i++;
             for (env = proc_params->prop_env; env; env = env->next)
                 i++;
-            HYDU_Int_to_str(i, str, status);
+            status = HYDU_String_int_to_str(i, &str);
+            if (status != HYD_SUCCESS) {
+                HYDU_Error_printf
+                    ("String utils returned error while converting int to string\n");
+                goto fn_fail;
+            }
             partition->args[arg++] = MPIU_Strdup("--environment");
             partition->args[arg++] = MPIU_Strdup(str);
             for (env = handle.system_env; env; env = env->next)

Modified: mpich2/trunk/src/pm/hydra/pm/central/proxy.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/proxy.c	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/pm/central/proxy.c	2009-03-11 07:57:05 UTC (rev 4005)
@@ -69,7 +69,13 @@
     for (i = 0; i < HYD_Proxy_params.proc_count; i++) {
 
         pmi.env_name = MPIU_Strdup("PMI_ID");
-        HYDU_Int_to_str(HYD_Proxy_params.pmi_id + i, str, status);
+
+        status = HYDU_String_int_to_str(HYD_Proxy_params.pmi_id + i, &str);
+        if (status != HYD_SUCCESS) {
+            HYDU_Error_printf("String utils returned error while converting int to string\n");
+            goto fn_fail;
+        }
+
         pmi.env_value = MPIU_Strdup(str);
         pmi.next = NULL;
 

Modified: mpich2/trunk/src/pm/hydra/pm/utils/pmi.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/utils/pmi.c	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/pm/utils/pmi.c	2009-03-11 07:57:05 UTC (rev 4005)
@@ -143,10 +143,24 @@
     }
     debug = handle.debug;
 
-    HYDU_Int_to_str(size, ssize, status);
-    HYDU_Int_to_str(id, srank, status);
-    HYDU_Int_to_str(debug, sdebug, status);
+    status = HYDU_String_int_to_str(size, &ssize);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
 
+    status = HYDU_String_int_to_str(id, &srank);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
+
+    status = HYDU_String_int_to_str(debug, &sdebug);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
+
     i = 0;
     tmp[i++] = "cmd=initack\ncmd=set size=";
     tmp[i++] = ssize;
@@ -157,7 +171,12 @@
     tmp[i++] = "\n";
     tmp[i++] = NULL;
 
-    HYDU_STR_ALLOC_AND_JOIN(tmp, cmd, status);
+    status = HYDU_String_alloc_and_join(tmp, &cmd);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
     status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
     if (status != HYD_SUCCESS) {
         HYDU_Error_printf("sock utils returned error when writing PMI line\n");
@@ -236,10 +255,24 @@
 
     HYDU_FUNC_ENTER();
 
-    HYDU_Int_to_str(MAXKVSNAME, maxkvsname, status);
-    HYDU_Int_to_str(MAXKEYLEN, maxkeylen, status);
-    HYDU_Int_to_str(MAXVALLEN, maxvallen, status);
+    status = HYDU_String_int_to_str(MAXKVSNAME, &maxkvsname);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
 
+    status = HYDU_String_int_to_str(MAXKEYLEN, &maxkeylen);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
+
+    status = HYDU_String_int_to_str(MAXVALLEN, &maxvallen);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
+
     i = 0;
     tmp[i++] = "cmd=maxes kvsname_max=";
     tmp[i++] = maxkvsname;
@@ -250,7 +283,12 @@
     tmp[i++] = "\n";
     tmp[i++] = NULL;
 
-    HYDU_STR_ALLOC_AND_JOIN(tmp, cmd, status);
+    status = HYDU_String_alloc_and_join(tmp, &cmd);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
     status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
     if (status != HYD_SUCCESS) {
         HYDU_Error_printf("sock utils returned error when writing PMI line\n");
@@ -309,7 +347,11 @@
         goto fn_fail;
     }
 
-    HYDU_Int_to_str(process->pg->id, sapp_num, status);
+    status = HYDU_String_int_to_str(process->pg->id, &sapp_num);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
 
     i = 0;
     tmp[i++] = "cmd=appnum appnum=";
@@ -317,7 +359,12 @@
     tmp[i++] = "\n";
     tmp[i++] = NULL;
 
-    HYDU_STR_ALLOC_AND_JOIN(tmp, cmd, status);
+    status = HYDU_String_alloc_and_join(tmp, &cmd);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
     status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
     if (status != HYD_SUCCESS) {
         HYDU_Error_printf("sock utils returned error when writing PMI line\n");
@@ -359,7 +406,12 @@
     tmp[i++] = "\n";
     tmp[i++] = NULL;
 
-    HYDU_STR_ALLOC_AND_JOIN(tmp, cmd, status);
+    status = HYDU_String_alloc_and_join(tmp, &cmd);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
     status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
     if (status != HYD_SUCCESS) {
         HYDU_Error_printf("sock utils returned error when writing PMI line\n");
@@ -482,7 +534,12 @@
     tmp[i++] = "\n";
     tmp[i++] = NULL;
 
-    HYDU_STR_ALLOC_AND_JOIN(tmp, cmd, status);
+    status = HYDU_String_alloc_and_join(tmp, &cmd);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
     status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
     if (status != HYD_SUCCESS) {
         HYDU_Error_printf("sock utils returned error when writing PMI line\n");
@@ -506,7 +563,7 @@
     HYD_PMCU_pmi_process_t *process;
     HYD_PMCU_pmi_kvs_pair_t *run;
     char *kvsname, *key;
-    char *tmp[HYDU_NUM_JOIN_STR], *cmd, *key_val_str;
+    char *tmp[HYDU_NUM_JOIN_STR], *cmd, *key_val_str = NULL;
     HYD_Status status = HYD_SUCCESS;
 
     HYDU_FUNC_ENTER();
@@ -559,7 +616,12 @@
     tmp[i++] = "\n";
     tmp[i++] = NULL;
 
-    HYDU_STR_ALLOC_AND_JOIN(tmp, cmd, status);
+    status = HYDU_String_alloc_and_join(tmp, &cmd);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
     status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
     if (status != HYD_SUCCESS) {
         HYDU_Error_printf("sock utils returned error when writing PMI line\n");
@@ -614,7 +676,11 @@
         goto fn_fail;
     }
 
-    HYDU_Int_to_str(usize, usize_str, status);
+    status = HYDU_String_int_to_str(usize, &usize_str);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while converting int to string\n");
+        goto fn_fail;
+    }
 
     i = 0;
     tmp[i++] = "cmd=universe_size size=";
@@ -622,7 +688,12 @@
     tmp[i++] = "\n";
     tmp[i++] = NULL;
 
-    HYDU_STR_ALLOC_AND_JOIN(tmp, cmd, status);
+    status = HYDU_String_alloc_and_join(tmp, &cmd);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
     status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
     if (status != HYD_SUCCESS) {
         HYDU_Error_printf("sock utils returned error when writing PMI line\n");

Modified: mpich2/trunk/src/pm/hydra/utils/Makefile.sm
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/Makefile.sm	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/utils/Makefile.sm	2009-03-11 07:57:05 UTC (rev 4005)
@@ -4,4 +4,4 @@
 #     See COPYRIGHT in top-level directory.
 #
 
-SUBDIRS = dbg env sock signals launch timer .
+SUBDIRS = args dbg env launch signals sock string timer .


Property changes on: mpich2/trunk/src/pm/hydra/utils/args
___________________________________________________________________
Name: svn:ignore
   + Makefile
Makefile.in


Added: mpich2/trunk/src/pm/hydra/utils/args/Makefile.sm
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/args/Makefile.sm	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/utils/args/Makefile.sm	2009-03-11 07:57:05 UTC (rev 4005)
@@ -0,0 +1,14 @@
+# -*- Mode: Makefile; -*-
+#
+# (C) 2008 by Argonne National Laboratory.
+#     See COPYRIGHT in top-level directory.
+#
+
+HYDRA_LIB_PATH = ../../lib
+
+libhydra_a_DIR = ${HYDRA_LIB_PATH}
+libhydra_a_SOURCES = args.c
+INCLUDES = -I${abs_srcdir}/../../include \
+	-I${abs_srcdir}/../../../../include \
+	-I../../include \
+	-I../../../../include

Copied: mpich2/trunk/src/pm/hydra/utils/args/args.c (from rev 4004, mpich2/trunk/src/pm/hydra/utils/launch/args.c)
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/args/args.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/utils/args/args.c	2009-03-11 07:57:05 UTC (rev 4005)
@@ -0,0 +1,137 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ *  (C) 2008 by Argonne National Laboratory.
+ *      See COPYRIGHT in top-level directory.
+ */
+
+#include "hydra_utils.h"
+
+HYD_Status HYDU_Append_env(HYD_Env_t * env_list, char **client_arg, int id)
+{
+    int i, j;
+    HYD_Env_t *env;
+    char *envstr, *tmp[HYDU_NUM_JOIN_STR];
+    HYD_Status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    for (i = 0; client_arg[i]; i++);
+    env = env_list;
+    while (env) {
+        j = 0;
+
+        tmp[j++] = MPIU_Strdup(env->env_name);
+        tmp[j++] = MPIU_Strdup("=");
+        tmp[j++] = env->env_value ? MPIU_Strdup(env->env_value) : MPIU_Strdup("");
+        tmp[j++] = NULL;
+
+        status = HYDU_String_alloc_and_join(tmp, &envstr);
+        if (status != HYD_SUCCESS) {
+            HYDU_Error_printf("String utils returned error while joining strings\n");
+            goto fn_fail;
+        }
+
+        client_arg[i++] = MPIU_Strdup(envstr);
+        HYDU_FREE(envstr);
+        for (j = 0; tmp[j]; j++)
+            HYDU_FREE(tmp[j]);
+
+        client_arg[i++] = MPIU_Strdup(";");
+
+        client_arg[i++] = MPIU_Strdup("export");
+        client_arg[i++] = MPIU_Strdup(env->env_name);
+        client_arg[i++] = MPIU_Strdup(";");
+
+        env = env->next;
+    }
+    client_arg[i++] = NULL;
+
+  fn_exit:
+    HYDU_FUNC_EXIT();
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}
+
+
+HYD_Status HYDU_Append_exec(char **exec, char **client_arg)
+{
+    int i, j;
+    HYD_Status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    for (i = 0; client_arg[i]; i++);
+    for (j = 0; exec[j]; j++)
+        client_arg[i++] = MPIU_Strdup(exec[j]);
+    client_arg[i++] = NULL;
+
+    HYDU_FUNC_EXIT();
+    return status;
+}
+
+
+HYD_Status HYDU_Append_wdir(char **client_arg, char *wdir)
+{
+    int arg;
+    HYD_Status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    for (arg = 0; client_arg[arg]; arg++);
+    client_arg[arg++] = MPIU_Strdup("cd");
+    client_arg[arg++] = MPIU_Strdup(wdir);
+    client_arg[arg++] = MPIU_Strdup(";");
+    client_arg[arg++] = NULL;
+
+    HYDU_FUNC_EXIT();
+    return status;
+}
+
+
+HYD_Status HYDU_Dump_args(char **args)
+{
+    int arg;
+    HYD_Status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    for (arg = 0; args[arg]; arg++)
+        fprintf(stderr, "%s ", args[arg]);
+    fprintf(stderr, "\n");
+
+    HYDU_FUNC_EXIT();
+    return status;
+}
+
+
+HYD_Status HYDU_Get_base_path(char *execname, char **path)
+{
+    char *str[HYDU_NUM_JOIN_STR];
+    int i;
+    HYD_Status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    i = 0;
+    str[i++] = strtok(execname, "/");
+    do {
+        str[i++] = "/";
+        str[i++] = strtok(NULL, "/");
+    } while (str[i - 1]);
+    str[i - 3] = NULL;
+
+    status = HYDU_String_alloc_and_join(str, path);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
+  fn_exit:
+    HYDU_FUNC_EXIT();
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}


Property changes on: mpich2/trunk/src/pm/hydra/utils/args/args.c
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: mpich2/trunk/src/pm/hydra/utils/env/env.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/env/env.c	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/utils/env/env.c	2009-03-11 07:57:05 UTC (rev 4005)
@@ -252,8 +252,13 @@
     tmp[i++] = MPIU_Strdup("=");
     tmp[i++] = env.env_value ? MPIU_Strdup(env.env_value) : MPIU_Strdup("");
     tmp[i++] = NULL;
-    HYDU_STR_ALLOC_AND_JOIN(tmp, env_str, status);
 
+    status = HYDU_String_alloc_and_join(tmp, &env_str);
+    if (status != HYD_SUCCESS) {
+        HYDU_Error_printf("String utils returned error while joining strings\n");
+        goto fn_fail;
+    }
+
     MPIU_PutEnv(env_str);
 
   fn_exit:

Modified: mpich2/trunk/src/pm/hydra/utils/launch/Makefile.sm
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/launch/Makefile.sm	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/utils/launch/Makefile.sm	2009-03-11 07:57:05 UTC (rev 4005)
@@ -7,7 +7,7 @@
 HYDRA_LIB_PATH = ../../lib
 
 libhydra_a_DIR = ${HYDRA_LIB_PATH}
-libhydra_a_SOURCES = args.c allocate.c launch.c
+libhydra_a_SOURCES = allocate.c launch.c
 INCLUDES = -I${abs_srcdir}/../../include \
 	-I${abs_srcdir}/../../../../include \
 	-I../../include \

Deleted: mpich2/trunk/src/pm/hydra/utils/launch/args.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/launch/args.c	2009-03-11 06:36:05 UTC (rev 4004)
+++ mpich2/trunk/src/pm/hydra/utils/launch/args.c	2009-03-11 07:57:05 UTC (rev 4005)
@@ -1,127 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- *  (C) 2008 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#include "hydra_utils.h"
-
-HYD_Status HYDU_Append_env(HYD_Env_t * env_list, char **client_arg, int id)
-{
-    int i, j;
-    HYD_Env_t *env;
-    char *envstr, *tmp[HYDU_NUM_JOIN_STR];
-    HYD_Status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    for (i = 0; client_arg[i]; i++);
-    env = env_list;
-    while (env) {
-        j = 0;
-
-        tmp[j++] = MPIU_Strdup(env->env_name);
-        tmp[j++] = MPIU_Strdup("=");
-        tmp[j++] = env->env_value ? MPIU_Strdup(env->env_value) : MPIU_Strdup("");
-        tmp[j++] = NULL;
-        HYDU_STR_ALLOC_AND_JOIN(tmp, envstr, status);
-        client_arg[i++] = MPIU_Strdup(envstr);
-        HYDU_FREE(envstr);
-        for (j = 0; tmp[j]; j++)
-            HYDU_FREE(tmp[j]);
-
-        client_arg[i++] = MPIU_Strdup(";");
-
-        client_arg[i++] = MPIU_Strdup("export");
-        client_arg[i++] = MPIU_Strdup(env->env_name);
-        client_arg[i++] = MPIU_Strdup(";");
-
-        env = env->next;
-    }
-    client_arg[i++] = NULL;
-
-  fn_exit:
-    HYDU_FUNC_EXIT();
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}
-
-
-HYD_Status HYDU_Append_exec(char **exec, char **client_arg)
-{
-    int i, j;
-    HYD_Status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    for (i = 0; client_arg[i]; i++);
-    for (j = 0; exec[j]; j++)
-        client_arg[i++] = MPIU_Strdup(exec[j]);
-    client_arg[i++] = NULL;
-
-    HYDU_FUNC_EXIT();
-    return status;
-}
-
-
-HYD_Status HYDU_Append_wdir(char **client_arg, char *wdir)
-{
-    int arg;
-    HYD_Status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    for (arg = 0; client_arg[arg]; arg++);
-    client_arg[arg++] = MPIU_Strdup("cd");
-    client_arg[arg++] = MPIU_Strdup(wdir);
-    client_arg[arg++] = MPIU_Strdup(";");
-    client_arg[arg++] = NULL;
-
-    HYDU_FUNC_EXIT();
-    return status;
-}
-
-
-HYD_Status HYDU_Dump_args(char **args)
-{
-    int arg;
-    HYD_Status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    for (arg = 0; args[arg]; arg++)
-        fprintf(stderr, "%s ", args[arg]);
-    fprintf(stderr, "\n");
-
-    HYDU_FUNC_EXIT();
-    return status;
-}
-
-
-HYD_Status HYDU_Get_base_path(char * execname, char **path)
-{
-    char * str[HYDU_NUM_JOIN_STR];
-    int i;
-    HYD_Status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    i = 0;
-    str[i++] = strtok(execname, "/");
-    do {
-        str[i++] = "/";
-        str[i++] = strtok(NULL, "/");
-    } while (str[i-1]);
-    str[i-3] = NULL;
-
-    HYDU_STR_ALLOC_AND_JOIN(str, *path, status);
-
-  fn_exit:
-    HYDU_FUNC_EXIT();
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}


Property changes on: mpich2/trunk/src/pm/hydra/utils/string
___________________________________________________________________
Name: svn:ignore
   + Makefile
Makefile.in


Added: mpich2/trunk/src/pm/hydra/utils/string/Makefile.sm
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/string/Makefile.sm	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/utils/string/Makefile.sm	2009-03-11 07:57:05 UTC (rev 4005)
@@ -0,0 +1,14 @@
+# -*- Mode: Makefile; -*-
+#
+# (C) 2008 by Argonne National Laboratory.
+#     See COPYRIGHT in top-level directory.
+#
+
+HYDRA_LIB_PATH = ../../lib
+
+libhydra_a_DIR = ${HYDRA_LIB_PATH}
+libhydra_a_SOURCES = string.c
+INCLUDES = -I${abs_srcdir}/../../include \
+	-I${abs_srcdir}/../../../../include \
+	-I../../include \
+	-I../../../../include

Added: mpich2/trunk/src/pm/hydra/utils/string/string.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/string/string.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/utils/string/string.c	2009-03-11 07:57:05 UTC (rev 4005)
@@ -0,0 +1,71 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ *  (C) 2008 by Argonne National Laboratory.
+ *      See COPYRIGHT in top-level directory.
+ */
+
+#include "hydra_utils.h"
+
+HYD_Status HYDU_String_alloc_and_join(char **strlist, char **strjoin)
+{
+    int len = 0, i, count;
+    HYD_Status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    for (i = 0; strlist[i] != NULL; i++)
+        len += strlen(strlist[i]);
+
+    HYDU_MALLOC(*strjoin, char *, len + 1, status);
+    count = 0;
+    (*strjoin)[0] = 0;
+
+    for (i = 0; strlist[i] != NULL; i++) {
+        MPIU_Snprintf(*strjoin + count, len - count + 1, "%s", strlist[i]);
+        count += strlen(strlist[i]);
+    }
+
+  fn_exit:
+    HYDU_FUNC_EXIT();
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}
+
+
+HYD_Status HYDU_String_int_to_str(int x, char **str)
+{
+    int len = 1, max = 10, y;
+    HYD_Status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    if (x < 0) {
+        len++;
+        y = -x;
+    }
+    else
+        y = x;
+
+    while (y >= max) {
+        len++;
+        max *= 10;
+    }
+
+    *str = (char *) MPIU_Malloc(len + 1);
+    if (*str == NULL) {
+        HYDU_Error_printf("failed trying to allocate %d bytes\n", len + 1);
+        status = HYD_NO_MEM;
+        goto fn_fail;
+    }
+
+    MPIU_Snprintf(*str, len + 1, "%d", x);
+
+  fn_exit:
+    HYDU_FUNC_EXIT();
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}



More information about the mpich2-commits mailing list