FreeCalypso > hg > themwi-system-sw
annotate sip-manual-out/readconf.c @ 71:d74b545a3c2a
sip-manual-out: new test program
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Tue, 20 Sep 2022 10:14:18 -0800 | 
| parents | |
| children | 
| rev | line source | 
|---|---|
| 
71
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
2 * In this module we implement the reading of destination configuration | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
3 * for sip-manual-out. | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
4 */ | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
5 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
6 #include <sys/types.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
7 #include <sys/socket.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
8 #include <netinet/in.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
9 #include <arpa/inet.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
10 #include <ctype.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
11 #include <stdio.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
12 #include <stdlib.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
13 #include <string.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
14 #include <strings.h> | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
15 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
16 struct in_addr sip_bind_ip, sip_dest_ip; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
17 unsigned sip_bind_port, sip_dest_port = 5060; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
18 char sip_dest_domain[64]; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
19 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
20 struct parse_state { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
21 char *filename; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
22 int lineno; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
23 int set_mask; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
24 }; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
25 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
26 static void | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
27 handle_ip(st, kw, var, arg) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
28 struct parse_state *st; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
29 char *kw, *arg; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
30 struct in_addr *var; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
31 { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
32 var->s_addr = inet_addr(arg); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
33 if (var->s_addr == INADDR_NONE) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
34 fprintf(stderr, | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
35 "%s line %d: invalid IP address argument \"%s\"\n", | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
36 st->filename, st->lineno, arg); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
37 exit(1); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
38 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
39 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
40 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
41 static void | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
42 handle_num(st, kw, var, arg) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
43 struct parse_state *st; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
44 char *kw, *arg; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
45 unsigned *var; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
46 { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
47 char *endp; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
48 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
49 *var = strtoul(arg, &endp, 10); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
50 if (*endp) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
51 fprintf(stderr, "%s line %d: invalid numeric argument \"%s\"\n", | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
52 st->filename, st->lineno, arg); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
53 exit(1); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
54 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
55 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
56 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
57 static void | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
58 handle_str(st, kw, var, arg) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
59 struct parse_state *st; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
60 char *kw, *arg, *var; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
61 { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
62 strcpy(var, arg); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
63 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
64 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
65 static void | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
66 process_line(st, line) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
67 struct parse_state *st; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
68 char *line; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
69 { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
70 char *cp, *np, *arg; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
71 void (*handler)(), *var; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
72 int set_id; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
73 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
74 if (!index(line, '\n')) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
75 fprintf(stderr, "%s line %d: too long or missing newline\n", | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
76 st->filename, st->lineno); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
77 exit(1); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
78 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
79 for (cp = line; isspace(*cp); cp++) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
80 ; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
81 if (*cp == '\0' || *cp == '#') | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
82 return; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
83 for (np = cp; *cp && !isspace(*cp); cp++) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
84 ; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
85 if (*cp) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
86 *cp++ = '\0'; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
87 if (!strcmp(np, "bind-ip")) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
88 handler = handle_ip; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
89 var = &sip_bind_ip; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
90 set_id = 1; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
91 } else if (!strcmp(np, "bind-port")) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
92 handler = handle_num; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
93 var = &sip_bind_port; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
94 set_id = 2; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
95 } else if (!strcmp(np, "dest-ip")) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
96 handler = handle_ip; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
97 var = &sip_dest_ip; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
98 set_id = 4; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
99 } else if (!strcmp(np, "dest-port")) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
100 handler = handle_num; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
101 var = &sip_dest_port; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
102 set_id = 0; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
103 } else if (!strcmp(np, "dest-domain")) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
104 handler = handle_str; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
105 var = sip_dest_domain; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
106 set_id = 8; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
107 } else { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
108 fprintf(stderr, "%s line %d: non-understood keyword \"%s\"\n", | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
109 st->filename, st->lineno, np); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
110 exit(1); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
111 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
112 if (st->set_mask & set_id) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
113 fprintf(stderr, "%s line %d: duplicate %s setting\n", | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
114 st->filename, st->lineno, np); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
115 exit(1); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
116 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
117 while (isspace(*cp)) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
118 cp++; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
119 if (*cp == '\0' || *cp == '#') { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
120 inv_syntax: fprintf(stderr, | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
121 "%s line %d: %s setting requires one argument\n", | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
122 st->filename, st->lineno, np); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
123 exit(1); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
124 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
125 for (arg = cp; *cp && !isspace(*cp); cp++) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
126 ; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
127 if (*cp) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
128 *cp++ = '\0'; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
129 while (isspace(*cp)) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
130 cp++; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
131 if (*cp != '\0' && *cp != '#') | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
132 goto inv_syntax; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
133 handler(st, np, var, arg); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
134 st->set_mask |= set_id; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
135 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
136 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
137 read_config_file(filename) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
138 char *filename; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
139 { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
140 FILE *inf; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
141 struct parse_state pst; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
142 char linebuf[256]; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
143 | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
144 inf = fopen(filename, "r"); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
145 if (!inf) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
146 perror(filename); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
147 exit(1); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
148 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
149 pst.set_mask = 0; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
150 pst.filename = filename; | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
151 for (pst.lineno = 1; fgets(linebuf, sizeof linebuf, inf); pst.lineno++) | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
152 process_line(&pst, linebuf); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
153 fclose(inf); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
154 if (pst.set_mask != 15) { | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
155 fprintf(stderr, "error: %s did not set all required settings\n", | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
156 filename); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
157 exit(1); | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
158 } | 
| 
 
d74b545a3c2a
sip-manual-out: new test program
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
159 } | 
