export MIRROR=http://emacs.zielm.com/data

dl_die() {
    if [ "$1" = "nodie" ]; then
        echo Warning: Optional download failed.
    else
        echo Download failed. Press ENTER to continue.
        read
        exit 1
   fi
}

download_dir() {
    if [ ! -f $1/$2/.dldone ]; then
        cd $1
        busybox wget $MIRROR/$3 -O $2.tar.lzma || dl_die $4
        busybox tar xaf $2.tar.lzma
        rm $2.tar.lzma
        busybox touch $2/.dldone
        cd - >/dev/null
    fi
}

download_compressed() {
    if [ ! -f $1/$2 ]; then
        cd $1
        busybox wget $MIRROR/$3 -O $2.lzma || dl_die $4
        busybox lzma -d < $2.lzma > _tmp
        rm $2.lzma
        mv _tmp $2
        cd - >/dev/null
    fi
}

download_file() {
    if [ ! -f $1/$2 ]; then
        cd $1
        busybox wget $MIRROR/$3 -O $2.dl || dl_die $4
        mv $2.dl $2
        cd - >/dev/null
    fi
}

download_dir $EHOME terminfo terminfo.tlzma
download_dir $EHOME etc etc.tlzma
download_dir $EHOME lisp lisp.tlzma
download_compressed $PRIVATE emacs.bin emacs.lzma

mkdir $PRIVATE/src 2>/dev/null
busybox cp $PRIVATE/emacs.bin $PRIVATE/src/bootstrap-emacs # Hack to prevent dumping
echo '$PRIVATE/src/bootstrap-emacs $*' > $PRIVATE/emacs
chmod 755 $PRIVATE/emacs
chmod 755 $PRIVATE/src/bootstrap-emacs

for name in sh stat find grep tar chmod ln bash pwd cp top ps; do
    busybox ln -sf $PRIVATE/busybox $PRIVATE/$name
done

export TERMINFO=$EHOME/terminfo
export TERM=xterm # Termin Emulator supports screen, but xterm works and has Ctrl-Arrow support
export SHELL=$PRIVATE/sh
export PS1='$PWD $ '
export TEMP=$PRIVATE/tmp

mkdir "$TEMP" 2>/dev/null

echo "busybox wget $MIRROR/busyboxrc.sh -O busyboxrc.sh.dl; mv busyboxrc.sh.dl busybox.sh;
echo Restart emacs to finish updates." > $EHOME/update.sh

if [ -e $EHOME/emacsrc ]; then
    . $EHOME/emacsrc
fi

emacs
exec sh
