cvs commit: ports/net-mgmt/softflowd/files softflowd.in ports/net-mgmt/softflowd Makefile

Doug Barton dougb at FreeBSD.org
Thu Nov 25 19:05:29 UTC 2010


With all due respect to Tom, this script is not in good shape, and 
should not have been committed in its current form. I've attached a 
patch that corrects the most glaring errors. It would be great if Tom, 
or someone else familiar with this software, could test it ASAP and 
report back.

1. Lots of extraneous whitespace, including newlines at the beginning 
and end of the script, eols; and inconsistent indentation.
2. No $FreeBSD$
3. Unless there is a good reason to do otherwise local scripts should 
use REQUIRE: LOGIN.
4. There should be no quotes around /etc/rc.subr
5. The default values should be set after calling load_rc_config()
6. We do not like any code to be run in rc.d scripts unconditionally.
7. The script is not PREFIX clean.

Once again, I appreciate the effort put in here, but given that a lot of 
rc.d scripts are copied from other scripts (which seems like what was 
done here) we need to be doubly careful with QA so that bad examples 
don't propagate further.


Doug


On 11/25/2010 06:58, Josh Paetzel wrote:
> jpaetzel    2010-11-25 14:58:33 UTC
>
>    FreeBSD ports repository
>
>    Modified files:
>      net-mgmt/softflowd   Makefile
>    Added files:
>      net-mgmt/softflowd/files softflowd.in
>    Log:
>    Add rc.d script to port
>
>    PR:     ports/151398  http://www.FreeBSD.org/cgi/query-pr.cgi?pr=151398
>    Submitted by:   Tom Judge<tom at tomjudge.com>
>    Approved by:    Maintainer timeout
>
>    Revision  Changes    Path
>    1.5       +2 -0      ports/net-mgmt/softflowd/Makefile
>    1.1       +75 -0     ports/net-mgmt/softflowd/files/softflowd.in (new)
>
> http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/net-mgmt/softflowd/Makefile.diff?&r1=1.4&r2=1.5&f=h
> http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/net-mgmt/softflowd/files/softflowd.in
>



-- 

	Nothin' ever doesn't change, but nothin' changes much.
			-- OK Go

	Breadth of IT experience, and depth of knowledge in the DNS.
	Yours for the right price.  :)  http://SupersetSolutions.com/

-------------- next part --------------
Index: softflowd.in
===================================================================
RCS file: /home/pcvs/ports/net-mgmt/softflowd/files/softflowd.in,v
retrieving revision 1.1
diff -u -r1.1 softflowd.in
--- softflowd.in	25 Nov 2010 14:58:33 -0000	1.1
+++ softflowd.in	25 Nov 2010 18:53:52 -0000
@@ -1,11 +1,11 @@
-
 #!/bin/sh
 
-# (c) 2010 Tom Judge 
+# $FreeBSD$
+
+# (c) 2010 Tom Judge
 
 # PROVIDE: softflowd
-# REQUIRE: NETWORKING
-# BEFORE: LOGIN
+# REQUIRE: LOGIN
 # KEYWORD: shutdown
 
 # softflowd_enable="YES"
@@ -19,57 +19,59 @@
 # softflowd_em0_extra_args=""
 # softflowd_em1_extra_args=""
 
-. "/etc/rc.subr"
-
-softflowd_enable=${softflowd_enable:-"NO"}
-softflowd_timeouts="-t maxlife=300"
-softflowd_max_states="16000"
-softflowd_extra_args=""
+. /etc/rc.subr
 
 name=softflowd
 rcvar=`set_rcvar`
-load_rc_config $name
+
+start_precmd="softflowd_precommand"
+stop_precmd="softflowd_precommand"
 stop_cmd="softflowd_stop"
-command="/usr/local/sbin/softflowd"
+command="%%PREFIX%%/sbin/softflowd"
 _pidprefix="/var/run/softflowd"
 
-if [ -n "$2" ]; then
-	profile="$2"
-    pidfile="${_pidprefix}.${profile}.pid"
-    ctlfile="${_pidprefix}.${profile}.ctl"
-    eval apache22_flags="\${apache22_${profile}_flags:-${apache22_flags}}"
-    eval softflowd_collector="\${softflowd_${profile}_collector}"
-    if [ "x${softflowd_collector}" = "x" ]; then
-        echo "ERROR: You must specify a collector to send data to."
-        exit 1
-    fi
-    eval softflowd_timeouts="\${softflowd_${profile}_timeouts:-${softflowd_timeouts}}"
-    eval softflowd_max_states="\${softflowd_${profile}_max_states:-${softflowd_max_states}}"
-    eval softflowd_extra_args="\${softflowd_${profile}_extra_args:-${softflowd_extra_args}}"
-    command_args="-i ${profile} -n ${softflowd_collector} -m ${softflowd_max_states} -p ${pidfile} -c ${ctlfile} ${softflowd_timeouts} ${softflowd_extra_args}"
-
-else
-	if [ "x${softflowd_interfaces}" != "x" -a "x$1" != "x" ]; then
-		for profile in ${softflowd_interfaces}; do
-			echo "===> softflowd profile: ${profile}"
-			/usr/local/etc/rc.d/softflowd $1 ${profile}
-			retcode="$?"
-			if [ "0${retcode}" -ne 0 ]; then
-				failed="${profile} (${retcode}) ${failed:-}"
-			else
-				success="${profile} ${success:-}"
-			fi
-		done
-		exit 0
-	fi
-fi
+load_rc_config $name
 
-softflowd_stop() {
-   /usr/local/sbin/softflowctl -c ${ctlfile} shutdown 
+softflowd_enable=${softflowd_enable:-"NO"}
+softflowd_timeouts="-t maxlife=300"
+softflowd_max_states="16000"
+
+softflowd_precommand ()
+{
+	if [ -n "$2" ]; then
+		profile="$2"
+		pidfile="${_pidprefix}.${profile}.pid"
+		ctlfile="${_pidprefix}.${profile}.ctl"
+		eval apache22_flags="\${apache22_${profile}_flags:-${apache22_flags}}"
+		eval softflowd_collector="\${softflowd_${profile}_collector}"
+		if [ "x${softflowd_collector}" = "x" ]; then
+			echo "ERROR: You must specify a collector to send data to."
+			exit 1
+		fi
+		eval softflowd_timeouts="\${softflowd_${profile}_timeouts:-${softflowd_timeouts}}"
+		eval softflowd_max_states="\${softflowd_${profile}_max_states:-${softflowd_max_states}}"
+		eval softflowd_extra_args="\${softflowd_${profile}_extra_args:-${softflowd_extra_args}}"
+		command_args="-i ${profile} -n ${softflowd_collector} -m ${softflowd_max_states} -p ${pidfile} -c ${ctlfile} ${softflowd_timeouts} ${softflowd_extra_args}"
+	else
+		if [ "x${softflowd_interfaces}" != "x" -a "x$1" != "x" ]; then
+			for profile in ${softflowd_interfaces}; do
+				echo "===> softflowd profile: ${profile}"
+				/usr/local/etc/rc.d/softflowd $1 ${profile}
+				retcode="$?"
+				if [ "0${retcode}" -ne 0 ]; then
+					failed="${profile} (${retcode}) ${failed:-}"
+				else
+					success="${profile} ${success:-}"
+				fi
+			done
+			exit 0
+		fi
+	fi
 }
 
+softflowd_stop()
+{
+	%%PREFIX%%/sbin/softflowctl -c ${ctlfile} shutdown
+}
 
 run_rc_command "$1"
-
-
-


More information about the cvs-ports mailing list