Perl-RPM
view release on metacpan or search on metacpan
RPM/Database.xs view on Meta::CPAN
const char *name;
PROTOTYPE: $$
CODE:
RETVAL = rpmdb_FETCH(aTHX_ self, name);
OUTPUT:
RETVAL
int
rpmdb_STORE(self=NULL, key=NULL, value=NULL)
SV* self;
SV* key;
SV* value;
PROTOTYPE: $$$
CODE:
{
rpmError(RPMERR_NOCREATEDB, "STORE: operation not permitted");
RETVAL = 0;
}
OUTPUT:
RETVAL
SV*
rpmdb_DELETE(self=NULL, key=NULL)
SV* self;
SV* key;
PROTOTYPE: $$
CODE:
{
rpmError(RPMERR_NOCREATEDB, "DELETE: operation not permitted");
RETVAL = Nullsv;
}
OUTPUT:
RETVAL
int
rpmdb_CLEAR(self=NULL)
SV* self;
PROTOTYPE: $
CODE:
{
rpmError(RPMERR_NOCREATEDB, "CLEAR: operation not permitted");
RETVAL = 0;
}
OUTPUT:
RETVAL
bool
rpmdb_EXISTS(self, name)
RPM::Database self;
const char *name;
PROTOTYPE: $$
CODE:
RETVAL = rpmdb_EXISTS(aTHX_ self, name);
OUTPUT:
RETVAL
void
rpmdb_FIRSTKEY(self)
RPM::Database self;
PROTOTYPE: $
PPCODE:
{
const char *name;
RPM__Header hdr;
if (rpmdb_FIRSTKEY(aTHX_ self, &name, &hdr))
{
EXTEND(SP, 2);
PUSHs(sv_2mortal(rpm_ptr2hvref(aTHX_ hdr, "RPM::Header")));
PUSHs(sv_2mortal(newSVpv(name, 0)));
}
}
void
rpmdb_NEXTKEY(self, prev_name=NULL)
RPM::Database self;
const char *prev_name;
PROTOTYPE: $;$
PPCODE:
{
const char *name;
RPM__Header hdr;
if (rpmdb_NEXTKEY(aTHX_ self, prev_name, &name, &hdr))
{
EXTEND(SP, 2);
PUSHs(sv_2mortal(rpm_ptr2hvref(aTHX_ hdr, "RPM::Header")));
PUSHs(sv_2mortal(newSVpv(name, 0)));
}
}
void
rpmdb_DESTROY(self)
RPM::Database self;
PROTOTYPE: $
CODE:
rpmdb_DESTROY(aTHX_ self);
bool
rpmdb_init(class, root=NULL, perms=O_RDWR)
SV* class;
const char* root;
int perms;
PROTOTYPE: $;$$
CODE:
if (SvPOK(class) && strEQ(SvPV_nolen(class), "RPM::Database"))
RETVAL = !rpmdbInit(root, perms);
else {
rpmError(RPMERR_BADARG, "%s must be called as a static method",
"RPM::Database::init");
RETVAL = FALSE;
}
OUTPUT:
RETVAL
bool
rpmdb_rebuild(class, root=NULL)
SV* class;
const char* root;
PROTOTYPE: $;$
CODE:
if (SvPOK(class) && strEQ(SvPV_nolen(class), "RPM::Database"))
#if RPM_VERSION >= 0x040100
RETVAL = !rpmdbRebuild(root, NULL, NULL);
#else
RETVAL = !rpmdbRebuild(root);
#endif
else {
rpmError(RPMERR_BADARG, "%s must be called as a static method",
"RPM::Database::rebuild");
RETVAL = FALSE;
}
OUTPUT:
RETVAL
void
rpmdb_find_by_file(self, string)
RPM::Database self;
SV *string;
PROTOTYPE: $$
ALIAS:
find_by_group = RPMTAG_GROUP
find_what_provides = RPMTAG_PROVIDENAME
find_what_requires = RPMTAG_REQUIRENAME
find_what_conflicts = RPMTAG_CONFLICTNAME
find_by_package = RPMTAG_NAME
PPCODE:
/* This is a front-end to all the rpmdbFindBy*() set, including FindByPackage
which differs from FETCH above in that if there is actually more than one
match, all will be returned. */
{
const char *str = Nullch;
RPM_Header *hdr;
if (ix == 0)
ix = RPMTAG_BASENAMES;
hdr = rpm_hvref2ptr(aTHX_ string, "RPM::Header");
if (hdr)
str = hdr->name;
else
str = SvPV_nolen(string);
if (! (str && *str)) {
rpmError(RPMERR_BADARG, "%s: arg 2 must be either a string"
" or valid RPM::Header object", GvNAME(CvGV(cv)));
/* Perl_warn(aTHX_ "%s", SvPV_nolen(rpm_errSV)); */
}
else {
rpmdbMatchIterator mi = rpmdbInitIterator(self->dbp, ix, str, 0);
if (mi) {
Header h;
int n = rpmdbGetIteratorCount(mi);
EXTEND(SP, n);
while ((h = rpmdbNextIterator(mi)) != Null(Header)) {
h = headerLink(h);
hdr = rpmhdr_TIEHASH_header(aTHX_ h);
PUSHs(sv_2mortal(rpm_ptr2hvref(aTHX_ hdr, "RPM::Header")));
}
rpmdbFreeIterator(mi);
}
}
}
( run in 0.865 second using v1.01-cache-2.11-cpan-5511b514fd6 )