backup and restore of /sdcard/Android (see getExternalFilesDir)

Change-Id: I6306464cdce4e3b48e0d109284e5606f65a84ee2
diff --git a/Android.mk b/Android.mk
index 519b8ca..d65f650 100644
--- a/Android.mk
+++ b/Android.mk
@@ -26,7 +26,7 @@
 
 LOCAL_FORCE_STATIC_EXECUTABLE := true
 
-RECOVERY_VERSION := ClockworkMod Recovery v4.0.0.5
+RECOVERY_VERSION := ClockworkMod Recovery v4.0.0.8
 LOCAL_CFLAGS += -DRECOVERY_VERSION="$(RECOVERY_VERSION)"
 RECOVERY_API_VERSION := 2
 LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION)
diff --git a/edifyscripting.c b/edifyscripting.c
index 89554d7..1634a9e 100644
--- a/edifyscripting.c
+++ b/edifyscripting.c
@@ -145,6 +145,10 @@
             free(path);
             return StringValue(strdup(""));
         }
+        if (0 != format_volume("/sdcard/Android")) {
+            free(path);
+            return StringValue(strdup(""));
+        }
     }
 
 done:
diff --git a/nandroid.c b/nandroid.c
index af97e86..8bb82f1 100644
--- a/nandroid.c
+++ b/nandroid.c
@@ -277,6 +277,16 @@
             return ret;
     }
 
+    if (0 != stat("/sdcard/Android", &s))
+    {
+        ui_print("No /sdcard/Android found. Skipping backup of application files on external storage.\n");
+    }
+    else
+    {
+        if (0 != (ret = nandroid_backup_partition_extended(backup_path, "/sdcard/Android", 0)))
+            return ret;
+    }
+
     if (0 != (ret = nandroid_backup_partition_extended(backup_path, "/cache", 0)))
         return ret;
 
@@ -514,6 +524,9 @@
     if (restore_data && 0 != (ret = nandroid_restore_partition_extended(backup_path, "/sdcard/.android_secure", 0)))
         return ret;
 
+    if (restore_data && 0 != (ret = nandroid_restore_partition_extended(backup_path, "/sdcard/Android", 0)))
+        return ret;
+
     if (restore_cache && 0 != (ret = nandroid_restore_partition_extended(backup_path, "/cache", 0)))
         return ret;
 
diff --git a/recovery.c b/recovery.c
index 89fb214..e69a461 100644
--- a/recovery.c
+++ b/recovery.c
@@ -686,6 +686,7 @@
     }
     erase_volume("/sd-ext");
     erase_volume("/sdcard/.android_secure");
+    erase_volume("/sdcard/Android");
     ui_print("Data wipe complete.\n");
 }
 
@@ -826,7 +827,7 @@
         case 'p': previous_runs = atoi(optarg); break;
         case 's': send_intent = optarg; break;
         case 'u': update_package = optarg; break;
-        case 'w': 
+        case 'w':
 #ifndef BOARD_RECOVERY_ALWAYS_WIPES
 		wipe_data = wipe_cache = 1;
 #endif