/*
* Output an envelope address (or set of addresses) in the official,
- * convuluted, braindead format. (Note that we can't use this for
+ * convoluted, braindead format. (Note that we can't use this for
* the "From" address because its data may come from a number of different
* fields. But we can use it for "To" and possibly others.
*/
* 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
+ * email client. So we have to fetch the whole message from disk.
*
* if (!strncasecmp(section, "HEADER", 6)) {
* need_body = 0;
/* More gratuitous complexity */
if ((!strcasecmp(cbmaintype, "MESSAGE"))
&& (!strcasecmp(cbsubtype, "RFC822"))) {
- /* FIXME
- A body type of type MESSAGE and subtype RFC822
- contains, immediately after the basic fields, the
- envelope structure, body structure, and size in
- text lines of the encapsulated message.
- */
+ /* FIXME: message/rfc822 also needs to output the envelope structure,
+ * body structure, and line count of the encapsulated message. Fortunately
+ * there are not yet any clients depending on this, so we can get away
+ * with not implementing it for now.
+ */
}
/* MD5 value of body part; we can get away with NIL'ing this */
char **patterns;
int return_subscribed = 0;
int return_children = 0;
- int return_metadata = 0; /* FIXME obsolete remove this */
int i = 0;
int match = 0;
patterns = (char **) data_for_callback[3];
return_subscribed = (int) data_for_callback[4];
return_children = (int) data_for_callback[5];
- return_metadata = (int) data_for_callback[6]; /* FIXME obsolete remove this */
/* Only list rooms to which the user has access!! */
yes_output_this_room = 0;
if (match) {
cprintf("* %s (%s) \"/\" ", verb, return_options);
imap_strout(buf);
-
- if (return_metadata) {
- cprintf(" (METADATA ())"); /* FIXME obsolete remove this */
- }
-
cprintf("\r\n");
}
}
int subscribed_rooms_only = 0;
char verb[16];
int i, j, paren_nest;
- char *data_for_callback[7];
+ char *data_for_callback[6];
int num_patterns = 1;
char *patterns[MAX_PATTERNS];
int selection_left = (-1);
int extended_list_in_use = 0;
int return_subscribed = 0;
int return_children = 0;
- int return_metadata = 0; /* FIXME obsolete remove this */
- int select_metadata_left = (-1); /* FIXME obsolete remove this */
- int select_metadata_right = (-1); /* FIXME obsolete remove this */
- int select_metadata_nest = 0; /* FIXME obsolete remove this */
if (num_parms < 4) {
cprintf("%s BAD arguments invalid\r\n", parms[0]);
}
/*
- * In order to implement draft-ietf-imapext-list-extensions-18
- * ("LIST Command Extensions") we need to:
+ * Partial implementation of LIST-EXTENDED (which will not get used because
+ * we don't advertise it in our capabilities string). Several requirements:
*
- * 1. Extract "selection options"
- * (Extraction: done
- * SUBSCRIBED option: done
- * RECURSIVEMATCH option: not done yet
- * REMOTE: safe to silently ignore)
+ * Extraction of selection options:
+ * SUBSCRIBED option: done
+ * RECURSIVEMATCH option: not done yet
+ * REMOTE: safe to silently ignore
*
- * 2. Extract "return options"
- * (Extraction: done
- * SUBSCRIBED option: done
- * CHILDREN option: done, but needs a non-ugly rewrite)
+ * Extraction of return options:
+ * SUBSCRIBED option: done
+ * CHILDREN option: done, but needs a non-ugly rewrite
*
- * 3. Determine whether there is more than one match pattern (done)
+ * Multiple match patterns: done
*/
/*
for (i=selection_left; i<=selection_right; ++i) {
- /* are we in the middle of a metadata select block? */
- if ((select_metadata_left >= 0) && (select_metadata_right < 0)) {
- select_metadata_nest += haschar(parms[i], '(') - haschar(parms[i], ')') ;
- if (select_metadata_nest == 0) {
- select_metadata_right = i;
- }
- }
-
- else if (!strcasecmp(parms[i], "METADATA")) {
- select_metadata_left = i+1;
- select_metadata_nest = 0;
- }
-
- else if (!strcasecmp(parms[i], "SUBSCRIBED")) {
+ if (!strcasecmp(parms[i], "SUBSCRIBED")) {
subscribed_rooms_only = 1;
}
}
- CtdlLogPrintf(CTDL_DEBUG, "select metadata: %d to %d\n", select_metadata_left, select_metadata_right);
- /* FIXME blah, we have to do something with this */
-
/* The folder root appears immediately after the selection options,
* or in position 2 if no selection options were specified.
*/
return_children = 1;
}
- else if (!strcasecmp(parms[i], "METADATA")) {
- return_metadata = 1;
- }
-
if (paren_nest == 0) {
return_right = i; /* found end of patterns */
i = num_parms + 1; /* break out of the loop */
data_for_callback[3] = (char *) patterns;
data_for_callback[4] = (char *) return_subscribed;
data_for_callback[5] = (char *) return_children;
- data_for_callback[6] = (char *) return_metadata; /* FIXME obsolete remove this */
/* The non-extended LIST command is required to treat an empty
* ("" string) mailbox name argument as a special request to return the