1 /* Test for configuration parser */
12 static char *heslo="prazdne";
13 static int nastaveni1=0,nastaveni2=1;
15 static byte *set_nastaveni(struct cfitem *item, byte *value)
18 if(!strcasecmp(value,"one"))
20 else if(!strcasecmp(value,"two"))
22 else if(!strcasecmp(value,"three"))
24 else if(!strcasecmp(value,"four"))
27 return "Invalid value of nastaveni";
28 if(!strcasecmp(item->name,"nastaveni1"))
30 else if(!strcasecmp(item->name,"nastaveni2"))
33 return "Internal error of nastaveni";
37 static struct cfitem jmeno[]={
38 {"robert", ct_int, &robert},
39 {"spalek", ct_int, &spalek},
40 {"heslo", ct_string, &heslo},
41 {"nastaveni1", ct_function, &set_nastaveni},
42 {"nastaveni2", ct_function, &set_nastaveni},
50 static struct cfitem telo[]={
51 {"vek", ct_int, &vek},
52 {"vyska", ct_int, &vyska},
53 {"vaha", ct_int, &vaha},
57 static byte shortopts[] = "abcp:q:r::";
58 static struct option longopts[] =
62 {"citron", 0, 0, 'c'},
64 {"qwerty", 1, 0, 'q'},
69 int main(int argc, char *argv[])
73 cf_register("jmeno",jmeno);
74 cf_register("telo",telo);
75 cf_register_opts(shortopts,longopts);
78 c=cf_getopt(argc,argv,NULL);
85 printf("option %c\n",c);
90 printf("option %c with parameter %s\n",c,optarg);
94 printf("option r with optional parameter %s\n",optarg);
96 printf("option r without optional parameter\n");
99 //printf("invalid parameter %d: %s\n",optind,argv[optind]);
102 //printf("missing parameter for %d: %s\n",optind,argv[optind]);
105 printf("getopt is confused, it returns %c\n",c);
112 printf ("non-option ARGV-elements: ");
113 while (optind < argc)
114 printf ("%s ", argv[optind++]);
118 printf("robert=%d, spalek=%d, heslo=%s, nastaveni1/2=%d/%d\n",
119 robert,spalek,heslo,nastaveni1,nastaveni2);
120 printf("vek=%d, vyska=%d, vaha=%d\n",