From 93643a66b304ba8cf27e4484dfa8ddf195eb56ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Mon, 4 Sep 2017 01:51:48 +0200 Subject: [PATCH] added hexcat --- hexcat.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 hexcat.c diff --git a/hexcat.c b/hexcat.c new file mode 100755 index 0000000..01a9096 --- /dev/null +++ b/hexcat.c @@ -0,0 +1,44 @@ +#!/bin/tcc -run + +/** + * hex cat: dump escape sequences received as ASCII and numbers + * Ondřej Hruška, Aug 2017 + * MIT license + */ + +#include +#include +#include +#include + +void signal_handler(int sig); + +struct termios old; + +int main(void) +{ + struct termios new; + char c; + signal(SIGTERM, signal_handler); + signal(SIGINT, signal_handler); + + tcgetattr(TCSANOW, &old); + new = old; + new.c_lflag &= (~ECHO & ~ICANON); + tcsetattr(0, TCSANOW, &new); + tcsetattr(0, TCSANOW, &new); + + while(1) { + char c = getchar(); + int n = c == 27 ? 33 : 36; + if(c==27)printf("\n"); + printf("%2d \e[%dm%c\e[m ", c, n, c); // <- change d to X or x if you want hex + } +} + +void signal_handler(int sig) +{ + fputs("\n", stdout); + tcsetattr(0, TCSANOW, &old); + exit(0); +}