From b406e3591ffa4344c905bd5ce30a44eda8761229 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Sun, 1 May 2016 05:59:50 +0200 Subject: [PATCH 1/2] Update Kobo startup script for KFMon Takes care of some potentially critical stuff ;p --- platform/kobo/koreader.sh | 40 +++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/platform/kobo/koreader.sh b/platform/kobo/koreader.sh index 8c7016ecd..73b301bec 100755 --- a/platform/kobo/koreader.sh +++ b/platform/kobo/koreader.sh @@ -36,14 +36,36 @@ if pkill -0 nickel ; then fi if [ "${FROM_NICKEL}" == "true" ] ; then - # Siphon a few things from nickel's env... - eval "$(xargs -n 1 -0 < /proc/$(pidof nickel)/environ | grep -e DBUS_SESSION_BUS_ADDRESS -e WIFI_MODULE -e PLATFORM -e WIFI_MODULE_PATH -e INTERFACE -e PRODUCT 2>/dev/null)" - export DBUS_SESSION_BUS_ADDRESS WIFI_MODULE PLATFORM WIFI_MODULE_PATH INTERFACE PRODUCT + # Detect if we were started from KFMon + if pkill -0 kfmon ; then + FROM_KFMON="true" + else + FROM_KFMON="false" + fi + + if [ "${FROM_KFMON}" == "true" ] ; then + # Siphon nickel's full environment, since KFMon inherits such a minimal one... + for env in $(xargs -n 1 -0 < /proc/$(pidof nickel)/environ) ; do + export ${env} + done + else + # Siphon a few things from nickel's env... + eval "$(xargs -n 1 -0 < /proc/$(pidof nickel)/environ | grep -e DBUS_SESSION_BUS_ADDRESS -e WIFI_MODULE -e PLATFORM -e WIFI_MODULE_PATH -e INTERFACE -e PRODUCT 2>/dev/null)" + export DBUS_SESSION_BUS_ADDRESS WIFI_MODULE PLATFORM WIFI_MODULE_PATH INTERFACE PRODUCT + fi # flush disks, might help avoid trashing nickel's DB... sync + # Double the fun! + sleep 1 + sync # stop kobo software because it's running - killall nickel hindenburg fmon 2>/dev/null + killall nickel hindenburg sickel fickel fmon 2>/dev/null + + # NOTE: Not particularly critical, we should be safe leaving it up, but since we reboot on exit anyway... + #if [ "${FROM_KFMON}" == "true" ] ; then + # killall kfmon 2>/dev/null + #fi fi # fallback for old fmon (and advboot) users (-> if no args were passed to the sript, start the FM) @@ -89,8 +111,14 @@ fi ./reader.lua "${args}" > crash.log 2>&1 if [ "${FROM_NICKEL}" == "true" ] ; then - # start kobo software because it was running before koreader - ./nickel.sh & + if [ "${FROM_KFMON}" != "true" ] ; then + # start kobo software because it was running before koreader + ./nickel.sh & + else + # If we were called from KFMon, just reboot, because depending on how the user triggered it, Nickel can get its panties in a serious twist on restore... + # And at best, we'd still restart with broken suspend behavior anyway... + reboot + fi else # if we were called from advboot then we must reboot to go to the menu # NOTE: This is actually achieved by checking if KSM or a KSM-related script is running: From e90f1018db01f65253a7b41bbf82b78afb5373ce Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Sun, 1 May 2016 15:11:47 +0200 Subject: [PATCH 2/2] Make the KFMon chekc actually accurate... Sleep does wonder for your brain! --- platform/kobo/koreader.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/platform/kobo/koreader.sh b/platform/kobo/koreader.sh index 73b301bec..5000f7554 100755 --- a/platform/kobo/koreader.sh +++ b/platform/kobo/koreader.sh @@ -37,14 +37,16 @@ fi if [ "${FROM_NICKEL}" == "true" ] ; then # Detect if we were started from KFMon + FROM_KFMON="false" if pkill -0 kfmon ; then - FROM_KFMON="true" - else - FROM_KFMON="false" + # That's a start, now check if KFMon truly is our parent... + if [ "$(pidof kfmon)" -eq "${PPID}" ] ; then + FROM_KFMON="true" + fi fi if [ "${FROM_KFMON}" == "true" ] ; then - # Siphon nickel's full environment, since KFMon inherits such a minimal one... + # Siphon nickel's full environment, since KFMon inherits such a minimal one, and that apparently confuses the hell out of Nickel for some reason if we decide to restart it without a reboot... for env in $(xargs -n 1 -0 < /proc/$(pidof nickel)/environ) ; do export ${env} done @@ -63,6 +65,7 @@ if [ "${FROM_NICKEL}" == "true" ] ; then killall nickel hindenburg sickel fickel fmon 2>/dev/null # NOTE: Not particularly critical, we should be safe leaving it up, but since we reboot on exit anyway... + # Keep KFMon up for now to make sure it's not doing anything overly stupid we might have overlooked ;). #if [ "${FROM_KFMON}" == "true" ] ; then # killall kfmon 2>/dev/null #fi @@ -115,7 +118,7 @@ if [ "${FROM_NICKEL}" == "true" ] ; then # start kobo software because it was running before koreader ./nickel.sh & else - # If we were called from KFMon, just reboot, because depending on how the user triggered it, Nickel can get its panties in a serious twist on restore... + # If we were called from KFMon, just reboot, because there's always a (hopefully slim to nonexistent, now) chance Nickel will get its panties in a serious twist on restore for one reason or another... # And at best, we'd still restart with broken suspend behavior anyway... reboot fi