Lines Matching defs:pz

25  * read a buffer from a pz stream
30 pzread(register Pz_t* pz, void* buf, size_t z)
45 pp = pz->part;
48 else if (!(pz->flags & PZ_FORCE))
52 if (writef = pz->disc->writef)
54 if (sfstrbuf(pz->str, buf, z, 0))
56 if (pz->disc->errorf)
57 (*pz->disc->errorf)(pz, pz->disc, 2, "cannot initailize tmp stream");
60 if (!pz->wrk && !(pz->wrk = vmnewof(pz->vm, 0, unsigned char, pz->mrow, 0)))
62 ob = pz->wrk;
70 if (pz->flags & PZ_FORCE)
74 m = pz->part->row;
75 if (!(ob = (unsigned char*)sfreserve(pz->io, m, 0)))
77 if (sfvalue(pz->io))
79 if (pz->disc->errorf)
80 (*pz->disc->errorf)(pz, pz->disc, 2, "%s: data corrupted", pz->path);
85 if ((n = (*writef)(pz, pz->str, ob, pz->disc)) <= 0)
92 if (!(ob = (unsigned char*)sfreserve(pz->io, m, 0)))
94 if (sfvalue(pz->io))
96 if (pz->disc->errorf)
97 (*pz->disc->errorf)(pz, pz->disc, 2, "%s: data corrupted", pz->path);
102 if ((n = (*writef)(pz, pz->str, ob, pz->disc)) <= 0)
105 return (ssize_t)sfstrtell(pz->str);
108 return sfread(pz->io, buf, n);
110 if (pz->prefix.count)
112 if (pz->prefix.data)
114 if (z < (m = pz->prefix.count))
116 memcpy(buf, pz->prefix.data, m);
117 pz->prefix.count -= m;
118 pz->prefix.data += m;
121 pz->prefix.count = 0;
125 if (!pz->rs.hi)
127 if (pz->rs.lo)
129 if (!(m = sfgetu(pz->io)))
131 if ((k = sfgetc(pz->io)) == PZ_MARK_PART)
133 if ((m = sfgetu(pz->io)) && !sferror(pz->io) && !sfeof(pz->io) && (x = (unsigned char*)sfreserve(pz->io, m, 0)))
138 sfungetc(pz->io, 0);
140 pz->prefix.count = m - r;
141 pz->prefix.data = (char*)x + r;
149 sfungetc(pz->io, k);
150 switch (pzfile(pz))
153 pz->rs.lo = 1;
163 if (m > pz->win || (m % pp->nmap) || sfread(pz->io, pz->buf, m) != m)
165 if (pz->disc->errorf)
166 (*pz->disc->errorf)(pz, pz->disc, ERROR_SYSTEM|2, "%s: data corrupted", pz->path);
180 pp->mix[k++] = pz->buf + j;
186 if (pz->disc->errorf)
187 (*pz->disc->errorf)(pz, pz->disc, ERROR_SYSTEM|2, "%s: data corrupted", pz->path);
190 m = sfgetu(pz->io);
191 if (m < pp->row || sfread(pz->io, pz->pat, pp->row) != pp->row)
193 if (pz->disc->errorf)
194 (*pz->disc->errorf)(pz, pz->disc, ERROR_SYSTEM|2, "%s: data corrupted", pz->path);
198 if (sfread(pz->io, pz->nxt = pz->val, m) != m)
200 if (pz->disc->errorf)
201 (*pz->disc->errorf)(pz, pz->disc, ERROR_SYSTEM|2, "%s: data corrupted", pz->path);
204 pz->rs.hi = k;
205 PZGETZ(pz, pz->io, pz->rs.lo, i);
209 while (pz->rs.lo > 0)
211 pz->rs.lo--;
212 memcpy(ob, pz->pat, pp->row);
213 for (i = 0; i < pz->rs.hi; i++)
220 if ((n = (*writef)(pz, pz->str, ob, pz->disc)) <= 0)
230 PZGETP(pz, pz->io, m, i, break);
233 pz->pat[m - 1] = *pz->nxt++;
234 PZGETP(pz, pz->io, m, i, break);
236 PZGETZ(pz, pz->io, pz->rs.lo, i);
238 pz->rs.hi = 0;
241 return writef ? (ssize_t)sfstrtell(pz->str) : (ob - (unsigned char*)buf);