1 /* Convert a ccs file to a raw binary file
2 *
3 * usage: ccs2bin [-swap] ccsfile binfile
4 */
6 #include <stdio.h>
8 unsigned int swap(unsigned int v)
9 {
10 unsigned int w;
12 w = (((v >> 24) & 0xff) << 0) |
13 (((v >> 16) & 0xff) << 8) |
14 (((v >> 8) & 0xff) << 16) |
15 (((v >> 0) & 0xff) << 24);
17 return (w);
19 }
20 FILE *fin = NULL;
21 FILE *fout = NULL;
22 int doswap = 0;
24 #define USAGE "usage: %s [-swap] ccsfile binfile"
26 int parseit (int argc, char *argv[])
27 {
28 int i;
30 if ((argc != 3) && (argc != 4)) {
31 fprintf (stderr, USAGE, argv[0]);
32 return (-1);
33 }
35 for (i = 1; i < argc; i++) {
37 if (!strcmp (argv[i], "-swap"))
38 doswap = 1;
40 else if (fin == NULL) {
41 fin = fopen (argv[i], "r");
42 if (fin == NULL) {
43 fprintf (stderr, "%s: Could not open file %s\n", argv[0], argv[i]);
44 return (-1);
45 }
47 } else if (fout == NULL) {
48 fout = fopen (argv[i], "wb");
49 if (fout == NULL) {
50 fprintf (stderr, "%s: Could not open file %s\n", argv[0], argv[i]);
51 fclose (fin);
52 return (-1);
53 }
55 } else {
57 fprintf (stderr, USAGE, argv[0]);
58 fclose (fout);
59 fclose (fin);
60 return (-1);
61 }
62 }
64 return (0);
66 }
72 int main (int argc, char *argv[])
73 {
74 unsigned int n;
75 unsigned int v;
76 unsigned int i;
78 int a, b, c, d;
81 char iline[132];
83 if (parseit (argc, argv))
84 return (-1);
86 fgets (iline, 131, fin);
87 sscanf (iline, "%x %x %x %x %x", &a, &b, &c, &d, &n);
90 for (i = 0; i < n; i++) {
91 fgets (iline, 131, fin);
92 sscanf (&iline[2], "%x", &v);
93 if (doswap)
94 v = swap(v);
95 fwrite (&v, sizeof(unsigned int), 1, fout);
96 }
98 fclose (fout);
99 fclose (fin);
101 return (0);
103 }