Randy McMurchy wrote:
> Hi all,
> 
> I believe I've run across a bug in the LFS Bootscripts. It appears to
> me that if the concerned script (I've only tested BLFS scripts, but I
> suppose I could kill the sysklog stuff and try it) is not started, and
> you issue a
> 
> /etc/rc.d/init.d/script status
> 
> command, it will report that it is running, even though it is not.
> 

Non-Technical explanation:  I actually tested fully (I believe) and it
works!!! :-D

Technical explanation (This is probably only useful to people who would
like to make changes to the functions file):  A few changes.  getpids()
now works as expected.  To keep the output of pidofproc() LSB compliant,
I had to extend the LSB function to include a new switch ([-s] #silent),
which is used throughout the scripts now instead of redirecting the
output to /dev/null.  This made the patch a lot bigger.  Everything is
still dependent on ${pidlist}, but pidlist is not local to the function
anymore, therefor should not be assigned a value by the output of
pidofproc() when no PIDFILE is present, but rather the output of
pidofproc() is obtained from ${pidlist} in both cases now.  In short,
the functionality is the same unless you add the -s switch, but there is
no need to assign the output to a pidlist if you need it.

That was annoying.  Anyway, patch against 3.2.2 attached.  Should apply
to svn and enhanced in svn/contrib as well.  Please report back right
away if you have any problems.

Thanks.

-- DJ Lucas

diff -Naur lfs-bootscripts-3.2.2-orig/lfs/init.d/functions lfs-bootscripts-3.2.2/lfs/init.d/functions
--- lfs-bootscripts-3.2.2-orig/lfs/init.d/functions	2005-03-30 17:19:33.000000000 -0600
+++ lfs-bootscripts-3.2.2/lfs/init.d/functions	2005-08-09 23:43:26.000000000 -0500
@@ -403,7 +403,7 @@
 # The below functions are documented in the LSB-generic 2.1.0
 
 #*******************************************************************************
-# Function - pidofproc [-p pidfile] pathname
+# Function - pidofproc [-s] [-p pidfile] pathname
 #
 # Purpose: This function returns one or more pid(s) for a particular daemon
 #
@@ -426,7 +426,8 @@
 {
 	local pidfile=""
 	local lpids=""
-	local pidlist=""
+	local silent=""
+	pidlist=""
 	while true
 	do
 		case "${1}" in
@@ -434,6 +435,13 @@
 				pidfile="${2}"
 				shift 2
 				;;
+
+			-s)
+				# Added for legacy opperation of getpids
+				# eliminates several '> /dev/null'
+				silent="1"
+				shift 1
+				;;
 			-*)
 				log_failure_msg "Unknown Option: ${1}"
 				return 2
@@ -446,7 +454,7 @@
 
 	if [ "${#}" != "1" ]; then
 		shift 1
-		log_failure_msg "Usage: pidofproc [-p pidfile] pathname"
+		log_failure_msg "Usage: pidofproc [-s] [-p pidfile] pathname"
 		return 2
 	fi
 
@@ -462,13 +470,31 @@
 				kill -0 "${pid}" > /dev/null &&
 				pidlist="${pidlist} ${pid}"
 			fi
-			echo ${pidlist}
-			test -z "${pidlist}" && return 1 # Program is dead, pidfile exists
+			
+			if [ "${silent}" -ne "1" ]; then
+				echo "${pidlist}"
+			fi
+
+			test -z "${pidlist}" && 
+			# Program is dead, pidfile exists
+			return 1
+			# else
 			return 0
 		done
 
 	else
-		pidof -o $$ -o $PPID -x "${1}"
+		pidlist=`pidof -o $$ -o $PPID -x "$1"`
+		if [ "x${silent}" != "x1" ]; then
+			echo "${pidlist}"
+		fi
+
+		# Get provide correct running status
+		if [ -n "${pidlist}" ]; then
+			return 0
+		else
+			return 3
+		fi
+
 	fi
 
 	if [ "$?" != "0" ]; then
@@ -480,9 +506,9 @@
 getpids()
 {
 	if [ -z "${PIDFILE}" ]; then
-		pidlist=`pidofproc -p "${PIDFILE}" [EMAIL PROTECTED]
+		pidofproc -s -p "${PIDFILE}" $@
 	else
-		pidlist=`pidofproc [EMAIL PROTECTED]
+		pidofproc -s $@
 	fi
 	base="${1##*/}"
 }
@@ -554,9 +580,9 @@
 
 	if [ -z "${forcestart}" ]; then
 		if [ -z "${pidfile}" ];	then
-			pidofproc "${1}" > /dev/null
+			pidofproc -s "${1}"
 		else
-			pidofproc -p "${pidfile}" "${1}" > /dev/null
+			pidofproc -s -p "${pidfile}" "${1}"
 		fi
 
 		case "${?}" in
@@ -606,7 +632,7 @@
 {
 	local pidfile=""
 	local killsig=""
-	local pidlist=""
+	pidlist=""
 
 # This will ensure compatibility with previous LFS Bootscripts
 	if [ -n "${PIDFILE}" ];	then
@@ -639,9 +665,9 @@
 	fi
 
 	if [ -z "${pidfile}" ];	then
-		pidlist=`pidofproc "${1}"`
+		pidofproc -s "${1}"
 	else
-		pidlist=`pidofproc -p "${pidfile}" "${1}"`
+		pidofproc -s -p "${pidfile}" "${1}"
 	fi
 
 	for pid in ${pidlist}
@@ -662,7 +688,7 @@
 	done
 
 	if [ -z "${killsig}" ];	then
-		pidofproc "${1}" > /dev/null
+		pidofproc -s "${1}"
 
 		# Program was terminated
 		if [ "$?" != "0" ]; then
@@ -678,9 +704,9 @@
 		fi
 	else
 		if [ -z "${pidfile}" ];	then
-			pidofproc "${1}" > /dev/null
+			pidofproc -s "${1}"
 		else
-			pidofproc -p "${pidfile}" "${1}" > /dev/null
+			pidofproc -s -p "${pidfile}" "${1}"
 		fi
 	fi
 

-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to