static fz_error * openfile(fz_stream **stmp, char *path, int mode, int realmode) { fz_error *error; fz_stream *stm; stm = newstm(FZ_SFILE, mode); if (!stm) return fz_throw("outofmem: stream struct"); error = fz_newbuffer(&stm->buffer, FZ_BUFSIZE); if (error) { fz_free(stm); return fz_rethrow(error, "cannot create buffer"); } stm->file = open(path, realmode, 0666); if (stm->file < 0) { fz_dropbuffer(stm->buffer); fz_free(stm); return fz_throw("syserr: open '%s': %s", path, strerror(errno)); } *stmp = stm; return fz_okay; }
fz_error fz_openrfile(fz_stream **stmp, char *path) { fz_error error; fz_stream *stm; stm = newstm(FZ_SFILE); if (!stm) return fz_rethrow(-1, "out of memory: stream struct"); error = fz_newbuffer(&stm->buffer, FZ_BUFSIZE); if (error) { fz_free(stm); return fz_rethrow(error, "cannot create buffer"); } stm->file = open(path, O_BINARY | O_RDONLY, 0666); if (stm->file < 0) { fz_dropbuffer(stm->buffer); fz_free(stm); return fz_throw("syserr: open '%s': %s", path, strerror(errno)); } *stmp = stm; return fz_okay; }
fz_error fz_openrbuffer(fz_stream **stmp, fz_buffer *buf) { fz_stream *stm; stm = newstm(FZ_SBUFFER); if (!stm) return fz_rethrow(-1, "out of memory: stream struct"); stm->buffer = fz_keepbuffer(buf); stm->buffer->eof = 1; *stmp = stm; return fz_okay; }
static fz_error * openbuffer(fz_stream **stmp, fz_buffer *buf, int mode) { fz_stream *stm; stm = newstm(FZ_SBUFFER, mode); if (!stm) return fz_throw("outofmem: stream struct"); stm->buffer = fz_keepbuffer(buf); if (mode == FZ_SREAD) stm->buffer->eof = 1; *stmp = stm; return fz_okay; }
fz_error fz_openrfilter(fz_stream **stmp, fz_filter *flt, fz_stream *src) { fz_error error; fz_stream *stm; stm = newstm(FZ_SFILTER); if (!stm) return fz_rethrow(-1, "out of memory: stream struct"); error = fz_newbuffer(&stm->buffer, FZ_BUFSIZE); if (error) { fz_free(stm); return fz_rethrow(error, "cannot create buffer"); } stm->chain = fz_keepstream(src); stm->filter = fz_keepfilter(flt); *stmp = stm; return fz_okay; }
static fz_error * openfilter(fz_stream **stmp, fz_filter *flt, fz_stream *src, int mode) { fz_error *error; fz_stream *stm; stm = newstm(FZ_SFILTER, mode); if (!stm) return fz_throw("outofmem: stream struct"); error = fz_newbuffer(&stm->buffer, FZ_BUFSIZE); if (error) { fz_free(stm); return fz_rethrow(error, "cannot create buffer"); } stm->chain = fz_keepstream(src); stm->filter = fz_keepfilter(flt); *stmp = stm; return fz_okay; }