From cd38fdaf8f62aaa26ed6400e1190e7411defa5fe Mon Sep 17 00:00:00 2001
From: Mark Grondona <mgrondona@llnl.gov>
Date: Thu, 15 Aug 2002 20:42:14 +0000
Subject: [PATCH]  o added setenvpf() function to append environment vars to
 env    vector

---
 src/slurmd/Makefile.am |  4 ++-
 src/slurmd/setenvpf.c  | 63 ++++++++++++++++++++++++++++++++++++++++++
 src/slurmd/setenvpf.h  |  6 ++++
 3 files changed, 72 insertions(+), 1 deletion(-)
 create mode 100644 src/slurmd/setenvpf.c
 create mode 100644 src/slurmd/setenvpf.h

diff --git a/src/slurmd/Makefile.am b/src/slurmd/Makefile.am
index a6547dabf95..273855b60f2 100644
--- a/src/slurmd/Makefile.am
+++ b/src/slurmd/Makefile.am
@@ -39,7 +39,8 @@ common_sources = slurmd.c \
 		shmem_struct.c \
 		circular_buffer.c \
 		pipes.c \
-		locks.c
+		locks.c \
+		setenvpf.c
 
 slurmd_SOURCES = $(common_sources)
 slurmd_nbio_SOURCES = $(common_sources)
@@ -56,6 +57,7 @@ libthreaded_io_la_SOURCES = threaded_io.c reconnect_utils.c io_threads.c
 libnb_io_la_SOURCES =  nb_io.c nbio.c reconnect_utils.c
 
 libelan_interconnect_la_SOURCES =  elan_interconnect.c
+libelan_interconnect_la_LIBADD = $(top_srcdir)/src/common/libcommon.la
 libno_interconnect_la_SOURCES =  no_interconnect.c 
 
 
diff --git a/src/slurmd/setenvpf.c b/src/slurmd/setenvpf.c
new file mode 100644
index 00000000000..1530c60d4a4
--- /dev/null
+++ b/src/slurmd/setenvpf.c
@@ -0,0 +1,63 @@
+/*****************************************************************************\
+ * setenvpf.c - add an environment variable to environment vector
+ *****************************************************************************
+ *  Copyright (C) 2002 The Regents of the University of California.
+ *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
+ *  Written by Mark Grondona <mgrondona@llnl.gov>.
+ *  UCRL-CODE-2002-040.
+ *  
+ *  This file is part of SLURM, a resource management program.
+ *  For details, see <http://www.llnl.gov/linux/slurm/>.
+ *  
+ *  SLURM is free software; you can redistribute it and/or modify it under
+ *  the terms of the GNU General Public License as published by the Free
+ *  Software Foundation; either version 2 of the License, or (at your option)
+ *  any later version.
+ *  
+ *  SLURM is distributed in the hope that it will be useful, but WITHOUT ANY
+ *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ *  details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with SLURM; if not, write to the Free Software Foundation, Inc.,
+ *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+\*****************************************************************************/
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#include <src/common/xmalloc.h>
+#include <src/common/xstring.h>
+
+/* add environment variable to end of env vector allocated with
+ * xmalloc() extending *envp if necessary.
+ *
+ * envp		Pointer to environment array allocated with xmalloc()
+ * envc		Pointer to current count of environment vars			 
+ * fmt		printf style format (e.g. "SLURM_NPROCS=%d")
+ *
+ */    
+int
+setenvpf(char ***envp, int *envc, const char *fmt, ...)
+{
+	va_list ap;
+	char buf[BUFSIZ];
+	char *bufcpy;
+	char **env = *envp;
+		
+	va_start(ap, fmt);
+	vsnprintf(buf, sizeof(buf), fmt, ap);
+	va_end(ap);
+
+	xrealloc(env, (*envc+2)*sizeof(char *));
+
+	bufcpy = xstrdup(buf);
+	env[(*envc)++] = bufcpy;
+	env[*envc]   = NULL;
+
+	*envp = env;
+	return *envc;
+}
+
+
diff --git a/src/slurmd/setenvpf.h b/src/slurmd/setenvpf.h
new file mode 100644
index 00000000000..140b16009de
--- /dev/null
+++ b/src/slurmd/setenvpf.h
@@ -0,0 +1,6 @@
+#ifndef _SETENVPF_H
+#define _SETENVPF_H
+
+int setenvpf(char ***envp, int *envc, const char *fmt, ...);
+
+#endif
-- 
GitLab