File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / confuse / tests / suite_ptr.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 00:49:17 2021 UTC (3 years, 4 months ago) by misho
Branches: confuse, MAIN
CVS tags: v3_3, HEAD
confuse 3.3

    1: #include "check_confuse.h"
    2: #include <string.h>
    3: 
    4: static int parse_ptr(cfg_t *cfg, cfg_opt_t *opt,
    5: 		     const char *value, void *result)
    6: {
    7: 	int *ptr;
    8: 
    9: 	if (!strcmp(value, "nil")) {
   10: 		*(void **)result = NULL;
   11: 		return 0;
   12: 	}
   13: 
   14: 	ptr = malloc(sizeof(int));
   15: 	if (!ptr)
   16: 		return -1;
   17: 
   18: 	*ptr = atoi(value);
   19: 	*(void **)result = ptr;
   20: 	return 0;
   21: }
   22: 
   23: int main(void)
   24: {
   25: 	cfg_opt_t opts[] = {
   26: 		CFG_PTR_CB("ptr", 0, CFGF_NONE, parse_ptr, free),
   27: 		CFG_PTR_CB("ptr-nil", "nil", CFGF_NONE, parse_ptr, free),
   28: 		CFG_PTR_CB("ptr-one", "1", CFGF_NONE, parse_ptr, free),
   29: 		CFG_END()
   30: 	};
   31: 
   32: 	cfg_t *cfg = cfg_init(opts, 0);
   33: 	fail_unless(cfg_parse_buf(cfg, "") == CFG_SUCCESS);
   34: 	fail_unless(cfg_size(cfg, "ptr") == 0);
   35: 	fail_unless(cfg_getptr(cfg, "ptr") == 0);
   36: 	fail_unless(cfg_size(cfg, "ptr-nil") == 1);
   37: 	fail_unless(cfg_getptr(cfg, "ptr-nil") == 0);
   38: 	fail_unless(cfg_size(cfg, "ptr-one") == 1);
   39: 	fail_unless(cfg_getptr(cfg, "ptr-one") != 0);
   40: 	cfg_free(cfg);
   41: 
   42: 	return 0;
   43: }
   44: 
   45: /**
   46:  * Local Variables:
   47:  *  indent-tabs-mode: t
   48:  *  c-file-style: "linux"
   49:  * End:
   50:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>