From 147a7b66554b2b13bcbf6fec1204e0cc0a1790bf Mon Sep 17 00:00:00 2001 From: Mike Burns and Eric Collins Date: Fri, 23 Dec 2016 16:18:40 -0500 Subject: 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. --- share/rcm.sh.in | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'share/rcm.sh.in') 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 -- cgit v1.2.3