]> mj.ucw.cz Git - umpf.git/blobdiff - ham.c
fix many little bugs, release 0.1
[umpf.git] / ham.c
diff --git a/ham.c b/ham.c
index fa0cc3d977fd1ec0948b7687454082ea2329773b..7028304dd14a37205898aba1428d3493eac8beae 100644 (file)
--- a/ham.c
+++ b/ham.c
@@ -186,7 +186,7 @@ get_body(int rfd)
                                res = write(fd, buf, MAIL_LEN);
                                if (res < MAIL_LEN) {
                                        unlink(b->tmpfile);
-                                       bye(EX_TEMPFAIL, "Cannot write to remporary file: %m");
+                                       bye(EX_TEMPFAIL, "Cannot write to temporary file: %m");
                                }
                                break;  
                        }
@@ -326,15 +326,20 @@ int
 write_email_to_fd(int fd, struct email* email)
 {
        char* buf;
-       int wr;
+       int wr, to_write;
 
        open_email();
-       do {
+       for (;;) {
                buf = read_email(email);
-               wr = write(fd, buf, chars_written);
-               if (wr < chars_written)
-                       return 1;
-       } while (chars_written);
+               if (!chars_written)
+                       break;
+
+               to_write = chars_written;
+               while (to_write) {
+                       wr = write(fd, buf, to_write);
+                       to_write -= wr;
+               }
+       };
        
        return 0;
 }