File sysstat-8.1.5-sa1sa2lock.diff of Package sysstat

--- sa1.in
+++ sa1.in
@@ -28,17 +28,23 @@
 	rm -f ${CURRENTFILE}
 	ln -s ${CURRENTDIR}/${CURRENTFILE} ${CURRENTFILE}
 fi
+set -e
 umask 0022
 ENDIR=@SA_LIB_DIR@
+LOCKFILE=/var/log/sa/sadc.LOCK
 cd ${ENDIR}
+
+lockfile -r2 -30 $LOCKFILE 2>/dev/null
+trap "rm -f $LOCKFILE" EXIT
+
 [ "$1" = "--boot" ] && shift && BOOT=y || BOOT=n
 if [ $# = 0 ] && [ "$BOOT" = "n" ]
 then
 # Note: Stats are written at the end of previous file *and* at the
 # beginning of the new one (when there is a file rotation) only if
 # outfile has been specified as '-' on the command line...
-	exec ${ENDIR}/sadc -F -L 1 1 -
+	${ENDIR}/sadc -F -L 1 1 -
 else
-	exec ${ENDIR}/sadc -F -L $* -
+	${ENDIR}/sadc -F -L $* -
 fi
 
--- sa2.in
+++ sa2.in
@@ -46,6 +46,16 @@
 DFILE=${CURRENTDIR}/${CURRENTFILE}
 [ -f "$DFILE" ] || exit 0
 cd ${ENDIR}
+
+LOCKFILE=/var/log/sa/sadc.LOCK
+if ! lockfile -r6 -600 $LOCKFILE 2>/dev/null; then
+  if test `find $LOCKFILE -mmin +180 2>/dev/null`; then
+    rm -f $LOCKFILE
+    logger -p cron.alert "$0: detected an old lockfile \"$LOCKFILE\"."
+  fi
+fi
+trap "rm -f $LOCKFILE" EXIT
+
 [ -L ${RPT} ] && rm -f ${RPT}
 ${ENDIR}/sar $* -f ${DFILE} > ${RPT}
 find ${DDIR} \( -name 'sar??' -o -name 'sa??' -o -name 'sar??.gz' -o -name 'sa??.gz' \) \
openSUSE Build Service is sponsored by