annotate ffstools/newcomp/compile-fc-chg.c @ 1011:6d9b10633f10 default tip

etmsync Pirelli IMEI retrieval: fix poor use of printf() Bug reported by Vadim Yanitskiy <fixeria@osmocom.org>: the construct where a static-allocated string was passed to printf() without any format arguments causes newer compilers to report a security problem. Given that formatted output is not needed here, just fixed string output, change printf() to fputs(), and direct the error message to stderr while at it.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 23 May 2024 17:29:57 +0000
parents 0937521ec2f4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
320
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This utility compiles a FreeCalypso battery charging configuration file
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * from ASCII source into the binary form suitable for uploading into
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * /etc/charging on a FreeCalypso device.
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 */
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <ctype.h>
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <string.h>
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <strings.h>
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <stdio.h>
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <stdlib.h>
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include "../../rvinterf/include/exitcodes.h"
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 char *infname;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 FILE *inf;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 char linebuf[256];
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 int lineno;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 struct setting {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 char *kw;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 int allow_always;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 int allow_never;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 int mandatory;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 unsigned default_value;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 unsigned set_value;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 int is_set;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 } settings[] = {
324
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
28 {"start-delay", 0, 0, 0, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
29 {"start-threshold", 1, 1, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
30 {"restart-threshold", 0, 1, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
31 {"ci2cv-threshold", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
32 {"cv-initial-setpoint", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
33 {"cv-ctrl-loop-high", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
34 {"cv-ctrl-loop-low", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
35 {"cv-dac-max-incr", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
36 {"cv-dac-max-decr", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
37 {"cv-ctrl-loop-sample-count", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
38 {"overvoltage", 0, 0, 0, 0xFFFF, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
39 {"ci-current", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
40 {"end-current", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
41 {"ichg-max-spike", 0, 0, 0, 0x400, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
42 {"ichg-low-samples-needed", 0, 0, 1, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
43 {"charging-time-limit", 0, 0, 0, 0xFFFF, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
44 {"restart-delay", 0, 0, 0, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
45 {"i2v-offset", 0, 0, 0, 0, 0, 0},
0937521ec2f4 compile-fc-chg: changes for FCHG v2
Mychaela Falconia <falcon@freecalypso.org>
parents: 320
diff changeset
46 {0, 0, 0, 0, 0, 0, 0}
320
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 };
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 static void
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 do_setting(tp, arg)
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 struct setting *tp;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 char *arg;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 char *endp;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 if (tp->allow_always && !strcmp(arg, "always")) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 tp->set_value = 0xFFFF;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 return;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 if (tp->allow_never && !strcmp(arg, "never")) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 tp->set_value = 0;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 return;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 tp->set_value = strtoul(arg, &endp, 0);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 if (*endp || tp->set_value > 0xFFFF) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 fprintf(stderr, "%s line %d: invalid argument to %s\n",
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 infname, lineno, tp->kw);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 exit(ERROR_USAGE);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 process_line()
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 char *cp, *kw, *arg;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 struct setting *tp;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 for (cp = linebuf; isspace(*cp); cp++)
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 ;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 if (*cp == '\0' || *cp == '#')
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 return(0);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 kw = cp;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 while (*cp && !isspace(*cp))
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 cp++;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 if (!*cp) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 inv: fprintf(stderr, "%s line %d: invalid syntax\n", infname,
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 lineno);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 exit(ERROR_USAGE);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 *cp++ = '\0';
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 while (isspace(*cp))
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 cp++;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 if (*cp == '\0' || *cp == '#')
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 goto inv;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 arg = cp;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 while (*cp && !isspace(*cp))
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 cp++;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 if (*cp)
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 *cp++ = '\0';
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 while (isspace(*cp))
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 cp++;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 if (*cp != '\0' && *cp != '#')
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 goto inv;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 for (tp = settings; tp->kw; tp++)
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 if (!strcmp(tp->kw, kw))
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 break;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 if (!tp->kw) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 fprintf(stderr, "%s line %d: setting \"%s\" not known\n",
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 infname, lineno, kw);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 exit(ERROR_USAGE);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 if (tp->is_set) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 fprintf(stderr, "%s line %d: %s set more than once\n", infname,
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 lineno, kw);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 exit(ERROR_USAGE);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 do_setting(tp, arg);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 tp->is_set = 1;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 return(1);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 set_defaults()
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 struct setting *tp;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 for (tp = settings; tp->kw; tp++) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 if (tp->is_set)
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 continue;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 if (tp->mandatory) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 fprintf(stderr,
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 "error: required setting %s is not set\n",
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 tp->kw);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 exit(ERROR_USAGE);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 tp->set_value = tp->default_value;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 write_output(filename)
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 char *filename;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 FILE *of;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 struct setting *tp;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 of = fopen(filename, "w");
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 if (!of) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 perror(filename);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 exit(ERROR_UNIX);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 for (tp = settings; tp->kw; tp++) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 putc(tp->set_value, of);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 putc(tp->set_value >> 8, of);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 fclose(of);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 main(argc, argv)
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 char **argv;
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 if (argc != 3) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 fprintf(stderr, "usage: %s srcfile output-binfile\n", argv[0]);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 exit(ERROR_USAGE);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 infname = argv[1];
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 inf = fopen(infname, "r");
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 if (!inf) {
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 perror(infname);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 exit(ERROR_UNIX);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 }
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 for (lineno = 1; fgets(linebuf, sizeof linebuf, inf); lineno++)
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 process_line();
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 fclose(inf);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 set_defaults();
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 write_output(argv[2]);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 exit(0);
7572c35a768a compile-fc-chg tool written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 }