#!/sbin/sh

OUTFD=/proc/self/fd/$2;
ZIPFILE="$3";

# ui_print "<message>" ["<message 2>" ...]
ui_print() {
  while [ "$1" ]; do
    echo -e "ui_print $1\nui_print" >> $OUTFD;
    shift;
  done;
}

package_extract_dir() {
  local entry outfile;
  for entry in $(unzip -l "$ZIPFILE" "$1/*" 2>/dev/null | tail -n+4 | grep -v '/$' | grep -o " $1.*$" | cut -c2-); do
    outfile="$(echo "$entry" | sed "s|${1}|${2}|")";
    mkdir -p "$(dirname "$outfile")";
    unzip -o "$ZIPFILE" "$entry" -p > "$outfile";
  done;
}

set_perm_recursive() {
  local uid gid dmod fmod;
  uid=$1; gid=$2; dmod=$3; fmod=$4;
  shift 4;
  while [ "$1" ]; do
    chown -R $uid:$gid "$1" || chown -R $uid.$gid "$1";
    find "$1" -type d -exec chmod $dmod {} +;
    find "$1" -type f -exec chmod $fmod {} +;
    shift;
  done;
}

mount /system
mount /vendor

ui_print $ZIPFILE
ui_print "Extracting package"

mkdir /tmp
unzip $ZIPFILE -d /tmp
cp -r /tmp/system/* /system
cp -r /tmp/vendor/* /vendor

ui_print "Setting permissions"
set_perm_recursive 0 0 0755 0644 "/system/etc/permissions"
set_perm_recursive 0 0 0755 0644 "/vendor/app"

ui_print "Setting foster_e model prop"
echo persist.lineage.shield.model=foster_e >> /system/build.prop

exit 0
