2011/1/21 Teodor MICU <mteo...@gmail.com>:
> 2011/1/21 Agustin Martin <agmar...@debian.org>:
>> if [ "$MILTERSOCKET" ] && [ "`echo $MILTERSOCKET | grep -v ^inet`" ]; then
>>
>> but as Teodor points out (just read it), second check seems to be enough.
>
> Only that I realized latter the intention of this construction. My
> previous suggestion was to use this construction on its own without
> "test":
>
> if echo "$MILTERSOCKET" | grep -q -v "^inet"; then
> ...
> fi
> (the return code is set by grep)
>
> This works too but there is an extra test for the empty string:
> if [ "$(echo $MILTERSOCKET | grep -v ^inet)" ]; then
> ...
> fi
> (the return code is set by 'test')

If I understand correctly, first expression saves redundant checks, so
is preferrable.

Harald, I've rewritten patch suggestion with more quoting and Teodor's
check (Teodor, please check that I understood correctly) . Instead of
repeating the check a variable is used for next similar check, but
that was the way I played, feel free to act at your convenience. I do
not use amavisd myself, so patch is completely unchecked, just
verified that 'sh -n' on the script gives no errors. Check on this is
appreciated.

Patch is attached,

Cheers,

-- 
Agustin
diff -Nru --exclude changelog amavisd-milter-1.5.0/debian/amavisd-milter.init amavisd-milter-1.5.0/debian/amavisd-milter.init
--- amavisd-milter-1.5.0/debian/amavisd-milter.init	2010-05-12 23:01:42.000000000 +0200
+++ amavisd-milter-1.5.0/debian/amavisd-milter.init	2011-01-22 20:40:46.000000000 +0100
@@ -30,19 +30,43 @@
 OPTIONS=""
 
 # Exit if the package is not installed
-[ -x $DAEMON ] || exit 0
+[ -x "$DAEMON" ] || exit 0
 
 # Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
-
-[ $PIDFILE != "/var/run/amavis/$NAME.pid" ] && OPTIONS="$OPTIONS -p $PIDFILE"
-[ $MILTERSOCKET ] && OPTIONS="$OPTIONS -s $MILTERSOCKET"
-[ $AMAVISSOCKET ] && OPTIONS="$OPTIONS -S $AMAVISSOCKET"
-[ $WORKINGDIR ] && OPTIONS="$OPTIONS -w $WORKINGDIR"
-[ $EXTRAPARAMS ] && OPTIONS="$OPTIONS $EXTRAPARAMS"
-
-[ $PIDFILE ] && ([ -d $(dirname $PIDFILE) ] || mkdir $(dirname $PIDFILE) && chown $USER:$(id $USER -g -n) $(dirname $PIDFILE))
-[ $MILTERSOCKET ] && ([ -d $(dirname $MILTERSOCKET) ] || mkdir $(dirname $MILTERSOCKET) && chown $USER $(dirname $MILTERSOCKET))
+if [ -r "/etc/default/$NAME" ]; then
+  . "/etc/default/$NAME"
+fi
+
+if [ "$PIDFILE" != "/var/run/amavis/$NAME.pid" ]; then
+  OPTIONS="$OPTIONS -p $PIDFILE"
+fi
+if [ "$MILTERSOCKET" ]; then
+  OPTIONS="$OPTIONS -s $MILTERSOCKET"
+fi
+if [ "$AMAVISSOCKET" ]; then
+  OPTIONS="$OPTIONS -S $AMAVISSOCKET"
+fi
+if [ "$WORKINGDIR" ]; then
+  OPTIONS="$OPTIONS -w $WORKINGDIR"
+fi
+if [ "$EXTRAPARAMS" ]; then
+  OPTIONS="$OPTIONS $EXTRAPARAMS"
+fi
+
+if [ "$PIDFILE" ]; then
+  if [ ! -e "$(dirname $PIDFILE)" ]; then
+    mkdir "$(dirname $PIDFILE)"
+  fi
+  chown $USER:$(id $USER -g -n) "$(dirname $PIDFILE)"
+fi
+unset NOINET_MILTERSOCKET
+if echo "$MILTERSOCKET" | grep -q -v "^inet"; then
+  if [ ! -e "$(dirname $MILTERSOCKET)" ]; then
+    mkdir "$(dirname $MILTERSOCKET)"
+  fi
+  NOINET_MILTERSOCKET=1
+  chown $USER "$(dirname $MILTERSOCKET)"
+fi
 
 START="--start --quiet --chuid $USER --pidfile $PIDFILE --startas $DAEMON --name $NAME -- $OPTIONS"
 STOP="--stop --quiet --retry 10 --pidfile $PIDFILE --startas $DAEMON --name $NAME"
@@ -53,25 +77,51 @@
 case "$1" in
   start)
 	log_daemon_msg "Starting $DESC:" "$NAME"
-	start-stop-daemon $START 
+	start-stop-daemon $START
+
 	case "$?" in
-		0) log_end_msg 0
-		   [ $MILTERSOCKET ] && [ $MILTERSOCKETOWNER ] && chown $MILTERSOCKETOWNER $MILTERSOCKET
-		   [ $MILTERSOCKET ] && [ $MILTERSOCKETMODE ] && chmod $MILTERSOCKETMODE $MILTERSOCKET ;;
-		1) log_progress_msg "already started"
-		   log_end_msg 0 ;;
-		*) log_end_msg $? ;;
+		0)
+		   log_end_msg 0
+		   if [ "$NOINET_MILTERSOCKET" ]; then
+		     if [ "$MILTERSOCKETOWNER" ]; then
+		       chown $MILTERSOCKETOWNER $MILTERSOCKET
+		     fi
+		     if [ "$MILTERSOCKETMODE" ]; then
+		       chmod $MILTERSOCKETMODE $MILTERSOCKET
+		     fi
+		   fi
+		   ;;
+
+		1) 
+		   log_progress_msg "already started"
+		   log_end_msg 0
+		   ;;
+
+		*) 
+		   log_end_msg $?
+		   ;;
+
 	esac
 	;;
 
   stop)
 	log_daemon_msg "Stopping $DESC:" "$NAME"
 	start-stop-daemon $STOP
+
 	case "$?" in
-		0) log_end_msg 0 ;;
-		1) log_progress_msg "already stopped"
-		   log_end_msg 0 ;;
-		*) log_end_msg $? ;;
+		0)
+		   log_end_msg 0
+		   ;;
+
+		1)
+		   log_progress_msg "already stopped"
+		   log_end_msg 0
+		   ;;
+
+		*)
+		   log_end_msg $?
+		   ;;
+
 	esac
 	;;
 

Reply via email to