Re: question on implementing C function with binary string as input and output
[email protected] Mon, 7 Apr 2014 10:53:01 +1000
| Newsgroups | perl.inline |
|---|---|
| Message-ID | <26464BF8C8FE42ECB9F3A8DCC97DA668@OwnerPC311012> |
-----Original Message----- From: [email protected] > I don't know (off the top of my head) how to concatenate binary strings in > C ... Thankfully, perl's API provides a simple solution: ############################## use warnings; use strict; use Devel::Peek; use Inline C => Config => BUILD_NOISY => 1, ; use Inline C => <<'EOC'; SV * foo(SV * in) { SV * ret; STRLEN len; char *tmp = SvPV(in, len); ret = newSVpv(tmp, len); sv_catpvn(ret, tmp, len); return ret; } EOC my $in = 'hello' . "\x00" . 'world'; my $ret = foo($in); $ret eq $in . $in ? print "\nok 1\n\n" : print "\nnot ok 1\n\n"; Dump($in); print "\n"; Dump ($ret); ############################## Cheers, Rob