124 |
*/ |
*/ |
125 |
int logout(int *sock) |
int logout(int *sock) |
126 |
{ |
{ |
127 |
return server_response(sock, imap_logout(sock)); |
return logout_response(sock, imap_logout(sock)); |
128 |
} |
} |
129 |
|
|
130 |
|
|
433 |
|
|
434 |
m = mcp = convert_messages(mesgs); |
m = mcp = convert_messages(mesgs); |
435 |
|
|
436 |
while ((tok = strsep(&m, " "))) |
tok = strtok_r(m, " ", &m); |
437 |
|
while (tok) { |
438 |
server_response(&sockpri, imap_store(&sockpri, tok, |
server_response(&sockpri, imap_store(&sockpri, tok, |
439 |
STORE_FLAG_ADD, "\\Deleted")); |
STORE_FLAG_ADD, "\\Deleted")); |
440 |
|
|
441 |
|
tok = strtok_r(NULL, " ", &m); |
442 |
|
} |
443 |
|
|
444 |
if (options & OPTION_EXPUNGE) |
if (options & OPTION_EXPUNGE) |
445 |
server_response(&sockpri, imap_expunge(&sockpri)); |
server_response(&sockpri, imap_expunge(&sockpri)); |
446 |
|
|
462 |
|
|
463 |
m = mcp = convert_messages(mesgs); |
m = mcp = convert_messages(mesgs); |
464 |
|
|
465 |
while ((tok = strsep(&m, " "))) { |
tok = strtok_r(m, " ", &m); |
466 |
|
while (tok) { |
467 |
if ((r = copy_response(&sockpri, |
if ((r = copy_response(&sockpri, |
468 |
imap_copy(&sockpri, tok, destmbox))) == |
imap_copy(&sockpri, tok, destmbox))) == |
469 |
RESPONSE_TRYCREATE) |
RESPONSE_TRYCREATE) |
474 |
r = copy_response(&sockpri, |
r = copy_response(&sockpri, |
475 |
imap_copy(&sockpri, tok, destmbox)); |
imap_copy(&sockpri, tok, destmbox)); |
476 |
} |
} |
477 |
|
tok = strtok_r(NULL, " ", &m); |
478 |
} |
} |
479 |
|
|
480 |
xfree(mcp); |
xfree(mcp); |
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, at, ft; |
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)) |
548 |
} |
} |
549 |
m = mcp = xstrdup(mesgs); |
m = mcp = xstrdup(mesgs); |
550 |
|
|
551 |
while ((tok = strsep(&m, " "))) { |
tok = strtok_r(m, " ", &m); |
552 |
|
while (tok) { |
553 |
fetchsize_response(&sockpri, &n, |
fetchsize_response(&sockpri, &n, |
554 |
imap_fetch(&sockpri, tok, "RFC822.SIZE")); |
imap_fetch(&sockpri, tok, "RFC822.SIZE")); |
555 |
|
|
556 |
at = imap_append(&sockaux, ndm, n); |
ta = imap_append(&sockaux, ndm, n); |
557 |
|
|
558 |
fetch_response(&sockpri, 1, NULL, 0); |
fetch_response(&sockpri, 0, 1, NULL); |
559 |
ft = imap_fetch(&sockpri, tok, "RFC822.HEADER"); |
tf = imap_fetch(&sockpri, tok, "RFC822.HEADER"); |
560 |
do { |
do { |
561 |
r = fetch_response(&sockpri, 0, buf, ft); |
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, 0); |
fetch_response(&sockpri, 0, 1, NULL); |
568 |
ft = imap_fetch(&sockpri, tok, "BODY[TEXT]"); |
tf = imap_fetch(&sockpri, tok, "BODY[TEXT]"); |
569 |
do { |
do { |
570 |
r = fetch_response(&sockpri, 0, buf, ft); |
r = fetch_response(&sockpri, tf, 0, buf); |
571 |
socket_write(&sockaux, buf); |
if (r != -3) |
572 |
|
socket_write(&sockaux, buf); |
573 |
} while (r == RESPONSE_NONE); |
} while (r == RESPONSE_NONE); |
574 |
|
|
575 |
socket_write(&sockaux, "\r\n\r\n"); |
if (r != -3) |
576 |
|
socket_write(&sockaux, "\r\n\r\n"); |
577 |
|
else |
578 |
|
socket_write(&sockaux, "\r\n"); |
579 |
|
|
580 |
append_response(&sockaux, at); |
append_response(&sockaux, ta); |
581 |
|
|
582 |
|
tok = strtok_r(NULL, " ", &m); |
583 |
} |
} |
584 |
|
|
585 |
logout(&sockaux); |
logout(&sockaux); |
645 |
|
|
646 |
m = mcp = convert_messages(mesgs); |
m = mcp = convert_messages(mesgs); |
647 |
|
|
648 |
while ((tok = strsep(&m, " "))) |
tok = strtok_r(m, " ", &m); |
649 |
|
while (tok) { |
650 |
server_response(&sockpri, imap_store(&sockpri, tok, t, s)); |
server_response(&sockpri, imap_store(&sockpri, tok, t, s)); |
651 |
|
|
652 |
|
tok = strtok_r(NULL, " ", &m); |
653 |
|
} |
654 |
|
|
655 |
if (options & OPTION_EXPUNGE) |
if (options & OPTION_EXPUNGE) |
656 |
server_response(&sockpri, imap_expunge(&sockpri)); |
server_response(&sockpri, imap_expunge(&sockpri)); |
657 |
|
|
677 |
|
|
678 |
snprintf(s, ARGS_LEN + 27 - 1, "BODY.PEEK[HEADER.FIELDS (%s)]", args); |
snprintf(s, ARGS_LEN + 27 - 1, "BODY.PEEK[HEADER.FIELDS (%s)]", args); |
679 |
|
|
680 |
while ((tok = strsep(&m, " "))) { |
tok = strtok_r(m, " ", &m); |
681 |
|
while (tok) { |
682 |
/* Reset internal fetch counter. */ |
/* Reset internal fetch counter. */ |
683 |
fetch_response(&sockpri, 1, NULL, 0); |
fetch_response(&sockpri, 0, 1, NULL); |
684 |
t = imap_fetch(&sockpri, tok, s); |
t = imap_fetch(&sockpri, tok, s); |
685 |
do { |
do |
686 |
r = fetch_response(&sockpri, 0, hdrs, t); |
r = fetch_response(&sockpri, t, 0, hdrs); |
687 |
|
while (r == RESPONSE_NONE); |
688 |
|
|
689 |
|
if (*hdrs) { |
690 |
|
if (options & OPTION_HEADERS) |
691 |
|
info("%s\n", hdrs); |
692 |
|
log_info(LOG_WRITE, hdrs); |
693 |
|
} else { |
694 |
|
log_info(LOG_WRITE, NULL); |
695 |
|
} |
696 |
|
|
697 |
if (*hdrs) { |
tok = strtok_r(NULL, " ", &m); |
|
if (options & OPTION_HEADERS) |
|
|
info("%s\n", hdrs); |
|
|
log_info(LOG_WRITE, hdrs); |
|
|
} else { |
|
|
log_info(LOG_WRITE, NULL); |
|
|
} |
|
|
} while (r == RESPONSE_NONE); |
|
698 |
} |
} |
699 |
|
|
700 |
xfree(mcp); |
xfree(mcp); |
727 |
*/ |
*/ |
728 |
char *convert_messages(char *mesgs) |
char *convert_messages(char *mesgs) |
729 |
{ |
{ |
730 |
unsigned int maxlen; |
int maxlen; |
731 |
unsigned int start, end, tmp; |
unsigned int start, end, tmp; |
732 |
char *c, *cp, *tail; |
char *c, *cp, *tail; |
733 |
|
|