diff --git a/src/slurmd/Makefile.am b/src/slurmd/Makefile.am
index a6547dabf9549512440b3275dd3ea2baafb821b2..273855b60f224246bdbcea062d941c693d0190b2 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 0000000000000000000000000000000000000000..1530c60d4a4e5cb579c4775741bc262cb7a0b055
--- /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 0000000000000000000000000000000000000000..140b16009def689bd6bd06454dbdd05e08092e79
--- /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