[Commits] procmime.c 1.49.2.146 1.49.2.147

claws at claws-mail.org claws at claws-mail.org
Tue Jul 10 23:35:42 CEST 2012


Update of /home/claws-mail/claws/src
In directory srv:/tmp/cvs-serv11081/src

Modified Files:
      Tag: gtk2
	procmime.c 
Log Message:
2012-07-10 [paul]	3.8.1cvs14

	* src/procmime.c
		forgot this in last commit 

Index: procmime.c
===================================================================
RCS file: /home/claws-mail/claws/src/procmime.c,v
retrieving revision 1.49.2.146
retrieving revision 1.49.2.147
diff -u -d -r1.49.2.146 -r1.49.2.147
--- procmime.c	7 Jul 2012 07:09:30 -0000	1.49.2.146
+++ procmime.c	10 Jul 2012 21:35:40 -0000	1.49.2.147
@@ -583,37 +583,12 @@
 			}
 		}
 	} else {
-		gchar buf[MAXSMTPTEXTLEN+1];
-		gint leftover = 0;
-
-		while (fgets(buf + leftover,
-			sizeof(buf) - leftover,
-			infp) != NULL)
-		{
-		    gchar *l, *c = buf;
-		    leftover = 0;
-		    
-		    while (*c != '\0') {
-			if (
-			    *c == '\n'
-			    || (*c == '\r' && *(c+1) == '\n'))
-			{
-			    *c = '\0';
-			    break;
-			}
-			c++;
-		    }
-		    while (c - buf > MAXSMTPTEXTLEN - 2) {
-			*c = *(c-1);
-			*--c = '\0';
-			leftover++;
-		    }
-		    
-		    if (fputs(buf, outfp) == EOF || putc('\n', outfp) == EOF)
-			err = TRUE;
+		gchar buf[BUFFSIZE];
 
-		    for (l = buf; l-buf < leftover; l++)
-			*l = *++c;
+		while (fgets(buf, sizeof(buf), infp) != NULL) {
+			strcrchomp(buf);
+			if (fputs(buf, outfp) == EOF)
+				err = TRUE;
 		}
 	}
 
@@ -1200,12 +1175,11 @@
 {
 	FILE *fp;
 	guchar buf[BUFFSIZE];
-	gboolean cr = FALSE;
 	size_t len;
-	gint linelen = 0, maxlinelen = 0;
 	size_t octet_chars = 0;
 	size_t total_len = 0;
 	gfloat octet_percentage;
+	gboolean force_b64 = FALSE;
 
 	if ((fp = g_fopen(file, "rb")) == NULL) {
 		FILE_OP_ERROR(file, "fopen");
@@ -1217,27 +1191,11 @@
 		gint i;
 
 		for (p = buf, i = 0; i < len; ++p, ++i) {
-			switch (*p) {
-			case '\n':
-				if (cr) linelen--;
-				maxlinelen = MAX(linelen, maxlinelen);
-				linelen = 0;
-				cr = FALSE;
-				break;
-			case '\r':
-				cr = TRUE;
-				linelen++;
-				break;
-			case '\0':
+			if (*p & 0x80)
+				++octet_chars;
+			if (*p == '\0') {
+				force_b64 = TRUE;
 				*has_binary = TRUE;
-				maxlinelen = G_MAXINT;
-				cr = FALSE;
-				break;
-			default:
-				if (*p & 0x80)
-					octet_chars++;
-				linelen++;
-				cr = FALSE;
 			}
 		}
 		total_len += len;
@@ -1251,20 +1209,15 @@
 		octet_percentage = 0.0;
 
 	debug_print("procmime_get_encoding_for_text_file(): "
-		    "8bit chars: %zd / %zd (%f%%). "
-		    "maximum line length: %d chars\n",
-		    octet_chars, total_len, 100.0 * octet_percentage,
-		    maxlinelen);
+		    "8bit chars: %zd / %zd (%f%%)\n", octet_chars, total_len,
+		    100.0 * octet_percentage);
 
-	if (octet_percentage > 0.20) {
+	if (octet_percentage > 0.20 || force_b64) {
 		debug_print("using BASE64\n");
 		return ENC_BASE64;
-	} else if (maxlinelen > MAXSMTPTEXTLEN-2) {
+	} else if (octet_chars > 0) {
 		debug_print("using quoted-printable\n");
 		return ENC_QUOTED_PRINTABLE;
-	} else if (octet_chars > 0) {
-		debug_print("using 8bit\n");
-		return ENC_8BIT;
 	} else {
 		debug_print("using 7bit\n");
 		return ENC_7BIT;



More information about the Commits mailing list