int nandroid_backup_partition_extended(const char* backup_path, const char* mount_point, int umount_when_finished) { int ret = 0; char* name = basename(mount_point); struct stat file_info; int callback = stat("/sdcard/clockworkmod/.hidenandroidprogress", &file_info) != 0; ui_print("Backing up %s...\n", name); if (0 != (ret = ensure_path_mounted(mount_point) != 0)) { ui_print("Can't mount %s!\n", mount_point); return ret; } compute_directory_stats(mount_point); char tmp[PATH_MAX]; sprintf(tmp, "%s/%s.img", backup_path, name); nandroid_backup_handler backup_handler = get_backup_handler(mount_point); if (backup_handler == NULL) { ui_print("Error finding an appropriate backup handler.\n"); return -2; } ret = backup_handler(mount_point, tmp, callback); if (umount_when_finished) { ensure_path_unmounted(mount_point); } if (0 != ret) { ui_print("Error while making a backup image of %s!\n", mount_point); return ret; } return 0; }
int nandroid_backup_partition_extended(const char* backup_path, const char* mount_point, int umount_when_finished) { int ret = 0; char name[PATH_MAX]; char tmp[PATH_MAX]; strcpy(name, basename(mount_point)); struct stat file_info; build_configuration_path(tmp, NANDROID_HIDE_PROGRESS_FILE); ensure_path_mounted(tmp); int callback = stat(tmp, &file_info) != 0; ui_print("Backing up %s...\n", name); if (0 != (ret = ensure_path_mounted(mount_point) != 0)) { ui_print("Can't mount %s!\n", mount_point); return ret; } compute_directory_stats(mount_point); scan_mounted_volumes(); Volume *v = volume_for_path(mount_point); const MountedVolume *mv = NULL; if (v != NULL) mv = find_mounted_volume_by_mount_point(v->mount_point); if (strcmp(backup_path, "-") == 0) sprintf(tmp, "/proc/self/fd/1"); else if (mv == NULL || mv->filesystem == NULL) sprintf(tmp, "%s/%s.auto", backup_path, name); else sprintf(tmp, "%s/%s.%s", backup_path, name, mv->filesystem); nandroid_backup_handler backup_handler = get_backup_handler(mount_point); if (backup_handler == NULL) { ui_print("Error finding an appropriate backup handler.\n"); return -2; } ret = backup_handler(mount_point, tmp, callback); if (umount_when_finished) { ensure_path_unmounted(mount_point); } if (0 != ret) { ui_print("Error while making a backup image of %s!\n", mount_point); return ret; } ui_print("Backup of %s completed.\n", name); return 0; }
int nandroid_backup_partition_extended(const char* backup_path, const char* mount_point, int umount_when_finished) { int ret = 0; char name[PATH_MAX]; strcpy(name, basename(mount_point)); struct stat file_info; int callback = stat("/sdcard/clockworkmod/.hidenandroidprogress", &file_info) != 0; ui_print("备份中 %s...\n", name); if (0 != (ret = ensure_path_mounted(mount_point) != 0)) { ui_print("无法挂载 %s!\n", mount_point); return ret; } compute_directory_stats(mount_point); char tmp[PATH_MAX]; scan_mounted_volumes(); Volume *v = volume_for_path(mount_point); MountedVolume *mv = NULL; if (v != NULL) mv = find_mounted_volume_by_mount_point(v->mount_point); if (strcmp(backup_path, "-") == 0) sprintf(tmp, "/proc/self/fd/1"); else if (mv == NULL || mv->filesystem == NULL) sprintf(tmp, "%s/%s.auto", backup_path, name); else sprintf(tmp, "%s/%s.%s", backup_path, name, mv->filesystem); nandroid_backup_handler backup_handler = get_backup_handler(mount_point); if (backup_handler == NULL) { ui_print("找不到合适的备份方案.\n"); return -2; } ret = backup_handler(mount_point, tmp, callback); if (umount_when_finished) { ensure_path_unmounted(mount_point); } if (0 != ret) { ui_print("生成下列镜像文件时失败: %s!\n", mount_point); return ret; } ui_print("备份 %s 完成.\n", name); return 0; }
int nandroid_backup_partition_extended(const char* backup_path, const char* mount_point, int umount_when_finished) { int ret = 0; char name[PATH_MAX]; strcpy(name, basename(mount_point)); ensure_path_mounted("/sdcard"); struct stat file_info; int callback = stat("/sdcard/clockworkmod/.hidenandroidprogress", &file_info) != 0; ui_print("Backing up %s...\n", name); if (0 != (ret = ensure_path_mounted(mount_point) != 0)) { ui_print("Can't mount %s!\n", mount_point); return ret; } compute_directory_stats(mount_point); char tmp[PATH_MAX]; scan_mounted_volumes(); Volume *v = volume_for_path(mount_point); MountedVolume *mv = NULL; if (v != NULL) mv = find_mounted_volume_by_mount_point(v->mount_point); if (mv == NULL || mv->filesystem == NULL) sprintf(tmp, "%s/%s.auto", backup_path, name); else sprintf(tmp, "%s/%s.%s", backup_path, name, mv->filesystem); nandroid_backup_handler backup_handler = get_backup_handler(mount_point); if (backup_handler == NULL) { ui_print("Error finding an appropriate backup handler.\n"); return -2; } ret = backup_handler(mount_point, tmp, callback); if (umount_when_finished) { ensure_path_unmounted(mount_point); } if (0 != ret) { ui_print("Error while making a backup image of %s!\n", mount_point); return ret; } ui_print("Backup of %s completed.\n", name); return 0; }