diff --git a/spells/read-magic b/spells/read-magic index 132209f..1d6261f 100755 --- a/spells/read-magic +++ b/spells/read-magic @@ -23,16 +23,17 @@ fi # Define a function to read the attribute value using the available commands read_attribute_value() { # Try to read the attribute using the 'attr' command - attribute_value=$(attr -g "$1" "$2" 2> /dev/null | cut -d ":" -f 2 | xargs) + real_path=$(readlink -f "$file") + attribute_value=$(attr -g "$attribute" "$real_path" 2> /dev/null | cut -d ":" -f 2 | xargs) # If the 'attr' command is not available, try using the 'xattr' command if [ -z "$attribute_value" ]; then - attribute_value=$(xattr -p "$1" "$2" 2> /dev/null | cut -d ":" -f 2 | xargs) + attribute_value=$(xattr -p "$attribute" "$real_path" 2> /dev/null | cut -d ":" -f 2 | xargs) fi # If the 'xattr' command is not available, try using the 'getfattr' command if [ -z "$attribute_value" ]; then - attribute_value=$(getfattr -n "$1" --only-values "$2" 2> /dev/null) + attribute_value=$(getfattr -h -n "$attribute" --only-values "$file" 2> /dev/null) fi # Return the attribute value @@ -46,7 +47,7 @@ if [ -z "$attribute" ]; then # Define a function to process each attribute process_attribute() { # Read the attribute value using the read_attribute_value function - value=$(read_attribute_value "$1" "$file") + value=$(read_attribute_value "$attribute" "$file") # Check if the attribute value was set if [ -n "$value" ]; then @@ -57,7 +58,7 @@ if [ -z "$attribute" ]; then } # Call the process_attribute function for each attribute - for attribute in $(getfattr -m ".*" -e hex "$file" | cut -d ":" -f 1 | cut -d "." -f 2 | tr -d ' '); do + for attribute in $(getfattr -h -m ".*" -e hex "$file" | cut -d ":" -f 1 | cut -d "." -f 2 | tr -d ' '); do process_attribute "$attribute" done