4 * Implements the FETCH command in IMAP.
5 * This command is way too convoluted. Marc Crispin is a fscking idiot.
18 #include <sys/types.h>
27 #include "sysdep_decls.h"
28 #include "citserver.h"
31 #include "dynloader.h"
38 #include "internet_addressing.h"
39 #include "serv_imap.h"
40 #include "imap_tools.h"
41 #include "imap_fetch.h"
45 void imap_do_fetch(int lo, int hi, char *items) {
52 * This function is called by the main command loop.
54 void imap_fetch(int num_parms, char *parms[]) {
57 char lostr[1024], histr[1024], items[1024];
61 cprintf("%s BAD invalid parameters\r\n", parms[0]);
65 extract_token(lostr, parms[2], 0, ':');
67 extract_token(histr, parms[2], 1, ':');
70 if ( (lo < 1) || (hi < 1) || (lo > hi) || (hi > IMAP->num_msgs) ) {
71 cprintf("%s BAD invalid sequence numbers %d:%d\r\n",
77 for (i=3; i<num_parms; ++i) {
78 strcat(items, parms[i]);
79 if (i < (num_parms-1)) strcat(items, " ");
82 imap_do_fetch(lo, hi, items);
83 cprintf("%s OK FETCH completed\r\n", parms[0]);