X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;ds=inline;f=tests%2Fexample_exec.c;h=bd5670079c9e270fb491028d8bbd086588c21402;hb=d78910e363e8f6c8e9c88f1045bb85fcb164976d;hp=3a185673e7f06931e583847f89d1d95041054005;hpb=7ea72c40db03659a9d468f000d59ff133aadf47e;p=coloredstderr%2Fcoloredstderr.git
diff --git a/tests/example_exec.c b/tests/example_exec.c
index 3a18567..bd56700 100644
--- a/tests/example_exec.c
+++ b/tests/example_exec.c
@@ -17,11 +17,18 @@
* along with this program. If not, see .
*/
+#include
+
+/* For execvpe(). */
+#define _GNU_SOURCE
+
#include
#include
#include
#include
+#include "../src/compiler.h"
+
#define MAGIC "@RUN_"
#define MAGIC_LENGTH (strlen(MAGIC))
@@ -75,7 +82,7 @@ static void dump(char *argv[]) {
}
-int main(int argc, char **argv) {
+int main(int argc unused, char **argv) {
char argv0[strlen(argv[0]) + MAGIC_LENGTH + 3 + 1];
char *old_ldpreload = getenv("LD_PRELOAD");
@@ -265,6 +272,35 @@ int main(int argc, char **argv) {
execvp(argv[0], args);
return EXIT_FAILURE;
+
+#ifdef HAVE_EXECVPE
+ /* execvpe(3), but not testing the p(ath) part */
+ } else if (!skip--) {
+ char *args[] = { argv0, NULL };
+ char *envp[] = { "TEST=54", ldpreload, NULL };
+
+ execvpe(argv[0], args, envp);
+ return EXIT_FAILURE;
+ } else if (!skip--) {
+ char *args[] = { argv0, "foo", "bar", NULL };
+ char *envp[] = { "TEST=55", ldpreload, NULL };
+
+ execvpe(argv[0], args, envp);
+ return EXIT_FAILURE;
+#else
+ /* Fake output to let the test pass. */
+ } else if (!skip--) {
+ puts("argv[0] = |./example_exec|");
+ puts("environ[0] = |TEST=54|");
+ puts("environ[2] = |COLORED_STDERR_FDS=2,|");
+ puts("");
+ puts("argv[0] = |./example_exec|");
+ puts("argv[1] = |foo|");
+ puts("argv[2] = |bar|");
+ puts("environ[0] = |TEST=55|");
+ puts("environ[2] = |COLORED_STDERR_FDS=2,|");
+ puts("");
+#endif
}
printf("Done.\n");