rpmRC wrXAR(const char * xarfn, rpmwf wf) { rpmRC rc; /*@-noeffect@*/ if (_rpmwf_debug) rpmwfDump(wf, "wrXAR", xarfn); /*@=noeffect@*/ wf->xar = rpmxarNew(xarfn, "w"); if (wf->xar == NULL) return RPMRC_FAIL; if ((rc = rpmwfPushXAR(wf, "Lead")) != RPMRC_OK) goto exit; if ((rc = rpmwfPushXAR(wf, "Signature")) != RPMRC_OK) goto exit; if ((rc = rpmwfPushXAR(wf, "Header")) != RPMRC_OK) goto exit; if ((rc = rpmwfPushXAR(wf, "Payload")) != RPMRC_OK) goto exit; exit: wf->xar = rpmxarFree(wf->xar, "wrXAR"); return rc; }
static void rpmxar_dtor(JSContext *cx, JSObject *obj) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmxarClass, NULL); rpmxar xar = ptr; _DTOR_DEBUG_ENTRY(_debug); (void) rpmxarFree(xar, __FUNCTION__); }
/*@-mustmod@*/ static void rpmwfScrub(void *_wf) /*@globals fileSystem, internalState @*/ /*@modifies _wf, fileSystem, internalState @*/ { rpmwf wf = (rpmwf) _wf; if (wf->b == NULL) { /*@-dependenttrans -onlytrans @*/ /* rpm needs dependent, xar needs only */ wf->l = _free(wf->l); wf->s = _free(wf->s); wf->h = _free(wf->h); wf->p = _free(wf->p); /*@=dependenttrans =onlytrans @*/ } wf->xar = rpmxarFree(wf->xar, "rpmwfFree"); (void) rpmwfFini(wf); wf->fn = _free(wf->fn); }
rpmwf rdXAR(const char * xarfn) { rpmwf wf; rpmRC rc; if ((wf = rpmwfNew(xarfn)) == NULL) return wf; wf->xar = rpmxarNew(wf->fn, "r"); if (wf->xar == NULL) { wf = rpmwfFree(wf); return NULL; } while (rpmxarNext(wf->xar) == 0) rc = rpmwfPullXAR(wf, NULL); wf->xar = rpmxarFree(wf->xar, "rdXAR"); /*@-noeffect@*/ if (_rpmwf_debug) rpmwfDump(wf, "rdXAR", xarfn); /*@=noeffect@*/ return wf; }