Package: sysvinit-utils
Version: 2.86.ds1-61
Severity: wishlist
Tags: patch
User: ubuntu-de...@lists.ubuntu.com
Usertags: ubuntu-patch origin-ubuntu karmic

Hi guys,

Please find attached a patch from the Ubuntu sysvinit-utils package that
adds a 'service' command and manpage.

This implies conflicts with the chkconfig and sysvconfig packages, which
also implement this command, but we should really move it more centrally and
make it a standard interface.

-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slanga...@ubuntu.com                                     vor...@debian.org
Index: debian/control
===================================================================
--- debian/control	(revision 1332)
+++ debian/control	(working copy)
@@ -26,15 +26,15 @@
 Package: sysvinit-utils
 Essential: yes
 Architecture: any
-Conflicts: last
-Replaces: last, sysvinit (<= 2.86.ds1-22)
+Conflicts: last, sysvconfig, chkconfig
+Replaces: last, sysvinit (<= 2.86.ds1-22), sysvconfig, chkconfig
 Depends: ${shlibs:Depends}
 Suggests: sash
 Description: System-V-like utilities
  This package contains the important System-V-like utilities.
  .
  Specifically, this package includes:
- killall5, last, lastb, mesg, pidof, sulogin
+ killall5, last, lastb, mesg, pidof, service, sulogin
 
 Package: sysv-rc
 Architecture: all
Index: debian/rules
===================================================================
--- debian/rules	(revision 1332)
+++ debian/rules	(working copy)
@@ -110,6 +110,7 @@
 	rm -f $(tmp)/usr/share/man/man1/last.1
 	rm -f $(tmp)/usr/share/man/man1/lastb.1
 	rm -f $(tmp)/usr/share/man/man1/mesg.1
+	rm -f $(tmp)/usr/share/man/man8/service.8
 	rm -f $(tmp)/usr/share/man/man8/pidof.8
 	rm -f $(tmp)/usr/share/man/man1/mountpoint.1
 	rm -f $(tmp)/sbin/killall5
@@ -117,6 +118,7 @@
 	rm -f $(tmp)/usr/bin/last
 	rm -f $(tmp)/usr/bin/lastb
 	rm -f $(tmp)/usr/bin/mesg
+	rm -f $(tmp)/usr/sbin/service
 	rm -f $(tmp)/bin/pidof
 	rm -f $(tmp)/bin/mountpoint
 	rmdir $(tmp)/usr/share/man/man1
@@ -152,6 +154,7 @@
 	install -o root -g root -m 755 src/sulogin $(tmp)/sbin
 	install -o root -g root -m 755 src/last $(tmp)/usr/bin
 	install -o root -g root -m 755 src/mesg $(tmp)/usr/bin
+	install -o root -g root -m 755 debian/service/sbin/service $(tmp)/usr/sbin
 	strip -s -R .comment $(tmp)/sbin/killall5
 	strip -s -R .comment $(tmp)/sbin/sulogin
 	strip -s -R .comment $(tmp)/usr/bin/last
@@ -163,6 +166,7 @@
 	install -o root -g root -m 644 man/last.1 $(tmp)/usr/share/man/man1
 	install -o root -g root -m 644 man/lastb.1 $(tmp)/usr/share/man/man1
 	install -o root -g root -m 644 man/mesg.1 $(tmp)/usr/share/man/man1
