Lines Matching refs:file
48 * decompress - cat a compressed file
103 BufFilePtr file;
129 static code_int getcode ( CompressedFile *file );
137 CompressedFile *file;
153 file = malloc (sizeof (CompressedFile) + extra);
154 if (!file)
156 file->file = f;
157 file->maxbits = maxbits;
158 file->block_compress = code & BLOCK_MASK;
159 file->maxmaxcode = 1 << file->maxbits;
160 file->tab_suffix = (char_type *) &file[1];
161 file->tab_prefix = (unsigned short *) (file->tab_suffix + file->maxmaxcode);
165 file->maxcode = MAXCODE(file->n_bits = INIT_BITS);
167 file->tab_prefix[code] = 0;
168 file->tab_suffix[code] = (char_type) code;
170 file->free_ent = ((file->block_compress) ? FIRST : 256 );
171 file->oldcode = -1;
172 file->clear_flg = 0;
173 file->offset = 0;
174 file->size = 0;
175 file->stackp = file->de_stack;
176 bzero(file->buf, BITS);
177 return BufFileCreate ((char *) file,
187 CompressedFile *file;
190 file = (CompressedFile *) f->private;
191 raw = file->file;
192 free (file);
200 CompressedFile *file;
206 file = (CompressedFile *) f->private;
210 stackp = file->stackp;
211 de_stack = file->de_stack;
212 finchar = file->finchar;
213 oldcode = file->oldcode;
221 code = getcode (file);
225 if ( (code == CLEAR) && file->block_compress ) {
227 file->tab_prefix[code] = 0;
228 file->clear_flg = 1;
229 file->free_ent = FIRST;
237 if ( code >= file->free_ent ) {
238 if ( code > file->free_ent || oldcode == -1 ) {
257 *stackp++ = file->tab_suffix[code];
258 code = file->tab_prefix[code];
260 finchar = file->tab_suffix[code];
266 if ( (code=file->free_ent) < file->maxmaxcode && oldcode != -1) {
267 file->tab_prefix[code] = (unsigned short)oldcode;
268 file->tab_suffix[code] = finchar;
269 file->free_ent = code+1;
276 file->oldcode = oldcode;
277 file->stackp = stackp;
278 file->finchar = finchar;
301 getcode(CompressedFile *file)
305 register char_type *bp = file->buf;
308 if ( file->clear_flg > 0 || file->offset >= file->size ||
309 file->free_ent > file->maxcode )
316 if ( file->free_ent > file->maxcode ) {
317 file->n_bits++;
318 if ( file->n_bits == file->maxbits )
319 file->maxcode = file->maxmaxcode; /* won't get any bigger now */
321 file->maxcode = MAXCODE(file->n_bits);
323 if ( file->clear_flg > 0) {
324 file->maxcode = MAXCODE (file->n_bits = INIT_BITS);
325 file->clear_flg = 0;
327 bits = file->n_bits;
328 raw = file->file;
334 bp = file->buf;
335 if (bits == file->n_bits)
336 return -1; /* end of file */
337 file->size = file->n_bits - bits;
338 file->offset = 0;
340 file->size = (file->size << 3) - (file->n_bits - 1);
342 r_off = file->offset;
343 bits = file->n_bits;
369 file->offset += file->n_bits;