diff --git a/config.c b/config.c index 5fe06dd..b5687fc 100644 --- a/config.c +++ b/config.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "isync.h" config_t *boxes = 0; diff --git a/configure.in b/configure.in index 4e69771..d07b136 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_INIT(isync.h) -AM_INIT_AUTOMAKE(isync,0.6) +AM_INIT_AUTOMAKE(isync,0.7) AM_PROG_CC_STDC AC_ARG_WITH(ssl-dir, [ --with-ssl-dir=DIR location where openssl is insalled], [if test -d $withval/lib; then diff --git a/imap.c b/imap.c index 706eaa8..fc81c4e 100644 --- a/imap.c +++ b/imap.c @@ -820,7 +820,7 @@ write_strip (int fd, char *buf, size_t len) { size_t start = 0; size_t end = 0; - int n; + ssize_t n; while (start < len) { @@ -832,8 +832,17 @@ write_strip (int fd, char *buf, size_t len) perror ("write"); return -1; } - end++; - start = end; + else if ((size_t) n != end - start) + { + /* short write, try again */ + start += n; + } + else + { + /* write complete */ + end++; + start = end; + } } return 0; } diff --git a/maildir.c b/maildir.c index 624e264..5c59fcc 100644 --- a/maildir.c +++ b/maildir.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "isync.h" static int