#!/sbin/sh

RECOVERY_SCRIPT_FD=$2
set -o pipefail

ui_print() {
    echo "ui_print $1" > /proc/self/fd/$RECOVERY_SCRIPT_FD
    echo "ui_print" > /proc/self/fd/$RECOVERY_SCRIPT_FD
}

stdout_to_ui_print() {
    while read -r line; do
        ui_print "$line"
    done
}

ui_print ""
ui_print ""
ui_print "---------------------"
ui_print "   Xposed installer   "
ui_print "---------------------"
ui_print ""

ui_print "Mounting /system partition writeable..."
mount /system
mount -o rw,remount /system

ui_print "Mounting /data partition..."
mount /data

ui_print ""

{
if [ -f /data/data/de.robv.android.xposed.installer/bin/app_process ]
then
    ui_print "Found app_process executable in /data/data/de.robv.android.xposed.installer/bin"
else
    ui_print "Did not find /data/data/de.robv.android.xposed.installer/bin/app_process"
    ui_print ""
    ui_print "Please make sure to press install/update"
    ui_print "in the Xposed Installer app before flashing"
    ui_print "this zip."
    exit 1
fi

ui_print ""
ui_print "Copying app_process..."

if [ -f /system/bin/app_process.orig ]
then
    ui_print "Backup already exists at /system/bin/app_process.orig"
else
    cp -a /system/bin/app_process /system/bin/app_process.orig || exit 1
    ui_print "Created backup at /system/bin/app_process.orig"
fi

cp /data/data/de.robv.android.xposed.installer/bin/app_process /system/bin/app_process || exit 1
chown 0:2000 /system/bin/app_process || exit 1
chmod 0755 /system/bin/app_process || exit 1

ui_print ""
ui_print "Done!"
ui_print "After rebooting, the new app_process"
ui_print "version should be active."
ui_print ""

exit 0

} 2>&1 | stdout_to_ui_print

exit $?
