Lines Matching refs:file

48  * decompress - cat a compressed file
104 BufFilePtr file;
130 static code_int getcode ( CompressedFile *file );
138 CompressedFile *file;
154 file = malloc (sizeof (CompressedFile) + extra);
155 if (!file)
157 file->file = f;
158 file->maxbits = maxbits;
159 file->block_compress = code & BLOCK_MASK;
160 file->maxmaxcode = 1 << file->maxbits;
161 file->tab_suffix = (char_type *) &file[1];
162 file->tab_prefix = (unsigned short *) (file->tab_suffix + file->maxmaxcode);
166 file->maxcode = MAXCODE(file->n_bits = INIT_BITS);
168 file->tab_prefix[code] = 0;
169 file->tab_suffix[code] = (char_type) code;
171 file->free_ent = ((file->block_compress) ? FIRST : 256 );
172 file->oldcode = -1;
173 file->clear_flg = 0;
174 file->offset = 0;
175 file->size = 0;
176 file->stackp = file->de_stack;
177 bzero(file->buf, BITS);
178 return BufFileCreate ((char *) file,
188 CompressedFile *file;
191 file = (CompressedFile *) f->private;
192 raw = file->file;
193 free (file);
201 CompressedFile *file;
207 file = (CompressedFile *) f->private;
211 stackp = file->stackp;
212 de_stack = file->de_stack;
213 finchar = file->finchar;
214 oldcode = file->oldcode;
222 code = getcode (file);
226 if ( (code == CLEAR) && file->block_compress ) {
228 file->tab_prefix[code] = 0;
229 file->clear_flg = 1;
230 file->free_ent = FIRST;
238 if ( code >= file->free_ent ) {
239 if ( code > file->free_ent || oldcode == -1 ) {
258 *stackp++ = file->tab_suffix[code];
259 code = file->tab_prefix[code];
261 finchar = file->tab_suffix[code];
267 if ( (code=file->free_ent) < file->maxmaxcode && oldcode != -1) {
268 file->tab_prefix[code] = (unsigned short)oldcode;
269 file->tab_suffix[code] = finchar;
270 file->free_ent = code+1;
277 file->oldcode = oldcode;
278 file->stackp = stackp;
279 file->finchar = finchar;
302 getcode(CompressedFile *file)
306 register char_type *bp = file->buf;
309 if ( file->clear_flg > 0 || file->offset >= file->size ||
310 file->free_ent > file->maxcode )
317 if ( file->free_ent > file->maxcode ) {
318 file->n_bits++;
319 if ( file->n_bits == file->maxbits )
320 file->maxcode = file->maxmaxcode; /* won't get any bigger now */
322 file->maxcode = MAXCODE(file->n_bits);
324 if ( file->clear_flg > 0) {
325 file->maxcode = MAXCODE (file->n_bits = INIT_BITS);
326 file->clear_flg = 0;
328 bits = file->n_bits;
329 raw = file->file;
335 bp = file->buf;
336 if (bits == file->n_bits)
337 return -1; /* end of file */
338 file->size = file->n_bits - bits;
339 file->offset = 0;
341 file->size = (file->size << 3) - (file->n_bits - 1);
343 r_off = file->offset;
344 bits = file->n_bits;
370 file->offset += file->n_bits;