FreeCalypso > hg > themwi-system-sw
annotate sip-manual-out/readconf.c @ 105:9213ec8b434b
sip-in: handle themwi-mncc shutdown without terminating
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Tue, 27 Sep 2022 23:00:52 -0800 | 
| parents | d74b545a3c2a | 
| 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 } | 
