commit deafb383c5bc4378359df3a1b905b4067fc2ad8a from: Martijn van Duren date: Fri Mar 29 10:00:57 2019 UTC Simplify code for selecting blacklists commit - 5468729e9a83aa7ec3136730765fdf855273f6f4 commit + deafb383c5bc4378359df3a1b905b4067fc2ad8a blob - d5d63b0a08909047713afd8a3992034535934660 blob + 81484202cbdaaaf4755ed6bd4bfc4ec4dd8a8732 --- main.c +++ main.c @@ -56,28 +56,13 @@ int main(int argc, char *argv[]) { int ch; - size_t i; - char *line = NULL; - size_t linesize = 0; - ssize_t linelen; - char *msgid, *token, *ip; - const char *errstr; - int lookup; + int i; if (pledge("stdio dns", NULL) == -1) err(1, "pledge"); - while ((ch = getopt(argc, argv, "b:m")) != -1) { + while ((ch = getopt(argc, argv, "m")) != -1) { switch (ch) { - case 'b': - blacklists = reallocarray(blacklists, nblacklists + 1, - sizeof(*blacklists)); - if (blacklists == NULL) - err(1, NULL); - if ((blacklists[nblacklists] = strdup(optarg)) == NULL) - err(1, NULL); - nblacklists++; - break; case 'm': markspam = 1; break; @@ -86,11 +71,19 @@ main(int argc, char *argv[]) } } + nblacklists = argc - optind; + + if ((blacklists = calloc(nblacklists, sizeof(*blacklists))) == NULL) + err(1, NULL); + for (i = 0; i < nblacklists; i++) + blacklists[i] = argv[optind + i]; + if (nblacklists == 0) errx(1, "No blacklist specified"); smtp_register_filter_connect(dnsbl_connect); - smtp_register_filter_dataline(dnsbl_dataline); + if (markspam) + smtp_register_filter_dataline(dnsbl_dataline); smtp_in_register_report_disconnect(dnsbl_disconnect); smtp_run(); @@ -200,7 +193,8 @@ dnsbl_resolve(struct asr_result *result, void *arg) return; } smtp_filter_proceed(session->reqid, session->token); - dnsbl_session_free(session); + if (!markspam) + dnsbl_session_free(session); } void @@ -274,7 +268,7 @@ dnsbl_session_cmp(struct dnsbl_session *s1, struct dns __dead void usage(void) { - fprintf(stderr, "usage: %s [-b blacklist]\n", + fprintf(stderr, "usage: %s [-m] blacklist [...]\n", getprogname()); exit(1); }