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" |
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)) |
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); |
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); |
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) |
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) { |
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 |
|
|