500 |
*/ |
*/ |
501 |
int action_rcopy(char *mesgs, account_t * destacc, char *destmbox, char *args) |
int action_rcopy(char *mesgs, account_t * destacc, char *destmbox, char *args) |
502 |
{ |
{ |
503 |
int r, t; |
int r, ta, tf; |
504 |
char *tok, *m, *mcp, *ndm; |
char *tok, *m, *mcp, *ndm; |
505 |
unsigned int n; |
unsigned int n; |
506 |
char buf[RESPONSE_BUF]; |
char buf[RESPONSE_BUF * 2]; |
507 |
|
|
508 |
if (init_connection(&sockaux, destacc->server, destacc->port, |
if (init_connection(&sockaux, destacc->server, destacc->port, |
509 |
destacc->ssl)) |
destacc->ssl)) |
553 |
fetchsize_response(&sockpri, &n, |
fetchsize_response(&sockpri, &n, |
554 |
imap_fetch(&sockpri, tok, "RFC822.SIZE")); |
imap_fetch(&sockpri, tok, "RFC822.SIZE")); |
555 |
|
|
556 |
t = imap_append(&sockaux, ndm, n); |
ta = imap_append(&sockaux, ndm, n); |
557 |
|
|
558 |
fetch_response(&sockpri, 1, NULL); |
fetch_response(&sockpri, 0, 1, NULL); |
559 |
imap_fetch(&sockpri, tok, "RFC822.HEADER"); |
tf = imap_fetch(&sockpri, tok, "RFC822.HEADER"); |
560 |
do { |
do { |
561 |
r = fetch_response(&sockpri, 0, buf); |
r = fetch_response(&sockpri, tf, 0, buf); |
562 |
socket_write(&sockaux, buf); |
socket_write(&sockaux, buf); |
563 |
} while (r == RESPONSE_NONE); |
} while (r == RESPONSE_NONE); |
564 |
|
|
565 |
socket_write(&sockaux, "\r\n"); |
socket_write(&sockaux, "\r\n"); |
566 |
|
|
567 |
fetch_response(&sockpri, 1, NULL); |
fetch_response(&sockpri, 0, 1, NULL); |
568 |
imap_fetch(&sockpri, tok, "BODY[TEXT]"); |
tf = imap_fetch(&sockpri, tok, "BODY[TEXT]"); |
569 |
do { |
do { |
570 |
r = fetch_response(&sockpri, 0, buf); |
r = fetch_response(&sockpri, tf, 0, buf); |
571 |
socket_write(&sockaux, buf); |
socket_write(&sockaux, buf); |
572 |
} while (r == RESPONSE_NONE); |
} while (r == RESPONSE_NONE); |
573 |
|
|
574 |
socket_write(&sockaux, "\r\n\r\n"); |
socket_write(&sockaux, "\r\n\r\n"); |
575 |
|
|
576 |
append_response(&sockaux, t); |
append_response(&sockaux, ta); |
577 |
|
|
578 |
tok = strtok_r(NULL, " ", &m); |
tok = strtok_r(NULL, " ", &m); |
579 |
} |
} |
661 |
*/ |
*/ |
662 |
int action_list(char *mesgs, char *args) |
int action_list(char *mesgs, char *args) |
663 |
{ |
{ |
664 |
int r; |
int r, t; |
665 |
char *tok, *mcp, *m; |
char *tok, *mcp, *m; |
666 |
char s[ARGS_LEN + 27]; |
char s[ARGS_LEN + 27]; |
667 |
char hdrs[RESPONSE_BUF]; |
char hdrs[RESPONSE_BUF]; |
676 |
tok = strtok_r(m, " ", &m); |
tok = strtok_r(m, " ", &m); |
677 |
while (tok) { |
while (tok) { |
678 |
/* Reset internal fetch counter. */ |
/* Reset internal fetch counter. */ |
679 |
fetch_response(&sockpri, 1, NULL); |
fetch_response(&sockpri, 0, 1, NULL); |
680 |
imap_fetch(&sockpri, tok, s); |
t = imap_fetch(&sockpri, tok, s); |
681 |
do |
do |
682 |
r = fetch_response(&sockpri, 0, hdrs); |
r = fetch_response(&sockpri, t, 0, hdrs); |
683 |
while (r == RESPONSE_NONE); |
while (r == RESPONSE_NONE); |
684 |
|
|
685 |
if (*hdrs) { |
if (*hdrs) { |