Annotation of embedaddon/confuse/tests/modified_flag.c, revision 1.1
1.1 ! misho 1: #include "check_confuse.h"
! 2: #include <stdlib.h>
! 3: #include <string.h>
! 4:
! 5: static int parse_ptr(cfg_t *cfg, cfg_opt_t *opt,
! 6: const char *value, void *result)
! 7: {
! 8: char *ptr = strdup(value);
! 9: if (!ptr)
! 10: return -1;
! 11:
! 12: *(void **)result = ptr;
! 13: return 0;
! 14: }
! 15:
! 16: static int is_set(cfg_t *cfg, const char *name, int flags)
! 17: {
! 18: cfg_opt_t *opt = cfg_getopt(cfg, name);
! 19: if (!opt)
! 20: return -1;
! 21: return !!(opt->flags & flags);
! 22: }
! 23:
! 24: int main(void)
! 25: {
! 26: cfg_opt_t sub[] = {
! 27: CFG_INT_LIST("int", "{0,1,2}", CFGF_NONE),
! 28: CFG_INT_LIST("nodef", NULL, CFGF_NONE),
! 29: CFG_FLOAT("float", 42.17, CFGF_NONE),
! 30: CFG_BOOL("bool", cfg_true, CFGF_NONE),
! 31: CFG_STR("str", "hello", CFGF_NODEFAULT),
! 32: CFG_PTR_CB("ptr", "dummy", CFGF_NONE, parse_ptr, free),
! 33: CFG_END()
! 34: };
! 35: cfg_opt_t opts[] = {
! 36: CFG_INT_LIST("int", "{0,1,2}", CFGF_NONE),
! 37: CFG_INT_LIST("nodef", NULL, CFGF_NONE),
! 38: CFG_FLOAT("float", 17.42, CFGF_NONE),
! 39: CFG_BOOL("bool", cfg_true, CFGF_NONE),
! 40: CFG_STR("str", "hello", CFGF_NONE),
! 41: CFG_SEC("sub", sub, CFGF_NONE),
! 42: CFG_PTR_CB("ptr", "dummy", CFGF_NONE, parse_ptr, free),
! 43: CFG_END()
! 44: };
! 45:
! 46: cfg_t *cfg = cfg_init(opts, 0);
! 47:
! 48: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 49: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 0);
! 50: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 51: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 52: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 53: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 54: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 55: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 56: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 57: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 0);
! 58: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 59: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 60:
! 61: fail_unless(cfg_parse_buf(cfg, "") == CFG_SUCCESS);
! 62:
! 63: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 64: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 0);
! 65: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 66: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 67: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 68: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 69: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 70: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 71: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 72: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 0);
! 73: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 74: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 75:
! 76: fail_unless(cfg_parse_buf(cfg, "int = {3,4}") == CFG_SUCCESS);
! 77:
! 78: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 1);
! 79: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 0);
! 80: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 81: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 82: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 83: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 84: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 85: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 86: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 87: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 0);
! 88: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 89: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 90:
! 91: fail_unless(cfg_parse_buf(cfg, "nodef = {}") == CFG_SUCCESS);
! 92:
! 93: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 1);
! 94: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 1);
! 95: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 96: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 97: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 98: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 99: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 100: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 101: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 102: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 0);
! 103: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 104: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 105:
! 106: fail_unless(cfg_parse_buf(cfg, "float = 3.14") == CFG_SUCCESS);
! 107:
! 108: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 1);
! 109: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 1);
! 110: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 1);
! 111: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 112: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 113: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 114: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 115: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 116: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 117: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 0);
! 118: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 119: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 120:
! 121: cfg_free(cfg);
! 122: cfg = cfg_init(opts, 0);
! 123: fail_unless(cfg_setnint(cfg, "nodef", 1, 1) == CFG_SUCCESS);
! 124:
! 125: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 126: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 1);
! 127: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 128: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 129: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 130: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 131: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 132: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 133: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 134: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 0);
! 135: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 136: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 137:
! 138: fail_unless(cfg_setbool(cfg, "bool", cfg_true) == CFG_SUCCESS);
! 139:
! 140: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 141: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 1);
! 142: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 143: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 1);
! 144: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 145: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 146: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 147: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 148: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 149: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 0);
! 150: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 151: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 152:
! 153: fail_unless(cfg_setfloat(cfg, "sub|float", 2.718) == CFG_SUCCESS);
! 154:
! 155: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 156: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 1);
! 157: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 158: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 1);
! 159: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 160: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 161: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 162: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 163: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 1);
! 164: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 0);
! 165: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 166: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 167:
! 168: fail_unless(cfg_setbool(cfg, "sub|bool", cfg_true) == CFG_SUCCESS);
! 169:
! 170: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 171: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 1);
! 172: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 173: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 1);
! 174: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 175: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 176: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 177: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 178: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 1);
! 179: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 1);
! 180: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 181: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 182:
! 183: cfg_free(cfg);
! 184: cfg = cfg_init(opts, 0);
! 185: fail_unless(cfg_parse_buf(cfg, "sub { bool = true }") == CFG_SUCCESS);
! 186:
! 187: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 188: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 0);
! 189: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 190: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 191: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 192: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 193: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 194: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 195: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 196: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 1);
! 197: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 0);
! 198: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 199:
! 200: fail_unless(cfg_parse_buf(cfg, "sub { str = hello }") == CFG_SUCCESS);
! 201:
! 202: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 203: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 0);
! 204: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 205: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 206: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 207: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 208: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 209: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 210: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 211: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 1);
! 212: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 1);
! 213: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 214:
! 215: char *bad_ints[] = { "1", "a" };
! 216: fail_unless(cfg_setmulti(cfg, "int", 2, bad_ints) == CFG_FAIL);
! 217:
! 218: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 0);
! 219: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 0);
! 220: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 221: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 222: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 223: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 224: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 225: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 226: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 227: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 1);
! 228: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 1);
! 229: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 230:
! 231: char *good_ints[] = { "1", "2" };
! 232: fail_unless(cfg_setmulti(cfg, "int", 2, good_ints) == CFG_SUCCESS);
! 233:
! 234: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 1);
! 235: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 0);
! 236: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 237: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 238: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 239: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 240: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 241: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 242: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 243: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 1);
! 244: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 1);
! 245: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 0);
! 246:
! 247: fail_unless(cfg_setmulti(cfg, "sub|ptr", 1, good_ints) == CFG_SUCCESS);
! 248:
! 249: fail_unless(is_set(cfg, "int", CFGF_MODIFIED) == 1);
! 250: fail_unless(is_set(cfg, "nodef", CFGF_MODIFIED) == 0);
! 251: fail_unless(is_set(cfg, "float", CFGF_MODIFIED) == 0);
! 252: fail_unless(is_set(cfg, "bool", CFGF_MODIFIED) == 0);
! 253: fail_unless(is_set(cfg, "str", CFGF_MODIFIED) == 0);
! 254: fail_unless(is_set(cfg, "ptr", CFGF_MODIFIED) == 0);
! 255: fail_unless(is_set(cfg, "sub|int", CFGF_MODIFIED) == 0);
! 256: fail_unless(is_set(cfg, "sub|nodef", CFGF_MODIFIED) == 0);
! 257: fail_unless(is_set(cfg, "sub|float", CFGF_MODIFIED) == 0);
! 258: fail_unless(is_set(cfg, "sub|bool", CFGF_MODIFIED) == 1);
! 259: fail_unless(is_set(cfg, "sub|str", CFGF_MODIFIED) == 1);
! 260: fail_unless(is_set(cfg, "sub|ptr", CFGF_MODIFIED) == 1);
! 261:
! 262: cfg_free(cfg);
! 263:
! 264: return 0;
! 265: }
! 266:
! 267: /**
! 268: * Local Variables:
! 269: * indent-tabs-mode: t
! 270: * c-file-style: "linux"
! 271: * End:
! 272: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>