File: init

package info (click to toggle)
wdm 1.28-26
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,516 kB
  • sloc: ansic: 11,439; sh: 1,033; makefile: 377; perl: 32; cpp: 10
file content (134 lines) | stat: -rw-r--r-- 4,074 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/sh
### BEGIN INIT INFO
# Provides:          wdm
# Required-Start:    $local_fs $remote_fs x11-common
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      xfs $named slapd console-screen kbd acpid dbus network-manager
# Should-Stop:       xfs $named slapd console-screen kbd acpid dbus network-manager
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: start or stop the WINGs display manager
# Description:       start or stop the WINGs display manager
### END INIT INFO

set -e

# To start wdm even if it is not the default display manager, change
# HEED_DEFAULT_DISPLAY_MANAGER to "false."
# Also overridable from command line like:
# HEED_DEFAULT_DISPLAY_MANAGER=false /etc/init.d/wdm start
[ -z "$HEED_DEFAULT_DISPLAY_MANAGER" ] && HEED_DEFAULT_DISPLAY_MANAGER=true

DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/bin/wdm
PIDFILE=/var/run/wdm.pid

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

# If we have upgraded the daemon since we last started it, we can't use the
# --exec argument to start-stop-daemon, because the daemon's inode will have
# changed.  The risk here is that in a situation where the daemon died, its
# pidfile was not cleaned up, we've upgraded it, *and* some other process is now
# running under that pid, start-stop-daemon will send signals to an innocent
# process.  However, this seems like a corner case.  C'est la vie!
# Update: --name should prevent signalling innocent processes.
SSD_START_ARGS="--pidfile $PIDFILE --name $(basename $DAEMON) --startas $DAEMON"
SSD_STOP_ARGS="--pidfile $PIDFILE --name $(basename $DAEMON) --retry TERM/5/TERM/5"
SSD_RELOAD_ARGS="--pidfile $PIDFILE --name $(basename $DAEMON) --signal 1"

# This file is touched in case of upgrade. Remove it on successful stop.
UPGRADEFILE=/var/run/wdm.upgrade

wdm_may_update_wmlist () {
  if grep -qs '^auto-update-wmlist' /etc/X11/wdm/wdm.options; then
    update_wdm_wmlist
  fi
}

case "$1" in
  start)
    if [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] &&
      [ -e $DEFAULT_DISPLAY_MANAGER_FILE ] &&
      [ "$(cat $DEFAULT_DISPLAY_MANAGER_FILE)" != "$DAEMON" ]; then
      echo "Not starting WINGs display manager (wdm); it is not the default display manager."
    else
      # Bug#386424: wdm: Allow setting greeter font via /etc/GNUstep/Defaults/WMGLOBAL
      mkdir -p /var/run/wdm && ln -f -s /etc/GNUstep /var/run/wdm
      wdm_may_update_wmlist
      if [ -x /bin/plymouth ] ; then
        /bin/plymouth quit || true
      fi
      log_daemon_msg "Starting WINGs display manager: wdm"
      start-stop-daemon --start --quiet $SSD_START_ARGS \
	|| log_progress_msg "already running"
      log_end_msg 0
    fi
    ;;

  restart)
    /etc/init.d/wdm stop
    [ -f $PIDFILE ] && exit 1
    /etc/init.d/wdm start
    ;;

  reload)
    wdm_may_update_wmlist
    log_daemon_msg "Reloading WINGs display manager configuration..."
    if ! start-stop-daemon --stop --quiet $SSD_RELOAD_ARGS; then
      log_progress_msg "wdm not running."
    fi
    log_end_msg 0
    ;;

  force-reload)
    /etc/init.d/wdm reload
    ;;

  stop)
    log_daemon_msg "Stopping WINGs display manager: wdm"
    if ! [ -f $PIDFILE ]; then
      log_progress_msg "not running ($PIDFILE not found)"
    else
      start-stop-daemon --stop --quiet $SSD_STOP_ARGS
      SSD_RES=$?
      if [ $SSD_RES -eq 1 ]; then
	log_progress_msg "not running"
      fi
      if [ $SSD_RES -eq 2 ]; then
	log_progress_msg "not responding to TERM signals"
      else
	if [ -f $PIDFILE ]; then
	  log_progress_msg "(removing stale $PIDFILE)"
	  rm $PIDFILE
	fi
      fi
      if [ $SSD_RES -ne 2 ]; then
	rm -f $UPGRADEFILE
      fi
    fi
    log_end_msg 0
    ;;

  status)
    status_of_proc -p $PIDFILE $DAEMON wdm && exit 0 || exit $?
    ;;

  *)
    echo "Usage: /etc/init.d/wdm {start|stop|restart|reload|force-reload|status}"
    exit 1
    ;;
esac

exit 0

# vim:set ai et sts=2 sw=2 tw=0:

# Local Variables:
#  mode: shell-script
#  sh-basic-offset: 2
#  sh-indentation: 2
# End: