diff options
Diffstat (limited to 'lib/libncurses/lib_unctrl.c')
-rw-r--r-- | lib/libncurses/lib_unctrl.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/libncurses/lib_unctrl.c b/lib/libncurses/lib_unctrl.c new file mode 100644 index 000000000000..3c8f5831fb60 --- /dev/null +++ b/lib/libncurses/lib_unctrl.c @@ -0,0 +1,26 @@ +#include <ctype.h> +#include <unctrl.h> + +char * + unctrl(register unsigned char uch) +{ + static char buffer[3] = "^x"; + + if (isgraph(uch)) { + /* + * Printable character. Simply return the character as a one-character + * string. + */ + buffer[1] = uch; + return &buffer[1]; + } + uch &= ~0x80; + /* + * It is a control character. DEL is handled specially (^?). All others + * use ^x notation, where x is the character code for the control character + * with 0x40 ORed in. (Control-A becomes ^A etc.). + */ buffer[1] = (uch == 0x7F ? '?' : (uch | 0x40)); + + return buffer; + +} |