#!/bin/bash -e

# The cereal scripts were written by
# Jameson Rollins <jrollins@fifthhorseman.net>
# and
# Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>.
#
# They are Copyright 2007, and are all released under the GPL, version 3
# or later.

exec 2>&1

export SHAREDIR="/usr/share/cereal"
source "$SHAREDIR/common"

# ensure that the socket is available
( [ -p ./socket ] || (rm -f ./socket; mkfifo ./socket) ) || failure "Can not create socket."

mainrun() {
    check_is_tty "$TTY"
    check_user "$USER"
    check_group "$GROUP"
    check_group "$LOGGROUP"
    check_tty_rw "$USER" "$GROUP" "$TTY"
    chown "$USER:$LOGGROUP" ./socket || failure "Can not properly set ownership of socket."
    chmod 0640 ./socket || failure "Can not properly set permissions on socket."
    
    echo "starting screen session..."
    exec chpst -u "$USER:$GROUP" /usr/bin/screen -D -m -L -c "$SCREENRC" -s /bin/false -S "cereal:$SESSION" -t "$SESSION" "$TTY" "$BAUD"
}
export -f mainrun

# find screenrc:    
if [ -e "./screenrc" ] ; then
    SCREENRC="./screenrc"
elif [ -e "$ETC/screenrc" ] ; then
    SCREENRC="$ETC/screenrc"
else
    failure "Cereal screenrc file not found."
fi
export SCREENRC

exec chpst -e ./env bash -c mainrun 2>./socket 1>&2
