ui_print("GingerDx v21 ported by farazfaraz@xda.");
mount("yaffs2", "MTD", "userdata", "/data");
ui_print("Mounted /data");
delete_recursive("/data/dalvik-cache");
ui_print("Cleared dalvik cache");
format("yaffs2", "MTD", "cache");
ui_print("Formatted /cache");
format("yaffs2", "MTD", "system");
ui_print("Formatted /system");
package_extract_dir("data", "/data");
ui_print("Copied /data");
mount("yaffs2", "MTD", "system", "/system");
ui_print("Mounted /system");
ui_print("Copying /system, this will take a while");
package_extract_dir("system", "/system");
ui_print("Copied /system");
symlink("busybox", "/system/bin/chmod");
symlink("busybox", "/system/bin/du");
symlink("busybox", "/system/bin/expr");
symlink("busybox", "/system/bin/cp");
symlink("busybox", "/system/bin/split");
symlink("busybox", "/system/bin/pidof");
symlink("busybox", "/system/bin/dirname");
symlink("busybox", "/system/bin/mkfs.ext2");
symlink("busybox", "/system/bin/fold");
symlink("busybox", "/system/bin/lsusb");
symlink("busybox", "/system/bin/grep");
symlink("busybox", "/system/bin/nohup");
symlink("busybox", "/system/bin/length");
symlink("busybox", "/system/bin/tftp");
symlink("busybox", "/system/bin/fgrep");
symlink("busybox", "/system/bin/lzopcat");
symlink("busybox", "/system/bin/mount");
symlink("busybox", "/system/bin/sync");
symlink("busybox", "/system/bin/cat");
symlink("busybox", "/system/bin/uname");
symlink("busybox", "/system/bin/traceroute");
symlink("busybox", "/system/bin/ln");
symlink("busybox", "/system/bin/pkill");
symlink("busybox", "/system/bin/sha512sum");
symlink("busybox", "/system/bin/unzip");
symlink("busybox", "/system/bin/cal");
symlink("busybox", "/system/bin/sha256sum");
symlink("busybox", "/system/bin/zcat");
symlink("busybox", "/system/bin/yes");
symlink("busybox", "/system/bin/pgrep");
symlink("busybox", "/system/bin/time");
symlink("busybox", "/system/bin/uptime");
symlink("busybox", "/system/bin/[[");
symlink("busybox", "/system/bin/chroot");
symlink("busybox", "/system/bin/more");
symlink("busybox", "/system/bin/reset");
symlink("busybox", "/system/bin/catv");
symlink("busybox", "/system/bin/[");
symlink("busybox", "/system/bin/modprobe");
symlink("busybox", "/system/bin/lzop");
symlink("busybox", "/system/bin/uniq");
symlink("busybox", "/system/bin/date");
symlink("busybox", "/system/bin/nslookup");
symlink("busybox", "/system/bin/watch");
symlink("busybox", "/system/bin/fuser");
symlink("busybox", "/system/bin/which");
symlink("busybox", "/system/bin/depmod");
symlink("busybox", "/system/bin/bzip2");
symlink("busybox", "/system/bin/sysctl");
symlink("busybox", "/system/bin/tac");
symlink("busybox", "/system/bin/basename");
symlink("busybox", "/system/bin/killall5");
symlink("busybox", "/system/bin/test");
symlink("busybox", "/system/bin/lspci");
symlink("busybox", "/system/bin/bzcat");
symlink("busybox", "/system/bin/mv");
symlink("busybox", "/system/bin/sleep");
symlink("busybox", "/system/bin/readlink");
symlink("busybox", "/system/bin/install");
symlink("busybox", "/system/bin/whoami");
symlink("busybox", "/system/bin/tty");
symlink("busybox", "/system/bin/umount");
symlink("busybox", "/system/bin/free");
symlink("busybox", "/system/bin/dd");
symlink("busybox", "/system/bin/tail");
symlink("busybox", "/system/bin/top");
symlink("busybox", "/system/bin/route");
symlink("busybox", "/system/bin/arp");
symlink("busybox", "/system/bin/touch");
symlink("busybox", "/system/bin/ed");
symlink("busybox", "/system/bin/fdisk");
symlink("busybox", "/system/bin/stat");
symlink("busybox", "/system/bin/printenv");
symlink("busybox", "/system/bin/bbconfig");
symlink("busybox", "/system/bin/killall");
symlink("busybox", "/system/bin/brctl");
symlink("busybox", "/system/bin/dnsd");
symlink("busybox", "/system/bin/getopt");
symlink("busybox", "/system/bin/ps");
symlink("busybox", "/system/bin/awk");
symlink("busybox", "/system/bin/bunzip2");
symlink("busybox", "/system/bin/renice");
symlink("busybox", "/system/bin/uudecode");
symlink("busybox", "/system/bin/seq");
symlink("busybox", "/system/bin/md5sum");
symlink("busybox", "/system/bin/false");
symlink("busybox", "/system/bin/usleep");
symlink("busybox", "/system/bin/hexdump");
symlink("busybox", "/system/bin/rmmod");
symlink("busybox", "/system/bin/mountpoint");
symlink("busybox", "/system/bin/pwd");
symlink("busybox", "/system/bin/true");
symlink("busybox", "/system/bin/gunzip");
symlink("busybox", "/system/bin/unlzop");
symlink("busybox", "/system/bin/swapoff");
symlink("busybox", "/system/bin/mknod");
symlink("busybox", "/system/bin/unix2dos");
symlink("busybox", "/system/bin/swapon");
symlink("busybox", "/system/bin/patch");
symlink("busybox", "/system/bin/tr");
symlink("busybox", "/system/bin/freeramdisk");
symlink("busybox", "/system/bin/egrep");
symlink("busybox", "/system/bin/sort");
symlink("busybox", "/system/bin/diff");
symlink("busybox", "/system/bin/uuencode");
symlink("busybox", "/system/bin/clear");
symlink("busybox", "/system/bin/devmem");
symlink("busybox", "/system/bin/mkdir");
symlink("busybox", "/system/bin/rmdir");
symlink("busybox", "/system/bin/df");
symlink("busybox", "/system/bin/find");
symlink("busybox", "/system/bin/ls");
symlink("busybox", "/system/bin/head");
symlink("busybox", "/system/bin/ash");
symlink("busybox", "/system/bin/cpio");
symlink("busybox", "/system/bin/wc");
symlink("busybox", "/system/bin/mkswap");
symlink("busybox", "/system/bin/insmod");
symlink("busybox", "/system/bin/dmesg");
symlink("busybox", "/system/bin/wget");
symlink("busybox", "/system/bin/telnet");
symlink("busybox", "/system/bin/setsid");
symlink("busybox", "/system/bin/realpath");
symlink("busybox", "/system/bin/mktemp");
symlink("busybox", "/system/bin/dc");
symlink("busybox", "/system/bin/rm");
symlink("busybox", "/system/bin/vi");
symlink("busybox", "/system/bin/strings");
symlink("busybox", "/system/bin/ip");
symlink("busybox", "/system/bin/lsmod");
symlink("busybox", "/system/bin/chown");
symlink("busybox", "/system/bin/ntpd");
symlink("busybox", "/system/bin/od");
symlink("busybox", "/system/bin/stty");
symlink("busybox", "/system/bin/env");
symlink("busybox", "/system/bin/cksum");
symlink("busybox", "/system/bin/echo");
symlink("busybox", "/system/bin/ifconfig");
symlink("busybox", "/system/bin/cmp");
symlink("busybox", "/system/bin/tar");
symlink("busybox", "/system/bin/cut");
symlink("busybox", "/system/bin/tee");
symlink("busybox", "/system/bin/rdev");
symlink("busybox", "/system/bin/chgrp");
symlink("busybox", "/system/bin/netstat");
symlink("busybox", "/system/bin/kill");
symlink("busybox", "/system/bin/nice");
symlink("busybox", "/system/bin/run-parts");
symlink("busybox", "/system/bin/less");
symlink("busybox", "/system/bin/sed");
symlink("busybox", "/system/bin/mkfifo");
symlink("busybox", "/system/bin/printf");
symlink("busybox", "/system/bin/xargs");
symlink("busybox", "/system/bin/dos2unix");
symlink("busybox", "/system/bin/sha1sum");
symlink("busybox", "/system/bin/losetup");
symlink("toolbox", "/system/bin/getevent");
symlink("toolbox", "/system/bin/notify");
symlink("toolbox", "/system/bin/setconsole");
symlink("toolbox", "/system/bin/newfs_msdos");
symlink("toolbox", "/system/bin/reboot");
symlink("toolbox", "/system/bin/start");
symlink("toolbox", "/system/bin/hd");
symlink("toolbox", "/system/bin/ioctl");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/wipe");
symlink("toolbox", "/system/bin/getprop");
symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/ionice");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/smd");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/log");
symlink("toolbox", "/system/bin/stop");
symlink("toolbox", "/system/bin/vmstat");
symlink("toolbox", "/system/bin/iftop");
symlink("toolbox", "/system/bin/nandread");
symlink("toolbox", "/system/bin/id");
symlink("/system/bin/busybox", "/system/xbin/busybox");
symlink("busybox", "/system/xbin/run-parts");
ui_print("Created symlinks");
set_perm_recursive(0, 0, 0755, 0644, "/system/");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm_recursive(0, 0, 0755, 0644, "/system/usr");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm_recursive(0, 2000, 0755, 0755, "/system/etc/init.d");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 0, 04755, "/system/xbin/bash");
set_perm(0, 0, 04755, "/system/xbin/su");
set_perm(0, 0, 0755, "/system/xbin/busybox");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
ui_print("Set permissions");
ui_print("Everything finished. Reboot and enjoy :-)");
