]> Sergey Matveev's repositories - paster.git/commitdiff
Pure zsh client
authorSergey Matveev <stargrave@stargrave.org>
Tue, 15 Feb 2022 08:34:21 +0000 (11:34 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 16 Feb 2022 12:46:50 +0000 (15:46 +0300)
contrib/paster.zsh [new file with mode: 0755]

diff --git a/contrib/paster.zsh b/contrib/paster.zsh
new file mode 100755 (executable)
index 0000000..a4850d5
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/env zsh
+
+set -e
+
+DST=${DST:-paster.example.com 2020}
+[[ -s "$1" ]] && {
+    src="$1"
+    bn=$src:t
+    e=${bn##*.}
+    [[ $bn = $e ]] || ext="1:e${#e}:$e"
+} || {
+    src=`mktemp`
+    trap "rm -f $src" HUP PIPE INT QUIT TERM EXIT
+    cat > $src
+    [[ $# -eq 0 ]] || ext="1:e${#1}:$1"
+}
+zmodload -F zsh/stat b:zstat
+size=`zstat +size $src`
+
+zmodload zsh/net/tcp
+ztcp ${=DST}
+fd=$REPLY
+( print -n "d${ext}1:v${size}:" ; cat $src ; print -n e ) >&$fd
+cat <&$fd
+ztcp -c $fd