ulong size;
ulong prevsize;
ulong start_time;
+ ulong content_len;
+ ulong hash_count;
enum done_state done;
};
{
ulong store_addr = ctx->daddr;
uchar *ptr;
+ ulong pos;
/* Avoid overflow */
if (wget_info->buffer_size && wget_info->buffer_size < ctx->size + len)
ctx->daddr += len;
ctx->size += len;
- if (ctx->size - ctx->prevsize > PROGRESS_PRINT_STEP_BYTES) {
- if (!wget_info->silent)
- printf("#");
- ctx->prevsize = ctx->size;
+
+ pos = clamp(ctx->size, 0UL, ctx->content_len);
+
+ while (ctx->hash_count < pos * 50 / ctx->content_len) {
+ putc('#');
+ ctx->hash_count++;
}
return 0;
return;
}
+ /* Print hash marks for the last packet received */
+ while (ctx->hash_count < 49) {
+ putc('#');
+ ctx->hash_count++;
+ }
+ puts(" ");
+ print_size(ctx->content_len, "");
+
elapsed = get_timer(ctx->start_time);
if (!elapsed)
elapsed = 1;
static err_t httpc_headers_done_cb(httpc_state_t *connection, void *arg, struct pbuf *hdr,
u16_t hdr_len, u32_t content_len)
{
+ struct wget_ctx *ctx = arg;
+
wget_lwip_fill_info(hdr, hdr_len, content_len);
if (wget_info->check_buffer_size && (ulong)content_len > wget_info->buffer_size)
return ERR_BUF;
+ ctx->content_len = content_len;
+
return ERR_OK;
}
ctx.size = 0;
ctx.prevsize = 0;
ctx.start_time = 0;
+ ctx.content_len = 0;
+ ctx.hash_count = 0;
if (parse_url(uri, ctx.server_name, &ctx.port, &path, &is_https))
return CMD_RET_USAGE;