annotate ffstools/cal2text/main.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 329c31f7c797
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
142
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * The main() function for fc-cal2text lives here.
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <sys/types.h>
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <sys/param.h>
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <sys/file.h>
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <sys/stat.h>
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <stdio.h>
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <stdlib.h>
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <unistd.h>
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 char *input_dir_base, *output_dir_base;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 extern void write_afcdac_ascii();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 extern void write_stdmap_ascii();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 extern void write_afcparams_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 extern void write_agcwords_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 extern void write_agcglobals_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 extern void write_il2agc_table();
289
329c31f7c797 fc-cal2text changed to emit Tx ramps for each band as a single table
Mychaela Falconia <falcon@freecalypso.org>
parents: 142
diff changeset
21 extern void write_tx_ramps_table();
142
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 extern void write_tx_levels_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 extern void write_tx_calchan_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 extern void write_tx_caltemp_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 extern void write_rx_calchan_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 extern void write_rx_caltemp_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 extern void write_rx_agcparams_table();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 struct output_chunk {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 unsigned offset;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 char *outfile;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 void (*conv_func)();
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 static struct output_chunk afcdac_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 0, "afcdac", write_afcdac_ascii
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 static struct output_chunk stdmap_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 0, "stdmap", write_stdmap_ascii
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 static struct output_chunk afcparams_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 0, "afcparams", write_afcparams_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 static struct output_chunk agcglobals_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 0, "agcglobals", write_agcglobals_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 static struct output_chunk il2agc_handling[3] = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 {0, "il2agc-pwr", write_il2agc_table},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 {121, "il2agc-max", write_il2agc_table},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 {242, "il2agc-av", write_il2agc_table},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 static struct output_chunk agcwords_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 0, "agcwords", write_agcwords_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60
289
329c31f7c797 fc-cal2text changed to emit Tx ramps for each band as a single table
Mychaela Falconia <falcon@freecalypso.org>
parents: 142
diff changeset
61 static struct output_chunk tx_ramps_handling = {
329c31f7c797 fc-cal2text changed to emit Tx ramps for each band as a single table
Mychaela Falconia <falcon@freecalypso.org>
parents: 142
diff changeset
62 0, "ramps", write_tx_ramps_table
142
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 static struct output_chunk tx_levels_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 0, "levels", write_tx_levels_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 static struct output_chunk tx_calchan_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 0, "calchan", write_tx_calchan_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 static struct output_chunk tx_caltemp_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 0, "caltemp", write_tx_caltemp_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 static struct output_chunk rx_calchan_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 0, "calchan", write_rx_calchan_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 static struct output_chunk rx_caltemp_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 0, "caltemp", write_rx_caltemp_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 static struct output_chunk rx_agcparams_handling = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 0, "agcparams", write_rx_agcparams_table
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 static struct input_file {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 char *filename;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 unsigned expect_size;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 char *outdir;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 struct output_chunk *handling;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 unsigned nchunks;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 } input_file_list[] = {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 {"afcdac", 2, "global", &afcdac_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 {"stdmap", 2, "global", &stdmap_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 {"afcparams", 24, "global", &afcparams_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 {"rx/agcglobals", 8, "global", &agcglobals_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 {"rx/il2agc", 363, "global", il2agc_handling, 3},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 {"rx/agcwords", 40, "global", &agcwords_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102
289
329c31f7c797 fc-cal2text changed to emit Tx ramps for each band as a single table
Mychaela Falconia <falcon@freecalypso.org>
parents: 142
diff changeset
103 {"tx/ramps.850", 512, "tx-850", &tx_ramps_handling, 1},
142
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 {"tx/levels.850", 128, "tx-850", &tx_levels_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 {"tx/calchan.850", 128, "tx-850", &tx_calchan_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 {"tx/caltemp.850", 40, "tx-850", &tx_caltemp_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 {"rx/calchan.850", 40, "rx-850", &rx_calchan_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 {"rx/caltemp.850", 44, "rx-850", &rx_caltemp_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 {"rx/agcparams.850", 8, "rx-850", &rx_agcparams_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110
289
329c31f7c797 fc-cal2text changed to emit Tx ramps for each band as a single table
Mychaela Falconia <falcon@freecalypso.org>
parents: 142
diff changeset
111 {"tx/ramps.900", 512, "tx-900", &tx_ramps_handling, 1},
142
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 {"tx/levels.900", 128, "tx-900", &tx_levels_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 {"tx/calchan.900", 128, "tx-900", &tx_calchan_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 {"tx/caltemp.900", 40, "tx-900", &tx_caltemp_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 {"rx/calchan.900", 40, "rx-900", &rx_calchan_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 {"rx/caltemp.900", 44, "rx-900", &rx_caltemp_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 {"rx/agcparams.900", 8, "rx-900", &rx_agcparams_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118
289
329c31f7c797 fc-cal2text changed to emit Tx ramps for each band as a single table
Mychaela Falconia <falcon@freecalypso.org>
parents: 142
diff changeset
119 {"tx/ramps.1800", 512, "tx-1800", &tx_ramps_handling, 1},
142
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 {"tx/levels.1800", 128, "tx-1800", &tx_levels_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 {"tx/calchan.1800", 128, "tx-1800", &tx_calchan_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 {"tx/caltemp.1800", 40, "tx-1800", &tx_caltemp_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 {"rx/calchan.1800", 40, "rx-1800", &rx_calchan_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 {"rx/caltemp.1800", 44, "rx-1800", &rx_caltemp_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 {"rx/agcparams.1800", 8, "rx-1800", &rx_agcparams_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126
289
329c31f7c797 fc-cal2text changed to emit Tx ramps for each band as a single table
Mychaela Falconia <falcon@freecalypso.org>
parents: 142
diff changeset
127 {"tx/ramps.1900", 512, "tx-1900", &tx_ramps_handling, 1},
142
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 {"tx/levels.1900", 128, "tx-1900", &tx_levels_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 {"tx/calchan.1900", 128, "tx-1900", &tx_calchan_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 {"tx/caltemp.1900", 40, "tx-1900", &tx_caltemp_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 {"rx/calchan.1900", 40, "rx-1900", &rx_calchan_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 {"rx/caltemp.1900", 44, "rx-1900", &rx_caltemp_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 {"rx/agcparams.1900", 8, "rx-1900", &rx_agcparams_handling, 1},
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 {0, 0, 0, 0, 0}
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 };
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 static
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 try_read_input_file(ip, buf)
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 struct input_file *ip;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 u_char *buf;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 char pathname[MAXPATHLEN];
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 int fd;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 struct stat st;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 sprintf(pathname, "%s/%s", input_dir_base, ip->filename);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 fd = open(pathname, O_RDONLY);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 if (fd < 0)
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 return(0);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 fstat(fd, &st);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 if (!S_ISREG(st.st_mode)) {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 close(fd);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 fprintf(stderr, "%s is not a regular file, skipping\n",
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 pathname);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 return(0);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 }
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 if (st.st_size != ip->expect_size) {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 close(fd);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 fprintf(stderr,
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 "%s has the wrong length (expected %u bytes), skipping\n",
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 pathname, ip->expect_size);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 return(0);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 }
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 read(fd, buf, ip->expect_size);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 close(fd);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 return(1);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 }
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 static void
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 write_outputs(ip, buf)
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 struct input_file *ip;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 u_char *buf;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 char pathname[MAXPATHLEN];
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 struct output_chunk *op;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 unsigned nc;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 FILE *of;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 sprintf(pathname, "%s/%s", output_dir_base, ip->outdir);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 mkdir_existok(pathname);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 op = ip->handling;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 for (nc = 0; nc < ip->nchunks; op++, nc++) {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 sprintf(pathname, "%s/%s/%s", output_dir_base, ip->outdir,
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 op->outfile);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 of = fopen(pathname, "w");
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 if (!of) {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 perror(pathname);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 exit(1);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 }
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 op->conv_func(buf + op->offset, of);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 fclose(of);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 }
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 }
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 main(argc, argv)
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 char **argv;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 struct input_file *ip;
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 u_char buf[512];
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 if (argc != 3) {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 fprintf(stderr, "usage: %s input-dir output-dir\n", argv[0]);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 exit(1);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 }
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 check_directory_exists(argv[1]);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 input_dir_base = argv[1];
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 check_directory_exists(argv[2]);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 output_dir_base = argv[2];
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 for (ip = input_file_list; ip->filename; ip++) {
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 if (try_read_input_file(ip, buf))
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 write_outputs(ip, buf);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 }
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 exit(0);
d41edd329670 fc-cal2text utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 }