diff options
author | alex <alex@FreeBSD.org> | 2000-07-16 21:28:54 +0800 |
---|---|---|
committer | alex <alex@FreeBSD.org> | 2000-07-16 21:28:54 +0800 |
commit | a78bae58807b2ab3238d2a6b02b379f66036ac7c (patch) | |
tree | 646428c940d26c6febf2d8984c0301c412e47476 /mail | |
parent | 7e30d3ec22c799cbba95eb4de6b4e584c4b1c0d8 (diff) | |
download | freebsd-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-imap | 64 |
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; + } + } + } |