ajout de readlinka et update_links
This commit is contained in:
parent
cc3869707c
commit
613f31ef5b
|
@ -768,6 +768,16 @@ function deref() {
|
|||
done
|
||||
abspath "$file"
|
||||
}
|
||||
function readlinka() {
|
||||
# Afficher un chemin absolu vers la destination du fichier $1. Si $1 n'est pas
|
||||
# un lien, afficher simplement le chemin du fichier
|
||||
if [ -L "$1" ]; then
|
||||
local linkdir="$(dirname -- "$1")"
|
||||
abspath "$(readlink "$1")" "$linkdir"
|
||||
else
|
||||
abspath "$1"
|
||||
fi
|
||||
}
|
||||
function readlinkm() {
|
||||
# Retourner un chemin absolu vers le fichier $1, dans lequel toutes les
|
||||
# composantes "lien symbolique" ont été supprimées. Il n'est pas requis que les
|
||||
|
@ -832,6 +842,17 @@ function update_link() {
|
|||
ln -sf "$dest" "$link"
|
||||
fi
|
||||
}
|
||||
function update_links() {
|
||||
# Mettre à jour les liens $2..@ pour qu'ils pointent vers la nouvelle
|
||||
# destination $1
|
||||
[ -n "$1" ] || return 1
|
||||
local dest="$1"; shift
|
||||
local r=0 link
|
||||
for link in "$@"; do
|
||||
update_link "$dest" "$link" || r=$?
|
||||
done
|
||||
return $r
|
||||
}
|
||||
function move_link() {
|
||||
# Déplacer le lien $1 vers $2, et mettre à jour la destination du lien si
|
||||
# elle est exprimée de façon relative
|
||||
|
@ -842,10 +863,8 @@ function move_link() {
|
|||
dest="$(abspath "$dest")"
|
||||
if [ -L "$link" ]; then
|
||||
link="$(abspath "$link")"
|
||||
linkdir="$(dirname -- "$link")"
|
||||
ldest="$(readlink "$link")"
|
||||
ldest="$(abspath "$ldest" "$linkdir")"
|
||||
[ "$dest" == "$link" ] && return 0
|
||||
ldest="$(readlinka "$link")"
|
||||
mv "$link" "$dest" || return 1
|
||||
update_link "$ldest" "$dest"
|
||||
else
|
||||
|
@ -895,10 +914,7 @@ function move_file() {
|
|||
shift; shift
|
||||
[ -d "$dest" ] && dest="$dest/$(basename -- "$src")"
|
||||
move_link "$src" "$dest" || return 1
|
||||
for link in "$@"; do
|
||||
update_link "$dest" "$link"
|
||||
done
|
||||
return 0
|
||||
update_links "$dest" "$@"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
|
Loading…
Reference in New Issue