int nandroid_main(int argc, char** argv) { load_volume_table(); char backup_path[PATH_MAX]; if (argc > 3 || argc < 2) return nandroid_usage(); if (strcmp("backup", argv[1]) == 0) { if (argc != 2) return nandroid_usage(); nandroid_generate_timestamp_path(backup_path); return nandroid_backup(backup_path); } if (strcmp("restore", argv[1]) == 0) { if (argc != 3) return nandroid_usage(); return nandroid_restore(argv[2], 1, 1, 1, 1, 1, 0); } if (strcmp("dump", argv[1]) == 0) { if (argc != 3) return nandroid_usage(); return nandroid_dump(argv[2]); } if (strcmp("undump", argv[1]) == 0) { if (argc != 3) return nandroid_usage(); return nandroid_undump(argv[2]); } return nandroid_usage(); }
int bu_main(int argc, char** argv) { load_volume_table(); if (strcmp(argv[2], "backup") == 0) { if (argc != 4) { return bu_usage(); } int fd = atoi(argv[1]); char* partition = argv[3]; if (fd != STDOUT_FILENO) { dup2(fd, STDOUT_FILENO); close(fd); } // fprintf(stderr, "%d %d %s\n", fd, STDOUT_FILENO, argv[3]); int ret = nandroid_dump(partition); sleep(10); return ret; } else if (strcmp(argv[2], "restore") == 0) { if (argc != 3) { return bu_usage(); } int fd = atoi(argv[1]); if (fd != STDIN_FILENO) { dup2(fd, STDIN_FILENO); close(fd); } char partition[100]; FILE* f = fopen("/tmp/ro.bu.restore", "r"); fread(partition, 1, sizeof(partition), f); fclose(f); // fprintf(stderr, "%d %d %s\n", fd, STDIN_FILENO, argv[3]); return nandroid_undump(partition); } return bu_usage(); }