static int tar_extract_wrapper(const char* backup_file_image, const char* backup_path, int callback) { char tmp[PATH_MAX]; sprintf(tmp, "cd $(dirname %s) ; tar xvf %s ; exit $?", backup_path, backup_file_image); char path[PATH_MAX]; FILE *fp = __popen(tmp, "r"); if (fp == NULL) { ui_print("Unable to execute tar.\n"); return -1; } while (fgets(path, PATH_MAX, fp) != NULL) { if (callback) yaffs_callback(path); } return __pclose(fp); }
static int mkyaffs2image_wrapper(const char* backup_path, const char* backup_file_image, int callback) { char tmp[PATH_MAX]; sprintf(tmp, "cd %s ; mkyaffs2image . %s.img ; exit $?", backup_path, backup_file_image); FILE *fp = __popen(tmp, "r"); if (fp == NULL) { ui_print("Unable to execute mkyaffs2image.\n"); return -1; } while (fgets(tmp, PATH_MAX, fp) != NULL) { tmp[PATH_MAX - 1] = NULL; if (callback) yaffs_callback(tmp); } return __pclose(fp); }
static int tar_extract_wrapper_legacy(const char* backup_file_image, const char* backup_path, int callback) { char tmp[PATH_MAX]; // All subdirs are included in the tar archive sprintf(tmp, "cd / ; tar xvf %s ; exit $?", backup_file_image); char path[PATH_MAX]; FILE *fp = __popen(tmp, "r"); if (fp == NULL) { ui_print("Unable to execute tar.\n"); return -1; } while (fgets(path, PATH_MAX, fp) != NULL) { if (callback) yaffs_callback(path); } return __pclose(fp); }
static int tar_compress_wrapper(const char* backup_path, const char* backup_file_image, int callback) { char tmp[PATH_MAX]; if (strcmp(backup_path, "/data") == 0 && volume_for_path("/sdcard") == NULL) sprintf(tmp, "cd $(dirname %s) ; tar cvf %s --exclude 'media' $(basename %s) ; exit $?", backup_path, backup_file_image, backup_path); else sprintf(tmp, "cd $(dirname %s) ; tar cvf %s $(basename %s) ; exit $?", backup_path, backup_file_image, backup_path); FILE *fp = __popen(tmp, "r"); if (fp == NULL) { ui_print("Unable to execute tar.\n"); return -1; } while (fgets(tmp, PATH_MAX, fp) != NULL) { tmp[PATH_MAX - 1] = NULL; if (callback) yaffs_callback(tmp); } return __pclose(fp); }