From 98287a41cfa59d11220d79854f43fc1647cf4ec1 Mon Sep 17 00:00:00 2001 From: Coarse Rosinflower <113859223+cD1rtX3@users.noreply.github.com> Date: Sat, 27 Dec 2025 20:29:33 -0500 Subject: [PATCH 1/5] Update EmuHawkMono.sh Added: * check against useless `"$0"`, * `export GTK_PREFIX=`, and * shellcheck directives against warnings; redirected status messages to `stderr`; and removed `exec`. --- Assets/EmuHawkMono.sh | 46 ++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/Assets/EmuHawkMono.sh b/Assets/EmuHawkMono.sh index 7ca69f6ea6d..5d8e6145008 100755 --- a/Assets/EmuHawkMono.sh +++ b/Assets/EmuHawkMono.sh @@ -1,35 +1,57 @@ #!/bin/sh -cd "$(dirname "$(realpath "$0")")" -libpath="" + +case "$0" in + *"EmuHawkMono.sh");; + *"/bin/"*"sh") + # Very bad way to detect /path/to/shell + echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" + # stupid bash workaround + # shellcheck disable=SC2317 + return 1 2> /dev/null || exit 1;; + *"/"*);; + *) + echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" + # shellcheck disable=SC2317 + return 1 2> /dev/null || exit 1 +esac +cd "$(dirname -- "$(realpath -- "$0")")" || ( echo "Can't navigate to \$0's path?" >& 2; exit 1 ) + +libpath= if [ "$(command -v lsb_release)" ]; then + # shellcheck disable=SC2018,SC2019 case "$(lsb_release -i | head -n1 | cut -c17- | tr A-Z a-z)" in "arch"|"artix"|"manjarolinux") libpath="/usr/lib";; "fedora"|"gentoo"|"nobaralinux"|"opensuse") libpath="/usr/lib64";; - "nixos") libpath="/usr/lib"; printf "Running on NixOS? Why aren't you using the Nix expr?\n";; + "nixos") libpath="/usr/lib"; echo "Running on NixOS? Why aren't you using the Nix expr?" >& 2;; "debian"|"linuxmint"|"pop"|"ubuntu") libpath="/usr/lib/x86_64-linux-gnu";; esac else - printf "Distro does not provide LSB release info API! (You've met with a terrible fate, haven't you?)\n" + echo "Distro does not provide LSB release info API! (You've met with a terrible fate, haven't you?)" >& 2 fi if [ -z "$libpath" ]; then - printf "%s\n" "Unknown distro, assuming system-wide libraries are in /usr/lib..." + echo "Unknown distro, assuming system-wide libraries are in /usr/lib..." >& 2 libpath="/usr/lib" fi + +export GTK_DATA_PREFIX= export LD_LIBRARY_PATH="$PWD/dll:$PWD:$libpath" export MONO_CRASH_NOFILE=1 export MONO_WINFORMS_XIM_STYLE=disabled # see https://bugzilla.xamarin.com/show_bug.cgi?id=28047#c9 + if [ "$1" = "--mono-no-redirect" ]; then -# printf "(passing --mono-no-redirect is no longer necessary)\n" #TODO uncomment later + echo "(passing --mono-no-redirect is no longer necessary)" >& 2 shift fi +# shellcheck disable=SC2009 if (ps -C "mono" -o "cmd" --no-headers | grep -Fq "EmuHawk.exe"); then - printf "(it seems EmuHawk is already running, NOT capturing output)\n" >&2 - exec mono EmuHawk.exe "$@" + echo "(it seems EmuHawk is already running, NOT capturing output)" >& 2 + mono EmuHawk.exe "$@" fi + o="$(mktemp -u)" e="$(mktemp -u)" mkfifo "$o" "$e" -printf "(capturing output in %s/EmuHawkMono_last*.txt)\n" "$PWD" >&2 -tee EmuHawkMono_laststdout.txt <"$o" & -tee EmuHawkMono_laststderr.txt <"$e" | sed "s/.*/$(tput setaf 1)&$(tput sgr0)/" >&2 & -exec mono EmuHawk.exe "$@" >"$o" 2>"$e" +echo "(capturing output in $PWD/EmuHawkMono_last*.txt)" >& 2 +tee EmuHawkMono_laststdout.txt < "$o" & +tee EmuHawkMono_laststderr.txt < "$e" | sed "s/.*/$(tput setaf 1)&$(tput sgr0)/" >& 2 & +mono EmuHawk.exe "$@" > "$o" 2> "$e" From 4e698e292abfbb824534036dd42c7ad804f3dce3 Mon Sep 17 00:00:00 2001 From: Coarse Rosinflower <113859223+cD1rtX3@users.noreply.github.com> Date: Sat, 27 Dec 2025 22:31:00 -0500 Subject: [PATCH 2/5] Fix missing return --- Assets/EmuHawkMono.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/EmuHawkMono.sh b/Assets/EmuHawkMono.sh index 5d8e6145008..1da3d92d604 100755 --- a/Assets/EmuHawkMono.sh +++ b/Assets/EmuHawkMono.sh @@ -46,6 +46,7 @@ fi if (ps -C "mono" -o "cmd" --no-headers | grep -Fq "EmuHawk.exe"); then echo "(it seems EmuHawk is already running, NOT capturing output)" >& 2 mono EmuHawk.exe "$@" + return 0 fi o="$(mktemp -u)" From ff2a2abf7f220bd43ebd23946b804e5164b0233d Mon Sep 17 00:00:00 2001 From: Coarse Rosinflower <113859223+cD1rtX3@users.noreply.github.com> Date: Sun, 28 Dec 2025 14:27:34 -0500 Subject: [PATCH 3/5] Improve script recognition, exit properly, and comply with style guide --- Assets/EmuHawkMono.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Assets/EmuHawkMono.sh b/Assets/EmuHawkMono.sh index 1da3d92d604..88bc56eb9dd 100755 --- a/Assets/EmuHawkMono.sh +++ b/Assets/EmuHawkMono.sh @@ -1,7 +1,7 @@ #!/bin/sh case "$0" in - *"EmuHawkMono.sh");; + *".sh");; *"/bin/"*"sh") # Very bad way to detect /path/to/shell echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" @@ -16,7 +16,7 @@ case "$0" in esac cd "$(dirname -- "$(realpath -- "$0")")" || ( echo "Can't navigate to \$0's path?" >& 2; exit 1 ) -libpath= +libpath="" if [ "$(command -v lsb_release)" ]; then # shellcheck disable=SC2018,SC2019 case "$(lsb_release -i | head -n1 | cut -c17- | tr A-Z a-z)" in @@ -33,7 +33,7 @@ if [ -z "$libpath" ]; then libpath="/usr/lib" fi -export GTK_DATA_PREFIX= +export GTK_DATA_PREFIX="" export LD_LIBRARY_PATH="$PWD/dll:$PWD:$libpath" export MONO_CRASH_NOFILE=1 export MONO_WINFORMS_XIM_STYLE=disabled # see https://bugzilla.xamarin.com/show_bug.cgi?id=28047#c9 @@ -46,7 +46,7 @@ fi if (ps -C "mono" -o "cmd" --no-headers | grep -Fq "EmuHawk.exe"); then echo "(it seems EmuHawk is already running, NOT capturing output)" >& 2 mono EmuHawk.exe "$@" - return 0 + exit "$?" fi o="$(mktemp -u)" @@ -56,3 +56,4 @@ echo "(capturing output in $PWD/EmuHawkMono_last*.txt)" >& 2 tee EmuHawkMono_laststdout.txt < "$o" & tee EmuHawkMono_laststderr.txt < "$e" | sed "s/.*/$(tput setaf 1)&$(tput sgr0)/" >& 2 & mono EmuHawk.exe "$@" > "$o" 2> "$e" +exit "$?" From 5bc71a6a5478c26133ead8374c8ea6027aaa492e Mon Sep 17 00:00:00 2001 From: Coarse Rosinflower <113859223+cD1rtX3@users.noreply.github.com> Date: Tue, 30 Dec 2025 16:00:06 -0500 Subject: [PATCH 4/5] Fix improper exit --- Assets/EmuHawkMono.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Assets/EmuHawkMono.sh b/Assets/EmuHawkMono.sh index 88bc56eb9dd..2b26b004a96 100755 --- a/Assets/EmuHawkMono.sh +++ b/Assets/EmuHawkMono.sh @@ -14,7 +14,10 @@ case "$0" in # shellcheck disable=SC2317 return 1 2> /dev/null || exit 1 esac -cd "$(dirname -- "$(realpath -- "$0")")" || ( echo "Can't navigate to \$0's path?" >& 2; exit 1 ) +if ! cd "$(dirname -- "$(realpath -- "$0")")"; then + echo "Can't navigate to \$0's path?" >& 2 + exit 1 +fi libpath="" if [ "$(command -v lsb_release)" ]; then From 2ad59919f154e921042c58203f8ea8cec3542c84 Mon Sep 17 00:00:00 2001 From: Coarse Rosinflower <113859223+cD1rtX3@users.noreply.github.com> Date: Tue, 30 Dec 2025 16:30:35 -0500 Subject: [PATCH 5/5] Properly redirect all status messages --- Assets/EmuHawkMono.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/EmuHawkMono.sh b/Assets/EmuHawkMono.sh index 2b26b004a96..9b0b2190c3c 100755 --- a/Assets/EmuHawkMono.sh +++ b/Assets/EmuHawkMono.sh @@ -4,13 +4,13 @@ case "$0" in *".sh");; *"/bin/"*"sh") # Very bad way to detect /path/to/shell - echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" + echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" >& 2 # stupid bash workaround # shellcheck disable=SC2317 return 1 2> /dev/null || exit 1;; *"/"*);; *) - echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" + echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" >& 2 # shellcheck disable=SC2317 return 1 2> /dev/null || exit 1 esac