struct imap_fetch_part {
- char desired_section[256];
+ char desired_section[SIZ];
FILE *output_fp;
};
}
void imap_fetch_internaldate(struct CtdlMessage *msg) {
- char buf[256];
+ char buf[SIZ];
time_t msgdate;
if (msg->cm_fields['T'] != NULL) {
CtdlRedirectOutput(tmp, -1);
CtdlOutputPreLoadedMsg(msg, msgnum, MT_RFC822, 0, 0, 1);
CtdlRedirectOutput(NULL, -1);
+ if (!is_valid_message(msg)) {
+ lprintf(1, "WARNING: output clobbered the message!\n");
+ }
/*
* Now figure out where the headers/text break is. IMAP considers the
* so we don't have to check for that condition like we do elsewhere.
*/
void imap_fetch_envelope(long msgnum, struct CtdlMessage *msg) {
- char datestringbuf[256];
+ char datestringbuf[SIZ];
time_t msgdate;
-
+ char *fieldptr = NULL;
/* Parse the message date into an IMAP-format date string */
if (msg->cm_fields['T'] != NULL) {
*/
cprintf("ENVELOPE (");
- /* date */
+ /* Date */
imap_strout(datestringbuf);
cprintf(" ");
- /* subject */
+ /* Subject */
imap_strout(msg->cm_fields['U']);
cprintf(" ");
- /* from */
+ /* From */
imap_output_envelope_from(msg);
- /* Sender (always in the RFC822 header) */
- cprintf("NIL ");
+ /* Sender */
+ if (0) {
+ /* FIXME ... check for a *real* Sender: field */
+ }
+ else {
+ imap_output_envelope_from(msg);
+ }
- cprintf("NIL "); /* reply-to */
+ /* Reply-to */
+ if (0) {
+ /* FIXME ... check for a *real* Reply-to: field */
+ }
+ else {
+ imap_output_envelope_from(msg);
+ }
cprintf("NIL "); /* to */
cprintf("NIL "); /* bcc */
- cprintf("NIL "); /* in-reply-to */
-
+ /* In-reply-to */
+ fieldptr = rfc822_fetch_field(msg->cm_fields['M'], "In-reply-to");
+ imap_strout(fieldptr);
+ cprintf(" ");
+ if (fieldptr != NULL) phree(fieldptr);
/* message ID */
imap_strout(msg->cm_fields['I']);
int s;
char setstr[1024], lostr[1024], histr[1024];
int lo, hi;
+ char *actual_range;
+
+ actual_range = range;
+ if (!strcasecmp(range, "ALL")) actual_range = "1:*";
/*
* Clear out the IMAP_FETCHED flags for all messages.
/*
* Now set it for all specified messages.
*/
- num_sets = num_tokens(range, ',');
+ num_sets = num_tokens(actual_range, ',');
for (s=0; s<num_sets; ++s) {
- extract_token(setstr, range, s, ',');
+ extract_token(setstr, actual_range, s, ',');
extract_token(lostr, setstr, 0, ':');
if (num_tokens(setstr, ':') >= 2) {
*/
void imap_fetch(int num_parms, char *parms[]) {
char items[1024];
- char *itemlist[256];
+ char *itemlist[SIZ];
int num_items;
int i;
*/
void imap_uidfetch(int num_parms, char *parms[]) {
char items[1024];
- char *itemlist[256];
+ char *itemlist[SIZ];
int num_items;
int i;
int have_uid_item = 0;