• Patch: Elm ME+ 2.5 PLalpha49 -> Elm ME+ 2.5 PLalpha50 [6/7] (3/4)

    From Kari Hurtta@21:1/5 to All on Mon Jun 10 20:55:53 2019
    [continued from previous message]

    ! parse_body_routine,
    ! &COUNTER,
    ! reconnect_mode,
    ! &previous_headers[i]);
    !
    ! if (y % readmsginc == 0 || refresh) {
    !
    ! /* Not optimal */
    !
    ! updater_helper(storage->current_folder,
    ! read_state_ptr,
    ! &COUNTER,
    ! count,refresh);
    ! refresh = 0;
    ! }
    !
    ! switch (status) {
    ! case copy_env_ok:
    !
    !
    ! if (replaced_entry) {
    !
    ! replaced_entry->index_number_X = idx+1;
    !
    ! } else {
    ! /** allocate new header pointers, if needed... **/
    ! realloc_headers(storage,count);
    !
    ! if (storage->max_headers <= count)
    ! panic("MBX PANIC",__FILE__,__LINE__,"read_headers",
    ! "Bad storage->max_headers",0);
    !
    ! if (storage->headers[count])
    ! free_header_rec(& (storage->headers[count]));
    ! storage->headers[count] = work;
    ! work = NULL;
    ! storage->headers[count]->index_number_X = count+1;
    !
    ! count++;
    ! }
    !
    !
    ! DPRINT(Debug,10,(&Debug, "read_headers: previous message #%d parsed",
    ! i));
    !
    ! if (0) {
    ! case copy_env_no_data:
    ! DPRINT(Debug,10,(&Debug, "read_headers: previous message #%d: not handled",
    ! i));
    ! }
    !
    ! if (0) {
    ! case copy_env_format:
    ! DPRINT(Debug,10,(&Debug, "read_headers: previous message #%d: copy_previous_mail returns copy_env_format",
    ! i));
    ! read_folder = 0;
    ! }
    !
    ! if (0) {
    ! case copy_env_eof:
    ! DPRINT(Debug,10,(&Debug, "read_headers: previous message #%d: copy_previous_mail returns copy_env_eof",
    ! i));
    ! read_folder = 0;
    ! }
    !
    !
    ! if (previous_headers[i].rec) {
    ! DPRINT(Debug,10,(&Debug, ", was hdr index #%d",
    ! previous_headers[i].rec->index_number_X));
    ! }
    ! if (replaced_entry) {
    ! DPRINT(Debug,10,(&Debug, ", current hdr index #%d",
    ! replaced_entry->index_number_X));
    ! }
    ! DPRINT(Debug,10,(&Debug, "\n"));
    !
    ! y++;
    !
    !
    ! break;
    ! }
    !
    ! if (work == replaced_entry)
    ! work = NULL;
    !
    ! }
    ! }
    !
    ! if (work)
    ! free_header_rec( & work);
    !
    ! if (copy_env_format == status) {
    ! sleep_message();
    ! end_read_folder(storage->current_folder,&read_state_ptr,
    ! &reconnect_mode,
    ! 1);
    !
    ! goto failure;
    ! }
    ! }

    {
    /* Final counter */
    int skipcount;
    long skipbytes;
    + int percent;
    +
    long f = copy_fbytes_folder(storage->current_folder,
    read_state_ptr);
    +
    + long total_size =
    + storage->current_folder->mailfile_size +
    + COUNTER.previous_bytes;

    copy_skipcount_folder(storage->current_folder,read_state_ptr,
    &skipcount,&skipbytes);

    f += skipbytes;

    ! if (total_size >0)
    ! percent = (int)(f * 100.0 / total_size);
    else
    percent = 100;
    /* calculation with integers overflow on big folders! */ ***************
    *** 1105,1112 ****
    COUNTER.lastpercent = percent;
    }

    !
    ! if (!end_read_folder(storage->current_folder,&read_state_ptr,0)) {
    sleep_message();

    goto failure;
    --- 2085,2093 ----
    COUNTER.lastpercent = percent;
    }

    !
    ! if (!end_read_folder(storage->current_folder,&read_state_ptr,
    ! &reconnect_mode,0)) {
    sleep_message();

    goto failure;
    ***************
    *** 1114,1146 ****

    /* We need set per storage variable message_count */
    DPRINT(Debug,7,(&Debug,
    ! " Updating storage message count %d -> %d\n",
    storage->message_count,count));
    storage->message_count = count;

    clear_error();


    - if (delay_redraw) {
    - DPRINT(Debug,7,(&Debug, " Triggering redraw\n"));
    - menu_trigger_redraw(page);
    - }

    ! return(count);

    failure:
    !
    DPRINT(Debug,7,(&Debug,
    ! " Updating storage message count %d -> %d on FAILURE\n",
    storage->message_count,count));
    storage->message_count = count;

    if (delay_redraw) {
    ! DPRINT(Debug,7,(&Debug, " Triggering redraw\n"));
    menu_trigger_redraw(page);
    }

    ! return -1; /* FAILURE */
    }

    /*
    --- 2095