#!/bin/bash
# $Id: xutmp,v 1.3 2015/01/20 23:54:47 friedman Exp $

ttyname()
{
    tty=`tty 2> /dev/null | sed -e 's=^/dev/=='`
    case $tty in
        'not a tty' ) tty=`readlink /proc/self/fd/0 | sed -e 's/[][]//g'` ;;
    esac
    echo $tty
}

call_sessreg()
{
    cmd=$1
    tty=`ttyname`
    user=${SUDO_USER-${LOGNAME-$USER}}

    set fnord -L none -w none -l "$tty" -h "${DISPLAY-$tty}" "$user"
    shift

    case $cmd in
        on  )      sessreg -d "$@"
              exec sessreg -a "$@" ;;
        off )      sessreg -d "$@" ;;
    esac
}

check_sessreg()
{
    case ${UID:-`id -u`} in
        0 ) return ;;
    esac

    utmp=/var/run/utmp
    sessreg=/usr/bin/sessreg

    utgid=`stat -c '%g' $utmp`
    srgid=`stat -c '%g' $sessreg`
    if [[ $utgid -ne $srgid ]]; then
        sudo /bin/sh -c "chgrp $utgid $sessreg; chmod g+s $sessreg"
    elif ! [[ -g $sessreg ]]; then
        sudo chmod g+s $sessreg
    fi
}

main()
{
    case $1 in
        on | off ) : ;;
        * ) echo "Usage: xutmp [on|off]" 1>&2; exit 1 ;;
    esac

    check_sessreg
    call_sessreg $1
}

main "$@"

# eof
