Encode
view release on metacpan or search on metacpan
SV *dst;
bool renewed = 0;
IV check;
bool modify;
dSP;
INIT:
SvGETMAGIC(src);
SvGETMAGIC(check_sv);
check = SvROK(check_sv) ? ENCODE_PERLQQ|ENCODE_LEAVE_SRC : SvOK(check_sv) ? SvIV_nomg(check_sv) : 0;
modify = (check && !(check & ENCODE_LEAVE_SRC));
PPCODE:
if (!SvOK(src))
XSRETURN_UNDEF;
s = modify ? (U8 *)SvPV_force_nomg(src, slen) : (U8 *)SvPV_nomg(src, slen);
if (SvUTF8(src))
utf8_safe_downgrade(aTHX_ &src, &s, &slen, modify);
e = s+slen;
/*
* PerlIO check -- we assume the object is of PerlIO if renewed
*/
U8 *s;
U8 *e;
SV *dst;
IV check;
bool modify;
INIT:
SvGETMAGIC(src);
SvGETMAGIC(check_sv);
check = SvROK(check_sv) ? ENCODE_PERLQQ|ENCODE_LEAVE_SRC : SvOK(check_sv) ? SvIV_nomg(check_sv) : 0;
modify = (check && !(check & ENCODE_LEAVE_SRC));
PPCODE:
if (!SvOK(src))
XSRETURN_UNDEF;
s = modify ? (U8 *)SvPV_force_nomg(src, slen) : (U8 *)SvPV_nomg(src, slen);
e = s+slen;
dst = sv_2mortal(newSV(slen>0?slen:1)); /* newSV() abhors 0 -- inaba */
if (SvUTF8(src)) {
/* Already encoded */
if (strict_utf8(aTHX_ obj)) {
s = process_utf8(aTHX_ dst, s, e, check_sv, 1, 1, 0);
}
( run in 1.044 second using v1.01-cache-2.11-cpan-5511b514fd6 )