ajout de readlinka et update_links
This commit is contained in:
parent
cc3869707c
commit
613f31ef5b
|
@ -768,6 +768,16 @@ function deref() {
|
||||||
done
|
done
|
||||||
abspath "$file"
|
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() {
|
function readlinkm() {
|
||||||
# Retourner un chemin absolu vers le fichier $1, dans lequel toutes les
|
# 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
|
# 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"
|
ln -sf "$dest" "$link"
|
||||||
fi
|
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() {
|
function move_link() {
|
||||||
# Déplacer le lien $1 vers $2, et mettre à jour la destination du lien si
|
# Déplacer le lien $1 vers $2, et mettre à jour la destination du lien si
|
||||||
# elle est exprimée de façon relative
|
# elle est exprimée de façon relative
|
||||||
|
@ -842,10 +863,8 @@ function move_link() {
|
||||||
dest="$(abspath "$dest")"
|
dest="$(abspath "$dest")"
|
||||||
if [ -L "$link" ]; then
|
if [ -L "$link" ]; then
|
||||||
link="$(abspath "$link")"
|
link="$(abspath "$link")"
|
||||||
linkdir="$(dirname -- "$link")"
|
|
||||||
ldest="$(readlink "$link")"
|
|
||||||
ldest="$(abspath "$ldest" "$linkdir")"
|
|
||||||
[ "$dest" == "$link" ] && return 0
|
[ "$dest" == "$link" ] && return 0
|
||||||
|
ldest="$(readlinka "$link")"
|
||||||
mv "$link" "$dest" || return 1
|
mv "$link" "$dest" || return 1
|
||||||
update_link "$ldest" "$dest"
|
update_link "$ldest" "$dest"
|
||||||
else
|
else
|
||||||
|
@ -895,10 +914,7 @@ function move_file() {
|
||||||
shift; shift
|
shift; shift
|
||||||
[ -d "$dest" ] && dest="$dest/$(basename -- "$src")"
|
[ -d "$dest" ] && dest="$dest/$(basename -- "$src")"
|
||||||
move_link "$src" "$dest" || return 1
|
move_link "$src" "$dest" || return 1
|
||||||
for link in "$@"; do
|
update_links "$dest" "$@"
|
||||||
update_link "$dest" "$link"
|
|
||||||
done
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
Loading…
Reference in New Issue