+	install -o root -g root -m 644 debian/service/man8/service.8 $(tmp)/usr/share/man/man8
 	install -o root -g root -m 644 man/pidof.8 $(tmp)/usr/share/man/man8
 	gzip -9f $(tmp)/usr/share/man/man*/*.[0-9]
 	install -o root -g root -m 644 debian/copyright \
Index: debian/service/man8/service.8
===================================================================
--- debian/service/man8/service.8	(revision 0)
+++ debian/service/man8/service.8	(revision 0)
@@ -0,0 +1,76 @@
+.\" A man page for service(8). -*- nroff -*-
+.\"
+.\" Copyright (C) 2006 Red Hat, Inc. All rights reserved.
+.\"
+.\" This copyrighted material is made available to anyone wishing to use,
+.\" modify, copy, or redistribute it subject to the terms and conditions of the
+.\" GNU General Public License v.2.
+.\"
+.\" This program is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 
+.\" more details.
+.\"
+.\" You should have received a copy of the GNU General Public License along
+.\" with this program; if not, write to the Free Software Foundation, Inc.,
+.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+.\"
+.\" Author: Miloslav Trmac <m...@redhat.com>
+.TH service 8 "Jan 2006"
+
+.SH NAME
+service \- run a System V init script
+
+.SH SYNOPSIS
+\fBservice\fR \fISCRIPT\fR \fICOMMAND\fR [\fIOPTIONS\fR]
+
+\fBservice \-\-status\-all\fR
+
+\fBservice\fR \fB\-\-help\fR | \fB\-h\fR | \fB\-\-version\fR
+
+.SH DESCRIPTION
+.B service
+runs a System V init script in as predictable environment as possible,
+removing most environment variables
+and with current working directory set to \fB/\fR.
+
+The
+.I SCRIPT
+parameter specifies a System V init script,
+located in \fB/etc/init.d/\fISCRIPT\fR.
+The supported values of
+.I COMMAND
+depend on the invoked script,
+.B service
+passes
+.I COMMAND
+and
+.I OPTIONS
+it to the init script unmodified.
+All scripts should support at least the
+.B start
+and
+.B stop
+commands.
+As a special case, if
+.I COMMAND
+is \fB\-\-full-restart\fR, the script is run twice, first with the
+.B stop
+command, then with the
+.B start
+command.
+
+.B service \-\-status\-all
+runs all init scripts, in alphabetical order, with the
+.B status
+command.
+
+.SH FILES
+.TP
+\fB/etc/init.d\fR
+The directory containing System V init scripts.
+
+.SH ENVIRONMENT
+.TP
+\fBLANG\fR, \fBTERM\fR
+The only environment variables passed to the init scripts.
Index: debian/service/sbin/service
===================================================================
--- debian/service/sbin/service	(revision 0)
+++ debian/service/sbin/service	(revision 0)
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+###########################################################################
+# /usr/bin/service
+#
+# A convenient wrapper for the /etc/init.d init scripts.
+#
+# This script is a modified version of the /sbin/service utility found on
+# Red Hat/Fedora systems (licensed GPLv2+).
+#
+# Copyright (C) 2006 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2008 Canonical Ltd.
+#   * August 2008 - Dustin Kirkland <kirkl...@canonical.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+# On Debian GNU/Linux systems, the complete text of the GNU General
+# Public License can be found in `/usr/share/common-licenses/GPL'.
+###########################################################################
+
+
+is_ignored_file() {
+	case "$1" in
+		skeleton | README | *.dpkg-dist | *.dpkg-old | rc | rcS | single | reboot | bootclean.sh)
+			return 0
+		;;
+	esac
+	return 1
+}
+
+VERSION="`basename $0` ver. 0.91-ubuntu1"
+USAGE="Usage: `basename $0` < option > | --status-all | \
+[ service_name [ command | --full-restart ] ]"
+SERVICE=
+SERVICEDIR="/etc/init.d"
+OPTIONS=
+
+if [ $# -eq 0 ]; then
+   echo "${USAGE}" >&2
+   exit 1
+fi
+
+cd /
+while [ $# -gt 0 ]; do
+  case "${1}" in
+    --help | -h | --h* )
+       echo "${USAGE}" >&2
+       exit 0
+       ;;
+    --version | -V )
+       echo "${VERSION}" >&2
+       exit 0
+       ;;
+    *)
+       if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then
+          cd ${SERVICEDIR}
+          for SERVICE in * ; do
+            case "${SERVICE}" in
+              functions | halt | killall | single| linuxconf| kudzu)
+                  ;;
+              *)
+                if ! is_ignored_file "${SERVICE}" \
+		    && [ -x "${SERVICEDIR}/${SERVICE}" ]; then
+                        if ! grep -qs "\Wstatus)" "$SERVICE"; then
+                          #printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2
+                          echo " [ ? ]  $SERVICE" 1>&2
+                          continue
+                        else
+                          out=$(env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1)
+                          if [ "$?" = "0" -a -n "$out" ]; then
+                            #printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running"
+                            echo " [ + ]  $SERVICE"
+                            continue
+                          else
+                            #printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running"
+                            echo " [ - ]  $SERVICE"
+                            continue
+                          fi
+                        fi
+                  #env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status
+                fi
+                ;;
+            esac
+          done
+          exit 0
+       elif [ $# -eq 2 -a "${2}" = "--full-restart" ]; then
+          SERVICE="${1}"
+          if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
+            env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" stop
+            env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" start
+            exit $?
+          fi
+       elif [ -z "${SERVICE}" ]; then
+         SERVICE="${1}"
+       else
+         OPTIONS="${OPTIONS} ${1}"
+       fi
+       shift
+       ;;
+   esac
+done
+
+if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
+   env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" ${OPTIONS}
+else
+   echo $"${SERVICE}: unrecognized service" >&2
+   exit 1
+fi

Attachment: signature.asc
Description: Digital signature

Reply via email to