summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Delvare <jdelvare@suse.de>2012-02-01 18:08:49 +0100
committerJean Delvare <jdelvare@suse.de>2012-02-01 18:08:49 +0100
commit396929e419877f84c5049228f907ce7945bcad7e (patch)
treed252fe0cb15a5384d60512bc925bbbcde2a357d1
parenteee1eb7d4d968f949943a63dd675e16c20731db5 (diff)
downloadquilt-396929e419877f84c5049228f907ce7945bcad7e.tar.gz
backup-files: Speed up ensure_nolinks
Calling dirname and basename is costly, and here we really don't have to. We can simply use a different temporary file name. Additionally, if stat succeeds, it will always return a valid number, so we can relax the tests. Signed-off-by: Jean Delvare <jdelvare@suse.de> Reviewed-by: Raphael Hertzog <hertzog@debian.org>
-rw-r--r--quilt/scripts/backup-files.in9
1 files changed, 3 insertions, 6 deletions
diff --git a/quilt/scripts/backup-files.in b/quilt/scripts/backup-files.in
index 03a41f4..70e6476 100644
--- a/quilt/scripts/backup-files.in
+++ b/quilt/scripts/backup-files.in
@@ -47,14 +47,11 @@ usage () {
ensure_nolinks() {
local filename="$1"
- local link_count dirname basename tmpname
+ local link_count tmpname
link_count=$(stat @STAT_HARDLINK@ "$filename")
- if [ -z "$link_count" ] || [ "$link_count" -gt 1 ]; then
- dirname=$(dirname "$filename")
- basename=$(basename "$filename")
- # Temp file name is "path/to/.file.XXXXXX"
- tmpname=$(mktemp "${dirname}/.${basename}.XXXXXX")
+ if [ $link_count -gt 1 ]; then
+ tmpname=$(mktemp "$filename.XXXXXX")
cp -p "$filename" "$tmpname"
mv "$tmpname" "$filename"
fi