int main(int argc, char *argv[]) { const char *src_file, *dest_file; assert(argc > 2 && argv[1][0] == '-'); switch (argv[1][1]) { case 'b': case 'B': case 's': case 'S': case 'r': case 'R': assert(argc == 4); src_file = argv[2]; dest_file = argv[3]; break; case 'z': case 'Z': assert(argc == 3); src_file = "/dev/zero"; dest_file = argv[2]; break; default: error_msg("unknown option"); return -1; } return cavan_dd(src_file, dest_file, 0, 0, 512); }
static inline int copy_to_emmc(const char *img_name, const char *img_path, const char *target_device, off_t seek_out) { if (img_path) { img_name = img_path; } return cavan_dd(img_name, target_device, 0, seek_out, 0); }
int main(int argc, char *argv[]) { int ret; const char *target_device; const char *img_path; if (argv[1][0] != '-') { printf("Unknown Option\n"); return -1; } if (argc >= 4) { target_device = get_device(argv[2][0] - '0'); img_path = argv[3]; } else { target_device = get_device(0); if (argc >= 3) { img_path = argv[2]; } else { img_path = NULL; } } switch (argv[1][1]) { case 'u': case 'U': if (img_path == NULL) { return cavan_dd("u-boot-no-padding.bin", target_device, 0, UBOOT_OFFSET, 0); } else if (strcmp(text_basename(img_path), "u-boot.bin") == 0) { return cavan_dd(img_path, target_device, UBOOT_PADDING_SIZE, UBOOT_OFFSET, 0); } else { return cavan_dd(img_path, target_device, 0, UBOOT_OFFSET, 0); } case 'k': case 'K': return copy_to_emmc("uImage", img_path, target_device, UIMAGE_OFFSET); case 'l': case 'L': return copy_to_emmc("logo.bmp", img_path, target_device, LOGO_OFFSET); case 'b': case 'B': return copy_to_emmc("busybox.img", img_path, target_device, BUSYBOX_OFFSET); case 'c': case 'C': return copy_to_emmc("charge.bmps", img_path, target_device, CARTOON_OFFSET); case 's': case 'S': target_device = format_text("%sp2", target_device); ret = copy_to_emmc("system.img", img_path, target_device, 0); if (ret < 0) { error_msg("copy_to_emmc"); return ret; } break; case 'd': case 'D': target_device = format_text("%sp5", target_device); ret = copy_to_emmc("userdata.img", img_path, target_device, 0); if (ret < 0) { error_msg("copy_to_emmc"); return ret; } break; case 'r': case 'R': switch (argv[1][2]) { case 'a': case 'A': return copy_to_emmc("uramdisk.img", img_path, target_device, RAMDISK_OFFSET); case 'e': case 'E': target_device = format_text("%sp4", target_device); ret = copy_to_emmc("recovery.img", img_path, target_device, 0); if (ret < 0) { error_msg("copy_to_emmc"); return ret; } break; default: printf("Unknown Option\n"); return -1; } break; default: printf("Unknown Option\n"); return -1; } return extend_partition(target_device); }
int main(int argc, char *argv[]) { int i; int ret; char input_file[100]; char output_file[100]; off_t bs = 1, seek = 0, skip = 0, count = 0; assert(argc >= 3); for (i = 1; i < argc; i++) { char c, *p; parse_parameter(argv[i]); c = para_option[0]; p = para_option + 1; switch (c) { case 'i': if (strcmp(p, "f") == 0) { strcpy(input_file, para_value); } else { goto out_unknown_option; } break; case 'o': if (strcmp(p, "f") == 0) { strcpy(output_file, para_value); } else { goto out_unknown_option; } break; case 'b': if (strcmp(p, "s") == 0) { bs = text2size(para_value, NULL); } else { goto out_unknown_option; } break; case 's': if (strcmp(p, "kip") == 0) { skip = text2size(para_value, NULL); } else if (strcmp(p, "eek") == 0) { seek = text2size(para_value, NULL); } else { goto out_unknown_option; } break; case 'c': if (strcmp(p, "ount") == 0) { count = text2size(para_value, NULL); } else { goto out_unknown_option; } break; default: goto out_unknown_option; } } ret = cavan_dd(input_file, output_file, skip * bs, seek * bs, count * bs); if (ret < 0) { pr_err_info("cavan_dd"); return ret; } return 0; out_unknown_option: pr_err_info("unknown option \"%s\"", para_option); return -EINVAL; }