static FD_t bzdOpen(const char * path, const char * mode) { FD_t fd; BZFILE *bzfile;; if ((bzfile = BZ2_bzopen(path, mode)) == NULL) return NULL; fd = fdNew(path); fdPop(fd); fdPush(fd, bzdio, bzfile, -1); return fdLink(fd); }
static FD_t lzdOpen(const char * path, const char * mode) { FD_t fd; LZFILE *lzfile; if ((lzfile = lzopen(path, mode)) == NULL) return NULL; fd = fdNew(path); fdPop(fd); fdPush(fd, xzdio, lzfile, -1); return fdLink(fd); }
static FD_t bzdFdopen(FD_t fd, int fdno, const char * fmode) { BZFILE *bzfile = BZ2_bzdopen(fdno, fmode); if (bzfile == NULL) return NULL; fdSetFdno(fd, -1); /* XXX skip the fdio close */ fdPush(fd, bzdio, bzfile, fdno); /* Push bzdio onto stack */ return fd; }
static FD_t gzdFdopen(FD_t fd, int fdno, const char *fmode) { gzFile gzfile = gzdopen(fdno, fmode); if (gzfile == NULL) return NULL; fdSetFdno(fd, -1); /* XXX skip the fdio close */ fdPush(fd, gzdio, gzfile, fdno); /* Push gzdio onto stack */ return fd; }
static FD_t gzdOpen(const char * path, const char * fmode) { FD_t fd; gzFile gzfile; if ((gzfile = gzopen(path, fmode)) == NULL) return NULL; fd = fdNew(path); fdPop(fd); fdPush(fd, gzdio, gzfile, -1); return fdLink(fd); }
static FD_t fdNew(int fdno, const char *descr) { FD_t fd = xcalloc(1, sizeof(*fd)); fd->nrefs = 0; fd->flags = 0; fd->magic = FDMAGIC; fd->urlType = URL_IS_UNKNOWN; fd->stats = xcalloc(1, sizeof(*fd->stats)); fd->digests = NULL; fd->descr = descr ? xstrdup(descr) : NULL; fdPush(fd, fdio, NULL, fdno); return fd; }
static FD_t lzdFdopen(FD_t fd, const char * fmode) { int fdno; LZFILE *lzfile; if (fd == NULL || fmode == NULL) return NULL; fdno = fdFileno(fd); fdSetFdno(fd, -1); /* XXX skip the fdio close */ if (fdno < 0) return NULL; lzfile = lzdopen(fdno, fmode); if (lzfile == NULL) return NULL; fdPush(fd, xzdio, lzfile, fdno); return fdLink(fd); }
/*@-globuse@*/ static /*@null@*/ FD_t xzdOpen(const char * path, const char * fmode) /*@globals fileSystem @*/ /*@modifies fileSystem @*/ { FD_t fd; mode_t mode = (fmode && fmode[0] == 'w' ? O_WRONLY : O_RDONLY); XZFILE * xzfile = xzopen(path, fmode); if (xzfile == NULL) return NULL; fd = fdNew("open (xzdOpen)"); fdPop(fd); fdPush(fd, xzdio, xzfile, -1); fdSetOpen(fd, path, fileno(xzfile->fp), mode); return fdLink(fd, "xzdOpen"); }
/*@-globuse@*/ static /*@null@*/ FD_t xzdFdopen(void * cookie, const char * fmode) /*@globals fileSystem, internalState @*/ /*@modifies fileSystem, internalState @*/ { FD_t fd = c2f(cookie); int fdno = fdFileno(fd); XZFILE *xzfile; assert(fmode != NULL); fdSetFdno(fd, -1); /* XXX skip the fdio close */ if (fdno < 0) return NULL; xzfile = xzdopen(fdno, fmode); if (xzfile == NULL) return NULL; fdPush(fd, xzdio, xzfile, fdno); return fdLink(fd, "xzdFdopen"); }
static FD_t bzdFdopen(FD_t fd, const char * fmode) { int fdno; BZFILE *bzfile; if (fd == NULL || fmode == NULL) return NULL; fdno = fdFileno(fd); fdSetFdno(fd, -1); /* XXX skip the fdio close */ if (fdno < 0) return NULL; bzfile = BZ2_bzdopen(fdno, fmode); if (bzfile == NULL) return NULL; fdPush(fd, bzdio, bzfile, fdno); /* Push bzdio onto stack */ return fdLink(fd); }
static FD_t gzdFdopen(FD_t fd, const char *fmode) { int fdno; gzFile gzfile; if (fd == NULL || fmode == NULL) return NULL; fdno = fdFileno(fd); fdSetFdno(fd, -1); /* XXX skip the fdio close */ if (fdno < 0) return NULL; gzfile = gzdopen(fdno, fmode); if (gzfile == NULL) return NULL; fdPush(fd, gzdio, gzfile, fdno); /* Push gzdio onto stack */ return fdLink(fd); }