diff options
author | Mike Burns and Eric Collins <mike@mike-burns.com> | 2016-12-23 16:18:40 -0500 |
---|---|---|
committer | Mike Burns and Eric Collins <mike@mike-burns.com> | 2016-12-26 16:39:20 -0500 |
commit | 147a7b66554b2b13bcbf6fec1204e0cc0a1790bf (patch) | |
tree | 6539b10986afe5babef3decb2991cd5bb11ac08b /share | |
parent | 0651e4f5e0e71b57d6564f2f2887ab98f13f1995 (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')
-rw-r--r-- | share/rcm.sh.in | 14 |
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 |