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 <kasong(a)redhat.com>
---
kdumpctl | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/kdumpctl b/kdumpctl
index 75eebac..739f162 100755
--- a/kdumpctl
+++ b/kdumpctl
@@ -338,11 +338,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'
--
2.20.1