r15083 - packages/trunk/slashem/debian
Vincent Cheng
vcheng at moszumanska.debian.org
Mon May 12 07:48:52 UTC 2014
Author: vcheng
Date: 2014-05-12 07:48:52 +0000 (Mon, 12 May 2014)
New Revision: 15083
Added:
packages/trunk/slashem/debian/recover-all
packages/trunk/slashem/debian/slashem-common.service
Modified:
packages/trunk/slashem/debian/changelog
packages/trunk/slashem/debian/control
packages/trunk/slashem/debian/rules
packages/trunk/slashem/debian/slashem-common.init
Log:
Add systemd support for slashem (based off of nethack patch provided by Josh Triplett)
Modified: packages/trunk/slashem/debian/changelog
===================================================================
--- packages/trunk/slashem/debian/changelog 2014-05-12 06:53:45 UTC (rev 15082)
+++ packages/trunk/slashem/debian/changelog 2014-05-12 07:48:52 UTC (rev 15083)
@@ -5,6 +5,15 @@
[ Vincent Cheng ]
* Update my email address.
+ * Add native systemd support.
+ - Factor out the recovery logic from the slashem-common init script into a
+ new script /usr/lib/games/slashem/recover-all.
+ - Add a slashem-common.service invoking recover-all. This service uses
+ ConditionPathExistsGlob to only launch when files exist to recover,
+ avoiding any extra processes at startup in the common case.
+ - Build-Depends: debhelper (>= 9.20130504) for systemd support in
+ dh_installinit.
+ - Changes based on Josh Triplett's patchset for nethack systemd support.
-- Vincent Cheng <vcheng at debian.org> Sun, 11 May 2014 23:52:38 -0700
Modified: packages/trunk/slashem/debian/control
===================================================================
--- packages/trunk/slashem/debian/control 2014-05-12 06:53:45 UTC (rev 15082)
+++ packages/trunk/slashem/debian/control 2014-05-12 07:48:52 UTC (rev 15083)
@@ -6,7 +6,7 @@
Build-Depends:
bison,
bsdmainutils,
- debhelper (>= 9),
+ debhelper (>= 9.20130504),
flex,
groff-base,
libgtk2.0-dev,
Added: packages/trunk/slashem/debian/recover-all
===================================================================
--- packages/trunk/slashem/debian/recover-all (rev 0)
+++ packages/trunk/slashem/debian/recover-all 2014-05-12 07:48:52 UTC (rev 15083)
@@ -0,0 +1,38 @@
+#!/bin/sh
+set -e
+
+cd /var/games/slashem
+for file in *.0; do
+ # Note "$file" is always explicitly quoted to avoid attack.
+ # If there are no files, then "$file" = "*.0", which doesn't
+ # exist, so we skip once through this loop and exit.
+ # Also, the way this is written, some of the files may
+ # disappear before we look at them.
+
+ # Also check -L--there shouldn't be any symlinks, but if there
+ # are, we aren't going to process them.
+
+ if [ -f "$file" ] && [ ! -L "$file" ]; then
+ # Use 'find' to reliably determine the file's owner user name.
+ owner="$(find "$file" -maxdepth 0 -printf '%u')"
+
+ # Refuse to recover root's slashem files.
+ if [ "xroot" = "x$owner" ]; then
+ echo "Ignoring root's slashem unrecovered save file."
+ else
+ echo "Recovering slashem save files owned by $owner: "
+
+ # "$owner" is explicitly quoted to avoid attack.
+ # In particular, if the "find" command above fails,
+ # so will the 'su' command below.
+
+ # There really isn't a good safe way to pass a filename to
+ # a child shell through 'su -c', so instead we use a helper
+ # script running as the user which recovers everything
+ # owned by that user. This avoids the issue of quoting
+ # filenames passed through the shell entirely.
+
+ su --shell=/bin/sh -c /usr/lib/games/slashem/recover-helper "$owner"
+ fi
+ fi
+done
Modified: packages/trunk/slashem/debian/rules
===================================================================
--- packages/trunk/slashem/debian/rules 2014-05-12 06:53:45 UTC (rev 15082)
+++ packages/trunk/slashem/debian/rules 2014-05-12 07:48:52 UTC (rev 15083)
@@ -50,6 +50,10 @@
cp util/recover debian/tmp/usr/lib/games/slashem/recover
chown root:games debian/tmp/usr/lib/games/slashem/recover
chmod 02755 debian/tmp/usr/lib/games/slashem/recover
+ install -m 0755 -o root -g root debian/recover-helper \
+ debian/nethack-common/usr/lib/games/nethack/recover-helper
+ install -m 0755 -o root -g root debian/recover-all \
+ debian/nethack-common/usr/lib/games/nethack/recover-all
mkdir -p debian/tmp/etc
cp debian/slashemrc.x11 debian/tmp/etc/slashemrc.x11
chown root:games debian/tmp/usr/lib/games/slashem/slashem
Modified: packages/trunk/slashem/debian/slashem-common.init
===================================================================
--- packages/trunk/slashem/debian/slashem-common.init 2014-05-12 06:53:45 UTC (rev 15082)
+++ packages/trunk/slashem/debian/slashem-common.init 2014-05-12 07:48:52 UTC (rev 15083)
@@ -7,67 +7,27 @@
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Stop:
-# Short-Description: Nethack variant daemon
+# Short-Description: Slashem save-file recovery script for Debian
+# Description: Recovers Slashem save-files on start
### END INIT INFO
-RECOVER=/usr/lib/games/slashem/recover-helper
+. /lib/lsb/init-functions
-test -x $RECOVER || exit 0
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
-cd /var/games/slashem || exit 1
-
set -e
+
case "$1" in
start)
- for file in *.0; do
-
- # Note "$file" is always explicitly quoted to avoid attack.
- # If there are no files, then "$file" = "*.0", which doesn't
- # exist, so we skip once through this loop and exit.
- # Also, the way this is written, some of the files may
- # disappear before we look at them.
-
- # Also check -L--there shouldn't be any symlinks, but if there
- # are, we aren't going to process them.
-
- if [ -f "$file" ] && [ ! -L "$file" ]; then
-
- # Use 'find' to reliably determine the file's owner user name.
- owner="$(find "$file" -maxdepth 0 -printf '%u')"
-
- # Refuse to recover root's slashem files.
- if [ "xroot" = "x$owner" ]; then
- echo "Ignoring root's Slash'EM unrecovered save file."
- else
- echo "Recovering Slash'EM save files owned by $owner: "
-
- # "$owner" is explicitly quoted to avoid attack.
- # In particular, if the "find" command above fails,
- # so will the 'su' command below.
-
- # There really isn't a good safe way to pass a filename to
- # a child shell through 'su -c', so instead we use a helper
- # script running as the user which recovers everything
- # owned by that user. This avoids the issue of quoting
- # filenames passed through the shell entirely.
-
- su "$owner" -c /usr/lib/games/slashem/recover-helper
- fi
- fi
- done
-
+ # Has the nethack package been removed?
+ test -x /usr/lib/games/slashem/recover-all || exit 0
+ exec /usr/lib/games/slashem/recover-all
;;
- stop|restart|reload|force-reload)
+ stop|reload|restart|force-reload|status)
;;
*)
- N=/etc/init.d/$NAME
- # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
- echo "Usage: $N start" >&2
+ N=/etc/init.d/slashem-common
+ echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
-
-exit 0
-
-
-
Added: packages/trunk/slashem/debian/slashem-common.service
===================================================================
--- packages/trunk/slashem/debian/slashem-common.service (rev 0)
+++ packages/trunk/slashem/debian/slashem-common.service 2014-05-12 07:48:52 UTC (rev 15083)
@@ -0,0 +1,12 @@
+[Unit]
+Description=Recover slashem save files
+Documentation=man:recover(6) man:slashem(6)
+RequiresMountsFor=/var/games/slashem
+ConditionPathExistsGlob=/var/games/slashem/*.0
+
+[Service]
+Type=oneshot
+ExecStart=/usr/lib/games/slashem/recover-all
+
+[Install]
+WantedBy=multi-user.target
More information about the Pkg-games-commits
mailing list