[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