X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=src%2Ffetchurl.c;h=f4ae8da2779e9b63152ddbc0fde7f0027d79afe5;hb=0f71fe6a8646901c02f05104988d16f442bbd054;hp=e20583119fe29de5fe969c9e9d41a0a100d21833;hpb=79292bf0e17ab6daf605463f691c5fb8d76d5739;p=zpackage diff --git a/src/fetchurl.c b/src/fetchurl.c index e205831..f4ae8da 100644 --- a/src/fetchurl.c +++ b/src/fetchurl.c @@ -957,6 +957,12 @@ int main(int ac, char *av[]) { if (head) { io.response.len -= 2; + write(out, io.response.buffer, io.response.len); + break; + } + + if (io.status_code == 304) { + break; } if (outfile) { @@ -973,11 +979,6 @@ int main(int ac, char *av[]) { } } - if (head) { - write(out, io.response.buffer, io.response.len); - break; - } - if (raw) { write(out, io.response.buffer, header_len); } @@ -998,6 +999,7 @@ int main(int ac, char *av[]) { } do { + size_t before = io.received; if (io.response.len) { if (io.content_length && io.response.len + io.received > io.content_length) { io.response.len = io.content_length - io.received; @@ -1011,7 +1013,7 @@ int main(int ac, char *av[]) { if (progressbar) { if (io.content_length) { - pdots(50, '.', total, total+ret, + pdots(50, '.', before, io.received, io.content_length); } else { putc('\r', stderr); @@ -1051,9 +1053,9 @@ int main(int ac, char *av[]) { close(sockfd); if (progressbar && io.status_code == 200) { - if (total == io.content_length || io.content_length == 0) { + if (io.received == io.content_length || io.content_length == 0) { fprintf(stderr, " done\n"); - } else if (io.content_length != total) { + } else if (io.content_length != io.received) { fprintf(stderr, "failed (%zu bytes read)\n", total); io.status_code = 531; /* non official code */ }