From f7a8eae6bf9d1d8694a76f43b979631d4d81e149 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jeremy@system76.com>
Date: Sat, 11 May 2019 20:32:03 -0600
Subject: [PATCH] Support passing a path to a file to run, parse exit status
 differently

---
 redoxer.sh          | 19 ++++++++++++++++---
 src/bin/redoxerd.rs |  3 +--
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/redoxer.sh b/redoxer.sh
index 3b00c98..9de24a9 100755
--- a/redoxer.sh
+++ b/redoxer.sh
@@ -90,8 +90,6 @@ function redoxfs_mount {
     done
 }
 
-name="$(basename "$1")"
-
 if [ ! -f build/bootloader.bin ]
 then
     echo "building bootloader" >&2
@@ -139,13 +137,25 @@ mkdir -p "build/${uuid}"
 redoxfs_mount "build/${uuid}.bin" "build/${uuid}"
 
 cp "target/${TARGET}/release/redoxerd" "build/${uuid}/bin/redoxerd"
+
+if [[ "$1" == */* ]]
+then
+    name="$(basename "$1")"
+    cp "$1" "build/${uuid}/bin/${name}"
+    echo "${name}" >> "build/${uuid}/etc/redoxerd"
+    shift
+fi
+
 for arg in "$@"
 do
     echo "${arg}" >> "build/${uuid}/etc/redoxerd"
 done
 
+
 redoxfs_unmount "build/${uuid}"
 
+set +e
+
 qemu-system-x86_64 \
     -enable-kvm \
     -cpu host \
@@ -161,7 +171,10 @@ qemu-system-x86_64 \
     -nographic \
     -vga none \
     -drive file="build/${uuid}.bin",format=raw
+status="$(("$?" / 2))"
 
 echo
-echo "## redoxer $@ ##"
+echo "## redoxer (${status}) ##"
 cat "build/${uuid}.log"
+
+exit "${status}"
diff --git a/src/bin/redoxerd.rs b/src/bin/redoxerd.rs
index 95f557e..9acab03 100644
--- a/src/bin/redoxerd.rs
+++ b/src/bin/redoxerd.rs
@@ -147,8 +147,7 @@ pub fn main() {
         Err(err) => {
             eprintln!("redoxerd: {}", err);
             // Exit with error using qemu device
-            let status = 0x21;
-            Pio::<u8>::new(0x501).write(status >> 1);
+            Pio::<u8>::new(0x501).write(1);
         }
     }
 }
-- 
GitLab