Annotation of embedaddon/confuse/examples/simple.c, revision 1.1
1.1 ! misho 1: #include <string.h>
! 2: #include <stdlib.h>
! 3: #include "confuse.h"
! 4:
! 5: int main(void)
! 6: {
! 7: cfg_bool_t verbose = cfg_false;
! 8: char *server = NULL;
! 9: double delay = 1.356e-32;
! 10: char *username = NULL;
! 11:
! 12: /* Although the macro used to specify an integer option is called
! 13: * CFG_SIMPLE_INT(), it actually expects a long int. On a 64 bit system
! 14: * where ints are 32 bit and longs 64 bit (such as the x86-64 or amd64
! 15: * architectures), you will get weird effects if you use an int here.
! 16: *
! 17: * If you use the regular (non-"simple") options, ie CFG_INT() and use
! 18: * cfg_getint(), this is not a problem as the data types are implicitly
! 19: * cast.
! 20: */
! 21: long int debug = 1;
! 22:
! 23: cfg_opt_t opts[] = {
! 24: CFG_SIMPLE_BOOL("verbose", &verbose),
! 25: CFG_SIMPLE_STR("server", &server),
! 26: CFG_SIMPLE_STR("user", &username),
! 27: CFG_SIMPLE_INT("debug", &debug),
! 28: CFG_SIMPLE_FLOAT("delay", &delay),
! 29: CFG_END()
! 30: };
! 31: cfg_t *cfg;
! 32:
! 33: /* set default value for the server option */
! 34: server = strdup("gazonk");
! 35:
! 36: cfg = cfg_init(opts, 0);
! 37: cfg_parse(cfg, "simple.conf");
! 38:
! 39: printf("verbose: %s\n", verbose ? "true" : "false");
! 40: printf("server: %s\n", server);
! 41: printf("username: %s\n", username);
! 42: printf("debug: %ld\n", debug);
! 43: printf("delay: %G\n", delay);
! 44:
! 45: printf("setting username to 'foo'\n");
! 46: /* using cfg_setstr here is not necessary at all, the equivalent
! 47: * code is:
! 48: * free(username);
! 49: * username = strdup("foo");
! 50: */
! 51: cfg_setstr(cfg, "user", "foo");
! 52: printf("username: %s\n", username);
! 53:
! 54: /* print the parsed values to another file */
! 55: {
! 56: FILE *fp = fopen("simple.conf.out", "w");
! 57: cfg_print(cfg, fp);
! 58: fclose(fp);
! 59: }
! 60:
! 61: cfg_free(cfg);
! 62:
! 63: /* You are responsible for freeing string values. */
! 64: free(server);
! 65: free(username);
! 66:
! 67: return 0;
! 68: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>