Lines Matching refs:code

35 copy_close(Codex_t* code)
70 register Codex_t* code = CODEX(disc);
83 if (code->meth->syncf)
86 if (r = (*code->meth->syncf)(code))
92 if (code->meth->donef)
95 r = (*code->meth->donef)(code);
98 if (code->dp)
100 sfclose(code->dp);
101 code->dp = 0;
103 if (code->flags & CODEX_ACTIVE)
104 code->flags &= ~CODEX_ACTIVE;
105 else if (!(code->flags & CODEX_CACHED))
107 if (code->meth->closef)
108 r = (*code->meth->closef)(code);
109 else if (code->data)
110 free(code->data);
111 if (code->op)
113 sfswap(code->op, code->sp);
114 sfclose(code->op);
115 code->op = 0;
117 free(code);
125 if (code->meth->syncf && !(code->flags & CODEX_FLUSH))
128 if ((r = (*code->meth->syncf)(code)) < 0)
134 code->flags |= CODEX_FLUSH;
136 code->flags &= ~CODEX_FLUSH;
137 if (data && code->meth->dataf && !(r = (*code->meth->dataf)(code, (Codexdata_t*)data)) && ((Codexdata_t*)data)->size)
141 if (!code->meth->seekf || (*((Sfoff_t*)data) = (*code->meth->seekf)(code, (Sfoff_t)0, SEEK_CUR)) < 0)
145 if (!code->meth->seekf || (*code->meth->seekf)(code, *((Sfoff_t*)data), SEEK_SET) < 0)
152 code->size = *((Sfoff_t*)data);
159 trace_close(Codex_t* code)
161 Codexmeth_t* meth = code->meth->next;
166 r = (*meth->closef)(code);
167 sfprintf(sfstderr, "codex: %d: %s: close()=%d\n", code->index, meth->name, r);
173 trace_init(Codex_t* code)
175 Codexmeth_t* meth = code->meth->next;
180 r = (*meth->initf)(code);
181 sfprintf(sfstderr, "codex: %d: %s: init()=%d\n", code->index, meth->name, r);
186 trace_done(Codex_t* code)
188 Codexmeth_t* meth = code->meth->next;
193 r = (*meth->donef)(code);
194 sfprintf(sfstderr, "codex: %d: %s: done()=%d\n", code->index, meth->name, r);
301 trace_sync(Codex_t* code)
303 Codexmeth_t* meth = code->meth->next;
308 r = (*meth->syncf)(code);
309 sfprintf(sfstderr, "codex: %d: %s: sync()=%d\n", code->index, meth->name, r);
314 trace_seek(Codex_t* code, Sfoff_t pos, int op)
316 Codexmeth_t* meth = code->meth->next;
321 r = (*meth->seekf)(code, pos, op);
322 sfprintf(sfstderr, "codex: %d: %s: seek(%I*d,%d)=%I*d\n", code->index, meth->name, sizeof(pos), pos, op, sizeof(r), r);
327 trace_data(Codex_t* code, Codexdata_t* data)
329 Codexmeth_t* meth = code->meth->next;
339 r = (*meth->dataf)(code, data);
340 sfprintf(sfstderr, "codex: %d: %s: data()=%d", code->index, meth->name, r);
404 save(Codexcache_t* cache, Codex_t* code, const char* name, int namelen, Codexnum_t flags)
406 if (cache->code && cache->code != CODEXERROR)
408 if (cache->code->meth->closef)
409 (*cache->code->meth->closef)(cache->code);
410 else if (cache->code->data)
411 free(cache->code->data);
412 if (cache->code->dp)
413 sfclose(cache->code->dp);
414 free(cache->code);
416 cache->code = code;
440 Codex_t* code;
452 code = 0;
467 if (!cp->code)
469 else if (!(cp->code->flags & CODEX_ACTIVE))
474 if ((code = (cache = cp)->code) == CODEXERROR)
487 if (!code)
489 if (!(code = newof(0, Codex_t, 1, 0)))
495 code->flags = deen;
496 code->index = ++codexstate.index;
497 code->sp = sp;
498 code->disc = disc;
499 code->meth = meth;
532 if (!(code->dp = sfopen(NiL, v + 7, "r")))
565 if ((*meth->openf)(code, arg, deen))
567 if (code->op)
569 sfswap(code->op, code->sp);
570 sfclose(code->op);
571 code->op = 0;
573 free(code);
574 code = 0;
584 sfprintf(sfstderr, "codex: %d: %s: open(\"%s\",%s,%s)\n", code ? code->index : 0, meth->name, arg[0], (sp->_flags & SF_READ) ? "READ" : "WRITE", (deen & CODEX_DECODE) ? "DECODE" : "ENCODE");
587 if (!code)
593 if (!(meth = code->meth))
594 meth = code->meth = &codex_copy;
595 code->flags = deen | (code->meth->flags & ~(CODEX_DECODE|CODEX_ENCODE));
599 code->meth = meth = trace;
600 code->sfdisc.readf = trace_read;
601 code->sfdisc.writef = trace_write;
602 code->sfdisc.exceptf = (flags & CODEX_VERBOSE) ? trace_except : codex_except;
606 code->sfdisc.readf = meth->readf;
607 code->sfdisc.writef = meth->writef;
608 code->sfdisc.exceptf = codex_except;
611 save(cache, code, name, namelen, deen);
632 if (!(code->dp = sfopen(NiL, can, "r")))
642 code->flags |= CODEX_CACHED|CODEX_ACTIVE;
643 if (code->meth == &codex_copy)
648 code->sp = sp;
649 code->size = size;
650 code->disc = disc;
651 code->flags |= CODEX_FLUSH;
652 if (sfdisc(sp, &code->sfdisc) != &code->sfdisc)
658 code->serial = serial = codexstate.serial;
659 code->flags &= ~CODEX_FLUSH;
662 if (code->meth->initf)
665 c = (*code->meth->initf)(code);
670 code->flags |= flags & (CODEX_RETAIN|CODEX_TRACE|CODEX_VERBOSE);
676 if (code)
679 code->flags &= ~CODEX_ACTIVE;
683 (*meth->closef)(code);
684 else if (code->data)
685 free(code->data);
686 if (code->dp)
687 sfclose(code->dp);
688 if (code->op)
690 sfswap(code->op, code->sp);
691 sfclose(code->op);
692 code->op = 0;
694 free(code);