]> git.rmz.io Git - dotfiles.git/blobdiff - bin/socheck
Other changes at cadscan (with the ones I want to keep stripped)
[dotfiles.git] / bin / socheck
index bd5a85545cd851448e05227fda4aa772a026cfd5..ab6a411d47075d64c7ee6c5595950e014bae55b9 100755 (executable)
@@ -1,30 +1,57 @@
 #!/bin/bash
 
-sudo -v
+version="0.1"
 
-files=$(find /usr/bin -maxdepth 1 -type f)
-libs=$(find /usr/lib/*.so* -maxdepth 1 -type f)
+function usage ()
+{
+    echo "Usage :  $0 [options] [PATH]
+    Checks installed libraries for missing dynamic links.
 
-clear
-echo "Searching broken binaries...."
+    Options:
+    -d,--depth      Max depth to search
+    -h,--help       Display this message
+    -v,--version    Display script version"
+}
+
+checkso() {
+    for f in ${@}; do
+        if sudo LD_LIBRARY_PATH=$LD_LIBRARY_PATH ldd $f | grep -q "not found"; then
+            echo "$(LC_ALL=C pacman -Qoq $f) $f seems broken!"
+        fi
+    done
+}
 
-for binary in $files ; do
-    parse=$(sudo ldd ${binary} | grep "not found")
-    if [ "${parse}" != "" ] ; then
-           echo "$(LC_ALL=C pacman -Qo $binary) seem broken!"
-    fi
-    unset parse
+# Parse arguments
+declare -a args
+while [[ $# > 0 ]]; do
+    opt="$1"
+
+    case $opt in
+        -d|--depth)    depth=$2; shift 2 ;;
+        -h|--help)     usage; exit 0 ;;
+        -v|--version)  echo "$0 -- Version $version"; exit 0 ;;
+        -* )
+            echo -e "\n  Option does not exist : $opt\n"
+            usage; exit 1 ;;
+
+        *) args+=($opt); shift ;;
+    esac
 done
+path="${args[0]}"
+
+declare -a findopts
+[[ $depth ]] && findopts+=(-maxdepth "$depth")
+
+sudo -v
+
+echo "${findopts[@]}" 
+echo "Searching broken binaries...."
+binpath=${path:-/usr/bin}
+bins=( $(find "$binpath" "${findopts[@]}" -type f -executable) )
+checkso ${bins[@]}
 
 echo " "
 echo "Searching broken libs...."
-
-for lib in $libs ; do
-    if [ -x ${lib} ] ; then
-            parse=$(sudo ldd ${lib} | grep "not found")
-            if [ "${parse}" != "" ] ; then
-                    echo "$(LC_ALL=C pacman -Qo $lib) seem broken!"
-            fi
-            unset parse
-    fi
-done
+libpath=${path:-/usr/lib}
+libs=( $(find $libpath "${findopts[@]}" -name '*.so' -type f -executable) )
+checkso ${libs[@]}