Lines Matching refs:e
63 PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode);
75 if (e->enc) {
82 XPUSHs(e->enc);
99 PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode);
106 e->enc = NULL;
107 e->chk = NULL;
108 e->inEncodeCall = 0;
129 e->enc = Nullsv;
152 e->enc = newSVsv(result);
154 XPUSHs(e->enc);
166 e->flags |= NEEDS_LINES;
172 e->chk = newSVsv(get_sv("PerlIO::encoding::fallback", 0));
173 if (SvROK(e->chk))
175 SvUV_set(e->chk, ((SvUV(e->chk) & ~encode_leave_src) | encode_stop_at_partial));
176 e->inEncodeCall = 0;
187 PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode);
188 if (e->enc) {
189 SvREFCNT_dec(e->enc);
190 e->enc = Nullsv;
192 if (e->bufsv) {
193 SvREFCNT_dec(e->bufsv);
194 e->bufsv = Nullsv;
196 if (e->dataSV) {
197 SvREFCNT_dec(e->dataSV);
198 e->dataSV = Nullsv;
200 if (e->chk) {
201 SvREFCNT_dec(e->chk);
202 e->chk = Nullsv;
210 PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode);
211 if (!e->base.bufsiz)
212 e->base.bufsiz = 1024;
213 if (!e->bufsv) {
214 e->bufsv = newSV(e->base.bufsiz);
215 SvPVCLEAR(e->bufsv);
217 e->base.buf = (STDCHAR *) SvPVX(e->bufsv);
218 if (!e->base.ptr)
219 e->base.ptr = e->base.buf;
220 if (!e->base.end)
221 e->base.end = e->base.buf;
222 if (e->base.ptr < e->base.buf
223 || e->base.ptr > e->base.buf + SvLEN(e->bufsv)) {
224 Perl_warn(aTHX_ " ptr %p(%p)%p", e->base.buf, e->base.ptr,
225 e->base.buf + SvLEN(e->bufsv));
228 if (SvLEN(e->bufsv) < e->base.bufsiz) {
229 SSize_t poff = e->base.ptr - e->base.buf;
230 SSize_t eoff = e->base.end - e->base.buf;
231 e->base.buf = (STDCHAR *) SvGROW(e->bufsv, e->base.bufsiz);
232 e->base.ptr = e->base.buf + poff;
233 e->base.end = e->base.buf + eoff;
235 if (e->base.ptr < e->base.buf
236 || e->base.ptr > e->base.buf + SvLEN(e->bufsv)) {
237 Perl_warn(aTHX_ " ptr %p(%p)%p", e->base.buf, e->base.ptr,
238 e->base.buf + SvLEN(e->bufsv));
241 return e->base.buf;
247 PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode);
280 if (avail > 0 || (e->flags & NEEDS_LINES)) {
286 e->base.ptr = e->base.end = (STDCHAR *) NULL;
288 if (!e->dataSV)
289 e->dataSV = newSV_type(SVt_PV);
290 else if (SvTYPE(e->dataSV) < SVt_PV) {
291 sv_upgrade(e->dataSV,SVt_PV);
293 if (e->flags & NEEDS_LINES) {
294 /* Encoding needs whole lines (e.g. iso-2022-*)
311 sv_catpvn(e->dataSV, (char*)ptr, use);
315 else if (!SvCUR(e->dataSV)) {
319 if (!SvCUR(e->dataSV))
320 SvPVCLEAR(e->dataSV);
321 if (use + SvCUR(e->dataSV) > e->base.bufsiz) {
322 if (e->flags & NEEDS_LINES) {
324 e->base.bufsiz = use + SvCUR(e->dataSV);
328 use = e->base.bufsiz - SvCUR(e->dataSV);
331 sv_catpvn(e->dataSV,(char*)ptr,use);
332 SvUTF8_off(e->dataSV);
334 XPUSHs(e->enc);
335 XPUSHs(e->dataSV);
336 XPUSHs(e->chk);
345 if (SvTHINKFIRST(e->dataSV)) SvPV_force_nolen(e->dataSV);
361 sv_setpvn(e->bufsv,s,len);
362 e->base.ptr = e->base.buf = (STDCHAR*)SvPVX(e->bufsv);
363 e->base.end = e->base.ptr + SvCUR(e->bufsv);
365 SvUTF8_on(e->bufsv);
370 if (!SvPOKp(e->dataSV)) (void)SvPV_force_nolen(e->dataSV);
371 use -= SvCUR(e->dataSV);
374 SvCUR_set(e->dataSV,0);
377 /* Make sure e->dataSV is a normal SV before re-filling as
380 s = SvPV(e->dataSV,len);
381 sv_setpvn(e->dataSV,s,len);
406 PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode);
409 if (e->bufsv) {
415 if ((PerlIOBase(f)->flags & PERLIO_F_WRBUF) && (e->base.ptr > e->base.buf)) {
416 if (e->inEncodeCall) return 0;
422 XPUSHs(e->enc);
423 SvCUR_set(e->bufsv, e->base.ptr - e->base.buf);
424 SvUTF8_on(e->bufsv);
425 XPUSHs(e->bufsv);
426 XPUSHs(e->chk);
428 e->inEncodeCall = 1;
430 e->inEncodeCall = 0;
433 e->inEncodeCall = 0;
448 if (!SvPOKp(e->bufsv) || SvTHINKFIRST(e->bufsv))
449 (void)SvPV_force_nolen(e->bufsv);
450 if ((STDCHAR *)SvPVX(e->bufsv) != e->base.buf) {
451 e->base.ptr = (STDCHAR *)SvEND(e->bufsv);
452 e->base.end = (STDCHAR *)SvPVX(e->bufsv) + (e->base.end-e->base.buf);
453 e->base.buf = (STDCHAR *)SvPVX(e->bufsv);
456 if (SvCUR(e->bufsv)) {
458 e->base.ptr = e->base.buf+SvCUR(e->bufsv);
466 if (e->dataSV && SvCUR(e->dataSV)) {
467 s = SvPV(e->dataSV, len);
472 SvCUR_set(e->dataSV,0);
475 if (e->base.ptr < e->base.end) {
476 if (e->inEncodeCall) return 0;
484 SvPV_set(str, (char*)e->base.ptr);
486 SvCUR_set(str, e->base.end - e->base.ptr);
490 XPUSHs(e->enc);
492 XPUSHs(e->chk);
494 e->inEncodeCall = 1;
496 e->inEncodeCall = 0;
499 e->inEncodeCall = 0;
513 e->base.ptr = e->base.end = e->base.buf;
522 PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode);
526 if (e->dataSV) {
527 SvCUR_set(e->dataSV,0);
530 e->base.ptr = e->base.end = e->base.buf;
533 if (e->bufsv) {
535 if (e->base.buf && e->base.ptr > e->base.buf) {
538 SvREFCNT_dec(e->bufsv);
539 e->bufsv = Nullsv;
541 e->base.buf = NULL;
542 e->base.ptr = NULL;
543 e->base.end = NULL;
582 PerlIOEncode *e = PerlIOSelf(f, PerlIOEncode);
583 if (e->flags & NEEDS_LINES) {