add free space check
diff --git a/nandroid.c b/nandroid.c
index 8ba1cd5..7201438 100644
--- a/nandroid.c
+++ b/nandroid.c
@@ -37,6 +37,8 @@
#include "../../external/yaffs2/yaffs2/utils/mkyaffs2image.h"
#include "../../external/yaffs2/yaffs2/utils/unyaffs.h"
+#include <sys/vfs.h>
+
#include "extendedcommands.h"
#include "nandroid.h"
@@ -102,11 +104,18 @@
if (ensure_root_path_mounted("SDCARD:") != 0)
return print_and_error("Can't mount /sdcard\n");
+ int ret;
+ struct statfs s;
+ if (0 != (ret = statfs("/sdcard", &s)))
+ return print_and_error("Unable to stat /sdcard\n");
+ int sdcard_free = s.f_bfree * s.f_bsize;
+ if (sdcard_free < 150000000)
+ return print_and_error("There is not enough free space on the SD Card! At least 150MB is required to create a backup.\n");
+
char tmp[PATH_MAX];
sprintf(tmp, "mkdir -p %s", backup_path);
__system(tmp);
- int ret;
ui_print("Backing up boot...\n");
sprintf(tmp, "%s/%s", backup_path, "boot.img");
ret = dump_image("boot", tmp, NULL);