/* Test for bug BZ #2703. */ #include #include #include #include static const struct { const char *s; int in_result; } strs[] = { { "a=1", 1 }, { "b=2", 1 }, { "(*)", 0 }, { "(*)", 0 }, { "e=5", 1 }, { "f=", 1 }, { "(*)", 0 }, { "h=8", 1 }, { "i=9", 1 }, { "j", 0 } }; #define nstrs (sizeof (strs) / sizeof (strs[0])) static int do_test (void) { size_t size = 0; char *str = malloc (100); if (str == NULL) { puts ("out of memory"); return 1; } char **argz = &str; for (int i = 0; i < nstrs; ++i) argz_add_sep (argz, &size, strs[i].s, '\0'); printf ("calling envz_strip with size=%zu\n", size); envz_strip (argz, &size); int result = 0; printf ("new size=%zu\n", size); for (int i = 0; i < nstrs; ++i) if (strs[i].in_result) { char name[2]; name[0] = strs[i].s[0]; name[1] = '\0'; char *e = envz_entry (*argz, size, name); if (e == NULL) { printf ("entry '%s' not found\n", name); result = 1; } else if (strcmp (e, strs[i].s) != 0) { printf ("entry '%s' does not match: is '%s', expected '%s'\n", name, e, strs[i].s); result = 1; } } free (*argz); return result; } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"