Files
cdesktop/cde/programs/dtconfig/hp/dtlogin.rc.src

154 lines
3.4 KiB
Plaintext

XCOMM!/sbin/sh
XCOMM $XConsortium: dtlogin.rc.src /main/1 1996/07/24 11:40:29 drk $
XCOMM
XCOMM This version of the dtlogin.rc script can be used on the HP-UX
XCOMM operating system to initiate 1DE tasks such as starting the dtlogin
XCOMM process.
XCOMM
XCOMM Common Desktop Environment
XCOMM
XCOMM (c) Copyright 1996 Digital Equipment Corporation.
XCOMM (c) Copyright 1993-1994,1996 Hewlett-Packard Company.
XCOMM (c) Copyright 1993-1994,1996 International Business Machines Corp.
XCOMM (c) Copyright 1993-1994,1996 Sun Microsystems, Inc.
XCOMM (c) Copyright 1993-1994,1996 Novell, Inc.
XCOMM (c) Copyright 1996 FUJITSU LIMITED.
XCOMM (c) Copyright 1996 Hitachi.
XCOMM
XCOMM When placed in the /sbin/rc3.d directory and named appropriately, such as
XCOMM "S990dtlogin", this script will automatically start the dtlogin window
XCOMM after the HP-UX system boots to its multi-user level.
XCOMM
XCOMM This script is also called indirectly by the CDE dtconfig command.
PATH=/sbin:/usr/sbin:/usr/bin:/usr/dt/bin
export PATH
mode=$1
case "$mode" in
'start_msg')
echo "Start CDE login server"
exit 0
;;
'stop_msg')
echo "Stop CDE login server"
exit 0
;;
esac
usage_error() {
echo " $0 start (start dtlogin process)"
echo " $0 stop (stop dtlogin process)"
echo " $0 reset (reset dtlogin process)"
echo " $0 update_printers (update print actions)"
echo " "
}
if [ ! -d /usr/bin ]; then # /usr not mounted
exit 1
fi
set `id`
if [ $1 != "uid=0(root)" ]; then
echo "$0: must be run as root"
exit 1
fi
XCOMM update_printers()
XCOMM
XCOMM Add print actions to workstation's database for all printers known
XCOMM to this workstation if action is not already present in the database.
update_printers() {
if [ -x /usr/dt/bin/dtprintinfo ]; then
/usr/dt/bin/dtprintinfo -populate
fi
}
XCOMM
XCOMM Find login server pid from the process tree
XCOMM
login_server_pid() {
XCOMM In following grep for "dtlogin" processes, explictly exclude any matches
XCOMM on this shell file named "dtlogin.rc"
#if (OSMAJORVERSION < 10) && (OSMINORVERSION < 20)
ps -u 0 -l | grep -v dtlogin. | grep dtlogin |
cut -c1-24 | awk '{print $4 " " $5}' |
while read pid ppid; do
#else
XCOMM
XCOMM Use the new XPG4 features of "ps" (also "-C cmdlist" ) to get the pids.
XCOMM
UNIX95=1 ps -C dtlogin -o pid= -o ppid= |
while read pid ppid; do
#endif
if [ "$(ps -p $ppid | grep dtlogin)" = "" ]; then
print "$pid"
break
fi
done
}
case "$mode" in
'start')
if [ -f /etc/rc.config ]; then
. /etc/rc.config
else
echo "ERROR: /etc/rc.config defaults file MISSING"
fi
if [ "CDE" != "${DESKTOP:-}" ]; then
exit 2
fi
update_printers
if [ -x CDE_INSTALLATION_TOP/bin/dtrc ]; then
trap "" 1
CDE_INSTALLATION_TOP/bin/dtrc &
elif [ -x CDE_INSTALLATION_TOP/bin/dtlogin ]; then
CDE_INSTALLATION_TOP/bin/dtlogin -daemon
fi
;;
'stop')
XCOMM get dtlogin pid
dtlogin_pid=`login_server_pid`
XCOMM kill dtlogin process
if [ "$dtlogin_pid" != "" ] ; then
kill $dtlogin_pid
fi
;;
'reset')
XCOMM get dtlogin pid
dtlogin_pid=`login_server_pid`
XCOMM reset dtlogin process
if [ "$dtlogin_pid" != "" ] ; then
kill -HUP $dtlogin_pid
fi
;;
'update_printers')
update_printers
;;
*)
usage_error
exit 1
;;
esac
exit 0