diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2023-01-08 14:50:04 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2023-01-08 14:53:07 -0700 |
commit | 7ccdb2a6019cfa0c0c81597d992c71ec3e8c05cf (patch) | |
tree | e8ac8288d0f49fc681e2e75c38db58234b072744 /bin/hstow | |
parent | e8c5d47e66bf2be77004ba3a56af8b6fabc9dd8f (diff) | |
download | dotfiles-7ccdb2a6019cfa0c0c81597d992c71ec3e8c05cf.tar.gz |
hstow: when unstowing, don't recurse into directories we don't own
Diffstat (limited to 'bin/hstow')
-rwxr-xr-x | bin/hstow | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -53,7 +53,7 @@ read_globs_file () { } dir_contents () { - ( cd "$1"; find . ! -name . ! -name "$cchars" 2>/dev/null ) + ( cd "$1"; find . ! -name . ! -name "$cchars" -print -prune ) } fail () { @@ -140,7 +140,8 @@ unstow () { dir_pat=".$(echo $DIR | cut -c$(echo $HOME | wc -m | tr -d ' ')-)/" dirs_pat="$(echo "^($dir_pat$ignores)" | sed -e 's#\.#\\.#g')" - for file in $(find . -type l ! -name . ! -name "$cchars" 2>/dev/null \ + for file in $(find . ! \( -user "$(id -un)" -o -group "$(id -gn)" \) \ + -prune -o -type l ! -name . ! -name "$cchars" -print \ | grep -Ev "$dirs_pat"); do if readlink "$file" | grep -Eq '^(\.\./)*\.STOW/'"$NAME/"; then rm "$file" |