if (!strncasecmp(which_fields, "HEADER.FIELDS.NOT", 17))
headers_not = 1;
- for (i=0; !IsEmptyStr(&which_fields[i]); ++i) {
+ for (i=0; which_fields[i]; ++i) {
if (which_fields[i]=='(')
strcpy(which_fields, &which_fields[i+1]);
}
- for (i=0; !IsEmptyStr(&which_fields[i]); ++i) {
+ for (i=0; which_fields[i]; ++i) {
if (which_fields[i]==')') {
which_fields[i] = 0;
break;
lprintf(CTDL_DEBUG, "Section is: %s%s\n",
section,
IsEmptyStr(section) ? "(empty)" : "");
- if (!strncasecmp(section, "HEADER", 6)) {
- need_body = 0;
- }
+
+ /*
+ * We used to have this great optimization in place that would avoid
+ * fetching the entire RFC822 message from disk if the client was only
+ * asking for the headers. Unfortunately, fetching only the Citadel
+ * headers omits "Content-type:" and this behavior breaks the iPhone
+ * email client. So we have to fetch the whole message from disk. The
+ *
+ * if (!strncasecmp(section, "HEADER", 6)) {
+ * need_body = 0;
+ * }
+ *
+ */
/* Burn the cache if we don't have the same section of the
* same message again.
imap_strout(subtype);
/* body language */
- cprintf(" NIL");
+ /* cprintf(" NIL"); We thought we needed this at one point, but maybe we don't... */
cprintf(")");
}
}
cprintf("(");
- imap_strout(cbmaintype);
+ imap_strout(cbmaintype); /* body type */
cprintf(" ");
- imap_strout(cbsubtype);
+ imap_strout(cbsubtype); /* body subtype */
cprintf(" ");
+ cprintf("("); /* begin body parameter list */
+
+ if (name != NULL) if (!IsEmptyStr(name)) {
+ cprintf("\"NAME\" ");
+ imap_strout(name);
+ cprintf(" ");
+ }
+
+ cprintf("\"CHARSET\" ");
if (cbcharset == NULL) {
- cprintf("(\"CHARSET\" \"US-ASCII\"");
+ imap_strout("US-ASCII");
}
- else if (IsEmptyStr(cbcharset)) {
- cprintf("(\"CHARSET\" \"US-ASCII\"");
+ else if (cbcharset[0] == 0) {
+ imap_strout("US-ASCII");
}
else {
- cprintf("(\"CHARSET\" ");
imap_strout(cbcharset);
}
+ cprintf(") "); /* end body parameter list */
- if (name != NULL) if (!IsEmptyStr(name)) {
- cprintf(" \"NAME\" ");
- imap_strout(name);
- }
-
- cprintf(") ");
-
- cprintf("NIL "); /* Body ID */
- cprintf("NIL "); /* Body description */
+ cprintf("NIL "); /* Body ID */
+ cprintf("NIL "); /* Body description */
- if (encoding != NULL) if (!IsEmptyStr(encoding)) have_encoding = 1;
+ if (encoding != NULL) if (encoding[0] != 0) have_encoding = 1;
if (have_encoding) {
imap_strout(encoding);
}
int i;
int nest = 0;
- for (i=0; !IsEmptyStr(&str[i]); ++i) {
+ for (i=0; str[i]; ++i) {
if (str[i]=='(') ++nest;
if (str[i]=='[') ++nest;
if (str[i]=='<') ++nest;
int nest = 0;
int i;
char *start;
+ long initial_len;
/* Convert all whitespace to ordinary space characters. */
- for (i=0; !IsEmptyStr(&items[i]); ++i) {
+ for (i=0; items[i]; ++i) {
if (isspace(items[i])) items[i]=' ';
}