X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ebcdic.c;h=d86d50bd327ed085c5eae63ea87ce864f5a5d485;hb=fce230d754ec6ae18a0b1289155fa97e3b459bbc;hp=890bd086d2b129bdd2bbdb5c26223330802cb044;hpb=9d116dd7c895b17badf4ad422ae44da0c4df7bc2;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ebcdic.c b/ebcdic.c index 890bd08..d86d50b 100644 --- a/ebcdic.c +++ b/ebcdic.c @@ -1,4 +1,5 @@ #include "EXTERN.h" +#define PERL_IN_EBCDIC_C #include "perl.h" /* in ASCII order, not that it matters */ @@ -14,7 +15,7 @@ ebcdic_control(int ch) ch = toupper(ch); if ((ctlp = strchr(controllablechars, ch)) == 0) { - die("unrecognised control character '%c'\n", ch); + Perl_die(aTHX_ "unrecognised control character '%c'\n", ch); } if (ctlp == controllablechars) @@ -24,9 +25,17 @@ ebcdic_control(int ch) } else { /* Want uncontrol */ if (ch == '\177' || ch == -1) return('?'); + else if (ch == '\157') + return('\177'); + else if (ch == '\174') + return('\000'); + else if (ch == '^') /* '\137' in 1047, '\260' in 819 */ + return('\036'); + else if (ch == '\155') + return('\037'); else if (0 < ch && ch < (sizeof(controllablechars) - 1)) return(controllablechars[ch+1]); else - die("invalid control request: '\\%03o'\n", ch & 0xFF); + Perl_die(aTHX_ "invalid control request: '\\%03o'\n", ch & 0xFF); } }