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>