ALPM
view release on metacpan or search on metacpan
#------------------------
# PUBLIC DATABASE METHODS
#------------------------
MODULE = ALPM PACKAGE = ALPM::DB
void
pkgs(db)
ALPM_DB db
PREINIT:
alpm_list_t *pkgs;
PPCODE:
pkgs = alpm_db_get_pkgcache(db);
# If pkgs is NULL, we can't report the error because errno is in the handle object.
LIST2STACK(pkgs, c2p_pkg);
# groups returns a list of pairs. Each pair is a group name followed by
# an array ref of packages belonging to the group.
void
groups(db)
ALPM_DB db
PREINIT:
alpm_list_t *grps;
alpm_group_t *grp;
AV *pkgarr;
PPCODE:
grps = alpm_db_get_groupcache(db);
while(grps){
grp = grps->data;
XPUSHs(sv_2mortal(newSVpv(grp->name, strlen(grp->name))));
pkgarr = list2av(grp->packages, c2p_pkg);
XPUSHs(sv_2mortal(newRV_noinc((SV*)pkgarr)));
grps = alpm_list_next(grps);
}
const char *
name(db)
ALPM_DB db
CODE:
RETVAL = alpm_db_get_name(db);
OUTPUT:
RETVAL
SV *
find(db, name)
ALPM_DB db
const char *name
PREINIT:
ALPM_Package pkg;
CODE:
pkg = alpm_db_get_pkg(db, name);
RETVAL = (pkg == NULL ? &PL_sv_undef
: c2p_pkg(pkg));
OUTPUT:
RETVAL
void
find_group(db, name)
ALPM_DB db
const char *name
PREINIT:
alpm_group_t *grp;
alpm_list_t *pkgs;
PPCODE:
grp = alpm_db_get_group(db, name);
if(grp){
pkgs = grp->packages;
LIST2STACK(pkgs, c2p_pkg);
}
void
search(db, ...)
ALPM_DB db
PREINIT:
alpm_list_t *L, *terms, *fnd;
int i;
PPCODE:
i = 1;
STACK2LIST(i, terms, p2c_str);
L = fnd = alpm_db_search(db, terms);
ZAPLIST(terms, free);
LIST2STACK(fnd, c2p_pkg);
alpm_list_free(L);
#-----------------------------
# PUBLIC LOCAL DATABASE METHODS
#-----------------------------
MODULE = ALPM PACKAGE = ALPM::DB::Local
( run in 1.137 second using v1.01-cache-2.11-cpan-39bf76dae61 )