From b17e01f282acab711d77020d1df7d904438ab8b2 Mon Sep 17 00:00:00 2001 From: "the Sane." <3657071+the-sane@users.noreply.github.com> Date: Fri, 25 Oct 2024 21:34:57 -0400 Subject: [PATCH] Simplify and move get_file_arch out of subfunction --- lug-helper.sh | 53 +++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index c75c093..384590b 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -1002,20 +1002,6 @@ wine_check() { system_wine_ok="true" fi - # Function to determine the architecture of a binary file using 'od' - get_file_arch() { - local file_path="$1" - local ob_output - ob_output="$(od -An -t x1 -j 0x12 -N 1 "$file_path" 2>/dev/null | tr -d '[:space:]')" - case "$ob_output" in - "3e") echo "x86_64" ;; - "03"|"06") echo "i386" ;; - "b7") echo "aarch64" ;; - "28") echo "aarch32" ;; - *) echo "" ;; - esac - } - # If system wine passes the above checks, also check for the new wow64 mode that currently does not work if [ "$system_wine_ok" = "true" ]; then # Get paths to wine and wineserver binaries @@ -1028,6 +1014,7 @@ wine_check() { # If unable to determine architecture, attempt alternative methods if [ -z "${wine_binary_arch}" ]; then + wineboot_bin="$(command -v wineboot)" if [ -x "${wineboot_bin}" ]; then wine_bin_dir="$(dirname "$(readlink -f "${wineboot_bin}" 2>/dev/null)" 2>/dev/null)" if [ -x "${wine_bin_dir}/wine" ]; then @@ -1052,20 +1039,40 @@ wine_check() { fi fi - # If Wine is 32-bit only, fail the check - if { [ "${wineserver_binary_arch}" = "i386" ] || [ "${wineserver_binary_arch}" = "aarch32" ]; } && \ - { [ "${wine_binary_arch}" = "i386" ] || [ "${wine_binary_arch}" = "aarch32" ]; }; then - preflight_fail+=("Wine does not appear to be installed correctly.\nPlease refer to our Quick Start Guide:\n$lug_wiki") - system_wine_ok="false" - fi - - # If it's the new WOW64, fail the check - if [ "${wineserver_binary_arch}" = "${wine_binary_arch}" ]; then + # Check for the new WOW64, 32bit, or unknown states and then fail the check + if [ "${wineserver_binary_arch}" = "${wine_binary_arch}" ] || [ -z "${wineserver_binary_arch}" ] || [ -z "${wine_binary_arch}" ]; then system_wine_ok="false" fi fi } +# Function to determine the architecture of a binary file using 'od' +# Used for wine_check above to check the system wine architecture +get_file_arch() { + case "$(od -An -t x1 -j 0x12 -N 1 "$1" 2>/dev/null | tr -d '[:space:]')" in + "3e") + # x86_64 + echo "64bit" + ;; + "03"|"06") + # i386 + echo "32bit" + ;; + "b7") + # aarch64 + echo "64bit" + ;; + "28") + # aarch32 + echo "32bit" + ;; + *) + # Unknown + echo "" + ;; + esac +} + # Check system memory and swap space memory_check() { # Get totals in bytes