]> pd.if.org Git - zpackage/blobdiff - src/fetchurl.c
change http header output
[zpackage] / src / fetchurl.c
index 15bf1ecb3c2efdbbcd5475c2cfb97865740a63e4..f4ae8da2779e9b63152ddbc0fde7f0027d79afe5 100644 (file)
@@ -461,7 +461,6 @@ ssize_t fill_buffer(struct io *io) {
                }
        }
 
-       fprintf(stderr, "filled %zd bytes\n", ret);
        return ret;
 }
 
@@ -958,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) {
@@ -974,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);
                }
@@ -999,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;
@@ -1012,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);
@@ -1052,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 */
                }