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