summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/ebcdic.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/ebcdic.c')
-rw-r--r--contrib/perl5/ebcdic.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/contrib/perl5/ebcdic.c b/contrib/perl5/ebcdic.c
index 890bd086..d86d50b 100644
--- a/contrib/perl5/ebcdic.c
+++ b/contrib/perl5/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);
}
}
OpenPOWER on IntegriCloud