FreeCalypso > hg > freecalypso-tools
annotate ffstools/newcomp/tiffs-mkfile.c @ 927:4e243402f453
rvinterf/lowlevel: use libprint for backslash-escape output
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 23 May 2023 03:59:42 +0000 |
parents | f19c347d0a80 |
children |
rev | line source |
---|---|
746
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This program generates certain types of binary files that go into TIFFS. |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * It is intended for use in shell scripts that prepare input trees for |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * tiffs-mkfs. |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 */ |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <sys/types.h> |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <sys/file.h> |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <ctype.h> |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include <stdio.h> |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include <stdlib.h> |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include <string.h> |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include <strings.h> |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #include <unistd.h> |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 #define MAX_FILE_SIZE 256 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 u_char databuf[MAX_FILE_SIZE]; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 unsigned datalen; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 void |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 write_binary_file(filename) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 char *filename; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 int fd, cc; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0666); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 if (fd < 0) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 perror(filename); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 cc = write(fd, databuf, datalen); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 if (cc != datalen) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 perror("error writing to file"); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 close(fd); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 void |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 do_filetype_ascii(str) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 char *str; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 unsigned len; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 len = strlen(str); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 if (len > MAX_FILE_SIZE) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 fprintf(stderr, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 "error: ASCII string exceeds file size limit\n"); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 bcopy(str, databuf, len); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 datalen = len; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 hexdigit(c) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 if (isdigit(c)) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 return(c - '0'); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 else if (isupper(c)) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 return(c - 'A' + 10); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 else |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 return(c - 'a' + 10); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 void |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 do_filetype_hex(hexstr) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 char *hexstr; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 char *cp; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 unsigned len; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 for (cp = hexstr, len = 0; ; cp += 2) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 while (isspace(*cp)) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 cp++; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 if (!*cp) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 break; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 if (!isxdigit(cp[0]) || !isxdigit(cp[1])) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 fprintf(stderr, "error: invalid hex string argument\n"); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 if (len >= MAX_FILE_SIZE) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 fprintf(stderr, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 "error: hex string exceeds file size limit\n"); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 databuf[len++] = hexdigit(cp[0]) << 4 | hexdigit(cp[1]); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 datalen = len; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 void |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 parse_imeisv_arg(input, buf) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 char *input, *buf; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 char *cp; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 int i; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 cp = input; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 if (!isdigit(*cp)) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 inv: fprintf(stderr, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 "error: IMEISV argument must have 16 decimal digits\n"); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 for (i = 0; i < 16; i++) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 if (ispunct(*cp)) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 cp++; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 if (!isdigit(*cp)) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 goto inv; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 buf[i] = *cp++ - '0'; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 if (*cp) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 goto inv; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 void |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 do_filetype_imeisv(strarg) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 char *strarg; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 char digits[16]; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 int i; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 parse_imeisv_arg(strarg, digits); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 for (i = 0; i < 8; i++) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 databuf[i] = digits[i*2] << 4 | digits[i*2+1]; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 datalen = 8; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 void |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 do_filetype_pcm_imei(strarg) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 char *strarg; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 char digits[16]; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 int i; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 parse_imeisv_arg(strarg, digits); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 for (i = 0; i < 8; i++) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 databuf[i] = digits[i*2+1] << 4 | digits[i*2]; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 datalen = 8; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 static struct band_table { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 char *keyword; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 u_char bytes[4]; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 } band_table[] = { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 {"dual-eu", {0x00, 0x0B, 0x41, 0x00}}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 {"dual-us", {0x00, 0x14, 0x00, 0x14}}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 {"tri900", {0x00, 0x0F, 0x41, 0x10}}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 {"tri850", {0x00, 0x16, 0x01, 0x14}}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 {"quad", {0x00, 0x1F, 0x41, 0x14}}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 {0, {0x00, 0x00, 0x00, 0x00}} |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 }; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 static u_char rfcap_tail[12] = {0x00, 0x00, 0x00, 0x00, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 0x50, 0x00, 0x00, 0xA5, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 0x05, 0x00, 0xC0, 0x00}; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 void |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 do_filetype_rfcap(band_config_kw) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 char *band_config_kw; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 struct band_table *tp; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 for (tp = band_table; tp->keyword; tp++) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 if (!strcmp(tp->keyword, band_config_kw)) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 break; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 if (!tp->keyword) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 fprintf(stderr, "error: band configuration \"%s\" not known\n", |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 band_config_kw); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 bcopy(tp->bytes, databuf, 4); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 bcopy(rfcap_tail, databuf + 4, 12); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 datalen = 16; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 static struct file_type { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 char *keyword; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 void (*func)(); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 } file_type_table[] = { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 {"ascii", do_filetype_ascii}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 {"hex", do_filetype_hex}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 {"imeisv", do_filetype_imeisv}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 {"pcm-imei", do_filetype_pcm_imei}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 {"rfcap", do_filetype_rfcap}, |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 /* table search terminator */ |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 {0, 0} |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 }; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 main(argc, argv) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 char **argv; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 struct file_type *tp; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 if (argc != 4) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 fprintf(stderr, "usage: %s dest-file file-type content-str\n", |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 argv[0]); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 for (tp = file_type_table; tp->keyword; tp++) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 if (!strcmp(tp->keyword, argv[2])) |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 break; |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 if (!tp->func) { |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 fprintf(stderr, "error: file type \"%s\" not supported\n", |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 argv[2]); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 exit(1); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 } |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 tp->func(argv[3]); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 write_binary_file(argv[1]); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 exit(0); |
f19c347d0a80
tiffs-mkfile utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 } |