diff options
-rw-r--r-- | imbox.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/imbox.c b/imbox.c index 1712615..788f032 100644 --- a/imbox.c +++ b/imbox.c @@ -171,18 +171,24 @@ static char *readLiteral(FILE *imap, const char *line) { int main(int argc, char *argv[]) { const char *host = "imap.fastmail.com"; - const char *port = "993"; + const char *port = "imaps"; const char *mailbox = "INBOX"; - const char *search = "SUBJECT \"[PATCH\""; + const char *subject = "[PATCH"; + const char *from = NULL; + const char *to = NULL; + const char *cc = NULL; int rppFlags = 0; int opt; - while (0 < (opt = getopt(argc, argv, "h:m:p:s:vw"))) { + while (0 < (opt = getopt(argc, argv, "C:F:S:T:h:m:p:vw"))) { switch (opt) { + break; case 'C': cc = optarg; + break; case 'F': from = optarg; + break; case 'S': subject = optarg; + break; case 'T': to = optarg; break; case 'h': host = optarg; break; case 'm': mailbox = optarg; break; case 'p': port = optarg; - break; case 's': search = optarg; break; case 'v': verbose = true; break; case 'w': rppFlags |= RPP_STDIN; break; default: return EX_USAGE; @@ -214,6 +220,7 @@ int main(int argc, char *argv[]) { FILE *imap = funopen(client, tlsRead, tlsWrite, NULL, tlsClose); if (!imap) err(EX_SOFTWARE, "funopen"); + setlinebuf(imap); bool login = false; char *uids = NULL; @@ -247,10 +254,12 @@ int main(int argc, char *argv[]) { fprintf(imap, "%s SELECT %s\r\n", Atoms[Select], mailbox); } break; case Select: { - fprintf( - imap, "%s UID SEARCH CHARSET UTF-8 %s\r\n", - Atoms[Search], search - ); + fprintf(imap, "%s UID SEARCH CHARSET UTF-8", Atoms[Search]); + if (subject) fprintf(imap, " SUBJECT \"%s\"", subject); + if (from) fprintf(imap, " FROM \"%s\"", from); + if (to) fprintf(imap, " TO \"%s\"", to); + if (cc) fprintf(imap, " CC \"%s\"", cc); + fprintf(imap, "\r\n"); } break; case Search: { if (!uids) errx(EX_PROTOCOL, "no search response"); |