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