Loading fastboot/engine.c +25 −3 Original line number Diff line number Diff line Loading @@ -255,6 +255,7 @@ void generate_ext4_image(struct image_data *image) #else fd = fileno(tmpfile()); #endif /* reset ext4fs info so we can be called multiple times */ reset_ext4fs_info(); info.len = image->partition_size; make_ext4fs_internal(fd, NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL); Loading @@ -266,7 +267,7 @@ void generate_ext4_image(struct image_data *image) close(fd); } int fb_format(Action *a, usb_handle *usb) int fb_format(Action *a, usb_handle *usb, int skip_if_not_supported) { const char *partition = a->cmd; char response[FB_RESPONSE_SZ+1]; Loading @@ -281,6 +282,13 @@ int fb_format(Action *a, usb_handle *usb) snprintf(cmd, sizeof(cmd), "getvar:partition-type:%s", partition); status = fb_command_response(usb, cmd, response); if (status) { if (skip_if_not_supported) { fprintf(stderr, "Erase successful, but not automatically formatting.\n"); fprintf(stderr, "Can't determine partition type.\n"); return 0; } fprintf(stderr,"FAILED (%s)\n", fb_get_error()); return status; } Loading @@ -292,6 +300,13 @@ int fb_format(Action *a, usb_handle *usb) } } if (!generator) { if (skip_if_not_supported) { fprintf(stderr, "Erase successful, but not automatically formatting.\n"); fprintf(stderr, "File system type %s not supported.\n", response); return 0; } fprintf(stderr,"Formatting is not supported for filesystem with type '%s'.\n", response); return -1; Loading @@ -301,6 +316,12 @@ int fb_format(Action *a, usb_handle *usb) snprintf(cmd, sizeof(cmd), "getvar:partition-size:%s", partition); status = fb_command_response(usb, cmd, response); if (status) { if (skip_if_not_supported) { fprintf(stderr, "Erase successful, but not automatically formatting.\n"); fprintf(stderr, "Unable to get partition size\n."); return 0; } fprintf(stderr,"FAILED (%s)\n", fb_get_error()); return status; } Loading Loading @@ -329,11 +350,12 @@ cleanup: return status; } void fb_queue_format(const char *partition) void fb_queue_format(const char *partition, int skip_if_not_supported) { Action *a; a = queue_action(OP_FORMAT, partition); a->data = (void*)skip_if_not_supported; a->msg = mkmsg("formatting '%s' partition", partition); } Loading Loading @@ -545,7 +567,7 @@ int fb_execute_queue(usb_handle *usb) } else if (a->op == OP_NOTICE) { fprintf(stderr,"%s\n",(char*)a->data); } else if (a->op == OP_FORMAT) { status = fb_format(a, usb); status = fb_format(a, usb, (int)a->data); status = a->func(a, status, status ? fb_get_error() : ""); if (status) break; } else { Loading fastboot/fastboot.c +3 −1 Original line number Diff line number Diff line Loading @@ -640,7 +640,7 @@ int main(int argc, char **argv) skip(2); } else if(!strcmp(*argv, "format")) { require(2); fb_queue_format(argv[1]); fb_queue_format(argv[1], 0); skip(2); } else if(!strcmp(*argv, "signature")) { require(2); Loading Loading @@ -727,7 +727,9 @@ int main(int argc, char **argv) if (wants_wipe) { fb_queue_erase("userdata"); fb_queue_format("userdata", 1); fb_queue_erase("cache"); fb_queue_format("cache", 1); } if (wants_reboot) { fb_queue_reboot(); Loading fastboot/fastboot.h +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ char *fb_get_error(void); /* engine.c - high level command queue engine */ void fb_queue_flash(const char *ptn, void *data, unsigned sz);; void fb_queue_erase(const char *ptn); void fb_queue_format(const char *ptn); void fb_queue_format(const char *ptn, int skip_if_not_supported); void fb_queue_require(const char *prod, const char *var, int invert, unsigned nvalues, const char **value); void fb_queue_display(const char *var, const char *prettyname); Loading Loading
fastboot/engine.c +25 −3 Original line number Diff line number Diff line Loading @@ -255,6 +255,7 @@ void generate_ext4_image(struct image_data *image) #else fd = fileno(tmpfile()); #endif /* reset ext4fs info so we can be called multiple times */ reset_ext4fs_info(); info.len = image->partition_size; make_ext4fs_internal(fd, NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL); Loading @@ -266,7 +267,7 @@ void generate_ext4_image(struct image_data *image) close(fd); } int fb_format(Action *a, usb_handle *usb) int fb_format(Action *a, usb_handle *usb, int skip_if_not_supported) { const char *partition = a->cmd; char response[FB_RESPONSE_SZ+1]; Loading @@ -281,6 +282,13 @@ int fb_format(Action *a, usb_handle *usb) snprintf(cmd, sizeof(cmd), "getvar:partition-type:%s", partition); status = fb_command_response(usb, cmd, response); if (status) { if (skip_if_not_supported) { fprintf(stderr, "Erase successful, but not automatically formatting.\n"); fprintf(stderr, "Can't determine partition type.\n"); return 0; } fprintf(stderr,"FAILED (%s)\n", fb_get_error()); return status; } Loading @@ -292,6 +300,13 @@ int fb_format(Action *a, usb_handle *usb) } } if (!generator) { if (skip_if_not_supported) { fprintf(stderr, "Erase successful, but not automatically formatting.\n"); fprintf(stderr, "File system type %s not supported.\n", response); return 0; } fprintf(stderr,"Formatting is not supported for filesystem with type '%s'.\n", response); return -1; Loading @@ -301,6 +316,12 @@ int fb_format(Action *a, usb_handle *usb) snprintf(cmd, sizeof(cmd), "getvar:partition-size:%s", partition); status = fb_command_response(usb, cmd, response); if (status) { if (skip_if_not_supported) { fprintf(stderr, "Erase successful, but not automatically formatting.\n"); fprintf(stderr, "Unable to get partition size\n."); return 0; } fprintf(stderr,"FAILED (%s)\n", fb_get_error()); return status; } Loading Loading @@ -329,11 +350,12 @@ cleanup: return status; } void fb_queue_format(const char *partition) void fb_queue_format(const char *partition, int skip_if_not_supported) { Action *a; a = queue_action(OP_FORMAT, partition); a->data = (void*)skip_if_not_supported; a->msg = mkmsg("formatting '%s' partition", partition); } Loading Loading @@ -545,7 +567,7 @@ int fb_execute_queue(usb_handle *usb) } else if (a->op == OP_NOTICE) { fprintf(stderr,"%s\n",(char*)a->data); } else if (a->op == OP_FORMAT) { status = fb_format(a, usb); status = fb_format(a, usb, (int)a->data); status = a->func(a, status, status ? fb_get_error() : ""); if (status) break; } else { Loading
fastboot/fastboot.c +3 −1 Original line number Diff line number Diff line Loading @@ -640,7 +640,7 @@ int main(int argc, char **argv) skip(2); } else if(!strcmp(*argv, "format")) { require(2); fb_queue_format(argv[1]); fb_queue_format(argv[1], 0); skip(2); } else if(!strcmp(*argv, "signature")) { require(2); Loading Loading @@ -727,7 +727,9 @@ int main(int argc, char **argv) if (wants_wipe) { fb_queue_erase("userdata"); fb_queue_format("userdata", 1); fb_queue_erase("cache"); fb_queue_format("cache", 1); } if (wants_reboot) { fb_queue_reboot(); Loading
fastboot/fastboot.h +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ char *fb_get_error(void); /* engine.c - high level command queue engine */ void fb_queue_flash(const char *ptn, void *data, unsigned sz);; void fb_queue_erase(const char *ptn); void fb_queue_format(const char *ptn); void fb_queue_format(const char *ptn, int skip_if_not_supported); void fb_queue_require(const char *prod, const char *var, int invert, unsigned nvalues, const char **value); void fb_queue_display(const char *var, const char *prettyname); Loading