diff options
| author | Sean Farley <scf@FreeBSD.org> | 2007-07-04 00:00:41 +0000 |
|---|---|---|
| committer | Sean Farley <scf@FreeBSD.org> | 2007-07-04 00:00:41 +0000 |
| commit | 2966d28c322dcfa4b9db2558da0b91839e7798b9 (patch) | |
| tree | 423c7d016f87f6541b9ef8231a14f8b267bc5d5e /tools | |
| parent | f6c1ecca50279edac3eb930eecd72ff23bfd85dc (diff) | |
Notes
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/regression/environ/Makefile | 14 | ||||
| -rw-r--r-- | tools/regression/environ/Makefile.envctl | 16 | ||||
| -rw-r--r-- | tools/regression/environ/Makefile.retention | 16 | ||||
| -rw-r--r-- | tools/regression/environ/Makefile.timings | 16 | ||||
| -rw-r--r-- | tools/regression/environ/envctl.c | 154 | ||||
| -rw-r--r-- | tools/regression/environ/envtest.t | 182 | ||||
| -rw-r--r-- | tools/regression/environ/retention.c | 109 | ||||
| -rw-r--r-- | tools/regression/environ/timings.c | 195 |
8 files changed, 702 insertions, 0 deletions
diff --git a/tools/regression/environ/Makefile b/tools/regression/environ/Makefile new file mode 100644 index 000000000000..62720d28abd1 --- /dev/null +++ b/tools/regression/environ/Makefile @@ -0,0 +1,14 @@ +# +# $FreeBSD$ +# +PROGS= envctl retention timings + +all clean test: +.for target in ${.TARGET} +.for prog in ${PROGS} + @${MAKE} -f Makefile.${prog} ${target} +.endfor +.if make(clean) + rm -f *~ +.endif +.endfor diff --git a/tools/regression/environ/Makefile.envctl b/tools/regression/environ/Makefile.envctl new file mode 100644 index 000000000000..6298a20646dd --- /dev/null +++ b/tools/regression/environ/Makefile.envctl @@ -0,0 +1,16 @@ +# +# $FreeBSD$ +# +SRCS= envctl.c +PROG= envctl + +CFLAGS+=-Wall -I../../../include + +CLEANFILES= ${PROG}.core + +NO_MAN= yes + +.include <bsd.prog.mk> + +test: ${PROG} + @sh envtest.t diff --git a/tools/regression/environ/Makefile.retention b/tools/regression/environ/Makefile.retention new file mode 100644 index 000000000000..9e0687f484fe --- /dev/null +++ b/tools/regression/environ/Makefile.retention @@ -0,0 +1,16 @@ +# +# $FreeBSD$ +# +SRCS= retention.c +PROG= retention + +CFLAGS+=-Wall -I../../../include + +CLEANFILES= *~ ${PROG}.core + +NO_MAN= yes + +.include <bsd.prog.mk> + +test: ${PROG} + @./${PROG} diff --git a/tools/regression/environ/Makefile.timings b/tools/regression/environ/Makefile.timings new file mode 100644 index 000000000000..88c4f7c7280b --- /dev/null +++ b/tools/regression/environ/Makefile.timings @@ -0,0 +1,16 @@ +# +# $FreeBSD$ +# +SRCS= timings.c +PROG= timings + +CFLAGS+=-Wall -I../../../include + +CLEANFILES= ${PROG}.core + +NO_MAN= yes + +.include <bsd.prog.mk> + +test: ${PROG} + @./timings diff --git a/tools/regression/environ/envctl.c b/tools/regression/environ/envctl.c new file mode 100644 index 000000000000..2681741da723 --- /dev/null +++ b/tools/regression/environ/envctl.c @@ -0,0 +1,154 @@ +/*- + * Copyright (c) 2007 Sean C. Farley <scf@FreeBSD.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include <errno.h> +#include <libgen.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + + +extern char **environ; + + +static void +dump_environ(void) +{ + char **environPtr; + + for (environPtr = environ; *environPtr != NULL; *environPtr++) + printf("%s\n", *environPtr); + + return; +} + + +static void +usage(const char *program) +{ + fprintf(stderr, "Usage: %s [-DGUcht] [-gu name] [-p name=value] " + "[(-S|-s name) value overwrite]\n\n" + "Options:\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" + " -g name\t\t\tgetenv(name)\n" + " -h\t\t\t\tHelp\n" + " -p name=value\t\t\tputenv(name=value)\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", + basename(program)); + + return; +} + + +int +main(int argc, char **argv) +{ + char *cleanEnv[] = { NULL }; + char arg; + const char *eol = "\n"; + const char *value; + + if (argc == 1) { + usage(argv[0]); + exit(EXIT_FAILURE); + } + + while ((arg = getopt(argc, argv, "DGS:Ucg:hp:s:tu:")) != -1) { + switch (arg) { + case 'D': + errno = 0; + dump_environ(); + break; + + case 'c': + environ = cleanEnv; + break; + + case 'G': + value = getenv(NULL); + printf("%s%s", value == NULL ? "" : value, eol); + break; + + case 'g': + value = getenv(optarg); + printf("%s%s", value == NULL ? "" : value, eol); + break; + + case 'p': + errno = 0; + printf("%d %d%s", putenv(optarg), errno, eol); + break; + + case 'S': + errno = 0; + printf("%d %d%s", setenv(NULL, optarg, + atoi(argv[optind])), errno, eol); + optind += 1; + break; + + case 's': + errno = 0; + printf("%d %d%s", setenv(optarg, argv[optind], + atoi(argv[optind + 1])), errno, eol); + optind += 2; + break; + + case 't': + eol = " "; + break; + + case 'U': + printf("%d %d%s", unsetenv(NULL), errno, eol); + break; + + case 'u': + printf("%d %d%s", unsetenv(optarg), errno, eol); + break; + + case 'h': + default: + usage(argv[0]); + exit(EXIT_FAILURE); + } + } + + // Output a closing newline in test mode. + if (eol[0] == ' ') + printf("\n"); + + return (EXIT_SUCCESS); +} diff --git a/tools/regression/environ/envtest.t b/tools/regression/environ/envtest.t new file mode 100644 index 000000000000..e3aca952e2da --- /dev/null +++ b/tools/regression/environ/envtest.t @@ -0,0 +1,182 @@ +#!/bin/sh +# +# Copyright (c) 2007 Sean C. Farley <scf@FreeBSD.org> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer, +# without modification, immediately at the beginning of the file. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# $FreeBSD$ + + +# Initialization. +testndx=0 + + +# Testing function. +run_test() +{ + lasttest="${@}" + result=`./envctl -t "${@}"` + + if [ ${?} -ne 0 ] + then + echo "Test program failed" >&2 + exit 1 + fi + + return +} + + +# Perform test on results. +check_result() +{ + testndx=$((testndx + 1)) + + echo "${result}" | sed 's/[ \t]*$//' | grep -q "^${@}$" + if [ ${?} -eq 0 ] + then + echo "ok ${testndx}" + else + echo "not ok ${testndx} - '${lasttest}'" + fi + + return +} + + +# +# Regression tests +# + +# Setup environment for tests. +readonly BAR="bar" +readonly NEWBAR="newbar" +export FOO=${BAR} + + +# Gets from environ. +run_test -g FOO +check_result "${FOO}" + +run_test -c -g FOO +check_result "" + +run_test -g FOOBAR +check_result "" + +run_test -c -g FOOBAR +check_result "" + +run_test -G +check_result "" + + +# Sets. +run_test -s FOO ${NEWBAR} 0 -g FOO +check_result "0 0 ${BAR}" + +run_test -s FOO ${NEWBAR} 1 -g FOO +check_result "0 0 ${NEWBAR}" + +run_test -c -s FOO ${NEWBAR} 0 -g FOO +check_result "0 0 ${NEWBAR}" + +run_test -c -s FOO ${NEWBAR} 1 -g FOO +check_result "0 0 ${NEWBAR}" + +run_test -s "FOO=" ${NEWBAR} 1 -g FOO +check_result "-1 22 ${BAR}" + +run_test -s "=FOO" ${NEWBAR} 1 +check_result "-1 22" + +run_test -s "=" ${NEWBAR} 1 +check_result "-1 22" + +run_test -s "" ${NEWBAR} 1 +check_result "-1 22" + +run_test -S ${NEWBAR} 1 +check_result "-1 22" + +run_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -g FOO +check_result "0 0 0 0 ${BAR}" + +run_test -c -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -g FOO +check_result "0 0 0 0 ${BAR}" + +run_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -s FOO ${NEWBAR} 1 -g FOO +check_result "0 0 0 0 0 0 ${NEWBAR}" + +run_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1\ + -g FOO +check_result "0 0 0 0 0 0 0 0 ${BAR}" + + +# Unsets. +run_test -u FOO -g FOO +check_result "0 0" + +run_test -c -u FOO -g FOO +check_result "0 0" + +run_test -U +check_result "-1 22" + +run_test -u "" +check_result "-1 22" + +run_test -u "=${BAR}" +check_result "-1 22" + +run_test -c -s FOO ${NEWBAR} 1 -g FOO -u FOO -g FOO +check_result "0 0 ${NEWBAR} 0 0" + + +# Puts. +run_test -p FOO=${NEWBAR} -g FOO +check_result "0 0 ${NEWBAR}" + +run_test -c -p FOO=${NEWBAR} -g FOO +check_result "0 0 ${NEWBAR}" + +run_test -p FOO -g FOO +check_result "-1 22 ${BAR}" + +run_test -p FOO=${BAR} -p FOO=${NEWBAR} -g FOO +check_result "0 0 0 0 ${NEWBAR}" + +run_test -p FOO=${BAR} -s FOO ${NEWBAR} 1 -g FOO +check_result "0 0 0 0 ${NEWBAR}" + +run_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -g FOO +check_result "0 0 0 0 ${BAR}" + +run_test -p FOO=${BAR} -u FOO +check_result "0 0 0 0" + +run_test -p FOO=${BAR} -s FOO ${NEWBAR} 1 -u FOO +check_result "0 0 0 0 0 0" + +run_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -u FOO +check_result "0 0 0 0 0 0" diff --git a/tools/regression/environ/retention.c b/tools/regression/environ/retention.c new file mode 100644 index 000000000000..7f75cd100e15 --- /dev/null +++ b/tools/regression/environ/retention.c @@ -0,0 +1,109 @@ +/*- + * Copyright (c) 2007 Sean C. Farley <scf@FreeBSD.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + + +extern char **environ; +const char *envName = "FOOBAR"; +const char *envValSmall = "Hi"; +const char *envValLarge = "Hi, again"; +const char *envValAny = "Any value"; + + +int +main(int argc, char **argv) +{ + const char *env1 = NULL; + const char *env2 = NULL; + const char *env3 = NULL; + const char *env4 = NULL; + const char *env5 = NULL; + int testNdx; + + /* Clean slate. */ + environ = NULL; + testNdx = 0; + + /* Initial value of variable. */ + if (getenv(envName) != NULL) + printf("not "); + printf("ok %d - getenv(\"%s\")\n", ++testNdx, envName); + + /* Set value of variable to smaller value and get value. */ + if ((setenv(envName, envValSmall, 1) != 0) || + ((env1 = getenv(envName)) == NULL) || + (strcmp(env1, envValSmall) != 0)) + printf("not "); + printf("ok %d - setenv(\"%s\", \"%s\", 1)\n", ++testNdx, envName, + envValSmall); + + /* Unset variable. */ + if ((unsetenv(envName) == -1) || ((env2 = getenv(envName)) != NULL)) + printf("not "); + printf("ok %d - unsetenv(\"%s\")\n", ++testNdx, envName); + + /* Set variable to bigger value and get value. */ + if ((setenv(envName, envValLarge, 1) != 0) || + ((env3 = getenv(envName)) == NULL) || + (strcmp(env3, envValLarge) != 0)) + printf("not "); + printf("ok %d - setenv(\"%s\", \"%s\", 1)\n", ++testNdx, envName, + envValLarge); + + /* Set variable to smaller value and get value. */ + if ((setenv(envName, envValSmall, 1) != 0) || + ((env4 = getenv(envName)) == NULL) || + (strcmp(env4, envValSmall) != 0)) + printf("not "); + printf("ok %d - setenv(\"%s\", \"%s\", 1)\n", ++testNdx, envName, + envValSmall); + + /* Set variable to any value without overwrite and get value. */ + if ((setenv(envName, envValAny, 0) != 0) || + ((env5 = getenv(envName)) == NULL) || + (strcmp(env5, envValAny) == 0)) + printf("not "); + printf("ok %d - setenv(\"%s\", \"%s\", 0)\n", ++testNdx, envName, + envValAny); + + /* + * Verify FreeBSD-ism about allowing a program to keep old pointers without + * risk of segfaulting. + */ + if ((strcmp(env1, envValSmall) != 0) || + (strcmp(env3, envValSmall) != 0) || + (strcmp(env4, envValSmall) != 0)) + printf("not "); + printf("ok %d - old variables point to valid memory\n", ++testNdx); + + exit(EXIT_SUCCESS); +} diff --git a/tools/regression/environ/timings.c b/tools/regression/environ/timings.c new file mode 100644 index 000000000000..1bf3c910a108 --- /dev/null +++ b/tools/regression/environ/timings.c @@ -0,0 +1,195 @@ +/*- + * Copyright (c) 2007 Sean C. Farley <scf@FreeBSD.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#include <sys/time.h> +#include <err.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + + +const char value1[] = "Large ------------------ value"; +const char value2[] = "Small -- value"; +char nameValuePair[] = "less=more"; +const char name[] = "PATH"; +const char name2[] = "SHELL"; +const int MaxIterations = 1000000; +const char Tabs[] = "\t\t\t"; + + +static int +report_time(const char *action, struct timeval *startTime, + struct timeval *endTime) +{ + int actionLen; + int numTabs; + + actionLen = strlen(action); + numTabs = 3 - actionLen / 8; + + return (printf("Time spent executing %s:%.*s%f\n", action, numTabs, Tabs, + (endTime->tv_sec - startTime->tv_sec) + + (double)(endTime->tv_usec - startTime->tv_usec) / 1000000)); +} + + +int +main(int argc, char **argv) +{ + int iterations; + struct timeval endTime; + struct timeval startTime; + + /* + * getenv() on the existing environment. + */ + gettimeofday(&startTime, NULL); + + /* Iterate over setting variable. */ + for (iterations = 0; iterations < MaxIterations; iterations++) + if (getenv(name) == NULL) + err(EXIT_FAILURE, "getenv(name)"); + + gettimeofday(&endTime, NULL); + + report_time("getenv(name)", &startTime, &endTime); + + + /* + * setenv() a variable with a large value. + */ + gettimeofday(&startTime, NULL); + + /* Iterate over setting variable. */ + for (iterations = 0; iterations < MaxIterations; iterations++) + if (setenv(name, value1, 1) == -1) + err(EXIT_FAILURE, "setenv(name, value1, 1)"); + + gettimeofday(&endTime, NULL); + + report_time("setenv(name, value1, 1)", &startTime, &endTime); + + + /* + * getenv() the new variable on the new environment. + */ + gettimeofday(&startTime, NULL); + + /* Iterate over setting variable. */ + for (iterations = 0; iterations < MaxIterations; iterations++) + /* Set large value to variable. */ + if (getenv(name) == NULL) + err(EXIT_FAILURE, "getenv(name)"); + + gettimeofday(&endTime, NULL); + + report_time("getenv(name)", &startTime, &endTime); + + + /* + * getenv() a different variable on the new environment. + */ + gettimeofday(&startTime, NULL); + + /* Iterate over setting variable. */ + for (iterations = 0; iterations < MaxIterations; iterations++) + /* Set large value to variable. */ + if (getenv(name2) == NULL) + err(EXIT_FAILURE, "getenv(name2)"); + + gettimeofday(&endTime, NULL); + + report_time("getenv(name2)", &startTime, &endTime); + + + /* + * setenv() a variable with a small value. + */ + gettimeofday(&startTime, NULL); + + /* Iterate over setting variable. */ + for (iterations = 0; iterations < MaxIterations; iterations++) + if (setenv(name, value2, 1) == -1) + err(EXIT_FAILURE, "setenv(name, value2, 1)"); + + gettimeofday(&endTime, NULL); + + report_time("setenv(name, value2, 1)", &startTime, &endTime); + + + /* + * getenv() a different variable on the new environment. + */ + gettimeofday(&startTime, NULL); + + /* Iterate over setting variable. */ + for (iterations = 0; iterations < MaxIterations; iterations++) + /* Set large value to variable. */ + if (getenv(name2) == NULL) + err(EXIT_FAILURE, "getenv(name)"); + + gettimeofday(&endTime, NULL); + + report_time("getenv(name)", &startTime, &endTime); + + + /* + * getenv() a different variable on the new environment. + */ + gettimeofday(&startTime, NULL); + + /* Iterate over setting variable. */ + for (iterations = 0; iterations < MaxIterations; iterations++) + /* Set large value to variable. */ + if (getenv(name2) == NULL) + err(EXIT_FAILURE, "getenv(name2)"); + + gettimeofday(&endTime, NULL); + + report_time("getenv(name2)", &startTime, &endTime); + + + /* + * putenv() a variable with a small value. + */ + gettimeofday(&startTime, NULL); + + /* Iterate over setting variable. */ + for (iterations = 0; iterations < MaxIterations; iterations++) + if (putenv(nameValuePair) == -1) + err(EXIT_FAILURE, "putenv(nameValuePair)"); + + gettimeofday(&endTime, NULL); + + report_time("putenv(nameValuePair)", &startTime, &endTime); + + + exit(EXIT_SUCCESS); +} |
