Instead of making the lock file with touch, use mkdir since it's the only portable atomic transaction available to shell scripts. Signed-off-by: Andres P <aepd87@gmail.com> --- scripts/pacman-optimize.sh.in | 12 +++++------- 1 files changed, 5 insertions(+), 7 deletions(-) diff --git a/scripts/pacman-optimize.sh.in b/scripts/pacman-optimize.sh.in index 78b2345..f95f827 100644 --- a/scripts/pacman-optimize.sh.in +++ b/scripts/pacman-optimize.sh.in @@ -67,7 +67,7 @@ die() { } die_r() { - rm -f "$lockfile" + rm -rf "$lock" die "$@" } @@ -109,15 +109,13 @@ fi # strip any trailing slash from our dbroot dbroot="${dbroot%/}" -# form the path to our lockfile location -lockfile="${dbroot}/db.lck" +# form the path to our db lock +lock="${dbroot}/db.lck" # make sure pacman isn't running -if [[ -f $lockfile ]]; then +if ! mkdir "$lock"; then die "$(gettext "Pacman lock file was found. Cannot run while pacman is running.")" fi -# do not let pacman run while we do this -touch "$lockfile" workdir=$(mktemp -d /tmp/pacman-optimize.XXXXXXXXXX) || die_r "$(gettext "ERROR: Can not create temp directory for database building.")\n" >&2 @@ -174,7 +172,7 @@ fi rm -rf "$dbroot.old" # remove the lock file and our working directory with sums and tarfile -rm -f "$lockfile" +rm -rf "$lock" rm -rf "$workdir" echo -- 1.7.1