Annotation of embedaddon/confuse/tests/env.c, revision 1.1.1.1
1.1 misho 1: /* Test environment varialbe substitution
2: */
3:
4: #include "config.h"
5: #include <string.h>
6: #include <stdlib.h>
7: #include "check_confuse.h"
8:
9: static int testconfig(const char *buf, const char *parameter)
10: {
11: cfg_opt_t opts[] = {
12: CFG_STR("parameter", NULL, CFGF_NONE),
13: CFG_END()
14: };
15: char *param;
16: cfg_t *cfg;
17:
18: cfg = cfg_init(opts, CFGF_NONE);
19: if (!cfg)
20: return 0;
21:
22: if (cfg_parse_buf(cfg, buf) != CFG_SUCCESS)
23: return 0;
24:
25: param = cfg_getstr(cfg, "parameter");
26: if (!param)
27: return 0;
28:
29: if (strcmp(param, parameter) != 0)
30: return 0;
31:
32: cfg_free(cfg);
33: return 1;
34: }
35:
36: int main(void)
37: {
38: #if defined(HAVE_SETENV) && defined(HAVE_UNSETENV)
39: fail_unless(setenv("MYVAR", "testing", 1) == 0);
40: fail_unless(unsetenv("MYUNSETVAR") == 0);
41: #elif defined(HAVE__PUTENV)
42: fail_unless(_putenv("MYVAR=testing") == 0);
43: fail_unless(_putenv("MYUNSETVAR=") == 0);
44: #else
45: #error "Not sure how to set environment variables."
46: #endif
47:
48: /* Check basic string parsing */
49: fail_unless(testconfig("parameter=\"abc\\ndef\"", "abc\ndef"));
50: fail_unless(testconfig("parameter=\"abc\\adef\"", "abc\adef"));
51: fail_unless(testconfig("parameter=\"abc\\040def\"", "abc def"));
52: fail_unless(testconfig("parameter=\"abc\\x20def\"", "abc def"));
53: fail_unless(testconfig("parameter=\"${}\"", ""));
54:
55: /* Check unquoted environment variable handling */
56: fail_unless(testconfig("parameter=${MYVAR}", "testing"));
57: fail_unless(testconfig("parameter=${MYVAR:-default}", "testing"));
58: fail_unless(testconfig("parameter=${MYUNSETVAR}", ""));
59: fail_unless(testconfig("parameter=${MYUNSETVAR:-default}", "default"));
60:
61: /* Check quoted environment variable handling */
62: fail_unless(testconfig("parameter=\"${MYVAR}\"", "testing"));
63: fail_unless(testconfig("parameter=\"${MYVAR:-default}\"", "testing"));
64: fail_unless(testconfig("parameter=\"${MYUNSETVAR}\"", ""));
65: fail_unless(testconfig("parameter=\"${MYUNSETVAR:-default}\"", "default"));
66:
67: /* Check quoted environment variable handling in the middle of strings */
68: fail_unless(testconfig("parameter=\"text_${MYVAR}\"", "text_testing"));
69: fail_unless(testconfig("parameter=\"${MYVAR}_text\"", "testing_text"));
70: fail_unless(testconfig("parameter=\"start_${MYVAR}_end\"", "start_testing_end"));
71:
72: /* Check single quoted environment variable handling */
73: fail_unless(testconfig("parameter='${MYVAR}'", "${MYVAR}"));
74:
75: return 0;
76: }
77:
78: /**
79: * Local Variables:
80: * indent-tabs-mode: t
81: * c-file-style: "linux"
82: * End:
83: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>