X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=unmime.c;h=070d7945aee16f0c4cad27e53e3cd66fb6dfb02f;hb=87bcf29364c4640edb87cc2186b965d1a564d70c;hp=f68e51fbf172824c1d05d1e9332d4dd0d9638a10;hpb=9dc0b8bd674f71f8ee422b037dc409f2dd4f9487;p=~andy%2Ffetchmail diff --git a/unmime.c b/unmime.c index f68e51fb..070d7945 100644 --- a/unmime.c +++ b/unmime.c @@ -19,7 +19,7 @@ #include #include #include "fetchmail.h" -#include "i18n.h" +#include "gettext.h" static unsigned char unhex(unsigned char c) { @@ -292,7 +292,7 @@ static char *GetBoundary(char *CntType) do { p2 = strchr(p1, ';'); if (p2) - for (p2++; isspace((unsigned char)*p2); p2++); + for (p2++; isspace((unsigned char)*p2); p2++) { } p1 = p2; } while ((p1) && (strncasecmp(p1, "boundary", 8) != 0)); @@ -337,7 +337,7 @@ static int CheckContentType(char *CntType) * be really careful if you change this. */ - static char *DecodedTypes[] = { + static const char *DecodedTypes[] = { "text/", /* Will match ALL content-type's starting with 'text/' */ "message/rfc822", NULL @@ -418,7 +418,7 @@ int MimeBodyType(char *hdrs, int WantDecode) */ /* Skip the "Content-Type:" part and whitespace after it */ - for (NxtHdr += 13; ((*NxtHdr == ' ') || (*NxtHdr == '\t')); NxtHdr++); + for (NxtHdr += 13; ((*NxtHdr == ' ') || (*NxtHdr == '\t')); NxtHdr++) { } /* * Get the full value of the Content-Type header; @@ -434,7 +434,7 @@ int MimeBodyType(char *hdrs, int WantDecode) if (p == NULL) p = NxtHdr + strlen(NxtHdr); xfree(CntType); - CntType = xmalloc(p-NxtHdr+1); + CntType = (char *)xmalloc(p-NxtHdr+1); strlcpy(CntType, NxtHdr, p-NxtHdr+1); HdrsFound++; } @@ -459,7 +459,7 @@ int MimeBodyType(char *hdrs, int WantDecode) /* Check Content-Type to see if this is a multipart message */ if ( (CntType != NULL) && - ((strncasecmp(CntType, "multipart/mixed", 16) == 0) || + ((strncasecmp(CntType, "multipart/mixed", 15) == 0) || (strncasecmp(CntType, "message/", 8) == 0)) ) { char *p1 = GetBoundary(CntType); @@ -469,7 +469,6 @@ int MimeBodyType(char *hdrs, int WantDecode) the boundary string */ strcpy(MultipartDelimiter, "--"); strlcat(MultipartDelimiter, p1, sizeof(MultipartDelimiter)); - MultipartDelimiter[sizeof(MultipartDelimiter)-1] = '\0'; BodyType = (MSG_IS_8BIT | MSG_NEEDS_DECODE); } } @@ -651,13 +650,13 @@ int UnMimeBodyline(char **bufp, flag delimited, flag softline) #include #include -char *program_name = "unmime"; +const char *program_name = "unmime"; int outlevel = 0; #define BUFSIZE_INCREMENT 4096 #ifdef DEBUG -#define DBG_FWRITE(B,L,BS,FD) fwrite(B, L, BS, FD) +#define DBG_FWRITE(B,L,BS,FD) do { if (fwrite((B), (L), (BS), (FD))) { } } while(0) #else #define DBG_FWRITE(B,L,BS,FD) #endif @@ -668,6 +667,10 @@ int main(int argc, char *argv[]) char *buffer, *buf_p; int nl_count, i, bodytype; + /* quench warnings about unused arguments */ + (void)argc; + (void)argv; + #ifdef DEBUG pid_t pid; FILE *fd_orig, *fd_conv; @@ -701,9 +704,9 @@ int main(int argc, char *argv[]) } buf_p++; - if ((buf_p - buffer) == BufSize) { + if ((unsigned)(buf_p - buffer) == BufSize) { /* Buffer is full! Get more room. */ - buffer = xrealloc(buffer, BufSize+BUFSIZE_INCREMENT); + buffer = (char *)xrealloc(buffer, BufSize+BUFSIZE_INCREMENT); buf_p = buffer + BufSize; BufSize += BUFSIZE_INCREMENT; } @@ -716,8 +719,11 @@ int main(int argc, char *argv[]) bodytype = MimeBodyType(buffer, 1); i = strlen(buffer); - fwrite(buffer, i, 1, stdout); DBG_FWRITE(buffer, i, 1, fd_conv); + if (fwrite(buffer, i, 1, stdout) < 1) { + perror("fwrite"); + goto barf; + } do { buf_p = (buffer - 1); @@ -734,13 +740,17 @@ int main(int argc, char *argv[]) buf_p = buffer; UnMimeBodyline(&buf_p, 0, 0); } - fwrite(buffer, (buf_p - buffer), 1, stdout); DBG_FWRITE(buffer, (buf_p - buffer), 1, fd_conv); + if (fwrite(buffer, (buf_p - buffer), 1, stdout) < 1) { + perror("fwrite"); + goto barf; + } } } while (buf_p > buffer); +barf: free(buffer); - fflush(stdout); + if (EOF == fflush(stdout)) perror("fflush"); #ifdef DEBUG fclose(fd_orig); @@ -750,4 +760,3 @@ int main(int argc, char *argv[]) return 0; } #endif -