aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-11-16 11:31:26 +1300
committerTom Ryder <tom@sanctum.geek.nz>2016-11-16 11:31:26 +1300
commitd38b2ac502f33294d7e79ebe802d30fc29b4fefd (patch)
tree4ef7f765c4732078ca11b242565dc6db99573887
parentAdd sqs(1df) (diff)
downloaddotfiles-d38b2ac502f33294d7e79ebe802d30fc29b4fefd.tar.gz
dotfiles-d38b2ac502f33294d7e79ebe802d30fc29b4fefd.zip
Resolve issue with destructive sqs(1df)/stex(1df)
-rw-r--r--ISSUES.markdown2
-rwxr-xr-xbin/sqs11
-rwxr-xr-xbin/stex8
3 files changed, 18 insertions, 3 deletions
diff --git a/ISSUES.markdown b/ISSUES.markdown
index e5a84a79..a47092bf 100644
--- a/ISSUES.markdown
+++ b/ISSUES.markdown
@@ -16,5 +16,3 @@ Known issues
it would be great, probably using ImageMagick import(1)
* sxhkd(1) might be nicer than xbindkeys; it's in Debian Testing now
* I don't think that the the timeout for dmp(1df) is working
-* stex(1df) and sqs(1df) both overwrite files without checking, which is a
- bit rude
diff --git a/bin/sqs b/bin/sqs
index 4da572ac..353238d5 100755
--- a/bin/sqs
+++ b/bin/sqs
@@ -1,9 +1,10 @@
#!/bin/sh
# Chop a trailing query string off filenames
+self=sqs
# Check args
if [ "$#" -eq 0 ] ; then
- printf >&2 'Need a filename\n'
+ printf >&2 '%s: Need a filename\n' "$self"
exit 2
fi
@@ -17,6 +18,14 @@ for sn ; do
# Ignore this file if its name wouldn't change
[ "$sn" != "$dn" ] || continue
+ # Ignore this file if its name already exists (don't overwrite)
+ if [ -e "$dn" ] ; then
+ printf >&2 '%s: File named %s already exists\n' \
+ "$self" "$dn"
+ ex=1
+ continue
+ fi
+
# Attempt a rename, flag an error if there was one
mv -- "$sn" "$dn" || ex=1
done
diff --git a/bin/stex b/bin/stex
index d20e8e5b..e1b87773 100755
--- a/bin/stex
+++ b/bin/stex
@@ -21,6 +21,14 @@ for sn ; do
# Ignore this file if its name wouldn't change
[ "$sn" != "$dn" ] || continue
+ # Ignore this file if its name already exists (don't overwrite)
+ if [ -e "$dn" ] ; then
+ printf >&2 '%s: File named %s already exists\n' \
+ "$self" "$dn"
+ ex=1
+ continue
+ fi
+
# Attempt a rename, flag an error if there was one
mv -- "$sn" "$dn" || ex=1
done