ALPM
view release on metacpan or search on metacpan
#include <stdlib.h>
#include <string.h>
#include <alpm.h>
/* Perl API headers. */
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#include "types.h"
/* SCALAR CONVERSIONS */
SV*
c2p_str(void *str)
{
return newSVpv(str, 0);
}
const char*
p2c_str(SV *sv)
{
char *pstr, *cstr;
STRLEN len;
/* pstr is not guaranteed to be NULL terminated so make a copy */
pstr = SvPV(sv, len);
cstr = calloc(len + 1, sizeof(char));
memcpy(cstr, pstr, len);
return cstr;
}
SV*
c2p_pkg(void *p)
{
SV *rv = newSV(0);
return sv_setref_pv(rv, "ALPM::Package", p);
}
ALPM_Package
p2c_pkg(SV *pkgobj)
{
return INT2PTR(ALPM_Package, SvIV((SV*)SvRV(pkgobj)));
}
ALPM_DB
p2c_db(SV *db)
{
return INT2PTR(ALPM_DB, SvIV((SV*)SvRV(db)));
}
SV*
c2p_localdb(void *db)
{
SV *rv = newSV(0);
sv_setref_pv(rv, "ALPM::DB::Local", db);
return rv;
}
SV*
c2p_syncdb(void *db)
{
SV *rv = newSV(0);
sv_setref_pv(rv, "ALPM::DB::Sync", db);
return rv;
}
SV*
c2p_db(void *db)
{
( run in 0.711 second using v1.01-cache-2.11-cpan-df04353d9ac )