view release on metacpan or search on metacpan
lib/Scope/Escape.xs view on Meta::CPAN
MODULE = Scope::Escape PACKAGE = Scope::Escape::Continuation
void
go(SV *contref, ...)
PROTOTYPE: $@
PPCODE:
PUSHMARK(SP+1);
/* the modified SP is intentionally lost here */
THX_xsfunc_go(aTHX_ contsub_from_contref(contref));
/* does not return */
view all matches for this distribution
view release on metacpan or search on metacpan
#if XSH_THREADSAFE
void
CLONE(...)
PROTOTYPE: DISABLE
PPCODE:
xsh_clone();
XSRETURN(0);
#endif /* XSH_THREADSAFE */
void
HERE()
PROTOTYPE:
PREINIT:
I32 cxix;
PPCODE:
cxix = su_context_real2logical(su_context_here());
EXTEND(SP, 1);
mPUSHi(cxix);
XSRETURN(1);
void
UP(...)
PROTOTYPE: ;$
PREINIT:
I32 cxix;
PPCODE:
SU_GET_CONTEXT(0, 0, su_context_here());
if (cxix > 0) {
--cxix;
cxix = su_context_skip_db(cxix);
cxix = su_context_normalize_up(cxix);
void
SUB(...)
PROTOTYPE: ;$
PREINIT:
I32 cxix;
PPCODE:
SU_GET_CONTEXT(0, 0, cxstack_ix);
EXTEND(SP, 1);
for (; cxix >= 0; --cxix) {
PERL_CONTEXT *cx = cxstack + cxix;
switch (CxTYPE(cx)) {
void
EVAL(...)
PROTOTYPE: ;$
PREINIT:
I32 cxix;
PPCODE:
SU_GET_CONTEXT(0, 0, cxstack_ix);
EXTEND(SP, 1);
for (; cxix >= 0; --cxix) {
PERL_CONTEXT *cx = cxstack + cxix;
switch (CxTYPE(cx)) {
void
SCOPE(...)
PROTOTYPE: ;$
PREINIT:
I32 cxix, level;
PPCODE:
SU_GET_LEVEL(0, 0);
cxix = su_context_here();
while (--level >= 0) {
if (cxix <= 0) {
warn(su_stack_smash);
void
CALLER(...)
PROTOTYPE: ;$
PREINIT:
I32 cxix, level;
PPCODE:
SU_GET_LEVEL(0, 0);
for (cxix = cxstack_ix; cxix > 0; --cxix) {
PERL_CONTEXT *cx = cxstack + cxix;
switch (CxTYPE(cx)) {
case CXt_SUB:
void
want_at(...)
PROTOTYPE: ;$
PREINIT:
I32 cxix;
PPCODE:
SU_GET_CONTEXT(0, 0, cxstack_ix);
EXTEND(SP, 1);
while (cxix > 0) {
PERL_CONTEXT *cx = cxstack + cxix--;
switch (CxTYPE(cx)) {
PROTOTYPE: ;$
PREINIT:
I32 cxix;
const PERL_CONTEXT *cx, *dbcx;
COP *cop;
PPCODE:
SU_GET_CONTEXT(0, 0, su_context_skip_db(cxstack_ix));
cxix = su_context_normalize_up(cxix);
cx = cxstack + cxix;
dbcx = cx;
if (PL_DBsub && cxix && (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)) {
void
uplevel(SV *code, ...)
PROTOTYPE: &@
PREINIT:
I32 cxix, ret, args = 0;
PPCODE:
if (SvROK(code))
code = SvRV(code);
if (SvTYPE(code) < SVt_PVCV)
croak("First argument to uplevel must be a code reference");
SU_GET_CONTEXT(1, items - 1, cxstack_ix);
uid(...)
PROTOTYPE: ;$
PREINIT:
I32 cxix;
SV *uid;
PPCODE:
SU_GET_CONTEXT(0, 0, su_context_here());
uid = su_uid_get(cxix);
EXTEND(SP, 1);
PUSHs(uid);
XSRETURN(1);
void
validate_uid(SV *uid)
PROTOTYPE: $
PREINIT:
SV *ret;
PPCODE:
ret = su_uid_validate(uid) ? &PL_sv_yes : &PL_sv_no;
EXTEND(SP, 1);
PUSHs(ret);
XSRETURN(1);
view all matches for this distribution
view release on metacpan or search on metacpan
ContextGraph.xs view on Meta::CPAN
result_count = 0;
undef = (SV*) &PL_sv_undef;
list = (AV *) sv_2mortal((SV *)newAV());
startSize = 64;
PPCODE:
result = collect_results(graph);
for (i = 0; result[i].weight > 0; i++) {
entry = newAV();
/* fprintf( stderr, "weight %ld, %ld, %f \n", i, result[i].sink, result[i].weight);
*/
view all matches for this distribution
view release on metacpan or search on metacpan
void
call_search_main(query, maxget)
SV *query
int maxget
PPCODE:
char *qstr;
char buffer[BUFSIZE];
char cqstr[BUFSIZE * 2];
AV *retar;
int i;
view all matches for this distribution
view release on metacpan or search on metacpan
RETVAL
SV *
Sd_ListTokens()
PPCODE:
{
if (Sd_ListTokens(messageBuf, MAX_RESULT_MSG_SIZE) == API_OK) {
while (strcmp(messageBuf, "Done") != 0) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSVpv(messageBuf, 0)));
SV *
Sd__ListGroupMembership(tokenSerialNumber)
char * tokenSerialNumber
PPCODE:
{
char sn[13] = "000000000000";
if (strlen(tokenSerialNumber) > 12) tokenSerialNumber[12] = 0;
strcpy(sn+12-strlen(tokenSerialNumber), tokenSerialNumber);
if (Sd_ListGroupMembership(sn, messageBuf, MAX_RESULT_MSG_SIZE) != API_OK) {
}
}
SV *
Sd__ListGroups()
PPCODE:
{
if (Sd_ListGroups(messageBuf, MAX_RESULT_MSG_SIZE) != API_OK) {
EXTEND(sp, 1);
PUSHs(&sv_undef);
} else {
SV *
Sd__ListClientActivations(tokenSerialNumber)
char * tokenSerialNumber;
PPCODE:
{
char sn[13] = "000000000000";
if (strlen(tokenSerialNumber) > 12) tokenSerialNumber[12] = 0;
strcpy(sn+12-strlen(tokenSerialNumber), tokenSerialNumber);
if (Sd_ListClientActivations(sn, messageBuf, MAX_RESULT_MSG_SIZE) != API_OK) {
SV *
Sd__ListClientsForGroup(group)
char *group;
PPCODE:
{
if (Sd_ListClientsForGroup(group, messageBuf, MAX_RESULT_MSG_SIZE) != API_OK) {
EXTEND(sp, 1);
PUSHs(&sv_undef);
} else {
}
}
SV *
Sd__ListClients()
PPCODE:
{
if (Sd_ListClients(messageBuf, MAX_RESULT_MSG_SIZE) != API_OK) {
EXTEND(sp, 1);
PUSHs(&sv_undef);
} else {
Sd__ListHistory(days, tokenSerialNumber, filterOpt)
char * days;
char * tokenSerialNumber;
char * filterOpt;
PPCODE:
{
char sn[13] = "000000000000";
if (strcmp(tokenSerialNumber, "help") == 0) {
strcpy(sn, "help");
} else {
SV *
Sd__MonitorHistory(outfile, dashC)
char *outfile;
char *dashC;
PPCODE:
{
if (Sd_MonitorHistory(outfile, dashC,
messageBuf, MAX_RESULT_MSG_SIZE) != API_OK) {
EXTEND(sp, 1);
PUSHs(&sv_undef);
view all matches for this distribution
view release on metacpan or search on metacpan
const-xs.inc view on Meta::CPAN
/* NV nv; Uncomment this if you need to return NVs */
/* const char *pv; Uncomment this if you need to return PVs */
INPUT:
SV * sv;
const char * s = SvPV(sv, len);
PPCODE:
/* Change this to constant(aTHX_ s, len, &iv, &nv);
if you need to return both NVs and IVs */
type = constant(aTHX_ s, len, &iv);
/* Return 1 or 2 items. First is error message, or undef if no error.
Second, if present, is found value */
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Perl6/PVIP.xs view on Meta::CPAN
size_t len;
const char *buf;
PVIPNode *node;
SV *sv;
SV *errpv;
PPCODE:
buf = SvPV(code, len);
PVIPString* err;
node = PVIP_parse_string(buf, len, 0, &err);
if (node) {
XS_STRUCT2OBJ(sv, "Perl6::PVIP::Node", node, 1);
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Senna.xs view on Meta::CPAN
unsigned int nrecords_lexicon;
unsigned int file_size_lexicon;
unsigned int inv_seg_size;
unsigned int inv_chunk_size;
sen_rc rc;
PPCODE:
index = XS_STATE(sen_index *, self);
rc = sen_index_info(index,
&key_size, &flags, &initial_n_segments, &encoding,
&nrecords_keys, &file_size_keys, &nrecords_lexicon,
&file_size_lexicon, &inv_seg_size, &inv_chunk_size
lib/Senna.xs view on Meta::CPAN
sen_select_optarg *optarg = NULL;
sen_sel_operator op = SvOK(op_sv) ? SvIV(op_sv) : 0;
char *query = NULL;
int need_optarg_free = 0;
int need_records_free = 0;
PPCODE:
index = XS_STATE(sen_index *, self);
if ( SvOK(query_sv) ) {
query = SvPV(query_sv, query_len);
}
lib/Senna.xs view on Meta::CPAN
SRecords_xs_next(self)
SV *self;
PREINIT:
sen_records *r;
sen_rc rc;
PPCODE:
r = XS_STATE(sen_records *, self);
if (GIMME_V == G_SCALAR) {
/* If we're being called in scalar context, then just return if
* we have a next record or not
lib/Senna.xs view on Meta::CPAN
sen_rc rc;
sen_set *set;
unsigned int key_size;
unsigned int value_size;
unsigned int n_entries;
PPCODE:
set = XS_STATE(sen_set *, self);
rc = sen_set_info(set, &key_size, &value_size, &n_entries);
if (rc != sen_success)
croak ("Failed to call sen_set_info: %d", rc);
lib/Senna.xs view on Meta::CPAN
#else
size_t max_tagged_len;
#endif
int i;
sen_rc rc;
PPCODE:
snip = XS_STATE(sen_perl_snip *, self);
sen_snip_exec(
snip->snip,
string,
#if (SENNA_MAJOR_VERSION >= 1)
lib/Senna.xs view on Meta::CPAN
DESTROY(self)
SV *self;
PREINIT:
sen_perl_snip *snip;
int i;
PPCODE:
snip = XS_STATE(sen_perl_snip *, self);
sen_snip_close(snip->snip);
for(i = 0; i < snip->open_tags_size; i++) {
Safefree(snip->open_tags[i]);
lib/Senna.xs view on Meta::CPAN
SOSort_compar_arg(self)
SV *self;
PREINIT:
sen_sort_optarg *optarg;
void **args;
PPCODE:
optarg = XS_STATE(sen_sort_optarg *, self);
/* The CV is always placed in the second element of ->func_arg */
args = (void **) optarg->compar_arg;
if (GIMME_V == G_SCALAR) {
AV *av;
lib/Senna.xs view on Meta::CPAN
void
SOSelect_weight_vector(self)
SV *self;
PREINIT:
sen_select_optarg *optarg;
PPCODE:
optarg = XS_STATE(sen_select_optarg *, self);
if (optarg->vector_size <= 0)
return;
if (GIMME_V == G_SCALAR) {
lib/Senna.xs view on Meta::CPAN
SOSelect_func_arg(self)
SV *self;
PREINIT:
sen_select_optarg *optarg;
void **args;
PPCODE:
optarg = XS_STATE(sen_select_optarg *, self);
/* The CV is always placed in the second element of ->func_arg */
args = (void **) optarg->func_arg;
if (GIMME_V == G_SCALAR) {
AV *av;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Sentinel.xs view on Meta::CPAN
SV *get_cb = NULL;
SV *set_cb = NULL;
SV *obj = NULL;
SV *retval;
PPCODE:
/* Parse name => value argument pairs */
for(i = 0; i < items; i += 2) {
char *argname = SvPV_nolen(ST(i));
SV *argvalue = ST(i+1);
view all matches for this distribution
view release on metacpan or search on metacpan
SV *opt;
SV *into;
PREINIT:
dMY_CXT;
srl_decoder_t *dec= NULL;
PPCODE:
if (SvROK(src))
croak("We can't decode a reference as Sereal!");
/* Support no opt at all, undef, hashref */
if (opt != NULL) {
SvGETMAGIC(opt);
view all matches for this distribution
view release on metacpan or search on metacpan
SV *src;
HV *opt;
PREINIT:
srl_encoder_t *enc;
dMY_CXT;
PPCODE:
enc = srl_build_encoder_struct(aTHX_ opt, MY_CXT.options);
assert(enc != NULL);
/* Avoid copy by stealing string buffer if it is not too large.
* This makes sense in the functional interface since the string
* buffer isn't ever going to be reused. */
SV *hdr_user_data_src;
HV *opt;
PREINIT:
srl_encoder_t *enc;
dMY_CXT;
PPCODE:
if (!SvOK(hdr_user_data_src))
hdr_user_data_src = NULL;
enc = srl_build_encoder_struct(aTHX_ opt, MY_CXT.options);
assert(enc != NULL);
/* Avoid copy by stealing string buffer if it is not too large.
view all matches for this distribution
view release on metacpan or search on metacpan
void
append(mrg, src)
srl_merger_t *mrg;
SV *src
PPCODE:
srl_merger_append(aTHX_ mrg, src);
void
append_all(mrg, src)
srl_merger_t *mrg;
AV *src
PPCODE:
srl_merger_append_all(aTHX_ mrg, src);
SV*
finish(mrg, user_header = NULL)
srl_merger_t *mrg;
view all matches for this distribution
view release on metacpan or search on metacpan
Iterator/Iterator.xs view on Meta::CPAN
UV length;
int blessed;
const char *classname;
STRLEN classname_length;
PPCODE:
type = srl_iterator_info(aTHX_ iter, &length, &classname, &classname_length);
blessed = (type & SRL_ITERATOR_INFO_BLESSED) == SRL_ITERATOR_INFO_BLESSED;
EXTEND(SP, blessed ? 3 : 2);
PUSHs(sv_2mortal(newSVuv(type)));
view all matches for this distribution
view release on metacpan or search on metacpan
Splitter.xs view on Meta::CPAN
OUTPUT: RETVAL
void
DESTROY(splitter)
Sereal::Splitter splitter;
PPCODE:
srl_destroy_splitter(aTHX_ splitter);
SV*
next_chunk(splitter)
Sereal::Splitter splitter;
view all matches for this distribution
view release on metacpan or search on metacpan
int
_find_pos(self, val, low = 0)
AV *self;
IV val = SvIV(ST(1));
IV low = ( items == 3 ) ? SvIV( ST( 2 ) ) : 0;
PPCODE:
{
XSRETURN_IV( __find_pos(self, val, low ) );
}
AV *
view all matches for this distribution
view release on metacpan or search on metacpan
void
new(pkg, ...)
SV* pkg;
PPCODE:
{
SV* self;
ISET* s;
I32 item;
void
insert(self, ...)
SV* self;
PPCODE:
ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
I32 item;
int inserted = 0;
for (item = 1; item < items; ++item)
void
remove(self, ...)
SV* self;
PPCODE:
ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
I32 item;
int removed = 0;
void
includes(self, ...)
SV* self;
PPCODE:
ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
I32 hash, index, item;
SV **el_iter, **el_last;
BUCKET* bucket;
void
members(self)
SV* self
PPCODE:
ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
BUCKET* bucket_iter = s->bucket;
BUCKET* bucket_last = bucket_iter + s->buckets;
void
_STORABLE_thaw(obj, cloning, serialized, ...)
SV* obj;
PPCODE:
{
ISET* s;
I32 item;
SV* isv;
void
CLONE(...)
PROTOTYPE: DISABLE
PREINIT:
ISET *old_s;
PPCODE:
{
dMY_CXT;
old_s = MY_CXT.s;
}
{
view all matches for this distribution
view release on metacpan or search on metacpan
AV **in;
SV **out;
CV *cv;
HV *stash;
GV *gv;
PPCODE:
cv = sv_2cv(code, &stash, &gv, 0);
if (! cv)
croak("Not a subroutine reference");
if (2 > items)
view all matches for this distribution
view release on metacpan or search on metacpan
fallback/const-xs.inc view on Meta::CPAN
/* NV nv; Uncomment this if you need to return NVs */
/* const char *pv; Uncomment this if you need to return PVs */
INPUT:
SV * sv;
const char * s = SvPV(sv, len);
PPCODE:
type = constant(aTHX_ s, len);
/* Return 1 or 2 items. First is error message, or undef if no error.
Second, if present, is found value */
switch (type) {
case PERL_constant_NOTFOUND:
view all matches for this distribution
view release on metacpan or search on metacpan
U8 *s, *e, *p, *d, *m, *m_e, uni[UTF8_MAXLEN + 1];
UV uv;
struct leading lb;
U8* (*app_uv)(U8*, UV);
bool mod_g, mod_s, mod_t;
PPCODE:
STMT_ASSIGN_CVREF_AND_SRC(funcname_to[ix])
if (SvUTF8(src)) {
src = sv_mortalcopy(src);
sv_utf8_downgrade(src, 0);
}
U8 *s, *e, *p, *d, *m, *m_e, mbc[3];
U16 j, *t;
UV uv;
UV (*ord_uv)(U8 *, STRLEN, STRLEN *);
bool mod_g, mod_s, mod_f;
PPCODE:
STMT_ASSIGN_CVREF_AND_SRC(funcname_fm[ix])
if (ix == 0 && !SvUTF8(src)) {
src = sv_mortalcopy(src);
sv_utf8_upgrade(src);
}
view all matches for this distribution
view release on metacpan or search on metacpan
issjis(...)
PREINIT:
I32 i;
U8 *s;
STRLEN byte;
PPCODE:
for (i = 0; i < items; i++) {
s = (U8*)SvPV(ST(i), byte);
if (!issjis(s, byte))
XSRETURN_NO;
}
PREINIT:
U8 *s, *e, *p, *p_ini, *p_fin;
STRLEN sbyte;
I32 slen, ini, fin, cnt;
int except;
PPCODE:
s = SvROK(src)
? (U8*)SvPV_force(SvRV(src), sbyte)
: (U8*)SvPV(src, sbyte);
slen = length(s,sbyte);
PREINIT:
U8 *s, *p, *e, *d;
STRLEN byte;
SV *dst;
I32 cnt = 0;
PPCODE:
s = SvROK(src)
? (U8*)SvPV_force(SvRV(src), byte)
: (U8*)SvPV(src, byte);
dst = byte ? newSV((ix == 1) ? byte : 2 * byte) : newSVpvn("",0);
U8 *s, *p, *e, *d;
STRLEN byte;
SV *dst;
I32 cnt = 0;
U8* trail;
PPCODE:
s = SvROK(src)
? (U8*)SvPV_force(SvRV(src), byte)
: (U8*)SvPV(src, byte);
dst = byte ? newSV(2 * byte) : newSVpvn("",0);
U8 *s, *p, *e, *d;
STRLEN byte;
SV *dst;
U16 uv;
I32 cnt = 0;
PPCODE:
s = SvROK(src)
? (U8*)SvPV_force(SvRV(src), byte)
: (U8*)SvPV(src, byte);
dst = byte ? newSV(byte) : newSVpvn("",0);
PREINIT:
U8 *s, *p, *e, *d;
STRLEN byte;
SV *dst;
I32 cnt = 0;
PPCODE:
s = SvROK(src)
? (U8*)SvPV_force(SvRV(src), byte)
: (U8*)SvPV(src, byte);
dst = byte ? newSV(2 * byte) : newSVpvn("",0);
PREINIT:
U8 *s, *p, *e, *d;
STRLEN byte;
SV *dst;
I32 cnt = 0;
PPCODE:
s = SvROK(src)
? (U8*)SvPV_force(SvRV(src), byte)
: (U8*)SvPV(src, byte);
dst = byte ? newSV(byte) : newSVpvn("",0);
PREINIT:
U8 *s, *p, *e, *d;
STRLEN byte;
SV *dst;
I32 cnt = 0;
PPCODE:
s = SvROK(src)
? (U8*)SvPV_force(SvRV(src), byte)
: (U8*)SvPV(src, byte);
dst = byte ? newSV(byte) : newSVpvn("",0);
U8 lastL = 0, iniL, iniT, finL, finT;
STRLEN sbyte, dbyte, dstcur;
SV *dst;
U16 fr, to;
int isReverse, doReverse, isrange;
PPCODE:
isReverse = SvTRUE(rev);
s = (U8*)SvPV(src, sbyte);
dbyte = sbyte + 1;
U8 *p, *e, *s, *d, *tr, *m;
STRLEN idx;
STRLEN byte, trbyte, modbyte;
U8 fr[2], *to, tolast[2], pre[2], tmp[2];
STRLEN fbyte, tbyte, lbyte, prebyte, tmpbyte;
PPCODE:
s = SvROK(src)
? (U8*)SvPV_force(SvRV(src), byte)
: (U8*)SvPV(src, byte);
tr = (U8*)SvPV(trans, trbyte);
PREINIT:
U8 *s, *e, *p, *sep, *anc, *last;
STRLEN byte, sepbyte, ch;
int wantarray;
I32 cnt = 0;
PPCODE:
wantarray = (GIMME_V == G_ARRAY);
s = (U8*)SvPV(src, byte);
if (!byte)
view all matches for this distribution
view release on metacpan or search on metacpan
U8 *s, *e, *p, *d, uni[UTF8_MAXLEN + 1];
UV uv, u_temp;
struct leading lb;
U8* (*app_uv)(U8*, UV);
int id_utf, use2004;
PPCODE:
use2004 = ix < NUM_toUTF;
id_utf = ix % NUM_toUTF;
STMT_ASSIGN_CVREF_AND_SRC(funcname_to[ix])
if (SvUTF8(src)) {
U8 *s, *e, *p, *d, mbc[3];
U16 j, *tbl_row, **tbl_plain;
UV uv, uv2;
UV (*ord_uv)(U8 *, STRLEN, STRLEN *);
int id_utf, use2004;
PPCODE:
use2004 = ix < NUM_fromUTF;
id_utf = ix % NUM_fromUTF;
STMT_ASSIGN_CVREF_AND_SRC(funcname_fm[ix])
if (id_utf == 0 && !SvUTF8(src)) {
view all matches for this distribution
view release on metacpan or search on metacpan
fallback/const-xs.inc view on Meta::CPAN
/* NV nv; Uncomment this if you need to return NVs */
/* const char *pv; Uncomment this if you need to return PVs */
INPUT:
SV * sv;
const char * s = SvPV(sv, len);
PPCODE:
/* Change this to constant(aTHX_ s, len, &iv, &nv);
if you need to return both NVs and IVs */
type = constant(aTHX_ s, len, &iv);
/* Return 1 or 2 items. First is error message, or undef if no error.
Second, if present, is found value */
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Smart/Match/Overload.xs view on Meta::CPAN
MODULE = Smart::Match::Overload PACKAGE = Smart::Match::Overload
int
_boolean(self, ...)
SV* self;
PPCODE:
dUNDERBAR;
if (UNDERBAR != DEFSV) {
SAVESPTR(DEFSV);
DEFSV = UNDERBAR;
}
view all matches for this distribution
view release on metacpan or search on metacpan
Bluetooth.xs view on Meta::CPAN
PREINIT:
bdaddr_t addr[256];
int r;
my_thread_var_t *tv;
char tmp[20];
PPCODE:
r = bt_device_list( addr, sizeof( addr ) / sizeof( bdaddr_t ) );
if( r == SOCKET_ERROR ) {
tv = items > 0 ? my_thread_var_find( ST(0) ) : NULL;
if( tv != NULL )
tv->last_errno = Socket_errno();
Bluetooth.xs view on Meta::CPAN
char tmp[256], *s1;
STRLEN l1;
int r;
bdaddr_t addr;
my_thread_var_t *tv;
PPCODE:
if( items > 1 ) {
s1 = SvPVbyte( ST(1), l1 );
if( l1 == sizeof( bdaddr_t ) )
r = bt_device_name( (bdaddr_t *) s1, tmp, sizeof( tmp ) - 1 );
else {
Bluetooth.xs view on Meta::CPAN
char tmp[256], *s1;
STRLEN l1;
int r;
bdaddr_t addr;
my_thread_var_t *tv;
PPCODE:
if( items > 1 ) {
s1 = SvPVbyte( ST(1), l1 );
if( l1 == sizeof( bdaddr_t ) )
r = bt_service_list( (bdaddr_t *) s1 );
else {
view all matches for this distribution
view release on metacpan or search on metacpan
void
sendmmsg (psock, msg_array_ref)
PerlIO * psock
SV * msg_array_ref
PPCODE:
sendmultimsg(psock, msg_array_ref);
return;
void
recvmmsg (psock, msg_count, msg_len, tspec)
PerlIO * psock
int msg_count
int msg_len
float tspec
PPCODE:
recvmultimsg(psock, msg_count, msg_len, tspec);
return;
view all matches for this distribution
view release on metacpan or search on metacpan
Interface.xs view on Meta::CPAN
struct ifaddrs *next;
int ret;
HV* h;
UV count=0;
PPCODE:
ret=getifaddrs(&a);
if(ret<0){
switch(GIMME_V){
case G_SCALAR:
Interface.xs view on Meta::CPAN
SV *name;
INIT:
char *p;
unsigned int ret;
int len;
PPCODE:
if(SvOK(name)&&SvPOK(name)){
len=SvCUR(name);
p=SvGROW(name, len+1);
p[len]='\0';
Interface.xs view on Meta::CPAN
SV *result=newSV(IF_NAMESIZE);
char *p=SvPVX(result);
char *ret;
PPCODE:
if(SvOK(index)){
ret=if_indextoname(SvUV(index), p);
if(ret == p){
SvPOK_on(result);
Interface.xs view on Meta::CPAN
INIT:
UV count=0;
struct if_nameindex *results, *next;
PPCODE:
results=if_nameindex();
if(results ==NULL){
view all matches for this distribution
view release on metacpan or search on metacpan
int len;
SV *temp;
bool return_av;
PPCODE:
h.ai_flags=0;
h.ai_family=0;
h.ai_socktype=0;
h.ai_protocol=0;
h.ai_addrlen=0;
char *service;
int fl;
int addrlen;
struct sockaddr *addr;
PPCODE:
//Ensure outputs are not readonly
if(SvREADONLY(hostname) || SvREADONLY(servicename)){
Perl_croak(aTHX_ "%s", PL_no_modify);
view all matches for this distribution
view release on metacpan or search on metacpan
SV* cmsv;
INIT:
struct msghdr dummy;
struct cmsghdr *cm;
STRLEN len;
PPCODE:
dummy.msg_control = (struct cmsghdr *) SvPV(cmsv, len);
dummy.msg_controllen = len;
if (!len)
XSRETURN_EMPTY;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Socket/Netlink.xs view on Meta::CPAN
SV *addr
PREINIT:
struct sockaddr_nl snl;
PPCODE:
if(SvCUR(addr) != sizeof snl)
croak("Expected %d byte address", sizeof snl);
Copy(SvPVbyte_nolen(addr), &snl, sizeof snl, char);
lib/Socket/Netlink.xs view on Meta::CPAN
PREINIT:
struct nlmsghdr nlmsghdr;
STRLEN msglen;
PPCODE:
if(!SvPOK(msg))
croak("Expected a string message");
msglen = SvCUR(msg);
lib/Socket/Netlink.xs view on Meta::CPAN
SV *msg
PREINIT:
struct nlmsgerr nlmsgerr;
PPCODE:
if(!SvPOK(msg))
croak("Expected a string message");
if(SvCUR(msg) != sizeof(nlmsgerr))
croak("Expected %d bytes of message", sizeof(nlmsgerr));
lib/Socket/Netlink.xs view on Meta::CPAN
INIT:
STRLEN bufflen;
char *buffer;
PPCODE:
if(!SvPOK(body))
croak("Expected a string body");
buffer = SvPVbyte(body, bufflen);
view all matches for this distribution
view release on metacpan or search on metacpan
}
void
unpack_sockaddr_in(sin_sv)
SV * sin_sv
PPCODE:
{
STRLEN sockaddrlen;
struct sockaddr_in addr;
SV *ip_address_sv;
char * sin;
}
void
unpack_sockaddr_in6(sin6_sv)
SV * sin6_sv
PPCODE:
{
#ifdef HAS_SOCKADDR_IN6
STRLEN addrlen;
struct sockaddr_in6 sin6;
char * addrbytes;
}
void
unpack_ip_mreq(mreq_sv)
SV * mreq_sv
PPCODE:
{
#ifdef HAS_IP_MREQ
struct ip_mreq mreq;
STRLEN mreqlen;
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
}
void
unpack_ip_mreq_source(mreq_sv)
SV * mreq_sv
PPCODE:
{
#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
struct ip_mreq_source mreq;
STRLEN mreqlen;
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
}
void
unpack_ipv6_mreq(mreq_sv)
SV * mreq_sv
PPCODE:
{
#ifdef HAS_IPV6_MREQ
struct ipv6_mreq mreq;
STRLEN mreqlen;
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
view all matches for this distribution