Lines Matching defs:pz
25 * pz->discdata State_t*
118 cvtread(Pz_t* pz, Sfio_t* sp, void* data, Pzdisc_t* disc)
120 register State_t* state = (State_t*)pz->discdata;
121 register Pzpart_t* pp = pz->part;
136 if ((n = (*state->readf)(pz, sp, s, disc)) <= 0)
143 pz->count.converted++;
145 if ((n = (*cp->convert->convertf)(pz, cp->convert, s, t, disc)) <= 0)
155 n = state->readf ? (*state->readf)(pz, sp, data, disc) : sfread(sp, data, pp->row);
167 cvtwrite(Pz_t* pz, Sfio_t* sp, const void* data, Pzdisc_t* disc)
169 register State_t* state = (State_t*)pz->discdata;
170 register Pzpart_t* pp = pz->part;
188 pz->count.converted++;
190 if ((n = (*cp->convert->convertf)(pz, cp->convert, s, t, disc)) <= 0)
206 return state->writef ? (*state->writef)(pz, sp, b, disc) : sfwrite(sp, b, n);
216 closure(Pz_t* pz, Chain_t* cp, int n, Pzconvert_t* tab, unsigned char* hit, Pzconvert_t** stk, int i, int j, const char* to)
235 if (k == j || !(cp = closure(pz, cp, n, tab, hit, stk, j, k, to)))
241 if (pz->disc->errorf)
242 (*pz->disc->errorf)(pz, pz->disc, 2, "internal closure error -- %s not found on unwind stack", to);
246 xp = vmnewof(pz->vm, 0, Chain_t, 1, 0);
257 chain(Pz_t* pz, Pzconvert_t* tab, int n, const char* f, const char* t)
259 register State_t* state = (State_t*)pz->discdata;
284 if (!j || !(cp = closure(pz, NiL, n, tab, hit, stk, 0, j, t)))
288 if (pz->disc->errorf)
291 (*pz->disc->errorf)(pz, pz->disc, 2, "conversion to %s not implemented", t);
293 (*pz->disc->errorf)(pz, pz->disc, 2, "conversion from %s to %s not implemented", f, t);
303 if (pz->disc->errorf)
304 (*pz->disc->errorf)(pz, pz->disc, 2, "internal closure error -- %s not found on unwind stack", t);
307 tp = vmnewof(pz->vm, 0, Chain_t, 1, 0);
327 if (!a && !(a = vmnewof(pz->vm, 0, unsigned char, m, 0)))
334 if ((state->readf || state->writef) && !(state->buf = vmnewof(pz->vm, 0, unsigned char, m, 0)))
345 cvtevent(Pz_t* pz, int op, void* data, size_t size, Pzdisc_t* disc)
347 register State_t* state = (State_t*)pz->discdata;
348 register Pzpart_t* pp = pz->part;
365 if (state->eventf && (r = (*state->eventf)(pz, op, data, size, disc)))
374 if (!pz->row)
379 (*disc->errorf)(pz, disc, 2, "%s: unknown format", opt_info.arg);
384 pz->row = xp->from->row;
389 pz->row = xp->to->row;
398 if (!(vp = vmnewof(pz->vm, 0, char*, i, 0)))
425 if (!(cvt = vmnewof(pz->vm, 0, Cvt_t, 1, 0)))
432 if ((pz->flags & PZ_READ) && (cvt->flags & (CHECKSUM|CHECKSUM_WARN|CHECKSUM_TAIL)) == (CHECKSUM|CHECKSUM_WARN))
436 (*disc->errorf)(pz, disc, 1, "%s: no checksum -- expected 0x%08I*x", pz->path, sizeof(cvt->checksum), cvt->checksum);
440 if (cp->convert->eventf && (r = (*cp->convert->eventf)(pz, op, cp->convert, cp->next == 0, disc)))
452 if (disc->errorf && (pz->flags & PZ_NOPZIP) && (state->flags & CHECKSUM_WARN))
453 (*disc->errorf)(pz, disc, 1, "%s: enabled for pzip data only", opt_info.name);
466 (*disc->errorf)(pz, disc, 2, "%s: unknown format", opt_info.arg);
475 vp = (pz->flags & PZ_WRITE) ? &state->from : &state->to;
484 if ((!*vp || !streq(opt_info.arg, *vp)) && !(*vp = vmstrdup(pz->vm, opt_info.arg)))
488 else if (pz->flags & PZ_WRITE)
498 if (cp->convert->eventf && (r = (*cp->convert->eventf)(pz, op, data, size, disc)))
506 if (pz->flags & PZ_WRITE)
508 if (sfraise(pz->io, SFPZ_HANDLE, &iz) <= 0)
511 (*disc->errorf)(pz, disc, 2, "%s: cannot determine input format", pz->path);
531 (*disc->errorf)(pz, disc, 2, "ouput convert format omitted");
558 if (!(cp = vmnewof(pz->vm, 0, Chain_t, 1, 0)))
566 if (cp = chain(pz, state->conversions, i, f, t))
574 if (!(cp = vmnewof(pz->vm, 0, Chain_t, 1, 0)))
590 if (cp->convert->eventf && (*cp->convert->eventf)(pz, op, cp->convert, cp->next == 0, disc) < 0)
601 if (disc->errorf && (pz->flags & PZ_VERBOSE))
604 (*disc->errorf)(pz, disc, 0, "%s: %s checksum", pz->path, (pz->flags & PZ_WRITE) ? "generating" : "verifying");
607 sfprintf(pz->tmp, "%s", cvt->chain->convert->from->name);
609 sfprintf(pz->tmp, " => %s", cp->convert->to->name);
610 (*disc->errorf)(pz, disc, 0, "%s: convert: %s", pz->path, sfstruse(pz->tmp));
647 (*disc->errorf)(pz, disc, 2, "%s: checksum mismatch -- expected 0x%08I*x != 0x%08I*x", pz->path, sizeof(k), k, sizeof(cvt->checksum), cvt->checksum);
648 pz->flags |= PZ_ERROR;
677 pzdcconvert(Pz_t* pz, const Pzconvert_t* conversions)
681 if (pz->disc->eventf != cvtevent && !(pz->flags & PZ_PUSHED))
683 if (!(state = vmnewof(pz->vm, 0, State_t, 1, 0)))
687 vmfree(pz->vm, state);
691 state->readf = pz->disc->readf;
692 state->writef = pz->disc->writef;
693 state->eventf = pz->disc->eventf;
694 pz->discdata = (void*)state;
695 pz->disc->eventf = cvtevent;