/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/util
NameSizeModeActions
alfg.h8320644editdlrm
arch.h86710644editdlrm
argv.h111640644editdlrm
basename.h30900644editdlrm
bipartite_graph.h54650644editdlrm
bipartite_graph_internal.h43660644editdlrm
bit_ops.h43980644editdlrm
cmd_line.h245790644editdlrm
crc.h45760644editdlrm
daemon_init.h16330644editdlrm
error.h35560644editdlrm
ethtool.h4170644editdlrm
fd.h29110644editdlrm
few.h22560644editdlrm
if.h71180644editdlrm
info.h112510644editdlrm
info_subscriber.h28880644editdlrm
keyval_parse.h19550644editdlrm
malloc.h47800644editdlrm
net.h46780644editdlrm
numtostr.h14430644editdlrm
opal_environ.h49430644editdlrm
opal_getcwd.h13260644editdlrm
opal_pty.h13820644editdlrm
os_dirpath.h48700644editdlrm
os_path.h32920644editdlrm
output.h215580644editdlrm
path.h55430644editdlrm
printf.h47060644editdlrm
proc.h65340644editdlrm
qsort.h10840644editdlrm
show_help.h73990644editdlrm
show_help_lex.h16860644editdlrm
stacktrace.h18760644editdlrm
strncpy.h11930644editdlrm
sys_limits.h17230644editdlrm
timings.h129120644editdlrm
uri.h30930644editdlrm
Edit: /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/util/opal_environ.h (4943B)
/* * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. * Copyright (c) 2004-2005 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, * University of Stuttgart. All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. * All rights reserved. * Copyright (c) 2007-2013 Los Alamos National Security, LLC. All rights * reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */ /** * @file * * Generic helper routines for environment manipulation. */ #ifndef OPAL_ENVIRON_H #define OPAL_ENVIRON_H #include "opal_config.h" #ifdef HAVE_CRT_EXTERNS_H #include #endif BEGIN_C_DECLS /** * Merge two environ-like arrays into a single, new array, ensuring * that there are no duplicate entries. * * @param minor Set 1 of the environ's to merge * @param major Set 2 of the environ's to merge * @retval New array of environ * * Merge two environ-like arrays into a single, new array, * ensuring that there are no duplicate entires. If there are * duplicates, entries in the \em major array are favored over * those in the \em minor array. * * Both \em major and \em minor are expected to be argv-style * arrays (i.e., terminated with a NULL pointer). * * The array that is returned is an unencumbered array that should * later be freed with a call to opal_argv_free(). * * Either (or both) of \em major and \em minor can be NULL. If * one of the two is NULL, the other list is simply copied to the * output. If both are NULL, NULL is returned. */ OPAL_DECLSPEC char **opal_environ_merge(char **minor, char **major) __opal_attribute_warn_unused_result__; /** * Portable version of setenv(3), allowing editing of any * environ-like array. * * @param name String name of the environment variable to look for * @param value String value to set (may be NULL) * @param overwrite Whether to overwrite any existing value with * the same name * @param env The environment to use * * @retval OPAL_ERR_OUT_OF_RESOURCE If internal malloc() fails. * @retval OPAL_EXISTS If the name already exists in \em env and * \em overwrite is false (and therefore the \em value was not * saved in \em env) * @retval OPAL_SUCESS If the value replaced another value or is * appended to \em env. * * \em env is expected to be a NULL-terminated array of pointers * (argv-style). Note that unlike some implementations of * putenv(3), if \em value is inserted in \em env, it is copied. * So the caller can modify/free both \em name and \em value after * opal_setenv() returns. * * The \em env array will be grown if necessary. * * It is permissable to invoke this function with the * system-defined \em environ variable. For example: * * \code * #include "opal/util/opal_environ.h" * opal_setenv("foo", "bar", true, &environ); * \endcode * * NOTE: If you use the real environ, opal_setenv() will turn * around and perform putenv() to put the value in the * environment. This may very well lead to a memory leak, so its * use is strongly discouraged. * * It is also permissable to call this function with an empty \em * env, as long as it is pre-initialized with NULL: * * \code * char **my_env = NULL; * opal_setenv("foo", "bar", true, &my_env); * \endcode */ OPAL_DECLSPEC int opal_setenv(const char *name, const char *value, bool overwrite, char ***env) __opal_attribute_nonnull__(1); /** * Portable version of unsetenv(3), allowing editing of any * environ-like array. * * @param name String name of the environment variable to look for * @param env The environment to use * * @retval OPAL_ERR_OUT_OF_RESOURCE If an internal malloc fails. * @retval OPAL_ERR_NOT_FOUND If \em name is not found in \em env. * @retval OPAL_SUCCESS If \em name is found and successfully deleted. * * If \em name is found in \em env, the string corresponding to * that entry is freed and its entry is eliminated from the array. */ OPAL_DECLSPEC int opal_unsetenv(const char *name, char ***env) __opal_attribute_nonnull__(1); /* A consistent way to retrieve the home and tmp directory on all supported * platforms. */ OPAL_DECLSPEC const char* opal_home_directory( void ); OPAL_DECLSPEC const char* opal_tmp_directory( void ); /* Some care is needed with environ on OS X when dealing with shared libraries. Handle that care here... */ #ifdef HAVE__NSGETENVIRON #define environ (*_NSGetEnviron()) #else OPAL_DECLSPEC extern char **environ; #endif END_C_DECLS #endif /* OPAL_ENVIRON */