]> Sergey Matveev's repositories - paster.git/blob - contrib/paster.zsh
Netstrings are simpler than bencode
[paster.git] / contrib / paster.zsh
1 #!/usr/bin/env zsh
2
3 set -e
4
5 DST=${DST:-paster.example.com 2020}
6 ext="0:,"
7 [[ -s "$1" ]] && {
8     src="$1"
9     bn=$src:t
10     e=${bn##*.}
11     [[ $bn = $e ]] || ext="${#e}:$e,"
12 } || {
13     src=`mktemp`
14     trap "rm -f $src" HUP PIPE INT QUIT TERM EXIT
15     cat > $src
16     [[ $# -eq 0 ]] || ext="${#1}:$1,"
17 }
18 zmodload -F zsh/stat b:zstat
19 size=`zstat +size $src`
20
21 zmodload zsh/net/tcp
22 ztcp ${=DST}
23 fd=$REPLY
24 ( print -n "${ext}${size}:" ; cat $src ; print -n , ) >&$fd
25 cat <&$fd
26 ztcp -c $fd