4 /*----For using tek Begin----*/
7 int appackSub2(const UCHAR **pp, char *pif)
23 int appackSub3u(const UCHAR **pp, char *pif)
27 r = appackSub2(pp, pif);
28 if (0x8 <= r && r <= 0xb) {
29 r = r << 4 | appackSub2(pp, pif);
31 } else if (0xc <= r && r <= 0xd) {
32 r = r << 4 | appackSub2(pp, pif);
33 r = r << 4 | appackSub2(pp, pif);
35 } else if (r == 0xe) {
36 r = appackSub2(pp, pif);
37 r = r << 4 | appackSub2(pp, pif);
38 r = r << 4 | appackSub2(pp, pif);
39 } else if (r == 0x7) {
40 i = appackSub3u(pp, pif);
43 r = r << 4 | appackSub2(pp, pif);
51 int tek5Decomp(UCHAR *buf, UCHAR *buf1, UCHAR *tmp)
53 static char tek5head[16] = {
54 0x89, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
55 0x4f, 0x53, 0x41, 0x53, 0x4b, 0x43, 0x4d, 0x50
57 memcpy(tmp, tek5head, 16);
61 const UCHAR *p = &buf[1];
62 i = appackSub3u(&p, &iif);
63 tmpsiz = appackSub3u(&p, &iif);
64 tmpsiz = tmpsiz << 8 | *p++;
65 *q++ = (tmpsiz >> 27) & 0xfe;
66 *q++ = (tmpsiz >> 20) & 0xfe;
67 *q++ = (tmpsiz >> 13) & 0xfe;
68 *q++ = (tmpsiz >> 6) & 0xfe;
69 *q++ = (tmpsiz << 1 | 1) & 0xff;
70 if (i == 1) *q++ = 0x15;
71 if (i == 2) *q++ = 0x19;
72 if (i == 3) *q++ = 0x21;
73 if (i >= 4) return -9;
77 if(tek_decomp(tmp, buf, tmpsiz) != 0){;
79 fputs("tek decomp error.\n", stderr);
86 /*----For using tek End----*/