summaryrefslogtreecommitdiff
path: root/share/rcm.sh.in
diff options
context:
space:
mode:
authorGravatar Mike Burns and Eric Collins <mike@mike-burns.com>2016-12-23 16:18:40 -0500
committerGravatar Mike Burns and Eric Collins <mike@mike-burns.com>2016-12-26 16:39:20 -0500
commit147a7b66554b2b13bcbf6fec1204e0cc0a1790bf (patch)
tree6539b10986afe5babef3decb2991cd5bb11ac08b /share/rcm.sh.in
parent0651e4f5e0e71b57d6564f2f2887ab98f13f1995 (diff)
Handle spaces in dotfile name
In mkrc, separate the list of files with newlines instead of spaces. Change the `$IFS` when iterating to handle this. We hand the file off to rcup, which encodes the file name by replacing spaces with the bell character (`\a`). rcup then sends the file name off to lsrc, which decodes the bell back into a space. The test makes sure an `a` character is in the filename, in case some encoding goes wrong. We use tr(1) instead of sed(1) because tr(1) handles `\a`. Shoutout to Sublime Text 3 for forcing this issue.
Diffstat (limited to 'share/rcm.sh.in')
-rw-r--r--share/rcm.sh.in14
1 files changed, 14 insertions, 0 deletions
diff --git a/share/rcm.sh.in b/share/rcm.sh.in
index f0d3364..80e9e91 100644
--- a/share/rcm.sh.in
+++ b/share/rcm.sh.in
@@ -147,6 +147,20 @@ de_dot() {
echo "$1" | sed -e "s|$DEST_DIR/||" | sed -e 's/^\.//'
}
+DELIMITER="\a"
+
+encode() {
+ local file="$1"
+
+ echo "$file" | tr " " "$DELIMITER"
+}
+
+decode() {
+ local file="$1"
+
+ echo "$file" | tr "$DELIMITER" " "
+}
+
: ${RCRC:=$HOME/.rcrc}
if [ -r "$RCRC" ]; then