X-Git-Url: https://git.plutz.net/?p=httpchat;a=blobdiff_plain;f=channel.sh;h=f8c97a43ae1622f627f518d52a9df40c6d0e5f3f;hp=0f1bda7ecd6cb2285c9db1522f9fbaeea43a2a1d;hb=HEAD;hpb=7481a68367b471a6a5058817342340a3e069e581 diff --git a/channel.sh b/channel.sh index 0f1bda7..f8c97a4 100755 --- a/channel.sh +++ b/channel.sh @@ -32,7 +32,7 @@ nicklist(){ local nickfile="${chatfile%/channel}/nicks" case $1 in enter) - trap 'sed -i -E "/^${SESSION_KEY%%-*} $$ /d" "$nickfile"' INT QUIT + trap 'nicklist leave' INT QUIT sed -i -E "/^${SESSION_KEY%%-*} /d" "$nickfile" printf '%s %i %s\n' "${SESSION_KEY%%-*}" "$$" "$nickname" >>"$nickfile" ;; @@ -43,18 +43,20 @@ nicklist(){ nicklist='NICKNAMES: ' while read -r s p nick; do - nicklist="${nicklist}/$nick/" + [ -d "/proc/$p" ] && nicklist="${nicklist}/$nick/" \ + || sed -i -E "/^$s $p /d" "$nickfile" done <"$nickfile" - if ! tail -n20 "$chatfile" |grep -qxF "$nicklist"; then + if ! tail -n20 "$chatfile" |tac |grep -m1 '^NICKNAMES: ' |grep -qxF "$nicklist"; then printf '%s\n' "$nicklist" >>"$chatfile" fi } if [ ! -f "$chatfile" ]; then yield_page create <<-EOF + [h1 No such Channel] [form #nonexist method="POST" There is no channel named $(HTML "$LOCATION") - [submit "action" "create" Create] + [submit "action" "create" Set Up] ] EOF else