]> diplodocus.org Git - nmh/blobdiff - uip/mhoutsbr.c
Alter HasSuffixC()'s char * to be const.
[nmh] / uip / mhoutsbr.c
index 0c0a29759aae3061d79015500eba96bcc937782d..89b4b932901234a1209c08340a2a4c75494614c9 100644 (file)
@@ -10,7 +10,6 @@
 
 #include <h/mh.h>
 #include <fcntl.h>
 
 #include <h/mh.h>
 #include <fcntl.h>
-#include <h/signals.h>
 #include <h/md5.h>
 #include <h/mts.h>
 #include <h/tws.h>
 #include <h/md5.h>
 #include <h/mts.h>
 #include <h/tws.h>
@@ -97,7 +96,7 @@ output_content (CT ct, FILE *out)
      * headers (since it has no body).
      */
     if (ct->c_ctexbody) {
      * headers (since it has no body).
      */
     if (ct->c_ctexbody) {
-       if (boundary && *boundary != '\0')
+       if (*boundary != '\0')
            free(boundary);
        return OK;
     }
            free(boundary);
        return OK;
     }
@@ -125,9 +124,9 @@ output_content (CT ct, FILE *out)
 
            fprintf (out, "\n--%s\n", boundary);
            if (output_content (p, out) == NOTOK) {
 
            fprintf (out, "\n--%s\n", boundary);
            if (output_content (p, out) == NOTOK) {
-               if (boundary && *boundary != '\0')
+               if (*boundary != '\0')
                    free(boundary);
                    free(boundary);
-               return NOTOK;
+                return NOTOK;
            }
        }
        fprintf (out, "\n--%s--\n", boundary);
            }
        }
        fprintf (out, "\n--%s--\n", boundary);
@@ -165,7 +164,7 @@ output_content (CT ct, FILE *out)
               body, don't emit the newline that would appear between
               the headers and body.  In that case, the call to
               write8Bit() shouldn't be needed, but is harmless. */
               body, don't emit the newline that would appear between
               the headers and body.  In that case, the call to
               write8Bit() shouldn't be needed, but is harmless. */
-           if (ct->c_ctinfo.ci_first_pm != NULL  ||
+           if (ct->c_ctinfo.ci_first_pm != NULL  ||  ct->c_begin == 0  ||
                ct->c_begin != ct->c_end) {
                putc ('\n', out);
            }
                ct->c_begin != ct->c_end) {
                putc ('\n', out);
            }
@@ -188,8 +187,14 @@ output_content (CT ct, FILE *out)
            break;
 
        case CE_BINARY:
            break;
 
        case CE_BINARY:
-           advise (NULL, "can't handle binary transfer encoding in content");
-           result = NOTOK;
+           if (ct->c_type == CT_TEXT) {
+               /* So that mhfixmsg can decode to binary text. */
+               putc ('\n', out);
+               result = write8Bit (ct, out);
+           } else {
+               advise (NULL, "can't handle binary transfer encoding in content");
+               result = NOTOK;
+           }
            break;
 
        default:
            break;
 
        default:
@@ -200,7 +205,7 @@ output_content (CT ct, FILE *out)
        break;
     }
 
        break;
     }
 
-    if (boundary && *boundary != '\0')
+    if (*boundary != '\0')
        free(boundary);
 
     return result;
        free(boundary);
 
     return result;
@@ -427,7 +432,10 @@ writeBase64ct (CT ct, FILE *out)
     if ((fd = (*ct->c_ceopenfnx) (ct, &file)) == NOTOK)
        return NOTOK;
 
     if ((fd = (*ct->c_ceopenfnx) (ct, &file)) == NOTOK)
        return NOTOK;
 
-    result = writeBase64aux (ce->ce_fp, out, (ct->c_type == CT_TEXT));
+    result = writeBase64aux (ce->ce_fp, out,
+                             ct->c_type == CT_TEXT  &&  ct->c_ctparams
+                             ?  ((struct text *) ct->c_ctparams)->lf_line_endings == 0
+                             :  0);
     (*ct->c_ceclosefnx) (ct);
     return result;
 }
     (*ct->c_ceclosefnx) (ct);
     return result;
 }