From 30913fd667d2590a7e9c15fc915b4899a203e2e0 Mon Sep 17 00:00:00 2001 From: Kairui Song Date: Mon, 13 May 2019 14:20:24 +0800 Subject: [PATCH] kdumpctl: follow symlink when checking for modified files Previously only the symlink's timestamp is used for checking if file are modified, this will not trigger a rebuild if the symlink target it modified. So check both symlink timestamp and symlink target timestamp, rebuild the initramfs on both symlink changed and target changed. Also give a proper error message if the file doesn't exist. Signed-off-by: Kairui Song Acked-by: Dave Young --- kdumpctl | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/kdumpctl b/kdumpctl index 08c5667..27d2fad 100755 --- a/kdumpctl +++ b/kdumpctl @@ -347,11 +347,23 @@ check_files_modified() [ $? -ne 0 ] && return 2 for file in $files; do - time_stamp=`stat -c "%Y" $file` - if [ "$time_stamp" -gt "$image_time" ]; then - modified_files="$modified_files $file" + if [ -e "$file" ]; then + time_stamp=`stat -c "%Y" $file` + if [ "$time_stamp" -gt "$image_time" ]; then + modified_files="$modified_files $file" + fi + if [ -L "$file" ]; then + file=$(readlink -m $file) + time_stamp=`stat -c "%Y" $file` + if [ "$time_stamp" -gt "$image_time" ]; then + modified_files="$modified_files $file" + fi + fi + else + echo "$file doesn't exist" fi done + if [ -n "$modified_files" ]; then echo "Detected change(s) in the following file(s):" echo -n " "; echo "$modified_files" | sed 's/\s/\n /g'