Lines Matching full:zs

44 #define	tab_prefixof(i)	(zs->zs_codetab[i])
45 #define tab_suffixof(i) ((char_type *)(zs->zs_htab))[i]
129 static code_int getcode(struct s_zstate *zs);
165 zclose(void *zs) in zclose() argument
167 free(zs); in zclose()
175 struct s_zstate *zs; in zdopen() local
177 if ((zs = calloc(1, sizeof(struct s_zstate))) == NULL) in zdopen()
180 zs->zs_state = S_START; in zdopen()
183 zs->zs_hsize = HSIZE; /* For dynamic table sizing. */ in zdopen()
184 zs->zs_free_ent = 0; /* First unused entry. */ in zdopen()
185 zs->zs_block_compress = BLOCK_MASK; in zdopen()
186 zs->zs_clear_flg = 0; /* XXX we calloc()'d this structure why = 0? */ in zdopen()
187 zs->zs_ratio = 0; in zdopen()
188 zs->zs_checkpoint = CHECK_GAP; in zdopen()
189 zs->zs_in_count = 1; /* Length of input. */ in zdopen()
190 zs->zs_out_count = 0; /* # of codes output (for debugging). */ in zdopen()
191 zs->u.r.zs_roffset = 0; in zdopen()
192 zs->u.r.zs_size = 0; in zdopen()
198 if ((zs->zs_fp = fdopen(fd, "r")) == NULL) { in zdopen()
199 free(zs); in zdopen()
203 return funopen(zs, zread, NULL, NULL, zclose); in zdopen()
216 struct s_zstate *zs; in zread() local
222 zs = cookie; in zread()
225 switch (zs->zs_state) { in zread()
227 zs->zs_state = S_MIDDLE; in zread()
239 if (fread(header + i, 1, sizeof(header) - i, zs->zs_fp) != in zread()
246 zs->zs_maxbits = header[2]; /* Set -b from file. */ in zread()
247 zs->zs_block_compress = zs->zs_maxbits & BLOCK_MASK; in zread()
248 zs->zs_maxbits &= BIT_MASK; in zread()
249 zs->zs_maxmaxcode = 1L << zs->zs_maxbits; in zread()
250 if (zs->zs_maxbits > BITS || zs->zs_maxbits < 12) { in zread()
255 zs->zs_maxcode = MAXCODE(zs->zs_n_bits = INIT_BITS); in zread()
256 for (zs->u.r.zs_code = 255; zs->u.r.zs_code >= 0; zs->u.r.zs_code--) { in zread()
257 tab_prefixof(zs->u.r.zs_code) = 0; in zread()
258 tab_suffixof(zs->u.r.zs_code) = (char_type) zs->u.r.zs_code; in zread()
260 zs->zs_free_ent = zs->zs_block_compress ? FIRST : 256; in zread()
262 zs->u.r.zs_oldcode = -1; in zread()
263 zs->u.r.zs_stackp = de_stack; in zread()
265 while ((zs->u.r.zs_code = getcode(zs)) > -1) { in zread()
267 if ((zs->u.r.zs_code == CLEAR) && zs->zs_block_compress) { in zread()
268 for (zs->u.r.zs_code = 255; zs->u.r.zs_code >= 0; in zread()
269 zs->u.r.zs_code--) in zread()
270 tab_prefixof(zs->u.r.zs_code) = 0; in zread()
271 zs->zs_clear_flg = 1; in zread()
272 zs->zs_free_ent = FIRST; in zread()
273 zs->u.r.zs_oldcode = -1; in zread()
276 zs->u.r.zs_incode = zs->u.r.zs_code; in zread()
279 if (zs->u.r.zs_code >= zs->zs_free_ent) { in zread()
280 if (zs->u.r.zs_code > zs->zs_free_ent || in zread()
281 zs->u.r.zs_oldcode == -1) { in zread()
286 *zs->u.r.zs_stackp++ = zs->u.r.zs_finchar; in zread()
287 zs->u.r.zs_code = zs->u.r.zs_oldcode; in zread()
297 while (zs->u.r.zs_code >= 256) { in zread()
298 *zs->u.r.zs_stackp++ = tab_suffixof(zs->u.r.zs_code); in zread()
299 zs->u.r.zs_code = tab_prefixof(zs->u.r.zs_code); in zread()
301 *zs->u.r.zs_stackp++ = zs->u.r.zs_finchar = tab_suffixof(zs->u.r.zs_code); in zread()
307 *bp++ = *--zs->u.r.zs_stackp; in zread()
308 } while (zs->u.r.zs_stackp > de_stack); in zread()
311 if ((zs->u.r.zs_code = zs->zs_free_ent) < zs->zs_maxmaxcode && in zread()
312 zs->u.r.zs_oldcode != -1) { in zread()
313 tab_prefixof(zs->u.r.zs_code) = (u_short) zs->u.r.zs_oldcode; in zread()
314 tab_suffixof(zs->u.r.zs_code) = zs->u.r.zs_finchar; in zread()
315 zs->zs_free_ent = zs->u.r.zs_code + 1; in zread()
319 zs->u.r.zs_oldcode = zs->u.r.zs_incode; in zread()
321 zs->zs_state = S_EOF; in zread()
333 getcode(struct s_zstate *zs) in getcode() argument
339 bp = zs->u.r.zs_gbuf; in getcode()
340 if (zs->zs_clear_flg > 0 || zs->u.r.zs_roffset >= zs->u.r.zs_size || in getcode()
341 zs->zs_free_ent > zs->zs_maxcode) { in getcode()
347 if (zs->zs_free_ent > zs->zs_maxcode) { in getcode()
348 zs->zs_n_bits++; in getcode()
349 if (zs->zs_n_bits == zs->zs_maxbits) /* Won't get any bigger now. */ in getcode()
350 zs->zs_maxcode = zs->zs_maxmaxcode; in getcode()
352 zs->zs_maxcode = MAXCODE(zs->zs_n_bits); in getcode()
354 if (zs->zs_clear_flg > 0) { in getcode()
355 zs->zs_maxcode = MAXCODE(zs->zs_n_bits = INIT_BITS); in getcode()
356 zs->zs_clear_flg = 0; in getcode()
359 for (i = 0; i < zs->zs_n_bits && compressed_prelen; i++, compressed_prelen--) in getcode()
360 zs->u.r.zs_gbuf[i] = *compressed_pre++; in getcode()
361 zs->u.r.zs_size = fread(zs->u.r.zs_gbuf + i, 1, zs->zs_n_bits - i, zs->zs_fp); in getcode()
362 zs->u.r.zs_size += i; in getcode()
363 if (zs->u.r.zs_size <= 0) /* End of file. */ in getcode()
365 zs->u.r.zs_roffset = 0; in getcode()
367 total_compressed_bytes += zs->u.r.zs_size; in getcode()
370 zs->u.r.zs_size = (zs->u.r.zs_size << 3) - (zs->zs_n_bits - 1); in getcode()
372 r_off = zs->u.r.zs_roffset; in getcode()
373 bits = zs->zs_n_bits; in getcode()
393 zs->u.r.zs_roffset += zs->zs_n_bits; in getcode()