summaryrefslogtreecommitdiff
path: root/unctrl
diff options
context:
space:
mode:
Diffstat (limited to 'unctrl')
-rw-r--r--unctrl/chtype.ref3
-rw-r--r--unctrl/unctrl.c29
2 files changed, 32 insertions, 0 deletions
diff --git a/unctrl/chtype.ref b/unctrl/chtype.ref
new file mode 100644
index 0000000..b21d377
--- /dev/null
+++ b/unctrl/chtype.ref
@@ -0,0 +1,3 @@
+#include <unctrl.h>
+REFERENCE(curses/chtype.c)
+XOPEN(4)
diff --git a/unctrl/unctrl.c b/unctrl/unctrl.c
new file mode 100644
index 0000000..fc77e6b
--- /dev/null
+++ b/unctrl/unctrl.c
@@ -0,0 +1,29 @@
+#include <unctrl.h>
+#include <curses.h>
+#include <ctype.h>
+#include <stddef.h>
+
+char * unctrl(chtype c)
+{
+ static char buf[3];
+ char * ret = NULL;
+ int ch = c & A_CHARTEXT;
+
+ if (iscntrl(ch)) {
+ buf[0] = '^';
+ buf[1] = ch + 'A';
+ buf[2] = '\0';
+ ret = buf;
+ } else if (isprint(ch)) {
+ buf[0] = ch;
+ buf[1] = '\0';
+ ret = buf;
+ }
+
+ return ret;
+}
+
+/*
+XOPEN(4)
+LINK(curses)
+*/