/* dump.c
*
- * Copyright (c) 1991-1997, Larry Wall
+ * Copyright (c) 1991-1999, Larry Wall
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
if (!SvPVX(sv))
sv_catpv(t, "(null)");
else {
- SV *tmp = newSVpv("", 0);
+ SV *tmp = newSVpvn("", 0);
sv_catpv(t, "(");
if (SvOOK(sv))
sv_catpvf(t, "[%s]", pv_display(tmp, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, 127));
op_dump(pm->op_pmreplroot);
}
if (pm->op_pmflags || (pm->op_pmregexp && pm->op_pmregexp->check_substr)) {
- SV *tmpsv = newSVpv("", 0);
+ SV *tmpsv = newSVpvn("", 0);
if (pm->op_pmdynflags & PMdf_USED)
sv_catpv(tmpsv, ",USED");
if (pm->op_pmdynflags & PMdf_TAINTED)
dump_indent(level, file, "ADDR = 0x%lx => 0x%lx\n",o, o->op_next);
#endif
if (o->op_flags) {
- SV *tmpsv = newSVpv("", 0);
+ SV *tmpsv = newSVpvn("", 0);
switch (o->op_flags & OPf_WANT) {
case OPf_WANT_VOID:
sv_catpv(tmpsv, ",VOID");
SvREFCNT_dec(tmpsv);
}
if (o->op_private) {
- SV *tmpsv = newSVpv("", 0);
+ SV *tmpsv = newSVpvn("", 0);
if (o->op_type == OP_AASSIGN) {
if (o->op_private & OPpASSIGN_COMMON)
sv_catpv(tmpsv, ",COMMON");
#ifdef USE_LOCALE_COLLATE
else if (v == &PL_vtbl_collxfrm) s = "collxfrm";
#endif
-#ifdef OVERLOAD
else if (v == &PL_vtbl_amagic) s = "amagic";
else if (v == &PL_vtbl_amagicelem) s = "amagicelem";
-#endif
if (s)
dump_indent(level, file, " MG_VIRTUAL = &PL_vtbl_%s\n", s);
else
if (mg->mg_ptr) {
dump_indent(level, file, " MG_PTR = 0x%lx", (long)mg->mg_ptr);
if (mg->mg_len >= 0) {
- SV *sv = newSVpv("", 0);
+ SV *sv = newSVpvn("", 0);
PerlIO_printf(file, " %s", pv_display(sv, mg->mg_ptr, mg->mg_len, 0, pvlim));
SvREFCNT_dec(sv);
}
if (flags & SVf_FAKE) sv_catpv(d, "FAKE,");
if (flags & SVf_READONLY) sv_catpv(d, "READONLY,");
-#ifdef OVERLOAD
if (flags & SVf_AMAGIC) sv_catpv(d, "OVERLOAD,");
-#endif /* OVERLOAD */
if (flags & SVp_IOK) sv_catpv(d, "pIOK,");
if (flags & SVp_NOK) sv_catpv(d, "pNOK,");
if (flags & SVp_POK) sv_catpv(d, "pPOK,");
if (SvOOK(sv))
PerlIO_printf(file, "( %s . ) ", pv_display(d, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, pvlim));
PerlIO_printf(file, "%s\n", pv_display(d, SvPVX(sv), SvCUR(sv), SvLEN(sv), pvlim));
- dump_indent(level, file, " CUR = 0\n", (long)SvCUR(sv));
- dump_indent(level, file, " LEN = 0\n", (long)SvLEN(sv));
+ dump_indent(level, file, " CUR = %ld\n", (long)SvCUR(sv));
+ dump_indent(level, file, " LEN = %ld\n", (long)SvLEN(sv));
}
else
dump_indent(level, file, " PV = 0\n");
dump_indent(level, file, " PAGE = %ld\n", (long)IoPAGE(sv));
dump_indent(level, file, " PAGE_LEN = %ld\n", (long)IoPAGE_LEN(sv));
dump_indent(level, file, " LINES_LEFT = %ld\n", (long)IoLINES_LEFT(sv));
- dump_indent(level, file, " TOP_NAME = \"%s\"\n", IoTOP_NAME(sv));
+ if (IoTOP_NAME(sv))
+ dump_indent(level, file, " TOP_NAME = \"%s\"\n", IoTOP_NAME(sv));
do_gv_dump (level, file, " TOP_GV", IoTOP_GV(sv));
- dump_indent(level, file, " FMT_NAME = \"%s\"\n", IoFMT_NAME(sv));
+ if (IoFMT_NAME(sv))
+ dump_indent(level, file, " FMT_NAME = \"%s\"\n", IoFMT_NAME(sv));
do_gv_dump (level, file, " FMT_GV", IoFMT_GV(sv));
- dump_indent(level, file, " BOTTOM_NAME = \"%s\"\n", IoBOTTOM_NAME(sv));
+ if (IoBOTTOM_NAME(sv))
+ dump_indent(level, file, " BOTTOM_NAME = \"%s\"\n", IoBOTTOM_NAME(sv));
do_gv_dump (level, file, " BOTTOM_GV", IoBOTTOM_GV(sv));
dump_indent(level, file, " SUBPROCESS = %ld\n", (long)IoSUBPROCESS(sv));
- dump_indent(level, file, " TYPE = %c\n", IoTYPE(sv));
+ if (isPRINT(IoTYPE(sv)))
+ dump_indent(level, file, " TYPE = '%c'\n", IoTYPE(sv));
+ else
+ dump_indent(level, file, " TYPE = '\\%o'\n", IoTYPE(sv));
dump_indent(level, file, " FLAGS = 0x%lx\n", (long)IoFLAGS(sv));
break;
}