#! /bin/sh
# wrapper to prevent running multiple instances of tin
# 2000-01-19 <[email protected]>

prog=/usr/local/bin/tin

args=${1+"$@"}

name=`basename "$prog"`
host=`hostname`
pid=$$
lock="$host     $pid"

if test -d ${TIN_HOMEDIR-"$HOME"} ; then
       lockdir=${TIN_HOMEDIR-"$HOME"}/.tin
       file=tinlock
else
       lockdir=${TMPDIR-/tmp}
       if test -z "$USER"; then
               if test -z "$UID" ; then
                       UID=`id|sed 's,uid=\([0-9]\+\).*,\1,'`
               fi
       fi
       file=tinlock.${USER-"$UID"}
fi

lockfile="$lockdir/$file"

if test -f "$lockfile" ; then
       echo "Found \"$lockfile\"! Another $name running on:"
       awk '{print $1" with pid: "$2"?"}' < "$lockfile"
       echo "(q)uit - start (r)ead-only - (d)elete lock and start normal."
       IFS="       " read key
       case $key in
               [dD]*)
                       echo "Removing \"$lockfile\" and starting $name normal..."
                       rm -f "$lockfile" || (echo "Can't delete \"$lockfile\"" ; exit 1)
                       trap "rm -f $lockfile; exit" 0 1 2 3 15
                       (echo "$lock" > "$lockfile" && "$prog" "$args" && rm -f "$lockfile") || echo "Oops!"
                       ;;
               [rR]*)
                       echo "Starting $name in no-write (-X) mode..."
                       "$prog" -X "$args"
                       echo "There might still be copy(s) of $name running on:"
                       awk '{print $1" with pid: "$2}' < "$lockfile"
                       echo "If this is not the case remember to remove \"$lockfile\"."
                       ;;
               *)
                       echo "Aborting..."
                       exit 1
                       ;;
       esac
else
       trap "rm -f $lockfile; exit" 0 1 2 3 15
       (echo "$lock" > "$lockfile" && "$prog" "$args" && rm -f "$lockfile") || echo "Oops!"
fi