jms@cs.vu.nl (Jan Mark Wams) (07/06/90)
ast@cs.vu.nl (Andy Tanenbaum) writes:
\Since we are on the subject of compression, here is another compression
\program written by one of my students, Jan Mark Wams. I haven't had time
\to look at it, but he's a bright fellow.
---------------------------^^^^^^^^^^^^^
Bright thing forgetting the .h files ;-) Here they are in random order....
: This is a shar archive. Extract with sh, not csh.
: This archive ends with exit, so do not worry about trailing junk.
: --------------------------- cut here --------------------------
PATH=/bin:/usr/bin:/usr/ucb
echo Extracting 'bits.h'
sed 's/^X//' > 'bits.h' << '+ END-OF-FILE ''bits.h'
X/*
X** Part of the comic package. (p) Jan-Mark Wams (email: jms@cs.vu.nl)
X**
X** Bits.h: Bit operations header file.
X*/
X
X/* Needs "comic.h" for _PROTOTYPE() */
X
Xvoid _PROTOTYPE( putnbit, (long __code, int __n) );
Xint _PROTOTYPE( getnbit, (int __n) );
Xvoid _PROTOTYPE( putbit, (int __bit) );
Xint _PROTOTYPE( getbit, () );
Xvoid _PROTOTYPE( flush_bits, () );
Xvoid _PROTOTYPE( init_bits, () );
+ END-OF-FILE bits.h
chmod 'u=rw,g=r,o=r' 'bits.h'
set `wc -c 'bits.h'`
count=$1
case $count in
404) :;;
*) echo 'Bad character count in ''bits.h' >&2
echo 'Count should be 404' >&2
esac
echo Extracting 'buffer.h'
sed 's/^X//' > 'buffer.h' << '+ END-OF-FILE ''buffer.h'
X/*
X** Part of the comic package. (p) Jan-Mark Wams (email: jms@cs.vu.nl)
X**
X** Buffer.h: functions for circular buffer menagement.
X*/
X
X/*
X** Global variables. Declared in `comic.c'
X*/
Xextern char *Buff; /* The circular Buffer. */
Xextern char *Bend; /* Pointer to the last char in Buff. */
Xextern char *Blow_sent; /* Pointer to the char befor Buff. */
Xextern char *Bp; /* Pointer to unproccessed char. */
Xextern char *Binputend; /* End of read ahead input. */
Xextern int Bsize; /* Size of the used part of the buffer. */
X#ifdef LINT
Xextern char *memset(); /* To shut up lint, a bit ;-( */
X#endif
X
X#define Bsucc(p) /* pointer after p */\
X ((p) == Bend ? Buff : (p) + 1)
X
X#define Bpred(p) /* pointer before p */\
X ((p) == Buff ? Bend : (p) - 1)
X
X#define Badd(p, n) /* Add n to p, circular. */\
X ((p) + (n) - ((p) + (n) > Bend ? Bsize : 0))
X
X#define Bsub(p, n) /* Substract n from p, circular. */\
X ((p) - (n) + ((p) < Buff + (n) ? Bsize : 0))
X
X#define Bdelta(p, q) /* Return p - q circular. */\
X ((p) - (q) + ((p) < (q) ? Bsize : 0))
X
X#define Blookupstart() /* End of the lookup pair. */\
X Bsub (Bp, NON_INPUT_SIZE)
X
X#define Bclear() /* Clear the buffer. */\
X (void)memset (Buff, '\0', Bsize)
+ END-OF-FILE buffer.h
chmod 'u=rw,g=r,o=r' 'buffer.h'
set `wc -c 'buffer.h'`
count=$1
case $count in
1255) :;;
*) echo 'Bad character count in ''buffer.h' >&2
echo 'Count should be 1255' >&2
esac
echo Extracting 'comic.h'
sed 's/^X//' > 'comic.h' << '+ END-OF-FILE ''comic.h'
X/*
X** Part of the comic package. (p) Jan-Mark Wams (email: jms@cs.vu.nl)
X**
X** Comic.h: General include file for comic source files.
X*/
X
X#ifndef COMIC_H
X#define COMIC_H
X
X#ifdef DOS
X# include <fcntl.h> /* Use O_BINARY by `setmode ()' in SM-DOS. */
X# include <io.h> /* For `setmode()' to. */
X#endif
X#if __STDC__ && ! GCC
X# include <stdlib.h>
X#endif
X#include <assert.h>
X#include <stdio.h>
X
X/*
X** Compress constands.
X*/
X#define HUFFMAN_BITS 8 /* Huffman codes are 8 bits. */
X#define LENGTH_BITS 8 /* # of bits in length info. */
X#define OFFSET_BITS 13 /* # of bits in offset info. */
X#define PAIR_MAX 1 /* There are two pairs. */
X
X/*
X** If above are chainged, chainge these to!
X*/
X#define HUFFMAN_SIZE 256 /* Max for 8 bits. */
X#define LENGTH_SIZE 256 /* Max for 8 bits. */
X#define OFFSET_SIZE 8192 /* Max for 13 bits. */
X#define OFFSET_MIN 1 /* Minimum offset. */
X#define LENGTH_MIN 2 /* Minimum length. */
X#define OFFSET_MAX (OFFSET_SIZE + OFFSET_MIN - 1)
X#define LENGTH_MAX (LENGTH_SIZE + LENGTH_MIN - 1)
X#define INPUT_SIZE (LENGTH_SIZE + PAIR_MAX + LENGTH_MIN)
X#define BUFF_SIZE (INPUT_SIZE + OFFSET_SIZE + OFFSET_MIN)
X#define BUFF_MAX (BUFF_SIZE - 1)
X#define NON_INPUT_SIZE (BUFF_SIZE - INPUT_SIZE)
X#define LOW_OFFSET_BITS (OFFSET_BITS - HUFFMAN_BITS)
X
X
X/*
X** Pairs are build of a start pointer and a length pointer.
X*/
Xtypedef struct pair { /* Part descriptor type. */
X char * start; /* Pointer in the circular Buffer. */
X int length; /* Length of part. */
X} pair_t, *pair_p;
X
X/*
X** Global variables. Declared in `comic.c'
X*/
Xextern char *pname; /* Name of the program. */
Xextern pair_p p0, p1; /* Short hands. */
Xextern long Nin; /* Total # of bytes read. */
Xextern long Nout;
Xextern int v_flag; /* Verbose flag == 1 if -v was given. */
X
X/*
X** All global function prototypes.
X*/
X#ifndef _PROTOTYPE
X# define _PROTOTYPE(func, args) func ()
X#endif /* _PROTOTYPE */
X
Xvoid _PROTOTYPE( putnbit, (long __code, int __n) );
Xint _PROTOTYPE( getinput, () );
Xvoid _PROTOTYPE( gettoken, (int __p0used) );
Xvoid _PROTOTYPE( encode, () );
Xvoid _PROTOTYPE( decode, () );
Xchar * _PROTOTYPE( memrchr, (char *__s, char *__e, char __c) );
X
X#endif /* COMIC_H */
+ END-OF-FILE comic.h
chmod 'u=rw,g=r,o=r' 'comic.h'
set `wc -c 'comic.h'`
count=$1
case $count in
2177) :;;
*) echo 'Bad character count in ''comic.h' >&2
echo 'Count should be 2177' >&2
esac
echo Extracting 'header.h'
sed 's/^X//' > 'header.h' << '+ END-OF-FILE ''header.h'
X/*
X** Part of the comic package. (p) Jan-Mark Wams (email: jms@cs.vu.nl)
X**
X** Header.h: Defines for the comic header bytes and file suffix.
X** The first byte is a normal magic byte.
X** The second byte is eighter 0xAX
X** The X nibble (1/2byte) contains extra info.
X*/
X
X/*
X** First byte is plane magic.
X*/
X#define MAGIC1 (char)0x69 /* Magic number. */
X
X/*
X** Second bytes is half magic half flag.
X*/
X#define MAGIC2 (char)0x60 /* High part of 2d byte. */
X
X#define STATIC_BIT (char)0x8 /* Use buildin Huffman tables. */
X#define DYNAMIC_BIT (char)0x4 /* H. tables precead data. */
X#define SUFFIX_BIT (char)0x2 /* Next three bytes are old suffix. */
X#define EXTEND_BIT (char)0x1 /* More header data. */
X
X/*
X** Third byte indicates extra i/o-processing. EXTEND_BIT has to be set.
X*/
X#define EXTRA_EXTEND (char)0x0 /* Extra extension bytes. */
X#define TRANSLATE (char)0x1 /* Input was xlated. */
X
X/*
X** Note to assist dos, the first three chars after the header can be
X** the original suffix. The suffix bit indicates this.
X*/
X
X
X/*
X** Prototypes.
X*/
Xvoid _PROTOTYPE( put_magic, () );
Xint _PROTOTYPE( magic_ok, () );
+ END-OF-FILE header.h
chmod 'u=rw,g=r,o=r' 'header.h'
set `wc -c 'header.h'`
count=$1
case $count in
1117) :;;
*) echo 'Bad character count in ''header.h' >&2
echo 'Count should be 1117' >&2
esac
echo Extracting 'huffman.h'
sed 's/^X//' > 'huffman.h' << '+ END-OF-FILE ''huffman.h'
X/*
X** Part of the comic package. (p) Jan-Mark Wams (email: jms@cs.vu.nl)
X**
X** Huffman.h: types and routines for the huffman tables.
X*/
X
X/* Needs "comic.h" for _PROTOTYPE() */
X
X/*
X** Tree and code types.
X*/
Xtypedef long bitstr_t;
X
Xtypedef struct tree_s {
X int _0, _1;
X} tree_t [];
X
Xtypedef struct ctab_s {
X bitstr_t code;
X char length; /* Hast to hold upto sizeof (bitstr_t) * 8 bits. */
X} ctab_t [];
X
X#define Hchar 0
X#define Hoff 1
X#define Hlen 2
X
Xint _PROTOTYPE( Hdecode, (int __treei) );
Xvoid _PROTOTYPE( Hencode, (int __ctabi, int __i) );
Xvoid _PROTOTYPE( Hinit, () );
+ END-OF-FILE huffman.h
chmod 'u=rw,g=r,o=r' 'huffman.h'
set `wc -c 'huffman.h'`
count=$1
case $count in
601) :;;
*) echo 'Bad character count in ''huffman.h' >&2
echo 'Count should be 601' >&2
esac
echo Extracting 'tables.h'
sed 's/^X//' > 'tables.h' << '+ END-OF-FILE ''tables.h'
X/*
X** Part of the comic package.
X**
X** Tables.h: Auto generated by comicgen.
X*/
X
Xctab_t ctab_char = { /* {code, length} pairs */
X {0x000054L, 9}, {0x0003B6L, 10}, {0x00067AL, 11}, {0x000242L, 10},
X {0x0033DCL, 14}, {0x000D99L, 13}, {0x000D98L, 13}, {0x00076BL, 11},
X {0x000CF6L, 12}, {0x000017L, 5}, {0x00002CL, 6}, {0x001977L, 14},
X {0x0CF749L, 20}, {0x0001B6L, 10}, {0x0000AAL, 10}, {0x00013BL, 9},
X {0x0006DEL, 12}, {0x0CF748L, 20}, {0x0006CFL, 12}, {0x001976L, 14},
X {0x001975L, 14}, {0x000D97L, 13}, {0x00076AL, 11}, {0x000B4DL, 12},
X {0x000D96L, 13}, {0x000B4CL, 12}, {0x001974L, 14}, {0x001973L, 14},
X {0x000B4BL, 12}, {0x000B4AL, 12}, {0x000B49L, 12}, {0x001972L, 14},
X {0x000008L, 5}, {0x00004FL, 7}, {0x00001CL, 6}, {0x000120L, 9},
X {0x0003B4L, 10}, {0x000031L, 8}, {0x000075L, 7}, {0x000028L, 6},
X {0x00001AL, 5}, {0x000010L, 5}, {0x00001CL, 7}, {0x000030L, 8},
X {0x000003L, 6}, {0x000026L, 6}, {0x000031L, 6}, {0x00003AL, 7},
X {0x000015L, 6}, {0x000002L, 6}, {0x00000BL, 6}, {0x000001L, 7},
X {0x00003EL, 7}, {0x000054L, 7}, {0x000074L, 7}, {0x000061L, 7},
X {0x000055L, 7}, {0x000013L, 8}, {0x00001DL, 7}, {0x00000FL, 6},
X {0x000077L, 7}, {0x000029L, 7}, {0x000056L, 7}, {0x000038L, 9},
X {0x000012L, 8}, {0x000014L, 7}, {0x00002BL, 8}, {0x00002FL, 7},
X {0x00006EL, 7}, {0x000013L, 7}, {0x000066L, 7}, {0x000051L, 8},
X {0x0000B5L, 8}, {0x000045L, 7}, {0x00019FL, 9}, {0x0000A1L, 9},
X {0x000037L, 7}, {0x00006FL, 7}, {0x000057L, 7}, {0x00003DL, 7},
X {0x000060L, 7}, {0x000156L, 11}, {0x000044L, 7}, {0x00000FL, 7},
X {0x00002EL, 7}, {0x00005BL, 7}, {0x0000C9L, 9}, {0x00009CL, 8},
X {0x0000DAL, 9}, {0x0000C8L, 9}, {0x00013AL, 9}, {0x00003CL, 7},
X {0x000039L, 9}, {0x000019L, 7}, {0x00033CL, 10}, {0x000036L, 6},
X {0x000D95L, 13}, {0x00000DL, 6}, {0x000032L, 6}, {0x00001CL, 5},
X {0x000008L, 6}, {0x00001FL, 5}, {0x000016L, 6}, {0x000008L, 7},
X {0x000033L, 7}, {0x000006L, 6}, {0x0000CEL, 8}, {0x00003BL, 7},
X {0x000025L, 6}, {0x000023L, 6}, {0x000005L, 6}, {0x000001L, 6},
X {0x000018L, 6}, {0x000168L, 9}, {0x00001AL, 6}, {0x000009L, 5},
X {0x00001EL, 5}, {0x000029L, 6}, {0x00003FL, 7}, {0x000012L, 7},
X {0x00001DL, 8}, {0x000000L, 7}, {0x0000ECL, 8}, {0x000091L, 8},
X {0x0000A0L, 9}, {0x000049L, 7}, {0x0005A7L, 11}, {0x0CF747L, 20},
X {0x000B48L, 12}, {0x0CF746L, 20}, {0x001971L, 14}, {0x0CF745L, 20},
X {0x001970L, 14}, {0x0CF744L, 20}, {0x00196FL, 14}, {0x0CF743L, 20},
X {0x000D94L, 13}, {0x0CF742L, 20}, {0x0CF741L, 20}, {0x0CF740L, 20},
X {0x067BBFL, 19}, {0x00196EL, 14}, {0x067BBEL, 19}, {0x067BBDL, 19},
X {0x00196DL, 14}, {0x067BBCL, 19}, {0x067BBBL, 19}, {0x067BBAL, 19},
X {0x000D93L, 13}, {0x067BB9L, 19}, {0x00196CL, 14}, {0x067BB8L, 19},
X {0x067BB7L, 19}, {0x00196BL, 14}, {0x000D92L, 13}, {0x00196AL, 14},
X {0x001969L, 14}, {0x001968L, 14}, {0x001967L, 14}, {0x001966L, 14},
X {0x001965L, 14}, {0x000D91L, 13}, {0x000D90L, 13}, {0x000D8FL, 13},
X {0x0003B7L, 10}, {0x000D8EL, 13}, {0x000D8DL, 13}, {0x001964L, 14},
X {0x001963L, 14}, {0x000D8CL, 13}, {0x001962L, 14}, {0x000D8BL, 13},
X {0x001961L, 14}, {0x000D8AL, 13}, {0x001960L, 14}, {0x00195FL, 14},
X {0x00090FL, 12}, {0x000D89L, 13}, {0x00195EL, 14}, {0x000D88L, 13},
X {0x00195DL, 14}, {0x00090EL, 12}, {0x00195CL, 14}, {0x000D87L, 13},
X {0x00195BL, 14}, {0x00195AL, 14}, {0x001959L, 14}, {0x000D86L, 13},
X {0x067BB6L, 19}, {0x000D85L, 13}, {0x067BB5L, 19}, {0x001958L, 14},
X {0x001957L, 14}, {0x00036EL, 11}, {0x000D84L, 13}, {0x001956L, 14},
X {0x001955L, 14}, {0x000D83L, 13}, {0x001954L, 14}, {0x001953L, 14},
X {0x067BB4L, 19}, {0x001952L, 14}, {0x001951L, 14}, {0x001950L, 14},
X {0x00194FL, 14}, {0x00194EL, 14}, {0x067BB3L, 19}, {0x00194DL, 14},
X {0x067BB2L, 19}, {0x00194CL, 14}, {0x067BB1L, 19}, {0x000D82L, 13},
X {0x067BB0L, 19}, {0x00194BL, 14}, {0x067BAFL, 19}, {0x00194AL, 14},
X {0x067BAEL, 19}, {0x001949L, 14}, {0x067BADL, 19}, {0x001948L, 14},
X {0x067BACL, 19}, {0x001947L, 14}, {0x067BABL, 19}, {0x001946L, 14},
X {0x067BAAL, 19}, {0x001945L, 14}, {0x001944L, 14}, {0x001943L, 14},
X {0x001942L, 14}, {0x001941L, 14}, {0x067BA9L, 19}, {0x001940L, 14},
X {0x067BA8L, 19}, {0x000D81L, 13}, {0x067BA7L, 19}, {0x000D80L, 13},
X {0x067BA6L, 19}, {0x0006CEL, 12}, {0x000ABFL, 14}, {0x000ABEL, 14},
X {0x000ABDL, 14}, {0x00090DL, 12}, {0x000ABCL, 14}, {0x0006CDL, 12},
X {0x067BA5L, 19}, {0x000CBFL, 13}, {0x000ABBL, 14}, {0x000CBEL, 13},
X {0x000ABAL, 14}, {0x000CBDL, 13}, {0x000AB9L, 14}, {0x00090CL, 12},
X {0x000AB8L, 14}, {0x000CBCL, 13}, {0x0019EFL, 13}, {0x0006DFL, 12}
X};
X
Xtree_t tree_char = { /* {link 0, link 1} pairs. */
X {17 , 12}, {129, 127}, {133, 131}, {137, 135},
X {139, 138}, {142, 140}, {145, 143}, {147, 146},
X {151, 149}, {188, 152}, {200, 190}, {208, 206},
X {212, 210}, {216, 214}, {220, 218}, {224, 222},
X {232, 230}, {236, 234}, {256, 244}, {258, 257},
X {260, 259}, {262, 261}, {264, 263}, {266, 265},
X {268, 267}, {270, 269}, {272, 271}, {274, 273},
X {276, 275}, {278, 277}, {280, 279}, {282, 281},
X {284, 283}, {286, 285}, {288, 287}, {290, 289},
X {4 , 291}, {19 , 11}, {26 , 20}, {31 , 27},
X {132, 130}, {141, 134}, {150, 144}, {155, 153},
X {157, 156}, {159, 158}, {167, 160}, {170, 168},
X {174, 172}, {178, 175}, {182, 180}, {185, 184},
X {191, 186}, {195, 192}, {198, 196}, {201, 199},
X {203, 202}, {205, 204}, {209, 207}, {215, 213},
X {219, 217}, {223, 221}, {226, 225}, {228, 227},
X {231, 229}, {239, 238}, {242, 240}, {248, 246},
X {252, 250}, {292, 254}, {6 , 5}, {24 , 21},
X {136, 96}, {154, 148}, {162, 161}, {165, 163},
X {169, 166}, {173, 171}, {179, 177}, {187, 183},
X {194, 189}, {211, 197}, {235, 233}, {247, 245},
X {253, 249}, {294, 293}, {296, 295}, {298, 297},
X {300, 299}, {302, 301}, {304, 303}, {306, 305},
X {308, 307}, {310, 309}, {312, 311}, {314, 313},
X {316, 315}, {318, 317}, {320, 319}, {322, 321},
X {324, 323}, {8 , 325}, {25 , 23}, {29 , 28},
X {128, 30}, {181, 176}, {251, 241}, {16 , 255},
X {237, 18}, {326, 243}, {328, 327}, {330, 329},
X {332, 331}, {334, 333}, {336, 335}, {338, 337},
X {340, 339}, {342, 341}, {344, 343}, {346, 345},
X {348, 347}, {350, 349}, {352, 351}, {354, 353},
X {356, 355}, {22 , 7}, {2 , 357}, {358, 126},
X {360, 359}, {362, 361}, {193, 363}, {365, 364},
X {367, 366}, {369, 368}, {371, 370}, {373, 372},
X {375, 374}, {377, 376}, {379, 378}, {81 , 380},
X {1 , 164}, {36 , 381}, {94 , 382}, {384, 383},
X {3 , 385}, {13 , 386}, {388, 387}, {390, 389},
X {392, 391}, {394, 393}, {14 , 395}, {397, 396},
X {398, 74}, {113, 399}, {90 , 15}, {35 , 400},
X {88 , 401}, {403, 402}, {405, 404}, {89 , 86},
X {124, 75}, {0 , 406}, {63 , 92}, {122, 407},
X {106, 408}, {409, 72}, {87 , 410}, {411, 123},
X {413, 412}, {415, 414}, {416, 71}, {43 , 37},
X {417, 66}, {418, 120}, {64 , 57}, {419, 60},
X {54 , 38}, {68 , 77}, {70 , 420}, {80 , 55},
X {421, 85}, {62 , 78}, {53 , 56}, {422, 33},
X {423, 125}, {82 , 73}, {52 , 118}, {91 , 79},
X {47 , 107}, {424, 76}, {425, 104}, {84 , 67},
X {426, 61}, {42 , 58}, {427, 93}, {65 , 428},
X {119, 69}, {429, 83}, {103, 430}, {121, 51},
X {432, 431}, {95 , 433}, {98 , 434}, {435, 46},
X {10 , 436}, {438, 437}, {39 , 117}, {45 , 439},
X {440, 108}, {441, 109}, {443, 442}, {34 , 444},
X {114, 445}, {112, 446}, {102, 447}, {448, 48},
X {449, 59}, {450, 97}, {451, 50}, {100, 452},
X {105, 453}, {454, 110}, {49 , 44}, {455, 111},
X {116, 101}, {99 , 456}, {40 , 457}, {459, 458},
X {460, 9}, {462, 461}, {464, 463}, {41 , 465},
X {467, 466}, {469, 468}, {471, 470}, {32 , 115},
X {473, 472}, {475, 474}, {477, 476}, {479, 478},
X {481, 480}, {483, 482}, {485, 484}, {487, 486},
X {489, 488}, {491, 490}, {493, 492}, {495, 494},
X {497, 496}, {499, 498}, {501, 500}, {503, 502},
X {505, 504}, {507, 506}, {509, 508}
X};
X
Xctab_t ctab_len = { /* {code, length} pairs */
X {0x000002L, 3}, {0x000000L, 3}, {0x000003L, 3}, {0x000005L, 3},
X {0x000006L, 3}, {0x000003L, 4}, {0x000009L, 4}, {0x00000FL, 4},
X {0x000005L, 5}, {0x00001CL, 5}, {0x000008L, 6}, {0x000021L, 6},
X {0x00003AL, 6}, {0x000013L, 7}, {0x000041L, 7}, {0x000045L, 7},
X {0x000076L, 7}, {0x000024L, 8}, {0x00008CL, 8}, {0x000088L, 8},
X {0x00008EL, 8}, {0x0000EEL, 8}, {0x00004AL, 9}, {0x000100L, 9},
X {0x000102L, 9}, {0x000101L, 9}, {0x00011EL, 9}, {0x000206L, 10},
X {0x000225L, 10}, {0x000207L, 10}, {0x000235L, 10}, {0x0001DFL, 9},
X {0x000237L, 10}, {0x00047DL, 11}, {0x0003BDL, 10}, {0x000448L, 11},
X {0x000234L, 10}, {0x00044CL, 11}, {0x00012EL, 11}, {0x00047CL, 11},
X {0x00046DL, 11}, {0x000258L, 12}, {0x000779L, 11}, {0x000778L, 11},
X {0x00025EL, 12}, {0x0008D9L, 12}, {0x259D41L, 24}, {0x0004BEL, 13},
X {0x000892L, 12}, {0x0008D8L, 12}, {0x00089FL, 12}, {0x000966L, 14},
X {0x0008FCL, 12}, {0x0004B7L, 13}, {0x0004B6L, 13}, {0x0011FFL, 13},
X {0x00113DL, 13}, {0x0011FEL, 13}, {0x259D40L, 24}, {0x0011FDL, 13},
X {0x0004B5L, 13}, {0x002275L, 14}, {0x0011FCL, 13}, {0x00259CL, 16},
X {0x002274L, 14}, {0x259D3FL, 24}, {0x002273L, 14}, {0x002272L, 14},
X {0x002271L, 14}, {0x002270L, 14}, {0x00226FL, 14}, {0x0004B4L, 13},
X {0x00226EL, 14}, {0x00226DL, 14}, {0x259D3EL, 24}, {0x0044D1L, 15},
X {0x00226CL, 14}, {0x0004B2L, 13}, {0x00113CL, 13}, {0x00113BL, 13},
X {0x0044D0L, 15}, {0x00449FL, 15}, {0x00449EL, 15}, {0x0011FBL, 13},
X {0x259D3DL, 24}, {0x259D3CL, 24}, {0x259D3BL, 24}, {0x259D3AL, 24},
X {0x00226BL, 14}, {0x259D39L, 24}, {0x00449DL, 15}, {0x00449CL, 15},
X {0x00449BL, 15}, {0x00449AL, 15}, {0x259D38L, 24}, {0x00226AL, 14},
X {0x0011FAL, 13}, {0x004499L, 15}, {0x259D37L, 24}, {0x259D36L, 24},
X {0x004498L, 15}, {0x002269L, 14}, {0x259D35L, 24}, {0x259D34L, 24},
X {0x259D33L, 24}, {0x259D32L, 24}, {0x259D31L, 24}, {0x259D30L, 24},
X {0x259D2FL, 24}, {0x259D2EL, 24}, {0x259D2DL, 24}, {0x259D2CL, 24},
X {0x259D2BL, 24}, {0x259D2AL, 24}, {0x259D29L, 24}, {0x0012FFL, 15},
X {0x259D28L, 24}, {0x259D27L, 24}, {0x259D26L, 24}, {0x259D25L, 24},
X {0x259D24L, 24}, {0x259D23L, 24}, {0x259D22L, 24}, {0x259D21L, 24},
X {0x259D20L, 24}, {0x259D1FL, 24}, {0x0012FEL, 15}, {0x259D1EL, 24},
X {0x259D1DL, 24}, {0x259D1CL, 24}, {0x259D1BL, 24}, {0x259D1AL, 24},
X {0x259D19L, 24}, {0x259D18L, 24}, {0x259D17L, 24}, {0x259D16L, 24},
X {0x259D15L, 24}, {0x0012FDL, 15}, {0x259D14L, 24}, {0x259D13L, 24},
X {0x259D12L, 24}, {0x259D11L, 24}, {0x259D10L, 24}, {0x259D0FL, 24},
X {0x259D0EL, 24}, {0x259D0DL, 24}, {0x259D0CL, 24}, {0x259D0BL, 24},
X {0x259D0AL, 24}, {0x259D09L, 24}, {0x259D08L, 24}, {0x259D07L, 24},
X {0x259D06L, 24}, {0x259D05L, 24}, {0x0012FCL, 15}, {0x259D04L, 24},
X {0x259D03L, 24}, {0x259D02L, 24}, {0x259D01L, 24}, {0x259D00L, 24},
X {0x12CEFFL, 23}, {0x12CEFEL, 23}, {0x12CEFDL, 23}, {0x12CEFCL, 23},
X {0x12CEFBL, 23}, {0x12CEFAL, 23}, {0x12CEF9L, 23}, {0x12CEF8L, 23},
X {0x12CEF7L, 23}, {0x12CEF6L, 23}, {0x12CEF5L, 23}, {0x0012CFL, 15},
X {0x12CEF4L, 23}, {0x12CEF3L, 23}, {0x12CEF2L, 23}, {0x12CEF1L, 23},
X {0x12CEF0L, 23}, {0x12CEEFL, 23}, {0x12CEEEL, 23}, {0x12CEEDL, 23},
X {0x12CEECL, 23}, {0x12CEEBL, 23}, {0x12CEEAL, 23}, {0x12CEE9L, 23},
X {0x12CEE8L, 23}, {0x12CEE7L, 23}, {0x12CEE6L, 23}, {0x12CEE5L, 23},
X {0x12CEE4L, 23}, {0x12CEE3L, 23}, {0x12CEE2L, 23}, {0x12CEE1L, 23},
X {0x12CEE0L, 23}, {0x12CEDFL, 23}, {0x12CEDEL, 23}, {0x12CEDDL, 23},
X {0x12CEDCL, 23}, {0x12CEDBL, 23}, {0x12CEDAL, 23}, {0x12CED9L, 23},
X {0x12CED8L, 23}, {0x12CED7L, 23}, {0x12CED6L, 23}, {0x12CED5L, 23},
X {0x12CED4L, 23}, {0x12CED3L, 23}, {0x12CED2L, 23}, {0x12CED1L, 23},
X {0x12CED0L, 23}, {0x12CECFL, 23}, {0x12CECEL, 23}, {0x12CECDL, 23},
X {0x12CECCL, 23}, {0x12CECBL, 23}, {0x12CECAL, 23}, {0x12CEC9L, 23},
X {0x12CEC8L, 23}, {0x12CEC7L, 23}, {0x12CEC6L, 23}, {0x12CEC5L, 23},
X {0x12CEC4L, 23}, {0x12CEC3L, 23}, {0x12CEC2L, 23}, {0x12CEC1L, 23},
X {0x12CEC0L, 23}, {0x12CEBFL, 23}, {0x12CEBEL, 23}, {0x12CEBDL, 23},
X {0x12CEBCL, 23}, {0x12CEBBL, 23}, {0x12CEBAL, 23}, {0x12CEB9L, 23},
X {0x12CEB8L, 23}, {0x12CEB7L, 23}, {0x12CEB6L, 23}, {0x12CEB5L, 23},
X {0x12CEB4L, 23}, {0x12CEB3L, 23}, {0x12CEB2L, 23}, {0x12CEB1L, 23},
X {0x12CEB0L, 23}, {0x12CEAFL, 23}, {0x12CEAEL, 23}, {0x12CEADL, 23},
X {0x12CEACL, 23}, {0x12CEABL, 23}, {0x12CEAAL, 23}, {0x12CEA9L, 23},
X {0x12CEA8L, 23}, {0x12CEA7L, 23}, {0x12CEA6L, 23}, {0x12CEA5L, 23},
X {0x12CEA4L, 23}, {0x12CEA3L, 23}, {0x12CEA2L, 23}, {0x12CEA1L, 23}
X};
X
Xtree_t tree_len = { /* {link 0, link 1} pairs. */
X {58 , 46}, {74 , 65}, {85 , 84}, {87 , 86},
X {94 , 89}, {99 , 98}, {103, 102}, {105, 104},
X {107, 106}, {109, 108}, {111, 110}, {113, 112},
X {116, 114}, {118, 117}, {120, 119}, {122, 121},
X {124, 123}, {127, 125}, {129, 128}, {131, 130},
X {133, 132}, {135, 134}, {138, 136}, {140, 139},
X {142, 141}, {144, 143}, {146, 145}, {148, 147},
X {150, 149}, {152, 151}, {155, 153}, {157, 156},
X {159, 158}, {161, 160}, {163, 162}, {165, 164},
X {167, 166}, {169, 168}, {172, 170}, {174, 173},
X {176, 175}, {178, 177}, {180, 179}, {182, 181},
X {184, 183}, {186, 185}, {188, 187}, {190, 189},
X {192, 191}, {194, 193}, {196, 195}, {198, 197},
X {200, 199}, {202, 201}, {204, 203}, {206, 205},
X {208, 207}, {210, 209}, {212, 211}, {214, 213},
X {216, 215}, {218, 217}, {220, 219}, {222, 221},
X {224, 223}, {226, 225}, {228, 227}, {230, 229},
X {232, 231}, {234, 233}, {236, 235}, {238, 237},
X {240, 239}, {242, 241}, {244, 243}, {246, 245},
X {248, 247}, {250, 249}, {252, 251}, {254, 253},
X {256, 255}, {258, 257}, {260, 259}, {262, 261},
X {264, 263}, {266, 265}, {268, 267}, {270, 269},
X {272, 271}, {274, 273}, {276, 275}, {278, 277},
X {280, 279}, {282, 281}, {284, 283}, {286, 285},
X {288, 287}, {290, 289}, {292, 291}, {294, 293},
X {296, 295}, {298, 297}, {300, 299}, {302, 301},
X {304, 303}, {306, 305}, {308, 307}, {310, 309},
X {312, 311}, {314, 313}, {316, 315}, {318, 317},
X {320, 319}, {322, 321}, {324, 323}, {326, 325},
X {328, 327}, {330, 329}, {332, 331}, {334, 333},
X {336, 335}, {338, 337}, {340, 339}, {342, 341},
X {344, 343}, {346, 345}, {348, 347}, {350, 349},
X {352, 351}, {354, 353}, {356, 355}, {358, 357},
X {360, 359}, {362, 361}, {364, 363}, {366, 365},
X {368, 367}, {370, 369}, {372, 371}, {374, 373},
X {376, 375}, {378, 377}, {380, 379}, {382, 381},
X {384, 383}, {386, 385}, {388, 387}, {390, 389},
X {392, 391}, {394, 393}, {396, 395}, {398, 397},
X {400, 399}, {402, 401}, {404, 403}, {406, 405},
X {408, 407}, {410, 409}, {412, 411}, {414, 413},
X {63 , 415}, {80 , 75}, {82 , 81}, {91 , 90},
X {93 , 92}, {100, 97}, {126, 115}, {154, 137},
X {416, 171}, {64 , 61}, {67 , 66}, {69 , 68},
X {72 , 70}, {76 , 73}, {95 , 88}, {417, 101},
X {419, 418}, {421, 420}, {423, 422}, {51 , 424},
X {57 , 55}, {62 , 59}, {96 , 83}, {78 , 56},
X {425, 79}, {427, 426}, {429, 428}, {431, 430},
X {433, 432}, {47 , 434}, {54 , 53}, {71 , 60},
X {77 , 435}, {437, 436}, {52 , 438}, {49 , 45},
X {439, 50}, {441, 440}, {443, 442}, {48 , 444},
X {44 , 445}, {447, 446}, {41 , 448}, {43 , 42},
X {450, 449}, {39 , 33}, {451, 40}, {453, 452},
X {37 , 454}, {35 , 455}, {38 , 456}, {458, 457},
X {459, 34}, {461, 460}, {462, 32}, {36 , 30},
X {464, 463}, {465, 28}, {27 , 29}, {467, 466},
X {468, 31}, {26 , 469}, {471, 470}, {473, 472},
X {24 , 474}, {23 , 25}, {22 , 475}, {21 , 476},
X {20 , 477}, {18 , 478}, {19 , 479}, {481, 480},
X {17 , 482}, {16 , 483}, {485, 484}, {486, 15},
X {487, 14}, {488, 13}, {12 , 489}, {491, 490},
X {492, 11}, {10 , 493}, {9 , 494}, {496, 495},
X {497, 8}, {498, 7}, {499, 6}, {500, 5},
X {4 , 501}, {502, 3}, {0 , 2}, {1 , 503},
X {505, 504}, {507, 506}, {509, 508}
X};
X
Xctab_t ctab_off = { /* {code, length} pairs */
X {0x000007L, 3}, {0x000003L, 4}, {0x00000CL, 4}, {0x00000AL, 5},
X {0x000012L, 5}, {0x00001BL, 5}, {0x000008L, 6}, {0x000010L, 6},
X {0x00001CL, 6}, {0x00001FL, 6}, {0x000028L, 6}, {0x000008L, 7},
X {0x000035L, 6}, {0x000003L, 7}, {0x00000BL, 7}, {0x00002FL, 6},
X {0x00000EL, 7}, {0x000024L, 7}, {0x000026L, 7}, {0x00003AL, 7},
X {0x00003CL, 7}, {0x000040L, 7}, {0x00004EL, 7}, {0x000045L, 7},
X {0x000005L, 8}, {0x000057L, 7}, {0x00005AL, 7}, {0x000003L, 8},
X {0x00000CL, 8}, {0x00002AL, 8}, {0x00001FL, 8}, {0x000002L, 8},
X {0x00000AL, 8}, {0x00004CL, 7}, {0x000009L, 8}, {0x00002CL, 8},
X {0x00004FL, 8}, {0x000019L, 8}, {0x000065L, 8}, {0x000089L, 8},
X {0x000087L, 8}, {0x000029L, 8}, {0x00002FL, 8}, {0x00008DL, 8},
X {0x00006BL, 8}, {0x000063L, 8}, {0x00006DL, 8}, {0x00005AL, 8},
X {0x000085L, 8}, {0x000060L, 8}, {0x00005CL, 8}, {0x00009BL, 8},
X {0x0000A5L, 8}, {0x00006FL, 8}, {0x0000A4L, 8}, {0x000083L, 8},
X {0x0000ACL, 8}, {0x000084L, 8}, {0x00008EL, 8}, {0x00009AL, 8},
X {0x0000D2L, 8}, {0x0000BBL, 8}, {0x00002BL, 9}, {0x0000ABL, 8},
X {0x000017L, 9}, {0x0000BAL, 8}, {0x0000AAL, 8}, {0x000035L, 9},
X {0x0000A8L, 8}, {0x000016L, 9}, {0x0000B9L, 8}, {0x000008L, 9},
X {0x00003DL, 9}, {0x00008AL, 9}, {0x000026L, 9}, {0x000009L, 9},
X {0x0000B8L, 8}, {0x00001DL, 9}, {0x000000L, 9}, {0x0000B7L, 8},
X {0x00002AL, 9}, {0x00005DL, 9}, {0x000095L, 9}, {0x000050L, 9},
X {0x00004AL, 9}, {0x0000BFL, 9}, {0x00004FL, 9}, {0x0000BBL, 9},
X {0x00008DL, 9}, {0x00004EL, 9}, {0x00003CL, 9}, {0x00009CL, 9},
X {0x0000CFL, 9}, {0x0000C5L, 9}, {0x000057L, 9}, {0x000088L, 9},
X {0x0000D8L, 9}, {0x000037L, 9}, {0x00014FL, 9}, {0x000056L, 9},
X {0x000094L, 9}, {0x000051L, 9}, {0x0000B0L, 9}, {0x0000CEL, 9},
X {0x00005CL, 9}, {0x0000F7L, 9}, {0x000097L, 9}, {0x0000DDL, 9},
X {0x0000D5L, 9}, {0x0000D4L, 9}, {0x00008CL, 9}, {0x0000B6L, 9},
X {0x0000F6L, 9}, {0x0000D3L, 9}, {0x0000BEL, 9}, {0x000118L, 9},
X {0x00016CL, 9}, {0x0000D2L, 9}, {0x0000BDL, 9}, {0x000023L, 10},
X {0x0000DCL, 9}, {0x000105L, 9}, {0x000167L, 9}, {0x0000F5L, 9},
X {0x000111L, 9}, {0x00004BL, 10}, {0x0000F4L, 9}, {0x0000C4L, 9},
X {0x00013EL, 9}, {0x0000C9L, 9}, {0x0000CDL, 9}, {0x00004AL, 10},
X {0x0000C3L, 9}, {0x00011FL, 9}, {0x00014EL, 9}, {0x000167L, 10},
X {0x0001A1L, 9}, {0x000153L, 9}, {0x000119L, 9}, {0x0000EDL, 9},
X {0x000039L, 10}, {0x00009BL, 10}, {0x0000D1L, 9}, {0x000163L, 9},
X {0x0000B7L, 10}, {0x000162L, 9}, {0x000052L, 10}, {0x000152L, 9},
X {0x000051L, 10}, {0x000068L, 10}, {0x000038L, 10}, {0x0000BCL, 9},
X {0x000037L, 10}, {0x00014DL, 9}, {0x00013DL, 9}, {0x000007L, 10},
X {0x00010CL, 9}, {0x000161L, 9}, {0x000049L, 10}, {0x000006L, 10},
X {0x00011EL, 9}, {0x00006DL, 10}, {0x000160L, 9}, {0x0001A6L, 9},
X {0x000104L, 9}, {0x000166L, 9}, {0x000048L, 10}, {0x0001A3L, 9},
X {0x00014CL, 9}, {0x00015BL, 9}, {0x000165L, 9}, {0x000036L, 10},
X {0x000063L, 10}, {0x0001A0L, 9}, {0x000005L, 10}, {0x000164L, 9},
X {0x000093L, 10}, {0x000022L, 10}, {0x000110L, 9}, {0x00006CL, 10},
X {0x000004L, 10}, {0x00013CL, 9}, {0x000003L, 10}, {0x00003FL, 10},
X {0x000002L, 10}, {0x0001A2L, 9}, {0x00009AL, 10}, {0x000035L, 10},
X {0x000116L, 10}, {0x0001A7L, 9}, {0x00013FL, 9}, {0x000050L, 10},
X {0x00004FL, 10}, {0x000113L, 10}, {0x00012CL, 10}, {0x000092L, 10},
X {0x000034L, 10}, {0x000175L, 10}, {0x000166L, 10}, {0x000091L, 10},
X {0x000099L, 10}, {0x0001D8L, 10}, {0x00003EL, 10}, {0x000112L, 10},
X {0x0000B6L, 10}, {0x000190L, 10}, {0x0001A0L, 10}, {0x00004EL, 10},
X {0x00013AL, 10}, {0x00015AL, 9}, {0x0001B3L, 10}, {0x00021BL, 10},
X {0x000165L, 10}, {0x000062L, 10}, {0x000098L, 10}, {0x000097L, 10},
X {0x000021L, 10}, {0x000069L, 10}, {0x000061L, 10}, {0x000164L, 10},
X {0x00011FL, 10}, {0x000163L, 10}, {0x000174L, 10}, {0x00012DL, 10},
X {0x0001B2L, 10}, {0x000096L, 10}, {0x00011EL, 10}, {0x00011DL, 10},
X {0x0001A1L, 10}, {0x000090L, 10}, {0x000199L, 10}, {0x00003DL, 10},
X {0x0000B5L, 10}, {0x000162L, 10}, {0x0001DFL, 10}, {0x00016FL, 10},
X {0x000185L, 10}, {0x00003CL, 10}, {0x0001DEL, 10}, {0x00011CL, 10},
X {0x00013BL, 10}, {0x000184L, 10}, {0x0002DBL, 10}, {0x000198L, 10},
X {0x00021AL, 10}, {0x0000B4L, 10}, {0x0002DAL, 10}, {0x000060L, 10},
X {0x0001DDL, 10}, {0x0001DCL, 10}, {0x0001D9L, 10}, {0x000053L, 10},
X {0x000117L, 10}, {0x000020L, 10}, {0x000191L, 10}, {0x00016EL, 10}
X};
X
Xtree_t tree_off = { /* {link 0, link 1} pairs. */
X {246, 242}, {244, 211}, {238, 234}, {249, 248},
X {201, 250}, {224, 210}, {206, 228}, {243, 230},
X {205, 254}, {241, 236}, {222, 197}, {255, 235},
X {198, 135}, {219, 212}, {233, 221}, {208, 240},
X {194, 223}, {226, 220}, {239, 227}, {188, 252},
X {203, 193}, {204, 144}, {245, 232}, {186, 141},
X {214, 200}, {225, 215}, {195, 176}, {229, 199},
X {179, 161}, {149, 217}, {213, 172}, {247, 218},
X {146, 251}, {191, 148}, {207, 192}, {131, 125},
X {166, 158}, {202, 183}, {237, 231}, {150, 140},
X {171, 152}, {196, 187}, {177, 119}, {253, 216},
X {159, 155}, {180, 174}, {184, 182}, {163, 189},
X {185, 167}, {173, 136}, {116, 256}, {165, 122},
X {175, 170}, {145, 143}, {162, 157}, {209, 169},
X {147, 137}, {134, 98}, {168, 153}, {128, 190},
X {181, 154}, {160, 133}, {115, 138}, {178, 124},
X {156, 257}, {164, 121}, {112, 105}, {126, 123},
X {259, 258}, {260, 139}, {120, 107}, {96 , 261},
X {109, 108}, {117, 113}, {262, 142}, {103, 92},
X {263, 130}, {264, 129}, {127, 93}, {265, 132},
X {114, 85}, {151, 118}, {266, 87}, {111, 267},
X {269, 268}, {102, 270}, {91 , 271}, {272, 106},
X {100, 82}, {274, 273}, {110, 88}, {73 , 275},
X {95 , 276}, {104, 81}, {278, 277}, {99 , 94},
X {83 , 101}, {89 , 86}, {280, 279}, {84 , 281},
X {283, 282}, {90 , 72}, {284, 97}, {285, 67},
X {287, 286}, {80 , 62}, {289, 288}, {74 , 290},
X {292, 291}, {294, 293}, {295, 77}, {297, 296},
X {69 , 64}, {299, 298}, {71 , 75}, {301, 300},
X {78 , 302}, {60 , 303}, {305, 304}, {65 , 61},
X {76 , 70}, {306, 79}, {308, 307}, {310, 309},
X {56 , 311}, {66 , 63}, {68 , 312}, {314, 313},
X {54 , 52}, {316, 315}, {59 , 51}, {58 , 317},
X {318, 43}, {319, 39}, {320, 40}, {57 , 48},
X {321, 55}, {323, 322}, {325, 324}, {326, 53},
X {327, 46}, {328, 44}, {330, 329}, {332, 331},
X {333, 38}, {334, 45}, {49 , 335}, {337, 336},
X {50 , 338}, {47 , 339}, {341, 340}, {342, 36},
X {344, 343}, {346, 345}, {348, 347}, {349, 42},
X {35 , 350}, {29 , 351}, {352, 41}, {354, 353},
X {356, 355}, {357, 30}, {359, 358}, {360, 37},
X {362, 361}, {364, 363}, {366, 365}, {28 , 367},
X {32 , 368}, {369, 34}, {370, 24}, {31 , 27},
X {372, 371}, {374, 373}, {376, 375}, {26 , 377},
X {379, 378}, {380, 25}, {382, 381}, {384, 383},
X {22 , 385}, {33 , 386}, {388, 387}, {389, 23},
X {391, 390}, {21 , 392}, {20 , 393}, {19 , 394},
X {396, 395}, {398, 397}, {400, 399}, {402, 401},
X {404, 403}, {406, 405}, {18 , 407}, {17 , 408},
X {410, 409}, {412, 411}, {414, 413}, {416, 415},
X {16 , 417}, {419, 418}, {420, 14}, {11 , 421},
X {423, 422}, {425, 424}, {426, 13}, {428, 427},
X {429, 12}, {430, 15}, {432, 431}, {434, 433},
X {10 , 435}, {437, 436}, {439, 438}, {441, 440},
X {442, 9}, {8 , 443}, {445, 444}, {447, 446},
X {449, 448}, {451, 450}, {7 , 452}, {454, 453},
X {6 , 455}, {457, 456}, {459, 458}, {461, 460},
X {463, 462}, {464, 5}, {466, 465}, {468, 467},
X {4 , 469}, {471, 470}, {473, 472}, {475, 474},
X {3 , 476}, {478, 477}, {480, 479}, {482, 481},
X {484, 483}, {2 , 485}, {487, 486}, {489, 488},
X {491, 490}, {493, 492}, {494, 1}, {496, 495},
X {497, 0}, {499, 498}, {501, 500}, {503, 502},
X {505, 504}, {507, 506}, {509, 508}
X};
+ END-OF-FILE tables.h
chmod 'u=rw,g=r,o=r' 'tables.h'
set `wc -c 'tables.h'`
count=$1
case $count in
23395) :;;
*) echo 'Bad character count in ''tables.h' >&2
echo 'Count should be 23395' >&2
esac
exit 0