494 |
*/ |
*/ |
495 |
int action_rcopy(char *mesgs, account_t * destacc, char *destmbox, char *args) |
int action_rcopy(char *mesgs, account_t * destacc, char *destmbox, char *args) |
496 |
{ |
{ |
497 |
int r; |
int r, at, ft; |
498 |
char *tok, *m, *mcp, *ndm; |
char *tok, *m, *mcp, *ndm; |
499 |
unsigned int n, t = 0; |
unsigned int n; |
500 |
char buf[RESPONSE_BUF]; |
char buf[RESPONSE_BUF]; |
501 |
|
|
502 |
if (init_connection(&sockaux, destacc->server, destacc->port, |
if (init_connection(&sockaux, destacc->server, destacc->port, |
546 |
fetchsize_response(&sockpri, &n, |
fetchsize_response(&sockpri, &n, |
547 |
imap_fetch(&sockpri, tok, "RFC822.SIZE")); |
imap_fetch(&sockpri, tok, "RFC822.SIZE")); |
548 |
|
|
549 |
t = imap_append(&sockaux, ndm, n); |
at = imap_append(&sockaux, ndm, n); |
550 |
|
|
551 |
fetch_response(&sockpri, 1, NULL, 0); |
fetch_response(&sockpri, 1, NULL, 0); |
552 |
|
ft = imap_fetch(&sockpri, tok, "RFC822.HEADER"); |
553 |
do { |
do { |
554 |
r = fetch_response(&sockpri, 0, buf, imap_fetch(&sockpri, tok, |
r = fetch_response(&sockpri, 0, buf, ft); |
|
"RFC822.HEADER")); |
|
|
|
|
555 |
socket_write(&sockaux, buf); |
socket_write(&sockaux, buf); |
556 |
} while (r == RESPONSE_NONE); |
} while (r == RESPONSE_NONE); |
557 |
|
|
558 |
socket_write(&sockaux, "\r\n"); |
socket_write(&sockaux, "\r\n"); |
559 |
|
|
560 |
fetch_response(&sockpri, 1, NULL, 0); |
fetch_response(&sockpri, 1, NULL, 0); |
561 |
|
ft = imap_fetch(&sockpri, tok, "BODY[TEXT]"); |
562 |
do { |
do { |
563 |
r = fetch_response(&sockpri, 0, buf, imap_fetch(&sockpri, tok, |
r = fetch_response(&sockpri, 0, buf, ft); |
|
"BODY[TEXT]")); |
|
|
|
|
564 |
socket_write(&sockaux, buf); |
socket_write(&sockaux, buf); |
565 |
} while (r == RESPONSE_NONE); |
} while (r == RESPONSE_NONE); |
566 |
|
|
567 |
socket_write(&sockaux, "\r\n\r\n"); |
socket_write(&sockaux, "\r\n\r\n"); |
568 |
|
|
569 |
append_response(&sockaux, t); |
append_response(&sockaux, at); |
570 |
} |
} |
571 |
|
|
572 |
logout(&sockaux); |
logout(&sockaux); |