Hi

I have tested the following and it seems to work. Full patch attached.

Regards,

// Ola

-- 
 --------------------- Ola Lundqvist ---------------------------
/  [EMAIL PROTECTED]                     Annebergsslingan 37      \
|  [EMAIL PROTECTED]                     654 65 KARLSTAD          |
|  http://opalsys.net/                 +46 (0)70-332 1551       |
\  gpg/f.p.: 7090 A92B 18FE 7994 0C36  4FE4 18A1 B1CF 0FE5 3DD9 /
 ---------------------------------------------------------------
Index: cron-apt
===================================================================
--- cron-apt    (revision 2437)
+++ cron-apt    (arbetskopia)
@@ -22,6 +22,12 @@
 # MA 02110-1301 USA.
 #
 # Changes:
+#       2007-08-02 Ola Lundqvist <[EMAIL PROTECTED]>
+#               Added support for *_HERE variables in the action.d files.
+#               They are copied to the * variable before the action loop
+#               and then restored in the end of the loop.
+#               Marc Haber gave the idea to have variables that are applicable
+#               for only the action item.
 #       2007-08-01 Ola Lundqvist <[EMAIL PROTECTED]>
 #               Changed so that the tmp size checking is done later.
 #       2007-07-31 Ola Lundqvist <[EMAIL PROTECTED]>
@@ -412,6 +418,37 @@
        done;
 }
 
+general_varmove() {
+    PREFIX=$1
+    STORE=$2
+    SIFS=$IFS
+    IFS="
+"
+    LIST=$(set | grep "^[a-zA-Z][a-zA-Z0-9_]*_$PREFIX" | sed -e "s|=.*||;")
+    for PVAR in $* ; do
+        # Var name
+       VVAR=$(echo $PVAR | sed -e "s|_$PREFIX$||g;")
+       if [ -n "$STORE" ] ; then
+            # Stored var name
+           eval "SVAR=${VVAR}_$STORE"
+            # Store the value
+           eval "$SVAR=\$$VAR"
+       fi
+        # Set variable to here variable
+       eval "$VVAR=\$$PVAR"
+       eval "unset $PVAR"
+    done
+    IFS=$SIFS
+}
+
+herevariables_store() {
+    general_varmove HERE STORED
+}
+
+herevariables_restore() {
+    general_varmove STORED ""
+}
+
 ############################### check #########################################
 
 if ! [ -d "$LIBDIR/$CONFIGDIRNAME" ]; then
@@ -489,6 +526,7 @@
        echo "CRON-APT ACTION: $ACTIONF" > "$ACTIONMAIL"
        echo "CRON-APT ACTION: $ACTIONF" > "$ACTIONLOG"
        echo "CRON-APT ACTION: $ACTIONF" > "$ACTIONSYSLOG"
+       herevariables_store
        cat "$ACTIONDIR/$ACTIONF" | \
            sed -e "s/#.*$//;" | \
            grep -v "^[[:space:]]*$" | {
@@ -623,6 +661,7 @@
            fi
            rm -f "$STATUS"
        fi
+       herevariables_restore
 done
 
 onexit

Reply via email to