Bug 5080

Summary: /sbin/service incorrectly intercepts command line arguments passed to service
Product: [Development] Sisyphus Reporter: evseev <evseev@altlinux.org>
Component: serviceAssignee: Dmitry V. Levin <ldv@altlinux.org>
Status: CLOSED FIXED QA Contact: qa-sisyphus@altlinux.org
Severity: normal    
Priority: P2    
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Proposed change none

Description From 2004-08-27 03:22:02
/sbin/service looks for command line switches even after service name. So, 
"service testd -huh" is processed like "service -huh testd", not like 
"/etc/init.d/testd -huh". My little patch fixes this.

--- service.orig	2004-01-25 20:44:48 +0300
+++ service	2004-08-27 03:06:05 +0400
@@ -50,7 +50,9 @@
 			exit 0
 			;;
 		-*)
-			usage 1
+			test -z "$SERVICE" && usage 1
+			OPTIONS="$OPTIONS $1"
+			shift
 			;;
 		*)
 			if [ $# -eq 2 -a "$2" = "--full-restart" ]; then

Steps to Reproduce:
/sbin/service anything -anything

Actual Results:  
/sbin/service displays usage and fails.

Expected Results:  
Tail of command line should be passed directly to called service.
------- Comment #1 From 2004-09-01 19:38:14 -------
First, startup scripts usually have no option parser, so your script is probably
first one.

Second, your patch doesn't make possible to pass .e.g --help option to startup
script.
------- Comment #2 From 2005-03-09 15:46:17 -------
Created an attachment (id=767) [details]
Proposed change

I'm going to apply this change to /sbin/service.
Objections?
------- Comment #3 From 2005-03-09 16:07:20 -------
Applied in 0.5.7-alt1