commit 77f534dabb30996f33e0935141540eabc0a65978
parent 5a83b9e5013d65a6f3a2116dd2ae9a9689acdf0c
Author: Jan Pobříslo <ccx@te2000.cz>
Date: Thu, 23 Jun 2022 02:24:20 +0200
lstat() instead of stat(), handle relative symlinks
Diffstat:
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init
@@ -1048,14 +1048,15 @@ confz_container_nix_packages_installed_check() {
local root=$vars[containers_dir]/systems/$vars[image_name]
local profile_dir=$root/nix/var/nix/profiles/per-user/root/profile
local -A stat_info
- zstat -H stat_info $profile_dir
+ zstat -L -H stat_info $profile_dir
# while it's a symlink
while (( $fileset_stat_cur[mode] >> 12 == 10 )); do
if [[ $stat_info[link] == /* ]]; then
profile_dir=$root$stat_info[link]
else
- die "TODO? relative symlink: ${(qqq)profile_dir}"
+ profile_dir=${profile_dir:h}/$stat_info[link]
fi
+ zstat -L -H stat_info $profile_dir
done
[[ -f $profile_dir/manifest.nix ]] || \
die "Could not find manifest.nix inside ${(qqq)profile_dir}"