summaryrefslogtreecommitdiffstats
path: root/tools/regression/environ/envctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/regression/environ/envctl.c')
-rw-r--r--tools/regression/environ/envctl.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/tools/regression/environ/envctl.c b/tools/regression/environ/envctl.c
index 2681741..e077e42 100644
--- a/tools/regression/environ/envctl.c
+++ b/tools/regression/environ/envctl.c
@@ -54,17 +54,19 @@ dump_environ(void)
static void
usage(const char *program)
{
- fprintf(stderr, "Usage: %s [-DGUcht] [-gu name] [-p name=value] "
+ fprintf(stderr, "Usage: %s [-CDGUchrt] [-gu name] [-p name=value] "
"[(-S|-s name) value overwrite]\n\n"
"Options:\n"
+ " -C\t\t\t\tClear environ variable with NULL pointer\n"
" -D\t\t\t\tDump environ\n"
" -G name\t\t\tgetenv(NULL)\n"
" -S value overwrite\t\tsetenv(NULL, value, overwrite)\n"
" -U\t\t\t\tunsetenv(NULL)\n"
- " -c\t\t\t\tClear environ variable\n"
+ " -c\t\t\t\tClear environ variable with calloc()'d memory\n"
" -g name\t\t\tgetenv(name)\n"
" -h\t\t\t\tHelp\n"
" -p name=value\t\t\tputenv(name=value)\n"
+ " -r\t\t\t\treplace environ with { \"FOO=bar\", NULL }\n"
" -s name value overwrite\tsetenv(name, value, overwrite)\n"
" -t\t\t\t\tOutput is suitable for testing (no newlines)\n"
" -u name\t\t\tunsetenv(name)\n",
@@ -77,7 +79,7 @@ usage(const char *program)
int
main(int argc, char **argv)
{
- char *cleanEnv[] = { NULL };
+ char *staticEnv[] = { "FOO=bar", NULL };
char arg;
const char *eol = "\n";
const char *value;
@@ -87,15 +89,19 @@ main(int argc, char **argv)
exit(EXIT_FAILURE);
}
- while ((arg = getopt(argc, argv, "DGS:Ucg:hp:s:tu:")) != -1) {
+ while ((arg = getopt(argc, argv, "CDGS:Ucg:hp:rs:tu:")) != -1) {
switch (arg) {
- case 'D':
- errno = 0;
- dump_environ();
+ case 'C':
+ environ = NULL;
break;
case 'c':
- environ = cleanEnv;
+ environ = calloc(1, sizeof(*environ));
+ break;
+
+ case 'D':
+ errno = 0;
+ dump_environ();
break;
case 'G':
@@ -113,6 +119,10 @@ main(int argc, char **argv)
printf("%d %d%s", putenv(optarg), errno, eol);
break;
+ case 'r':
+ environ = staticEnv;
+ break;
+
case 'S':
errno = 0;
printf("%d %d%s", setenv(NULL, optarg,
OpenPOWER on IntegriCloud