From d100582bea7c0ff7578a804006ae504ae9992352 Mon Sep 17 00:00:00 2001 From: glenda Date: Mon, 24 Nov 2025 01:31:21 +0000 Subject: [PATCH] plan 9 client! --- 9talk/chat | 6 ++++++ 9talk/cmd | 38 ++++++++++++++++++++++++++++++++++++++ 9talk/log | 33 +++++++++++++++++++++++++++++++++ README.md | 14 ++++++++++++++ 4 files changed, 91 insertions(+) create mode 100755 9talk/chat create mode 100755 9talk/cmd create mode 100755 9talk/log diff --git a/9talk/chat b/9talk/chat new file mode 100755 index 0000000000000000000000000000000000000000..9e7c5b4f2938dab4af8a406ab467f09a7c836503 --- /dev/null +++ b/9talk/chat @@ -0,0 +1,6 @@ +#!/bin/rc + +window -scroll rc -c ' \ + 9talk/log & \ + 9talk/cmd \ +' diff --git a/9talk/cmd b/9talk/cmd new file mode 100755 index 0000000000000000000000000000000000000000..11c42f369da9d502f602e94ea37ad8cc1a70586b --- /dev/null +++ b/9talk/cmd @@ -0,0 +1,38 @@ +#!/bin/rc + +nick='marmalade' + +if(~ $#* 0){ + addr='tcp!localhost!44322' +} +if not if(! $#* 1){ + addr=$"1 +} +if not if(! ~ $#* 2){ + echo 'usage: 9talk/cmd [addr] [nick]' >[1=2] + exit usage +} +if not { + addr=$"1 + nick=$"2 +} + +fn onecmd{ + cmd=$"* + {echo $"cmd; echo QUIT} | aux/dial -e $addr +} + +while(){ + line=`{read -n 1} + line2=`{echo $"line | tail +1c} + switch($line){ + case !* + onecmd SEND $"line2 >/dev/null + case .* :* + onecmd SEND $"nick' '$"line2 >/dev/null + case "* + onecmd SEND $"nick': '$"line2 >/dev/null + case * + onecmd SEND $"nick': '$"line >/dev/null + } +} diff --git a/9talk/log b/9talk/log new file mode 100755 index 0000000000000000000000000000000000000000..1b7eaf38f0a8d62a8b0e81a07a744ce190e3b3a8 --- /dev/null +++ b/9talk/log @@ -0,0 +1,33 @@ +#!/bin/rc + +if(~ $#* 0){ + addr='tcp!localhost!44322' +} +if not if(! ~ $#* 1){ + echo 'usage: 9talk/log [addr]' >[1=2] + exit usage +} +if not + addr=$"1 + +buffile=.ncbuf$pid + +fn onecmd{ + cmd=$"* + {echo $"cmd; echo QUIT} | aux/dial -e $addr +} +fn linecmd{ + onecmd $"* >$buffile + count=`{read -n 1 $buffile} + msgid=`{tail -1 $buffile} + if(! ~ 0 $count) + tail +2 $buffile | read -n $count + rm $buffile +} + +linecmd LAST 16 + +while(){ + sleep 5 + linecmd SKIP $msgid +} diff --git a/README.md b/README.md index f85fb07760073b33686e6a17c2416b1501c2e32b..730571484ff49ca56354fdeb5d2d5f364160af6c 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,20 @@ Ctrl-Shift-R will restart the client, allowing you to test config changes rapidly. Ctrl-Q exits. +## `9talk`: rc client for plan 9 + +consists of the following scripts: + +- `9talk/log [addr]`: connects to $addr, or a hard-coded default (edit it!), fetches the last + 16 messages, and updates every 5 seconds +- `9talk/cmd [addr] [nick]`: connects to $addr with $nick, or hard-coded defaults (edit them!). + for each input line, sends one of the following: + - '!': sends $line. + - '.' or ':': sends $nick $line. + - '"' or no prefix: sends $nick: $line +- `9talk/chat`: opens a window with /log and /cmd running + + ## `scrollbackup.sh`: simple backup script just sends HIST and QUIT and logs it to a file whose name indicates