diff --git a/applications/utilities/mesh/conversion/ccm/Allwmake b/applications/utilities/mesh/conversion/ccm/Allwmake
index 6306b02168411593b4e8807fc72f3314f91bd836..1fc0eea707d120c0a18413e83eb16aa9ce70622e 100755
--- a/applications/utilities/mesh/conversion/ccm/Allwmake
+++ b/applications/utilities/mesh/conversion/ccm/Allwmake
@@ -6,13 +6,13 @@ cd ${0%/*} || exit 1                            # Run from this directory
 #------------------------------------------------------------------------------
 
 # Only build when the OpenFOAM libccm adaptor already exists
-if [ -f $FOAM_LIBBIN/libccm$extLibso ]
+if findLibrary "$FOAM_LIBBIN/libccm" > /dev/null
 then
     echo "==> build optional ccm conversion components"
     wmake $targetType ccmToFoam
     wmake $targetType foamToCcm
 else
-    echo "==> skip optional ccm conversion components (no libccm$extLibso)"
+    echo "==> skip optional ccm conversion components (no libccm)"
 fi
 
 #------------------------------------------------------------------------------
diff --git a/applications/utilities/mesh/manipulation/renumberMesh/Allwmake b/applications/utilities/mesh/manipulation/renumberMesh/Allwmake
index 4f75bd542c9fdb988b647b7679a78e12163646f4..f89bab6e20b58e415bbb52e0fad2030fc8048060 100755
--- a/applications/utilities/mesh/manipulation/renumberMesh/Allwmake
+++ b/applications/utilities/mesh/manipulation/renumberMesh/Allwmake
@@ -8,20 +8,17 @@ cd ${0%/*} || exit 1                            # Run from this directory
 
 unset COMP_FLAGS LINK_FLAGS
 
-if [ -f $FOAM_LIBBIN/libSloanRenumber$extLibso ]
+if findLibrary "$FOAM_LIBBIN/libSloanRenumber" > /dev/null
 then
-    echo "    found libSloanRenumber  --  enabling sloan renumbering support."
+    echo "    found libSloanRenumber -- enabling sloan renumbering support."
     export LINK_FLAGS="$LINK_FLAGS -lSloanRenumber"
 fi
 
-if [ -f $FOAM_LIBBIN/libzoltanRenumber$extLibso ]
+if findLibrary "$FOAM_LIBBIN/libzoltanRenumber" > /dev/null && have_zoltan
 then
-    if have_zoltan
-    then
-        echo "    found libzoltanRenumber  --  enabling zoltan renumbering support."
-        export COMP_FLAGS="$COMP_FLAGS -DHAVE_ZOLTAN"
-        export LINK_FLAGS="$LINK_FLAGS -lzoltanRenumber -L$ZOLTAN_LIB_DIR -lzoltan"
-    fi
+    echo "    found libzoltanRenumber -- enabling zoltan renumbering support."
+    export COMP_FLAGS="$COMP_FLAGS -DHAVE_ZOLTAN"
+    export LINK_FLAGS="$LINK_FLAGS -lzoltanRenumber -L$ZOLTAN_LIB_DIR -lzoltan"
 fi
 
 wmake $targetType
diff --git a/wmake/scripts/have_adios2 b/wmake/scripts/have_adios2
index 19b376258dc0b1466120bbf094449fa3d6a825b6..55eb00f510d10bc0dc2338c291a35c5f1c34ea21 100644
--- a/wmake/scripts/have_adios2
+++ b/wmake/scripts/have_adios2
@@ -54,7 +54,7 @@ echo_adios2()
 # -> HAVE_ADIOS2, ADIOS2_INC_DIR, ADIOS2_LIB_DIR
 have_adios2()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     # warn="==> skip adios2"
 
     # Setup
@@ -66,12 +66,10 @@ have_adios2()
         return 2
     fi
 
-    # Location
+    # Expected location, include/library names
     prefix="$ADIOS2_ARCH_PATH"
-
-    # Header/library names
-    header="adios2.h"
-    library="libadios2$extLibso"
+    incName="adios2.h"
+    libName="libadios2"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -80,40 +78,34 @@ have_adios2()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     # OK
     export HAVE_ADIOS2=true
     export ADIOS2_ARCH_PATH="$prefix"
diff --git a/wmake/scripts/have_boost b/wmake/scripts/have_boost
index ba12fee2c4ea99beb4dd5f6390a32ba9ae20194e..a618de0b16aa17fed2157921fa94cc4275afe76f 100644
--- a/wmake/scripts/have_boost
+++ b/wmake/scripts/have_boost
@@ -54,17 +54,15 @@ echo_boost()
 # -> HAVE_BOOST, BOOST_INC_DIR, BOOST_LIB_DIR
 have_boost()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     # warn="==> skip boost"
 
     # Setup - from the current environment
 
-    # Location
+    # Expected location, include/library names
     prefix="$BOOST_ARCH_PATH"
-
-    # Header/library names
-    header="boost/version.hpp"
-    library="libboost_system$extLibso"
+    incName="boost/version.hpp"
+    libName="libboost_system"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -73,40 +71,33 @@ have_boost()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
 
     header="${header%/*}"   # Strip one-level (include/boost/...)
 
diff --git a/wmake/scripts/have_ccmio b/wmake/scripts/have_ccmio
index ae2d13cb69534ef6575f6d7fa6a4f02a7d544086..70ed1137eea96306c6e383f9a11df854eb95c22c 100644
--- a/wmake/scripts/have_ccmio
+++ b/wmake/scripts/have_ccmio
@@ -53,10 +53,10 @@ echo_ccmio()
 # -> HAVE_CCMIO, CCMIO_INC_DIR, CCMIO_LIB_DIR
 have_ccmio()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     warn="==> skip ccmio"
 
-    #  Setup
+    # Setup
     if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/ccmio)
     then
         . "$settings"
@@ -65,13 +65,11 @@ have_ccmio()
         return 2
     fi
 
-    # Location
-    prefix="$CCMIO_ARCH_PATH"
-
-    # Header/library names.
+    # Expected location, include/library names
     # Link with static libccmio only (fewer issues)
-    header="libccmio/ccmio.h"
-    static="libccmio$extLiba"
+    prefix="$CCMIO_ARCH_PATH"
+    incName="libccmio/ccmio.h"
+    libName="libccmio.a"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -80,30 +78,29 @@ have_ccmio()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$static" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$static" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
 
     # The libccmio uses int32_t.
     # The OpenFOAM adapter thus requires additional work for 64-bit labels.
diff --git a/wmake/scripts/have_cgal b/wmake/scripts/have_cgal
index 8233947588599291c1434c33ac397c120d0ef223..2a98073a55400cde758bc71a77a7cd1860b6c336 100644
--- a/wmake/scripts/have_cgal
+++ b/wmake/scripts/have_cgal
@@ -54,17 +54,15 @@ echo_cgal()
 # -> HAVE_CGAL, CGAL_INC_DIR, CGAL_LIB_DIR
 have_cgal()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     # warn="==> skip cgal"
 
     # Setup - from the current environment
 
-    # Location
+    # Expected location, include/library names
     prefix="$CGAL_ARCH_PATH"
-
-    # Header/library names
-    header="CGAL/version.h"
-    library="libCGAL$extLibso"
+    incName="CGAL/version.h"
+    libName="libCGAL"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -73,40 +71,34 @@ have_cgal()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     header="${header%/*}"   # Strip one-level (include/CGAL/...)
 
     # OK
diff --git a/wmake/scripts/have_fftw b/wmake/scripts/have_fftw
index 218175e34775c61af61039da58a49089c5c8ff3a..dde3fb12d1c99e8f7908f99166a2284ba1dc9f6e 100644
--- a/wmake/scripts/have_fftw
+++ b/wmake/scripts/have_fftw
@@ -54,18 +54,15 @@ echo_fftw()
 # -> HAVE_FFTW, FFTW_INC_DIR, FFTW_LIB_DIR
 have_fftw()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     # warn="==> skip fftw"
 
     # Setup - from the current environment
 
-    # Location
+    # Expected location, include/library names
     prefix="$FFTW_ARCH_PATH"
-
-    # Header/library names
-    header="fftw3.h"
-    library="libfftw3$extLibso"
-    static="libfftw3$extLiba"
+    incName="fftw3.h"
+    libName="libfftw3"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -74,42 +71,34 @@ have_fftw()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$static" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$static" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     # OK
     export HAVE_FFTW=true
     export FFTW_ARCH_PATH="$prefix"
diff --git a/wmake/scripts/have_hypre b/wmake/scripts/have_hypre
index 98c69716280b4ce551c10edf81d7bdde75eee8c5..8169bab7b3b1ded91cdebbccd59c4acf65a77b64 100644
--- a/wmake/scripts/have_hypre
+++ b/wmake/scripts/have_hypre
@@ -54,7 +54,7 @@ echo_hypre()
 # -> HAVE_HYPRE, HYPRE_INC_DIR, HYPRE_LIB_DIR
 have_hypre()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     warn="==> skip hypre"
 
     # Setup - prefer current environment value? (TDB)
@@ -69,12 +69,10 @@ have_hypre()
         fi
     fi
 
-    # Location
+    # Expected location, include/library names
     prefix="$HYPRE_ARCH_PATH"
-
-    # Header/library names
-    header="HYPRE.h"
-    library="libHYPRE$extLibso"
+    incName="HYPRE.h"
+    libName="libHYPRE"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -83,40 +81,33 @@ have_hypre()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
 
     # OK
     export HAVE_HYPRE=true
diff --git a/wmake/scripts/have_kahip b/wmake/scripts/have_kahip
index f87ab85f19faa46fc281e48039328eb584708b52..a53ad7e5d00f89b2f25a766f20d2f0f57bdafcb1 100644
--- a/wmake/scripts/have_kahip
+++ b/wmake/scripts/have_kahip
@@ -55,7 +55,7 @@ echo_kahip()
 # -> HAVE_KAHIP, KAHIP_ARCH_PATH, KAHIP_INC_DIR, KAHIP_LIB_DIR
 have_kahip()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     warn="==> skip kahip"
 
     #  Setup
@@ -67,13 +67,10 @@ have_kahip()
         return 1
     fi
 
-    # Location
+    # Expected location, include/library names
     prefix="$KAHIP_ARCH_PATH"
-
-    # Header/library names
-    header="kaHIP_interface.h"
-    library="libkahip$extLibso"
-    static="libkahip$extLiba"
+    incName="kaHIP_interface.h"
+    libName="libkahip"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -82,42 +79,33 @@ have_kahip()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$static" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$static" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
 
     # kahip itself is 32-bit int, but our interface itself handles some
     # 64-bit conversion (mesh size).
diff --git a/wmake/scripts/have_metis b/wmake/scripts/have_metis
index 1204fe3cb15220301e7c448259b3f4cfdce8042c..a72c1ecdf5066efaf41461be9f737f230582f3b3 100644
--- a/wmake/scripts/have_metis
+++ b/wmake/scripts/have_metis
@@ -55,7 +55,7 @@ echo_metis()
 # -> HAVE_METIS, METIS_ARCH_PATH, METIS_INC_DIR, METIS_LIB_DIR
 have_metis()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     warn="==> skip metis"
 
     # Setup
@@ -67,13 +67,10 @@ have_metis()
         return 2
     fi
 
-    # Location
+    # Expected location, include/library names
     prefix="$METIS_ARCH_PATH"
-
-    # Header/library names
-    header="metis.h"
-    library="libmetis$extLibso"
-    static="libmetis$extLiba"
+    incName="metis.h"
+    libName="libmetis"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -82,42 +79,33 @@ have_metis()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$static" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$static" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
 
     local good label
 
diff --git a/wmake/scripts/have_mgridgen b/wmake/scripts/have_mgridgen
index faf15036c175808770ddf88a1b4a57ea776d009a..8123e24a824e2952ae9eece8dc60715203671958 100644
--- a/wmake/scripts/have_mgridgen
+++ b/wmake/scripts/have_mgridgen
@@ -55,7 +55,7 @@ echo_mgridgen()
 # -> HAVE_MGRIDGEN, MGRIDGEN_ARCH_PATH, MGRIDGEN_INC_DIR, MGRIDGEN_LIB_DIR
 have_mgridgen()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName libName2 settings warn
     warn="==> skip mgridgen"
 
     # Setup
@@ -67,13 +67,11 @@ have_mgridgen()
         return 2
     fi
 
-    # Location
+    # Expected location, include/library names
     prefix="$MGRIDGEN_ARCH_PATH"
-
-    # Header/library names
-    header="mgridgen.h"
-    library="libMGridGen$extLibso"
-    static="libmgrid$extLiba"
+    incName="mgridgen.h"
+    libName="libMGridGen"
+    libName2="libmgrid"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -82,42 +80,36 @@ have_mgridgen()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$static" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$static" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName $libName2)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         #silent# [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib/$libName2" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName2" \
+    ) || {
         #silent# [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     local good label scalar
 
     # Ensure consistent sizes with OpenFOAM and mgridgen header
diff --git a/wmake/scripts/have_petsc b/wmake/scripts/have_petsc
index 301bb7cb01c683db5af29c59f4cbd3ad5c508fe7..ead138b78e97614c459588415681f127998c7c0c 100644
--- a/wmake/scripts/have_petsc
+++ b/wmake/scripts/have_petsc
@@ -54,7 +54,7 @@ echo_petsc()
 # -> HAVE_PETSC, PETSC_INC_DIR, PETSC_LIB_DIR
 have_petsc()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     warn="==> skip petsc"
 
     # Setup - prefer current environment value? (TDB)
@@ -69,12 +69,10 @@ have_petsc()
         fi
     fi
 
-    # Location
+    # Expected location, include/library names
     prefix="$PETSC_ARCH_PATH"
-
-    # Header/library names
-    header="petsc.h"
-    library="libpetsc$extLibso"
+    incName="petsc.h"
+    libName="libpetsc"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -83,40 +81,34 @@ have_petsc()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     # TODO: check size of petsc integer vs label
 
     # OK
diff --git a/wmake/scripts/have_readline b/wmake/scripts/have_readline
index dc0b557db292ba8bc41a4fd7986bfc9d1a33f172..ff6e93de15de8425ac338094d40c733eba34e32e 100644
--- a/wmake/scripts/have_readline
+++ b/wmake/scripts/have_readline
@@ -52,15 +52,13 @@ echo_readline()
 # -> HAVE_LIBREADLINE, READLINE_INC_DIR, READLINE_LIB_DIR
 have_readline()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     # warn="==> skip readline"
 
-    # Location
+    # Expected location, include/library names
     prefix=system
-
-    # Header/library names
-    header="readline/readline.h"
-    library="libreadline$extLibso"
+    incName="readline/readline.h"
+    libName="libreadline"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -69,39 +67,34 @@ have_readline()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     header="${header%/*}"   # Strip one-level (include/readline/...)
 
     # OK
diff --git a/wmake/scripts/have_scotch b/wmake/scripts/have_scotch
index 8d17fa7f17f3752e95ea1f3bd4ca752637ffcada..42c68979485fc8eddb827982dcb4de38dc97140f 100644
--- a/wmake/scripts/have_scotch
+++ b/wmake/scripts/have_scotch
@@ -61,7 +61,7 @@ echo_scotch()
 # -> HAVE_SCOTCH, SCOTCH_ARCH_PATH, SCOTCH_INC_DIR, SCOTCH_LIB_DIR
 have_scotch()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     warn="==> skip scotch"
 
     # Setup
@@ -73,13 +73,10 @@ have_scotch()
         return 2
     fi
 
-    # Location
+    # Expected location, include/library names
     prefix="$SCOTCH_ARCH_PATH"
-
-    # Header/library names
-    header="scotch.h"
-    library="libscotch$extLibso"
-    static="libscotch$extLiba"
+    incName="scotch.h"
+    libName="libscotch"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -88,50 +85,39 @@ have_scotch()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$static" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$static" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
-
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-
         header=$(findFirstFile \
-            "/usr/local/include/scotch/$header" \
-            "/usr/local/include/$header" \
-            "/usr/include/scotch/$header" \
-            "/usr/include/$header" \
-        )
-
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
+            "/usr/local/include/scotch/$incName" \
+            "/usr/local/include/$incName" \
+            "/usr/include/scotch/$incName" \
+            "/usr/include/$incName" \
         )
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     local good label
 
     # Ensure consistent sizes between OpenFOAM and scotch header
@@ -189,7 +175,7 @@ have_scotch()
 # -> HAVE_PTSCOTCH, PTSCOTCH_ARCH_PATH, PTSCOTCH_INC_DIR, PTSCOTCH_LIB_DIR
 have_ptscotch()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     warn="==> skip ptscotch"
 
     if [ "$HAVE_SCOTCH" != true ]
@@ -201,13 +187,10 @@ have_ptscotch()
     # Reuse old settings
     [ -n "$PTSCOTCH_ARCH_PATH" ] || PTSCOTCH_ARCH_PATH="$SCOTCH_ARCH_PATH"
 
-    # Location
+    # Expected location, include/library names
     prefix="$PTSCOTCH_ARCH_PATH"
-
-    # Header/library names
-    header="ptscotch.h"
-    library="libptscotch$extLibso"
-    static="libptscotch$extLiba"
+    incName="ptscotch.h"
+    libName="libptscotch"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -217,55 +200,44 @@ have_ptscotch()
     elif hasAbsdir "$prefix"
     then
         header=$(findFirstFile  \
-            "$prefix/include/$FOAM_MPI/$header" \
-            "$prefix/include/$header"
-        )
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $FOAM_MPI/$library)" \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$static" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$static" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
+            "$prefix/include/$FOAM_MPI/$incName" \
+            "$prefix/include/$incName"
         )
-
+        library="$(findExtLib $FOAM_MPI/$libName $libName)"
     elif isSystem "$prefix"
     then
         prefix=/usr
-
         header=$(findFirstFile \
-            "/usr/local/include/ptscotch/$header" \
-            "/usr/local/include/scotch/$header" \
-            "/usr/local/include/$header" \
-            "/usr/include/ptscotch/$header" \
-            "/usr/include/scotch/$header" \
-            "/usr/include/$header" \
+            "/usr/local/include/ptscotch/$incName" \
+            "/usr/local/include/scotch/$incName" \
+            "/usr/local/include/$incName" \
+            "/usr/include/ptscotch/$incName" \
+            "/usr/include/scotch/$incName" \
+            "/usr/include/$incName" \
         )
-
         case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     # OK
     echo "ptscotch - $prefix"
     export HAVE_PTSCOTCH=true
diff --git a/wmake/scripts/have_zoltan b/wmake/scripts/have_zoltan
index 12efc04c906a7dbf5fa28d35886941f32732e151..8d0adba143acd138c0a3aa08fdaf5e5b7eb57404 100644
--- a/wmake/scripts/have_zoltan
+++ b/wmake/scripts/have_zoltan
@@ -54,7 +54,7 @@ echo_zoltan()
 # -> HAVE_ZOLTAN, ZOLTAN_INC_DIR, ZOLTAN_LIB_DIR
 have_zoltan()
 {
-    local prefix header library static settings warn
+    local prefix header library incName libName settings warn
     # warn="==> skip zoltan"
 
     # Setup
@@ -66,13 +66,10 @@ have_zoltan()
         return 2
     fi
 
-    # Location
+    # Expected location, include/library names
     prefix="$ZOLTAN_ARCH_PATH"
-
-    # Header/library names
-    header="zoltan.h"
-    library="libzoltan$extLibso"
-    static="libzoltan$extLiba"
+    incName="zoltan.h"
+    libName="libzoltan"
 
     # ----------------------------------
     if isNone "$prefix"
@@ -81,42 +78,34 @@ have_zoltan()
         return 1
     elif hasAbsdir "$prefix"
     then
-        header=$(findFirstFile "$prefix/include/$header")
-
-        library=$(findFirstFile \
-            "$(thirdExtLib $library)" \
-            "$prefix/lib/$static" \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$static" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "$prefix/include/$incName")
+        library="$(findExtLib $libName)"
     elif isSystem "$prefix"
     then
-        prefix=/usr
-        header=$(findFirstFile "/usr/local/include/$header" "/usr/include/$header")
-        case "$header" in (/usr/local/*) prefix=/usr/local ;; esac
-
-        library=$(findFirstFile \
-            "$prefix/lib/$library" \
-            "$prefix/lib$WM_COMPILER_LIB_ARCH/$library" \
-        )
+        header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
+        prefix=$(sysPrefix "$header")
     else
-        unset prefix header library
+        unset prefix
     fi
     # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
-    # Library found?
-    [ -n "$library" ] || {
+    # Library
+    [ -n "$library" ] || library=$(findLibrary \
+        "$prefix/lib/$libName" \
+        "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
+    ) || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
     }
 
+    # ----------------------------------
+
     # OK
     export HAVE_ZOLTAN=true
     export ZOLTAN_ARCH_PATH="$prefix"
diff --git a/wmake/scripts/paraviewFunctions b/wmake/scripts/paraviewFunctions
index d098e0626c64608f70cdff966d02847ca183baad..b528f22cf716f832647ffe587caa3cff56b62e21 100644
--- a/wmake/scripts/paraviewFunctions
+++ b/wmake/scripts/paraviewFunctions
@@ -135,7 +135,7 @@ have_pvplugin_support()
         return 1
     }
 
-    # Header/library names
+    # Include/library names
     header="pqServerManagerModel.h"
 
     if [ -n "$ParaView_DIR" ]
@@ -173,13 +173,16 @@ have_pvplugin_support()
             )
     fi
 
+    # ----------------------------------
 
-    # Header found?
+    # Header
     [ -n "$header" ] || {
         [ -n "$warn" ] && echo "$warn (no header)"
         return 2
     }
 
+    # ----------------------------------
+
     # OK
     export HAVE_PVPLUGIN_SUPPORT=true
     export FOAM_PV_PLUGIN_LIBBIN="$targetDir"
diff --git a/wmake/scripts/sysFunctions b/wmake/scripts/sysFunctions
index 3771a90d5dfe9432b8bd7bfeb05de43398e09d27..08fc56e195916d10fbef8ebc771c6e61fedb7753 100644
--- a/wmake/scripts/sysFunctions
+++ b/wmake/scripts/sysFunctions
@@ -16,16 +16,14 @@
 #     General system helper functions
 #
 # Functions provided
-#     isDarwin
-#     isNone
-#     isSystem
-#     isAbsdir, hasAbsdir
+#     isNone, isSystem, isAbsdir, hasAbsdir
+#     isDarwin, isWindows
 #     findFirstFile
-#     thirdExtLib
+#     findLibrary
+#     findExtLib
 #
-# Variables provided
-#     extLiba
-#     extLibso
+# Internal variables used
+#     extLibraries
 #
 #------------------------------------------------------------------------------
 
@@ -34,37 +32,30 @@ then
     # Load once, but do not rely on this variable elsewhere
     WMAKE_SCRIPTS_SYSFUNCTIONS=loaded
 
-    # Static library extension (default=".a")
-    extLiba=".a"
-
-    # Shared library extension (default=".so")
-    extLibso=".so"
-
-    # Adjustments
-    case "$(uname -s 2>/dev/null)" in
-    Darwin)
-        extLibso=".dylib"
-        ;;
-    *)
-        ## Other. Eg, extLibso=".dll" or extLibso=".dll.a"
-        ;;
-    esac
-
-
-    # True if target OS is Darwin.
-    # Uses cached value from libso extension
+    # True if OS is Darwin.
     isDarwin()
     {
-        test "$extLibso" = ".dylib"
+        test Darwin = "$(uname -s 2>/dev/null)"
     }
 
     # True if target OS is Windows
     # Uses cached value from libso extension
     isWindows()
     {
-        test "$extLibso" = ".dll" || "$extLibso" = ".dll.a"
+        test MSwindows = "$WM_OSTYPE"
     }
 
+    # Static, dynamic library extensions
+    extLibraries=".a .so"
+
+    if isDarwin
+    then
+        extLibraries=".a .dylib"
+    elif isWindows
+    then
+        extLibraries=".a .dll .dll.a"  # including cross-compiling
+    fi
+
 
     # True if '$1' begins with '/'
     isAbsdir()
@@ -98,41 +89,89 @@ then
     }
 
 
-    # Check for the existence of any of the files
+    # Return system prefix (/usr, /usr/local, ...) based on hint provided
+    # Eg,
+    #    sysPrefix "/usr/local/include/fftw3.h"  -> "/usr/local"
+    #
+    # Without a hint, echoes "/usr"
+    sysPrefix()
+    {
+        case "$1" in
+        /usr/local/*)
+            echo "/usr/local"
+            ;;
+        *)
+            echo "/usr"
+            ;;
+        esac
+    }
+
+
+    # Check existence of any of the files
     # On success, echoes the file found and returns 0, otherwise returns 2
     findFirstFile()
     {
         local file
+
         for file
         do
-            if [ -f "$file" -a -r "$file" ]
+            if [ -f "$file" ] && [ -r "$file" ]
             then
-                echo "$file"
+                echo "$file"  # Found
                 return 0
             fi
         done
         return 2
     }
 
-    # Check for existence of file in FOAM_EXT_LIBBIN,
-    # but not if either file or FOAM_EXT_LIBBIN are empty or
-    # if the FOAM_EXT_LIBBIN is not located in the ThirdParty directory
+
+    # Check existence of library with ending '.a', '.so' ...
+    #
+    # On success, echoes the resolved file and returns 0, otherwise returns 2
+    findLibrary()
+    {
+        local file ext
+
+        for file
+        do
+            [ -n "$file" ] || continue
+            for ext in '' $extLibraries
+            do
+                if [ -f "$file$ext" ] && [ -r "$file$ext" ]
+                then
+                    echo "$file$ext"  # Found
+                    return 0
+                fi
+            done
+        done
+
+        return 2
+    }
+
+
+    # Check existence of library in FOAM_EXT_LIBBIN, but conditional
+    # on FOAM_EXT_LIBBIN being located in the ThirdParty directory
     #
     # On success, echoes the resolved file and returns 0, otherwise returns 2
-    thirdExtLib()
+    findExtLib()
     {
-        local file="$FOAM_EXT_LIBBIN/$1"
+        local file
 
-        if  [ -n "$1" ] && \
-            [ -n "$FOAM_EXT_LIBBIN" ] && \
-            [ -n "$WM_THIRD_PARTY_DIR" ] && \
-            [ -f "$file" -a -r "$file" ] && \
-            [ "${FOAM_EXT_LIBBIN#$WM_THIRD_PARTY_DIR}" != "$FOAM_EXT_LIBBIN" ]
+        if [ -n "$FOAM_EXT_LIBBIN" ] && \
+           [ -n "$WM_THIRD_PARTY_DIR" ] && \
+           [ "${FOAM_EXT_LIBBIN#$WM_THIRD_PARTY_DIR}" != "$FOAM_EXT_LIBBIN" ]
         then
-            echo "$file"
-        else
-            return 2
+            for file
+            do
+                if file="$(findLibrary "$FOAM_EXT_LIBBIN/$file")"
+                then
+                    echo "$file"
+                    return 0
+                fi
+            done
         fi
+
+        return 2
     }
 fi