summaryrefslogtreecommitdiffstats
path: root/cholerab/too_old
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2013-06-07 00:46:36 +0200
committermakefu <github@syntax-fehler.de>2013-06-07 00:46:36 +0200
commit83baf76c734a5c9471fd9ab4dd90c952aba4e6a0 (patch)
treef2c429cb79f7f3937e43130a50241a2e7c81950b /cholerab/too_old
parentb0273180da89e11cd6a7346ed1a72e9f17fbf230 (diff)
parent5a428d4646b73f16b890f6c089a67dbc710df533 (diff)
Merge branch 'master' of github.com:krebscode/painload
Diffstat (limited to 'cholerab/too_old')
-rwxr-xr-xcholerab/too_old/live.sh88
-rwxr-xr-xcholerab/too_old/ttycnser.sh27
2 files changed, 115 insertions, 0 deletions
diff --git a/cholerab/too_old/live.sh b/cholerab/too_old/live.sh
new file mode 100755
index 00000000..62a2c3cf
--- /dev/null
+++ b/cholerab/too_old/live.sh
@@ -0,0 +1,88 @@
+#! /bin/sh
+set -euf
+stty cbreak -echo
+
+go() {
+ state=$1
+ wr 7
+ wr " " >&2
+ wr "state=$state" >&2
+ wr 8
+ $1
+}
+
+rd() {
+ dd bs=1 count=1 2>/dev/null
+}
+
+bufrd() {
+ buf="`rd`"
+ bufinfowr
+}
+
+bufrda() {
+ buf="$buf`rd`"
+ bufinfowr
+}
+
+bufinfowr() {
+ wr 7
+ wr " " >&2
+ wr " " >&2
+ case "$buf" in
+ () wr '^[' >&2;;
+ (*) wr "$buf" >&2;;
+ esac
+ wr "`wr "$buf" | xxd -p`" >&2
+ wr 8
+}
+
+wr() {
+ echo -n "$1"
+}
+
+C0="`echo C0 | xxd -r -p`"; DF="`echo DF | xxd -r -p`"
+E0="`echo E0 | xxd -r -p`"; EF="`echo EF | xxd -r -p`"
+F0="`echo F0 | xxd -r -p`"; F7="`echo F7 | xxd -r -p`"
+S() {
+ bufrd
+ case "$buf" in
+ () go ESC;;
+ () wr ' '; go S;;
+ ([$C0-$DF]) go U1;;
+ ([$E0-$EF]) go U2;;
+ ([$F0-$F7]) go U3;;
+ (*) wr "$buf"; go S;;
+ esac
+}
+
+U1() { buf="$buf`rd`"; wr "$buf"; go S; }
+U2() { buf="$buf`rd`"; go U1; }
+U3() { buf="$buf`rd`"; go U2; }
+
+
+ESC() {
+ bufrda
+ case "$buf" in
+ ('[') go ESC_OSQRB;;
+ (*)
+ wr '^['
+ go S
+ ;;
+ esac
+}
+
+ESC_OSQRB() {
+ bufrda
+ case "$buf" in
+ (''|''|''|'') wr "$buf"; go S;;
+ (*)
+ wr '^[['
+ go S
+ ;;
+ esac
+}
+
+
+wr 'c'
+go S
diff --git a/cholerab/too_old/ttycnser.sh b/cholerab/too_old/ttycnser.sh
new file mode 100755
index 00000000..0972dbbb
--- /dev/null
+++ b/cholerab/too_old/ttycnser.sh
@@ -0,0 +1,27 @@
+#! /bin/sh
+set -euf
+
+tty="${TMPDIR-/tmp}/ttycnser.$LOGNAME.tty"
+
+case "${mode-server}" in
+ (server)
+ host=0.0.0.0
+ port=8080
+ export mode=client
+ echo "ttycnser @ $host $port" >&2
+ exec tcpserver $host $port "$0"
+ ;;
+ (client)
+ line="`read line && echo "$line"`"
+ echo -n '7>>>> '"$line"'8' > "$tty"
+ ;;
+ (install)
+ # TODO tell the user to do something like
+ # PROMPT_COMMAND="`mode=install ~/p/krebscode/painload/cholerab/ttycnser`"
+ echo "ln -snf '`tty`' '$tty'"
+ ;;
+ (*)
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+ ;;
+esac