RPM2
view release on metacpan or search on metacpan
lib/RPM2.xs view on Meta::CPAN
CODE:
(void)pkg; /* Not used */
delMacro(NULL, name);
void
expand_macro(pkg, str)
char * pkg
char * str
PREINIT:
char *ret;
PPCODE:
(void)pkg; /* Not used */
ret = rpmExpand(str, NULL);
PUSHs(sv_2mortal(newSVpv(ret, 0)));
free(ret);
int
rpmvercmp(one, two)
char* one
char* two
void
_read_package_info(fp, vsflags)
FILE *fp
int vsflags
PREINIT:
rpmts ts;
Header ret;
rpmRC rc;
FD_t fd;
PPCODE:
ts = rpmtsCreate();
/* XXX Determine type of signature verification when reading
vsflags |= _RPMTS_VSF_NOLEGACY;
vsflags |= _RPMTS_VSF_NODIGESTS;
vsflags |= _RPMTS_VSF_NOSIGNATURES;
xx = rpmtsSetVerifySigFlags(ts, vsflags);
*/
fd = fdDup(fileno(fp));
lib/RPM2.xs view on Meta::CPAN
croak("error reading package");
}
ts = rpmtsFree(ts);
void
_create_transaction(vsflags)
int vsflags
PREINIT:
rpmts ret;
SV *h_sv;
PPCODE:
/* Looking at librpm, it does not look like this ever
returns error (though maybe it should).
*/
ret = rpmtsCreate();
/* Should I save the old vsflags aside? */
rpmtsSetVSFlags(ret, vsflags);
/* Convert and throw the results on the stack */
EXTEND(SP, 1);
lib/RPM2.xs view on Meta::CPAN
PUSHs(h_sv);
void
_read_from_file(fp)
FILE *fp
PREINIT:
SV *h_sv;
FD_t fd;
Header h;
PPCODE:
fd = fdDup(fileno(fp));
h = headerRead(fd, HEADER_MAGIC_YES);
if (h) {
EXTEND(SP, 1);
h_sv = sv_newmortal();
sv_setref_pv(h_sv, "RPM2::C::Header", (void *)h);
PUSHs(h_sv);
lib/RPM2.xs view on Meta::CPAN
RETVAL
MODULE = RPM2 PACKAGE = RPM2::C::PackageIterator
Header
_iterator_next(i)
rpmdbMatchIterator i
PREINIT:
Header ret;
SV * h_sv;
unsigned int offset;
PPCODE:
ret = rpmdbNextIterator(i);
if (ret)
headerLink(ret);
if(ret != NULL)
offset = rpmdbGetIteratorOffset(i);
else
offset = 0;
EXTEND(SP, 2);
h_sv = sv_newmortal();
lib/RPM2.xs view on Meta::CPAN
CODE:
headerFree(h);
void
tag_by_id(h, tag)
Header h
int tag
PREINIT:
rpmtd tagdata;
int ok;
PPCODE:
tagdata = rpmtdNew();
if (tagdata == NULL) {
croak("Out of memory");
}
ok = headerGet(h, tag, tagdata, HEADERGET_DEFAULT);
if (!ok) {
/* nop, empty stack */
}
else {
lib/RPM2.xs view on Meta::CPAN
RETVAL = headerIsEntry(h, RPMTAG_SOURCEPACKAGE);
OUTPUT:
RETVAL
void
_header_sprintf(h, format)
Header h
char * format
PREINIT:
char * s;
PPCODE:
s = headerFormat(h, format, NULL);
PUSHs(sv_2mortal(newSVpv((char *)s, 0)));
/* By the way, the #if below is completely useless, free() would work for both */
free(s);
MODULE = RPM2 PACKAGE = RPM2::C::Transaction
void
DESTROY(t)
lib/RPM2.xs view on Meta::CPAN
RETVAL
void
_elements(t, type)
rpmts t;
rpmElementType type;
PREINIT:
rpmtsi i;
rpmte te;
const char * NEVR;
PPCODE:
i = rpmtsiInit(t);
if(i == NULL) {
printf("Did not get a thing!\n");
return;
} else {
while((te = rpmtsiNext(i, type)) != NULL) {
NEVR = rpmteNEVR(te);
XPUSHs(sv_2mortal(newSVpv(NEVR, 0)));
}
i = rpmtsiFree(i);
( run in 0.580 second using v1.01-cache-2.11-cpan-5511b514fd6 )