1 | #include <stdint.h>
|
---|
2 | #include <stdio.h>
|
---|
3 | #include <string.h>
|
---|
4 |
|
---|
5 | int main(int argc, char* argv[])
|
---|
6 | {
|
---|
7 | const uint8_t sync[] = {
|
---|
8 | 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3C,0x5A
|
---|
9 | };
|
---|
10 | while(--argc > 0)
|
---|
11 | {
|
---|
12 | uint8_t l;
|
---|
13 | char* path = argv[argc];
|
---|
14 | FILE *in, *out;
|
---|
15 | in = fopen(path, "rb");
|
---|
16 | out = fopen("FILE.K5", "wb");
|
---|
17 |
|
---|
18 | // HEADER BLOCK
|
---|
19 | fwrite(sync, 1, sizeof(sync), out);
|
---|
20 |
|
---|
21 | uint8_t head[17];
|
---|
22 | l = 0;
|
---|
23 | head[l++] = 0; head[l++] = 16;
|
---|
24 | for(int i = 0; l < 13;)
|
---|
25 | {
|
---|
26 | if(i >= strlen(path)) break;
|
---|
27 | if(path[i] == '.') i++;
|
---|
28 | if(path[i] == '/') {
|
---|
29 | l = 2;
|
---|
30 | i++;
|
---|
31 | continue;
|
---|
32 | }
|
---|
33 | head[l++] = path[i++];
|
---|
34 | }
|
---|
35 |
|
---|
36 | while(l < 13) head[l++] = ' ';
|
---|
37 |
|
---|
38 | head[l++] = 2;
|
---|
39 | head[l++] = 0;
|
---|
40 | head[l++] = 0;
|
---|
41 | head[l] = 0;
|
---|
42 |
|
---|
43 | for(int i = 2; i < l; i++)
|
---|
44 | head[l] += head[i];
|
---|
45 | head[l] = -head[l];
|
---|
46 | l++;
|
---|
47 | fwrite(head, 1, 17, out);
|
---|
48 |
|
---|
49 | // DATA BLOCKS
|
---|
50 | for(;;)
|
---|
51 | {
|
---|
52 | uint8_t buf[254];
|
---|
53 | l = fread(buf, 1, 254, in);
|
---|
54 | if(l <= 0) break;
|
---|
55 |
|
---|
56 | fwrite(sync, 1, sizeof(sync), out);
|
---|
57 | head[0] = 1;
|
---|
58 | head[1] = l + 2;
|
---|
59 | fwrite(head, 1, 2, out);
|
---|
60 | fwrite(buf, 1, l, out);
|
---|
61 |
|
---|
62 | head[0] = 0;
|
---|
63 | while(l > 0)
|
---|
64 | head[0] -= buf[--l];
|
---|
65 | fwrite(head, 1, 1, out);
|
---|
66 | }
|
---|
67 |
|
---|
68 | // FOOTER BLOCK
|
---|
69 | fwrite(sync, 1, sizeof(sync), out);
|
---|
70 | head[0] = 255;
|
---|
71 | head[1] = 2;
|
---|
72 | head[2] = 0;
|
---|
73 | fwrite(head, 1, 3, out);
|
---|
74 |
|
---|
75 | fclose(in);
|
---|
76 | fclose(out);
|
---|
77 |
|
---|
78 | }
|
---|
79 | }
|
---|