aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authoralex <alex@FreeBSD.org>2000-07-16 21:28:54 +0800
committeralex <alex@FreeBSD.org>2000-07-16 21:28:54 +0800
commita78bae58807b2ab3238d2a6b02b379f66036ac7c (patch)
tree646428c940d26c6febf2d8984c0301c412e47476 /mail
parent7e30d3ec22c799cbba95eb4de6b4e584c4b1c0d8 (diff)
downloadfreebsd-ports-graphics-a78bae58807b2ab3238d2a6b02b379f66036ac7c.tar.gz
freebsd-ports-graphics-a78bae58807b2ab3238d2a6b02b379f66036ac7c.tar.zst
freebsd-ports-graphics-a78bae58807b2ab3238d2a6b02b379f66036ac7c.zip
Fix X-Face handling w/ IMAP.
PR: 19955 Submitted by: maintainer
Diffstat (limited to 'mail')
-rw-r--r--mail/gbuffy/files/patch-imap64
1 files changed, 64 insertions, 0 deletions
diff --git a/mail/gbuffy/files/patch-imap b/mail/gbuffy/files/patch-imap
new file mode 100644
index 00000000000..b92e29d36ad
--- /dev/null
+++ b/mail/gbuffy/files/patch-imap
@@ -0,0 +1,64 @@
+--- imap.c.orig Mon Aug 2 09:41:38 1999
++++ imap.c Sat Jul 15 19:49:45 2000
+@@ -318,12 +318,12 @@
+ static int parse_fetch (BOX_INFO *ibox, CONNECTION *conn, GList *headers,
+ int unseen)
+ {
+- char from[STRING] = "";
+- char subject[STRING] = "";
+- char xface[STRING] = "";
++ char from[LONG_STRING] = "";
++ char subject[LONG_STRING] = "";
++ char xface[LONG_STRING] = "";
+ char buf[LONG_STRING];
+ char seq[8];
+- char *s;
++ char *s, *last_head;
+ int recent = 0;
+
+
+@@ -339,8 +339,7 @@
+ return (-1);
+ }
+
+- if (buf[0] == '*')
+- {
++ if (buf[0] == '*') {
+ s = imap_next_word (buf);
+ if (!isdigit (*s))
+ continue;
+@@ -377,10 +376,12 @@
+ if (!strncasecmp (buf, "From:", 5))
+ {
+ rfc2047_decode (from, buf, sizeof (from));
++ last_head = from;
+ }
+ else if (!strncasecmp (buf, "Subject:", 8))
+ {
+ rfc2047_decode (subject, buf, sizeof (subject));
++ last_head = subject;
+ }
+ else if (!strncasecmp (buf, "X-Face:", 7))
+ {
+@@ -389,6 +390,21 @@
+ strfcpy (xface, s, sizeof (xface));
+ if (strlen (s) > sizeof (xface))
+ g_print ("-E- xface header is larger than buffer\n");
++ last_head = xface;
++ }
++ else if (ISSPACE(buf[0])) {
++ s = buf;
++ while (*s && ISSPACE (*s)) s++;
++ if(strlen(s) + strlen(last_head) + 1 > LONG_STRING)
++ g_print ("-E- a continuing header is larger than buffer\n");
++ else {
++ /* If this is an X-Face line the space don't matter, but if this
++ * is any other header the space is required. */
++ strcat(last_head, " ");
++ strncat(last_head, s, LONG_STRING - strlen(last_head));
++ }
++ } else {
++ last_head = NULL;
+ }
+ }
+ }