Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1f88106 authored by JP Abgrall's avatar JP Abgrall Committed by Android (Google) Code Review
Browse files

Merge "fastboot: Change -w to format after the erase of userdata & cache" into jb-dev

parents 367e7b19 30ae5806
Loading
Loading
Loading
Loading
+25 −3
Original line number Diff line number Diff line
@@ -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);
@@ -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];
@@ -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;
    }
@@ -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;
@@ -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;
    }
@@ -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);
}

@@ -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 {
+3 −1
Original line number Diff line number Diff line
@@ -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);
@@ -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();
+1 −1
Original line number Diff line number Diff line
@@ -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);