/[imapfilter]/imapfilter/action.c
ViewVC logotype

Diff of /imapfilter/action.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by lefcha, Sun Aug 3 16:01:53 2003 UTC revision 1.2.2.5 by lefcha, Tue Jan 20 01:49:44 2004 UTC
# Line 1  Line 1 
1  #include <stdio.h>  #include <stdio.h>
2  #include <stdlib.h>  #include <stdlib.h>
3  #include <string.h>  #include <string.h>
4    #include <sys/types.h>
5  #include <time.h>  #include <time.h>
6    
7  #include "config.h"  #include "config.h"
# Line 191  action_rcopy(char *mbox, char *mesgs, ac Line 192  action_rcopy(char *mbox, char *mesgs, ac
192  {  {
193          int r, ta, tf;          int r, ta, tf;
194          char *tok, *m, *mcp, *ndm;          char *tok, *m, *mcp, *ndm;
195          unsigned int n;          char *flags, *date;
196            unsigned int size;
197          char buf[RESPONSE_BUF * 2 + 1];          char buf[RESPONSE_BUF * 2 + 1];
198          char dm[3][MBOX_NAME_LEN];          char dm[3][MBOX_NAME_LEN];
199    
200          *dm[0] = *dm[1] = *dm[2] = '\0';          *dm[0] = *dm[1] = *dm[2] = '\0';
201            flags = date = NULL;
202    
203          if (init_connection(&connaux, destacc->server, destacc->port,          if (init_connection(&connaux, destacc->server, destacc->port,
204                  destacc->ssl))                  destacc->ssl))
# Line 243  action_rcopy(char *mbox, char *mesgs, ac Line 246  action_rcopy(char *mbox, char *mesgs, ac
246          m = mcp = xstrdup(mesgs);          m = mcp = xstrdup(mesgs);
247    
248          xstrncpy(dm[1], destmbox, MBOX_NAME_LEN - 1);          xstrncpy(dm[1], destmbox, MBOX_NAME_LEN - 1);
249            default_variables(mbox, dm[1]);
250          current_date(dm[1]);          current_date(dm[1]);
251    
252          tok = strtok_r(m, " ", &m);          tok = strtok_r(m, " ", &m);
# Line 267  action_rcopy(char *mbox, char *mesgs, ac Line 271  action_rcopy(char *mbox, char *mesgs, ac
271                  }                  }
272                  xstrncpy(dm[0], dm[2], MBOX_NAME_LEN - 1);                  xstrncpy(dm[0], dm[2], MBOX_NAME_LEN - 1);
273    
274                  fetchsize_response(&connpri, &n,                  fetchfast_response(&connpri, &flags, &date, &size,
275                      imap_fetch(&connpri, tok, "RFC822.SIZE"));                      imap_fetch(&connpri, tok, "FAST"));
276    
277                  ta = imap_append(&connaux, ndm, n);                  ta = imap_append(&connaux, ndm, flags, date, size);
278    
279                    xfree(flags);
280                    xfree(date);
281    
282                  fetch_response(&connpri, 0, 1, NULL);                  fetch_response(&connpri, 0, 1, NULL);
283                  tf = imap_fetch(&connpri, tok, "RFC822.HEADER");                  tf = imap_fetch(&connpri, tok, options & OPTION_PEEK ?
284                        "BODY.PEEK[HEADER]" : "BODY[HEADER]");
285                  do {                  do {
286                          r = fetch_response(&connpri, tf, 0, buf);                          r = fetch_response(&connpri, tf, 0, buf);
287                          socket_write(&connaux, buf);                          socket_write(&connaux, buf);
# Line 282  action_rcopy(char *mbox, char *mesgs, ac Line 290  action_rcopy(char *mbox, char *mesgs, ac
290                  socket_write(&connaux, "\r\n");                  socket_write(&connaux, "\r\n");
291    
292                  fetch_response(&connpri, 0, 1, NULL);                  fetch_response(&connpri, 0, 1, NULL);
293                  tf = imap_fetch(&connpri, tok, "BODY[TEXT]");                  tf = imap_fetch(&connpri, tok, options & OPTION_PEEK ?
294                        "BODY.PEEK[TEXT]" : "BODY[TEXT]");
295                  do {                  do {
296                          r = fetch_response(&connpri, tf, 0, buf);                          r = fetch_response(&connpri, tf, 0, buf);
297                          if (r != RESPONSE_NULLBODY)                          if (r != RESPONSE_NULLBODY)
# Line 399  action_list(char *mesgs, char *args) Line 408  action_list(char *mesgs, char *args)
408    
409          m = mcp = xstrdup(mesgs);          m = mcp = xstrdup(mesgs);
410    
411          snprintf(s, ARGS_LEN + 27 - 1, "BODY.PEEK[HEADER.FIELDS (%s)]", args);          snprintf(s, ARGS_LEN + 27 - 1, options & OPTION_PEEK ?
412                "BODY.PEEK[HEADER.FIELDS (%s)]" :
413                "BODY[HEADER.FIELDS (%s)]", args);
414    
415          tok = strtok_r(m, " ", &m);          tok = strtok_r(m, " ", &m);
416          while (tok != NULL) {          while (tok != NULL) {
# Line 580  message_date(char *mesg, char *destmbox) Line 591  message_date(char *mesg, char *destmbox)
591          substitute_date(destmbox);          substitute_date(destmbox);
592    
593          fetch_response(&connpri, 0, 1, NULL);          fetch_response(&connpri, 0, 1, NULL);
594          t = imap_fetch(&connpri, mesg, "BODY.PEEK[HEADER.FIELDS (DATE)]");          t = imap_fetch(&connpri, mesg, options & OPTION_PEEK ?
595                "BODY.PEEK[HEADER.FIELDS (DATE)]" :
596                "BODY[HEADER.FIELDS (DATE)]");
597    
598          while (fetch_response(&connpri, t, 0, dbuf) == RESPONSE_NONE);          while (fetch_response(&connpri, t, 0, dbuf) == RESPONSE_NONE);
599    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.2.2.5

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26