view release on metacpan or search on metacpan
src/RPM4.xs view on Meta::CPAN
#ifdef HDLISTDEBUG
RETVAL = 1;
#else
RETVAL = 0;
#endif
OUTPUT:
RETVAL
void
moduleinfo()
PPCODE:
mXPUSHs(newSVpv("Hack", 0));
#ifdef HHACK
mXPUSHs(newSVpv("Yes", 0));
#else
mXPUSHs(newSVpv("No", 0));
#endif
mXPUSHs(newSVpv("RPMVERSION", 0));
mXPUSHs(newSVpv(RPMVERSION, 0));
src/RPM4.xs view on Meta::CPAN
if (function == NULL || !SvOK(function)) {
rpmlogSetCallback(NULL, NULL);
} else if (SvTYPE(SvRV(function)) == SVt_PVCV) {
log_callback_function = newSVsv(function);
rpmlogSetCallback(logcallback, NULL);
} else
croak("First arg is not a code reference");
void
lastlogmsg()
PPCODE:
mXPUSHs(newSViv(rpmlogCode()));
mXPUSHs(newSVpv((char *) rpmlogMessage(), 0));
int
setlogfile(filename)
char * filename
PREINIT:
FILE * ofp = NULL;
FILE * fp = NULL;
CODE:
src/RPM4.xs view on Meta::CPAN
CODE:
RETVAL = rpmTagGetValue((const char *) tagname);
OUTPUT:
RETVAL
void
tagName(tag)
int tag
PREINIT:
const char *r = NULL;
PPCODE:
r = rpmTagGetName(tag);
mXPUSHs(newSVpv(r, 0));
void
flagvalue(flagtype, sv_value)
char * flagtype
SV * sv_value
PPCODE:
if (strcmp(flagtype, "loglevel") == 0) {
mXPUSHs(newSViv(sv2constant(sv_value, "rpmlog")));
} else if (strcmp(flagtype, "deptag") == 0) { /* Who will use this ?? */
mXPUSHs(newSViv(sv2deptag(sv_value)));
} else if (strcmp(flagtype, "vsf") == 0) {
mXPUSHs(newSViv(sv2constant(sv_value, "rpmverifyflags")));
} else if (strcmp(flagtype, "trans") == 0) {
mXPUSHs(newSViv(sv2transflags(sv_value)));
} else if (strcmp(flagtype, "dbquery") == 0) {
mXPUSHs(newSViv(sv2dbquerytag(sv_value)));
src/RPM4.xs view on Meta::CPAN
mXPUSHs(newSVpv("build", 0));
mXPUSHs(newSVpv("fileattr", 0));
mXPUSHs(newSVpv("tagtype", 0));
}
# Macros functions:
void
expand(name)
char * name
PPCODE:
const char * value = rpmExpand(name, NULL);
mXPUSHs(newSVpv(value, 0));
free((char *) value);
void
expandnumeric(name)
char *name
PPCODE:
int value = rpmExpandNumeric(name);
mXPUSHs(newSViv(value));
void
addmacro(macro)
char * macro
CODE:
rpmDefineMacro(NULL, macro, RMIL_DEFAULT);
void
delmacro(name)
char * name
CODE:
delMacro(NULL, name);
void
loadmacrosfile(filename)
char * filename
PPCODE:
rpmInitMacros(NULL, filename);
void
resetmacros()
PPCODE:
rpmFreeMacros(NULL);
void
resetrc()
PPCODE:
rpmFreeRpmrc();
void
getosname()
PREINIT:
const char *v = NULL;
PPCODE:
rpmGetOsInfo(&v, NULL);
mXPUSHs(newSVpv(v, 0));
void
getarchname()
PREINIT:
const char *v = NULL;
PPCODE:
rpmGetArchInfo(&v, NULL);
mXPUSHs(newSVpv(v, 0));
int
osscore(data, build = 0)
char * data;
int build;
ALIAS:
archscore = 1
PREINIT:
src/RPM4.xs view on Meta::CPAN
machtable = build ? RPM_MACHTABLE_BUILDOS : RPM_MACHTABLE_INSTOS;
else
machtable = build ? RPM_MACHTABLE_BUILDARCH : RPM_MACHTABLE_INSTARCH;
RETVAL = rpmMachineScore(machtable, data);
OUTPUT:
RETVAL
void
buildhost()
PREINIT:
PPCODE:
static char hostname[1024];
static int oneshot = 0;
struct hostent *hbn;
if (! oneshot) {
(void) gethostname(hostname, sizeof(hostname));
hbn = gethostbyname(hostname);
if (hbn)
strcpy(hostname, hbn->h_name);
else
src/RPM4.xs view on Meta::CPAN
char *one
char *two
# create a new empty header
# Is this usefull
void
headernew()
PREINIT:
Header h = headerNew();
PPCODE:
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_header, (void *)h));
#ifdef HDRPMMEM
PRINTF_NEW(bless_header, h, h->nrefs);
#endif
# Read data from file pointer and return next header object
# Return undef if failed
# fedora use HEADER_MAGIC_NO, too bad, set no_header_magic make the function
# compatible
void
stream2header(fp, no_header_magic = 0, callback = NULL)
FILE *fp
int no_header_magic
SV * callback
PREINIT:
FD_t fd;
Header header;
PPCODE:
if (fp && (fd = fdDup(fileno(fp)))) {
#ifdef HDLISTDEBUG
PRINTF_CALL;
#endif
if (callback != NULL && SvROK(callback)) {
while ((header = headerRead(fd, no_header_magic ? HEADER_MAGIC_NO : HEADER_MAGIC_YES))) {
ENTER;
SAVETMPS;
PUSHMARK(SP);
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_header, (void *)header));
src/RPM4.xs view on Meta::CPAN
# Read a rpm and return a Header
# Return undef if failed
void
rpm2header(filename, sv_vsflags = NULL)
char * filename
SV * sv_vsflags
PREINIT:
rpmts ts = rpmtsCreate();
rpmVSFlags vsflags = RPMVSF_DEFAULT;
PPCODE:
if (sv_vsflags == NULL) /* Nothing has been passed, default is no signature */
vsflags |= _RPMVSF_NOSIGNATURES;
else
vsflags = sv2vsflags(sv_vsflags);
rpmtsSetVSFlags(ts, vsflags);
_rpm2header(ts, filename, 0);
SPAGAIN;
ts = rpmtsFree(ts);
int
src/RPM4.xs view on Meta::CPAN
OUTPUT:
RETVAL
void
installsrpm(filename, sv_vsflags = NULL)
char * filename
SV * sv_vsflags
PREINIT:
rpmts ts = rpmtsCreate();
rpmVSFlags vsflags = RPMVSF_DEFAULT;
PPCODE:
vsflags = sv2vsflags(sv_vsflags);
rpmtsSetVSFlags(ts, vsflags);
PUTBACK;
_installsrpms(ts, filename);
SPAGAIN;
ts = rpmtsFree(ts);
MODULE = RPM4 PACKAGE = RPM4::Header PREFIX = Header_
void
src/RPM4.xs view on Meta::CPAN
RETVAL = 1;
}
}
OUTPUT:
RETVAL
void
Header_hsize(h, no_header_magic = 0)
Header h
int no_header_magic
PPCODE:
mXPUSHs(newSViv(headerSizeof(h, no_header_magic ? HEADER_MAGIC_NO : HEADER_MAGIC_YES)));
void
Header_copy(h)
Header h
PREINIT:
Header hcopy;
PPCODE:
hcopy = headerCopy(h);
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_header, (void *)hcopy));
#ifdef HDRPMMEM
PRINTF_NEW(bless_header, hcopy, hcopy->nrefs);
#endif
void
Header_string(h, no_header_magic = 0)
Header h
int no_header_magic
PREINIT:
char * string = NULL;
char * ptr = NULL;
#if defined(RPM4_18_0)
unsigned int hsize = 0;
#else
int hsize = 0;
#endif
PPCODE:
#if defined(RPM4_18_0)
string = headerExport(h, &hsize);
#else
hsize = headerSizeof(h, no_header_magic ? HEADER_MAGIC_NO : HEADER_MAGIC_YES);
string = headerUnload(h);
#endif
if (! no_header_magic) {
#if defined(RPM4_18_0)
hsize +=sizeof(header_magic); // Adjust for header_magic
#endif
src/RPM4.xs view on Meta::CPAN
} */
OUTPUT:
RETVAL
void
Header_listtag(h)
Header h
PREINIT:
HeaderIterator iterator;
struct rpmtd_s td;
PPCODE:
iterator = headerInitIterator(h);
while (headerNext(iterator, &td)) {
mXPUSHs(newSViv(rpmtdTag(&td)));
rpmtdFreeData(&td);
}
rpmtdFreeData(&td);
headerFreeIterator(iterator);
int
Header_hastag(h, sv_tag)
src/RPM4.xs view on Meta::CPAN
OUTPUT:
RETVAL
# Return the tag value in headers
void
Header_tag(h, sv_tag)
Header h
SV * sv_tag
PREINIT:
rpmTag tag = -1;
PPCODE:
if (SvIOK(sv_tag)) {
tag = SvIV(sv_tag);
} else if (SvPOK(sv_tag)) {
tag = rpmTagGetValue(SvPV_nolen(sv_tag));
}
if (tag > 0) {
struct rpmtd_s val;
if (headerGet(h, tag, &val, HEADERGET_DEFAULT)) {
int type = rpmtdType(&val);
int n = rpmtdCount(&val);
src/RPM4.xs view on Meta::CPAN
rpmtdFreeData(&td);
OUTPUT:
RETVAL
void
Header_queryformat(h, query)
Header h
char * query
PREINIT:
char *s = NULL;
PPCODE:
s = headerFormat(h, query,
NULL);
mXPUSHs(newSVpv(s, 0));
free(s);
void
Header_fullname(h)
Header h
ALIAS:
nevr= 1
PREINIT:
I32 gimme = GIMME_V;
PPCODE:
if (h) {
if (gimme == G_SCALAR) {
char *nvr = headerGetAsString(h, RPMTAG_NVR);
if (ix == 1) {
mXPUSHs(newSVpv(nvr, 0));
} else {
mXPUSHs(newSVpvf("%s.%s", nvr, get_arch(h)));
}
free(nvr);
} else if (gimme == G_ARRAY) {
src/RPM4.xs view on Meta::CPAN
RETVAL
void
Header_dep(header, type, scaremem = O_SCAREMEM)
Header header
SV * type
int scaremem
PREINIT:
rpmds ds;
rpmTag tag;
PPCODE:
tag = sv2deptag(type);
ds = rpmdsNew(header, tag, scaremem);
ds = rpmdsInit(ds);
if (ds != NULL)
if (rpmdsNext(ds) >= 0) {
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_rpmds, ds));
#ifdef HDRPMMEM
PRINTF_NEW(bless_rpmds, ds, ds->nrefs);
#endif
}
void
Header_files(header, scaremem = O_SCAREMEM)
Header header
int scaremem
PREINIT:
rpmfi Files = NULL;
rpmts ts = NULL; /* NULL; setting this to NULL skip path relocation
* maybe a good deal is Header::Files(header, Dep = NULL) */
PPCODE:
#ifdef HDLISTDEBUG
PRINTF_CALL;
#endif
Files = rpmfiNew(ts, header, RPMTAG_BASENAMES, scaremem);
if (Files != NULL && (Files = rpmfiInit(Files, 0)) != NULL && rpmfiNext(Files) >= 0) {
SPAGAIN;
XPUSHs(sv_setref_pv(sv_newmortal(), bless_rpmfi, (void *)Files));
#ifdef HDRPMMEM
PRINTF_NEW(bless_rpmfi, Files, Files->nrefs);
#endif
src/RPM4.xs view on Meta::CPAN
void
Header_hchkdep(h1, h2, type)
Header h1
Header h2
SV * type
PREINIT:
rpmds ds = NULL;
rpmds pro = NULL;
rpmTag tag;
PPCODE:
tag = sv2deptag(type);
ds = rpmdsNew(h1, tag, SCAREMEM);
pro = rpmdsNew(h2, RPMTAG_PROVIDENAME, SCAREMEM);
#ifdef HDLISTDEBUG
fprintf(stderr, "HDEBUG: Header::hchkdep %d: %s vs %s %p\n", tag, hGetNEVR(h1, NULL), hGetNEVR(h2, NULL), ds);
#endif
if (ds != NULL) {
rpmdsInit(ds);
while (rpmdsNext(ds) >= 0) {
rpmdsInit(pro);
src/RPM4.xs view on Meta::CPAN
RETVAL = rpmtsRebuildDB(ts);
ts = rpmtsFree(ts);
OUTPUT:
RETVAL
#ifdef HHACK
void
emptydb()
PREINIT:
rpmts ts = rpmtsCreate();
PPCODE:
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_rpmts, (void *)ts));
#ifdef HDRPMMEM
PRINTF_NEW(bless_rpmts, ts, ts->nrefs);
#endif
#endif
void
newdb(write = 0, rootdir = NULL)
int write
char * rootdir
PREINIT:
rpmts ts = rpmtsCreate();
PPCODE:
if (rootdir)
rpmtsSetRootDir(ts, rootdir);
rpmtsSetVSFlags(ts, RPMTRANS_FLAG_NONE);
/* is O_CREAT a good idea here ? */
/* is the rpmtsOpenDB really need ? */
if (rpmtsOpenDB(ts, write ? O_RDWR | O_CREAT : O_RDONLY) == 0) {
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_rpmts, (void *)ts));
#ifdef HDRPMMEM
PRINTF_NEW(bless_rpmts, ts, ts->nrefs);
src/RPM4.xs view on Meta::CPAN
}
MODULE = RPM4 PACKAGE = RPM4::Transaction PREFIX = Ts_
void
Ts_new(perlclass, rootdir = NULL)
char * perlclass
char * rootdir
PREINIT:
rpmts ts = rpmtsCreate();
PPCODE:
rpmtsSetRootDir(ts, rootdir);
mXPUSHs(sv_setref_pv(newSVpvs(""), perlclass, (void *)ts));
void
Ts_DESTROY(ts)
rpmts ts
CODE:
#ifdef HDRPMMEM
PRINTF_FREE(bless_rpmts, ts, ts->nrefs);
#endif
src/RPM4.xs view on Meta::CPAN
OUTPUT:
RETVAL
void
Ts_get_header(ts, off)
rpmts ts
int off
PREINIT:
rpmdbMatchIterator mi;
Header header;
PPCODE:
mi = rpmtsInitIterator(ts, RPMDBI_PACKAGES, &off, sizeof(off));
if ((header = rpmdbNextIterator(mi)) != NULL) {
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_header, headerLink(header)));
#ifdef HDRPMMEM
PRINTF_NEW(bless_header, header, header->nrefs);
#endif
}
rpmdbFreeIterator(mi);
int
src/RPM4.xs view on Meta::CPAN
Ts_transorder(ts)
rpmts ts
CODE:
RETVAL = rpmtsOrder(ts);
OUTPUT:
RETVAL
void
Ts_transclean(ts)
rpmts ts
PPCODE:
rpmtsClean(ts);
int
Ts_transrun(ts, callback, ...)
rpmts ts
SV * callback
PREINIT:
int i;
rpmprobFilterFlags probFilter = RPMPROB_FILTER_NONE;
rpmInstallFlags install_flags = INSTALL_NONE;
src/RPM4.xs view on Meta::CPAN
ts = rpmtsFree(ts);
OUTPUT:
RETVAL
# get from transaction a problem set
void
Ts__transpbs(ts)
rpmts ts
PREINIT:
rpmps ps;
PPCODE:
ps = rpmtsProblems(ts);
if (ps && rpmpsNumProblems(ps)) /* if no problem, return undef */
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_rpmps, ps));
int
Ts_importpubkey(ts, filename)
rpmts ts
char * filename
PREINIT:
uint8_t *pkt = NULL;
src/RPM4.xs view on Meta::CPAN
RETVAL
void
Ts_checkrpm(ts, filename, sv_vsflags = NULL)
rpmts ts
char * filename
SV * sv_vsflags
PREINIT:
rpmVSFlags vsflags = RPMVSF_DEFAULT;
rpmVSFlags oldvsflags = RPMVSF_DEFAULT;
PPCODE:
oldvsflags = rpmtsVSFlags(ts); /* keep track of old settings */
if (sv_vsflags != NULL) {
vsflags = sv2vsflags(sv_vsflags);
rpmtsSetVSFlags(ts, vsflags);
}
PUTBACK;
_rpm2header(ts, filename, 1); /* Rpmread header is not the most usefull,
* but no other function in rpmlib allow this :( */
SPAGAIN;
rpmtsSetVSFlags(ts, oldvsflags); /* resetting in case of change */
void
Ts_transreset(ts)
rpmts ts
PPCODE:
rpmtsEmpty(ts);
rpmtsSetRootDir(ts, "/");
# Remaping function:
# RPM4::rpm2header(filename); # Reusing existing RPM4::Transaction
void
Ts_rpm2header(ts, filename)
rpmts ts
char * filename
PPCODE:
_rpm2header(ts, filename, 0);
SPAGAIN;
# RPM4::Spec::specbuild([ buildflags ]); Reusing existing RPM4::Transaction
int
Ts_specbuild(ts, spec, sv_buildflags)
rpmts ts
rpmSpec spec
SV * sv_buildflags
CODE:
RETVAL = _specbuild(spec, sv_buildflags);
OUTPUT:
RETVAL
void
Ts_installsrpm(ts, filename)
rpmts ts
char * filename
PPCODE:
PUTBACK;
_installsrpms(ts, filename);
SPAGAIN;
MODULE = RPM4 PACKAGE = RPM4::Db::Te PREFIX = Te_
void
Te_DESTROY(Te)
rpmte Te
CODE:
src/RPM4.xs view on Meta::CPAN
Te_type(Te)
rpmte Te
CODE:
RETVAL = rpmteType(Te);
OUTPUT:
RETVAL
void
Te_name(Te)
rpmte Te
PPCODE:
mXPUSHs(newSVpv(rpmteN(Te), 0));
void
Te_version(Te)
rpmte Te
PPCODE:
mXPUSHs(newSVpv(rpmteV(Te), 0));
void
Te_release(Te)
rpmte Te
PPCODE:
mXPUSHs(newSVpv(rpmteR(Te), 0));
void
Te_epoch(Te)
rpmte Te
PPCODE:
mXPUSHs(newSVpv(rpmteE(Te), 0));
void
Te_arch(Te)
rpmte Te
PPCODE:
mXPUSHs(newSVpv(rpmteA(Te), 0));
void
Te_os(Te)
rpmte Te
PPCODE:
mXPUSHs(newSVpv(rpmteO(Te), 0));
void
Te_fullname(Te)
rpmte Te
PREINIT:
I32 gimme = GIMME_V;
PPCODE:
if (gimme == G_SCALAR) {
mXPUSHs(newSVpvf("%s-%s-%s.%s",
rpmteN(Te), rpmteV(Te), rpmteR(Te), rpmteA(Te)));
} else {
mXPUSHs(newSVpv(rpmteN(Te), 0));
mXPUSHs(newSVpv(rpmteV(Te), 0));
mXPUSHs(newSVpv(rpmteR(Te), 0));
mXPUSHs(newSVpv(rpmteA(Te), 0));
}
void
Te_size(Te)
rpmte Te
PPCODE:
mXPUSHs(newSVuv(rpmtePkgFileSize(Te)));
void
Te_dep(Te, type)
rpmte Te
SV * type
PREINIT:
rpmds ds;
rpmTag tag;
PPCODE:
tag = sv2deptag(type);
ds = rpmteDS(Te, tag);
if (ds != NULL)
if (rpmdsNext(ds) >= 0) {
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_rpmds, ds));
#ifdef HDRPMMEM
PRINTF_NEW(bless_rpmds, ds, ds->nrefs);
#endif
}
void
Te_files(Te)
rpmte Te
PREINIT:
#if defined(RPM4_12_0)
rpmfiles Files;
#endif
rpmfi fi;
PPCODE:
#if defined(RPM4_12_0)
Files = rpmteFiles(Te);
fi = rpmfilesIter(Files, RPMFI_ITER_FWD);
if (fi != NULL && rpmfiNext(fi) >= 0) {
#else
fi = rpmteFI(Te);
if ((fi = rpmfiInit(fi, 0)) != NULL && rpmfiNext(fi) >= 0) {
#endif
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_rpmfi, fi));
#ifdef HDRPMMEM
src/RPM4.xs view on Meta::CPAN
MODULE = RPM4 PACKAGE = RPM4
# Return a new Dep object
void
newdep(sv_depTag, Name, sv_sense = NULL, sv_evr = NULL)
SV * sv_depTag
char * Name
SV * sv_evr
SV * sv_sense
PPCODE:
PUTBACK;
_newdep(sv_depTag, Name, sv_sense, sv_evr);
SPAGAIN;
void
rpmlibdep()
PREINIT:
rpmds Dep = NULL;
PPCODE:
#if 0
rpmds next;
const char ** provNames;
int * provFlags;
const char ** provVersions;
int num = 0;
int i;
num = rpmGetRpmlibProvides(&provNames, &provFlags, &provVersions);
for (i = 0; i < num; i++) {
#ifdef HDLISTDEBUG
src/RPM4.xs view on Meta::CPAN
MODULE = RPM4 PACKAGE = RPM4::Header::Dependencies PREFIX = Dep_
void
Dep_newsingle(perlclass, sv_tag, name, sv_sense = NULL, sv_evr = NULL)
char * perlclass
SV * sv_tag
char * name
SV * sv_sense
SV * sv_evr
PPCODE:
PUTBACK;
_newdep(sv_tag, name, sv_sense, sv_evr);
SPAGAIN;
void
Dep_DESTROY(Dep)
rpmds Dep
CODE:
#ifdef HDRPMMEM
PRINTF_FREE(bless_rpmds, Dep, Dep->nrefs);
src/RPM4.xs view on Meta::CPAN
RETVAL = rpmdsCompare(Dep1, Dep2);
OUTPUT:
RETVAL
void
Dep_info(Dep)
rpmds Dep
PREINIT:
rpmsenseFlags flag;
I32 gimme = GIMME_V;
PPCODE:
#ifdef HDLISTDEBUG
PRINTF_CALL;
#endif
CHECK_RPMDS_IX(Dep);
if (gimme == G_SCALAR) {
mXPUSHs(newSVpv(rpmdsDNEVR(Dep), 0));
} else {
switch (rpmdsTagN(Dep)) {
case RPMTAG_PROVIDENAME:
mXPUSHs(newSVpv("P", 0));
src/RPM4.xs view on Meta::CPAN
mXPUSHs(newSVpvf("%s%s%s",
flag & RPMSENSE_LESS ? "<" : "",
flag & RPMSENSE_GREATER ? ">" : "",
flag & RPMSENSE_EQUAL ? "=" : ""));
mXPUSHs(newSVpv(rpmdsEVR(Dep), 0));
}
void
Dep_tag(Dep)
rpmds Dep
PPCODE:
mXPUSHs(newSViv(rpmdsTagN(Dep)));
void
Dep_name(Dep)
rpmds Dep
PPCODE:
#ifdef HDLISTDEBUG
PRINTF_CALL;
#endif
CHECK_RPMDS_IX(Dep);
mXPUSHs(newSVpv(rpmdsN(Dep), 0));
void
Dep_flags(Dep)
rpmds Dep
PPCODE:
CHECK_RPMDS_IX(Dep);
mXPUSHs(newSViv(rpmdsFlags(Dep)));
void
Dep_evr(Dep)
rpmds Dep
PPCODE:
CHECK_RPMDS_IX(Dep);
mXPUSHs(newSVpv(rpmdsEVR(Dep), 0));
#ifndef RPM4_19_0
int
Dep_nopromote(Dep, sv_nopromote = NULL)
rpmds Dep
SV * sv_nopromote
CODE:
if (sv_nopromote == NULL) {
src/RPM4.xs view on Meta::CPAN
nopromote = SvIV(sv_nopromote);
RETVAL = _headername_vs_dep(header, Dep, nopromote);
OUTPUT:
RETVAL
MODULE = RPM4 PACKAGE = RPM4::Header::Files PREFIX = Files_
void
Files_DESTROY(Files)
rpmfi Files
PPCODE:
#ifdef HDRPMMEM
PRINTF_FREE(bless_rpmfi, Files, Files->nrefs);
#endif
Files = rpmfiFree(Files);
int
Files_compare(Files, Fb)
rpmfi Files
rpmfi Fb
CODE:
src/RPM4.xs view on Meta::CPAN
#endif
RETVAL = rpmfiNextD(Files);
OUTPUT:
RETVAL
#endif
void
Files_filename(Files)
rpmfi Files
PPCODE:
#ifdef HDLISTDEBUG
PRINTF_CALL;
fprintf(stderr, "File %s", rpmfiFN(Files));
#endif
mXPUSHs(newSVpv(rpmfiFN(Files), 0));
void
Files_dirname(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSVpv(rpmfiDN(Files), 0));
void
Files_basename(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSVpv(rpmfiBN(Files), 0));
void
Files_fflags(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSViv(rpmfiFFlags(Files)));
void
Files_mode(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSVuv(rpmfiFMode(Files)));
void
Files_md5(Files)
rpmfi Files
PREINIT:
const char * md5;
PPCODE:
if ((md5 =
rpmfiFDigestHex(Files, NULL)
) != NULL && *md5 != 0 /* return undef if empty */) {
mXPUSHs(newSVpv(md5, 0));
}
void
Files_link(Files)
rpmfi Files
PREINIT:
const char * link;
PPCODE:
if ((link = rpmfiFLink(Files)) != NULL && *link != 0 /* return undef if empty */) {
mXPUSHs(newSVpv(link, 0));
}
void
Files_user(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSVpv(rpmfiFUser(Files), 0));
void
Files_group(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSVpv(rpmfiFGroup(Files), 0));
void
Files_inode(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSViv(rpmfiFInode(Files)));
void
Files_size(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSViv(rpmfiFSize(Files)));
void
Files_dev(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSViv(rpmfiFRdev(Files)));
void
Files_color(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSViv(rpmfiFColor(Files)));
void
Files_class(Files)
rpmfi Files
PREINIT:
const char * class;
PPCODE:
if ((class = rpmfiFClass(Files)) != NULL)
mXPUSHs(newSVpv(rpmfiFClass(Files), 0));
void
Files_mtime(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSViv(rpmfiFMtime(Files)));
void
Files_nlink(Files)
rpmfi Files
PPCODE:
mXPUSHs(newSViv(rpmfiFNlink(Files)));
MODULE = RPM4 PACKAGE = RPM4
void
newspec(filename = NULL, anyarch = NULL, force = NULL)
char * filename
SV * anyarch
SV * force
PREINIT:
rpmts ts = rpmtsCreate();
PPCODE:
PUTBACK;
_newspec(ts, filename, anyarch, force);
ts = rpmtsFree(ts);
SPAGAIN;
MODULE = RPM4 PACKAGE = RPM4::Spec PREFIX = Spec_
void
Spec_new(perlclass, specfile = NULL, ...)
char * perlclass
char * specfile
PREINIT:
rpmts ts = NULL;
SV * anyarch = 0;
SV * force = 0;
int i;
PPCODE:
for(i=2; i < items; i++) {
if(strcmp(SvPV_nolen(ST(i)), "transaction") == 0) {
i++;
if (sv_isobject(ST(i)) && (SvTYPE(SvRV(ST(i))) == SVt_PVMG)) {
ts = (rpmts)SvIV((SV*)SvRV(ST(i)));
ts = rpmtsLink(ts);
} else {
croak( "transaction is not a blessed SV reference" );
XSRETURN_UNDEF;
}
src/RPM4.xs view on Meta::CPAN
rpmSpec spec
CODE:
#ifdef HDRPMMEM
PRINTF_FREE(bless_spec, spec, -1);
#endif
rpmSpecFree(spec);
void
Spec_srcheader(spec)
rpmSpec spec
PPCODE:
Header header = rpmSpecSourceHeader(spec);
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_header, (void *)headerLink(header)));
void
Spec_binheader(spec)
rpmSpec spec
PREINIT:
Package pkg;
PPCODE:
rpmSpecPkgIter iter = rpmSpecPkgIterInit(spec);
while ((pkg = rpmSpecPkgIterNext(iter)) != NULL)
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_header, (void *)headerLink(rpmSpecPkgHeader(pkg))));
void
Spec_srcrpm(spec)
rpmSpec spec
PREINIT:
Header header = NULL;
PPCODE:
header = rpmSpecSourceHeader(spec);
struct rpmtd_s td;
int no_src = headerGet(header, RPMTAG_NOSOURCE, &td, HEADERGET_MINMEM);
char *nvr = headerGetAsString(header, RPMTAG_NVR);
mXPUSHs(newSVpvf("%s/%s.%ssrc.rpm",
rpmGetPath("%{_srcrpmdir}", NULL),
nvr, no_src ? "no" : ""));
void
Spec_binrpm(spec)
rpmSpec spec
PREINIT:
Package pkg;
char * binFormat;
char * binRpm;
char * path;
Header header;
PPCODE:
rpmSpecPkgIter iter = rpmSpecPkgIterInit(spec);
while ((pkg = rpmSpecPkgIterNext(iter)) != NULL) {
/* headerCopyTags(h, pkg->header, copyTags); */
binFormat = rpmGetPath("%{_rpmfilename}", NULL);
header = rpmSpecSourceHeader(spec);
binRpm = headerFormat(header, binFormat, NULL);
free(binFormat);
path = rpmGetPath("%{_rpmdir}/", binRpm, NULL);
mXPUSHs(newSVpv(path, 0));
free(path);
free(binRpm);
}
void
Spec_check(spec, ts = NULL)
rpmSpec spec
PREINIT:
rpmts ts = rpmtsCreate();
rpmps ps;
PPCODE:
PUTBACK;
if (ts)
ts = rpmtsLink(ts);
else
ts = rpmtsCreate();
Header header = rpmSpecSourceHeader(spec);
if (!headerIsEntry(header, RPMTAG_REQUIRENAME)
&& !headerIsEntry(header, RPMTAG_CONFLICTNAME))
/* XSRETURN_UNDEF; */
return;
src/RPM4.xs view on Meta::CPAN
RETVAL = _specbuild(spec, sv_buildflags);
OUTPUT:
RETVAL
void
Spec_sources(spec, is = 0)
rpmSpec spec
int is
PREINIT:
rpmSpecSrc srcPtr;
PPCODE:
rpmSpecSrcIter iter = rpmSpecSrcIterInit(spec);
while ((srcPtr = rpmSpecSrcIterNext(iter)) != NULL) {
if (is && !(rpmSpecSrcFlags(srcPtr) & is))
continue;
mXPUSHs(newSVpv(rpmSpecSrcFilename(srcPtr, 0), 0));
}
void
Spec_sources_url(spec, is = 0)
rpmSpec spec
int is
PREINIT:
rpmSpecSrc srcPtr;
PPCODE:
rpmSpecSrcIter iter = rpmSpecSrcIterInit(spec);
while ((srcPtr = rpmSpecSrcIterNext(iter)) != NULL) {
if (is && !(rpmSpecSrcFlags(srcPtr) & is))
continue;
mXPUSHs(newSVpv(rpmSpecSrcFilename(srcPtr, 1), 0));
}
MODULE = RPM4 PACKAGE = RPM4::Db::_Problems PREFIX = ps_
void
ps_new(perlclass, ts)
char * perlclass
rpmts ts
PREINIT:
rpmps ps;
PPCODE:
ps = rpmtsProblems(ts);
if (ps && rpmpsNumProblems(ps)) /* if no problem, return undef */
mXPUSHs(sv_setref_pv(newSVpvs(""), bless_rpmps, ps));
void
ps_DESTROY(ps)
rpmps ps
PPCODE:
ps = rpmpsFree(ps);
int
ps_count(ps)
rpmps ps
CODE:
RETVAL = rpmpsNumProblems(ps);
OUTPUT:
RETVAL
void
ps_print(ps, fp)
rpmps ps
FILE *fp
PPCODE:
rpmpsPrint(fp, ps);
int
ps_isignore(ps, numpb)
rpmps ps
int numpb
PREINIT:
CODE:
RETVAL = 0; /* ignoreProblem is obsolete and always false */
OUTPUT: