This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ignore const for the purposes of typemaps (from Hugo van der Sanden)
[perl5.git] / ebcdic.c
index 14e3955..d86d50b 100644 (file)
--- a/ebcdic.c
+++ b/ebcdic.c
@@ -15,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)
@@ -25,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);
        }
 }