about summary refs log tree commit diff
path: root/elf/ldd.bash.in
diff options
context:
space:
mode:
Diffstat (limited to 'elf/ldd.bash.in')
-rw-r--r--elf/ldd.bash.in81
1 files changed, 24 insertions, 57 deletions
diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in
index f6ffa6b4e8..aeaf695aac 100644
--- a/elf/ldd.bash.in
+++ b/elf/ldd.bash.in
@@ -102,33 +102,43 @@ case $# in
   exit 1
   ;;
 1)
+  single_file=t
+  ;;
+*)
+  single_file=f
+  ;;
+esac
+
+result=0
+for file do
   # We don't list the file name when there is only one.
-  case "$1" in
-  */*) file="$1"
+  test $single_file = t || echo "${file}:"
+  case $file in
+  */*) :
        ;;
-  *) file="./$1"
+  *) file=./$file
      ;;
   esac
   if test ! -f "$file"; then
-    echo "ldd: ${file}:" $"no such file"
-    exit 1
+    echo "ldd: ${file}:" $"No such file or directory" >&2
+    result=1
   elif test -r "$file"; then
-    test -x "$file" ||
-    echo 'ldd:' $"\
+    test -x "$file" || echo 'ldd:' $"\
 warning: you do not have execution permission for" "\`$file'" >&2
     verify_out=`${RTLD} --verify "$file"`
     case $? in
     0)
-      eval $add_env exec '"$file"' || exit 1
+      eval $add_env '"$file"' || result=1
       ;;
     1)
       # This can be a non-ELF binary or no binary at all.
-      nonelf $file ||
-      echo $"	not a dynamic executable"
-      exit 1
+      nonelf "$file" || {
+	echo $"	not a dynamic executable"
+	result=1
+      }
       ;;
     2)
-      eval $add_env exec \${RTLD} '"$file"' || exit 1
+      eval $add_env \${RTLD} '"$file"' || result=1
       ;;
     *)
       echo 'ldd:' ${RTLD} $"exited with unknown exit code" "($?)" >&2
@@ -137,52 +147,9 @@ warning: you do not have execution permission for" "\`$file'" >&2
     esac
   else
     echo 'ldd:' $"error: you do not have read permission for" "\`$file'" >&2
-    exit 1
+    result=1
   fi
-  exit
-  ;;
-*)
-  result=0
-  for file; do
-    echo "${file}:"
-    case "$file" in
-    */*) :
-         ;;
-    *) file="./$file"
-       ;;
-    esac
-    if test ! -f "$file"; then
-      echo "ldd: ${file}:" $"no such file"
-      result=1
-    elif test -r "$file"; then
-      test -x "$file" || echo 'ldd:' $"\
-warning: you do not have execution permission for" "\`$file'" >&2
-      verify_out=`${RTLD} --verify "$file"`
-      case $? in
-      0)
-	eval $add_env '"$file"' || result=1
-	;;
-      1)
-	# This can be a non-ELF binary or no binary at all.
-	nonelf $file || {
-	  echo $"	not a dynamic executable"
-	  result=1
-	}
-	;;
-      2)
-        eval $add_env ${RTLD} '"$file"' || result=1
-	;;
-      *)
-	echo 'ldd:' ${RTLD} $"exited with unknown exit code" "($?)" >&2
-	exit 1
-	;;
-      esac
-    else
-      echo 'ldd:' $"error: you do not have read permission for" "\`$file'" >&2
-      result=1
-    fi
-  done
-esac
+done
 
 exit $result
 # Local Variables: