diff options
Diffstat (limited to 'contrib/dma/dma.c')
-rw-r--r-- | contrib/dma/dma.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/contrib/dma/dma.c b/contrib/dma/dma.c index b553c0fa0eef..72115ae2b55e 100644 --- a/contrib/dma/dma.c +++ b/contrib/dma/dma.c @@ -85,6 +85,7 @@ struct config config = { .mailname = NULL, .masquerade_host = NULL, .masquerade_user = NULL, + .fingerprint = NULL, }; @@ -100,15 +101,14 @@ set_from(struct queue *queue, const char *osender) const char *addr; char *sender; - if (osender) { + if (config.masquerade_user) { + addr = config.masquerade_user; + } else if (osender) { addr = osender; } else if (getenv("EMAIL") != NULL) { addr = getenv("EMAIL"); } else { - if (config.masquerade_user) - addr = config.masquerade_user; - else - addr = username; + addr = username; } if (!strchr(addr, '@')) { @@ -422,9 +422,10 @@ main(int argc, char **argv) { struct sigaction act; char *sender = NULL; + char *own_name = NULL; struct queue queue; int i, ch; - int nodot = 0, showq = 0, queue_only = 0; + int nodot = 0, showq = 0, queue_only = 0, newaliases = 0; int recp_from_header = 0; set_username(); @@ -458,19 +459,17 @@ main(int argc, char **argv) bzero(&queue, sizeof(queue)); LIST_INIT(&queue.queue); - if (strcmp(basename(argv[0]), "mailq") == 0) { + own_name = basename(argv[0]); + + if (strcmp(own_name, "mailq") == 0) { argv++; argc--; showq = 1; if (argc != 0) errx(EX_USAGE, "invalid arguments"); goto skipopts; - } else if (strcmp(argv[0], "newaliases") == 0) { - logident_base = "dma"; - setlogident("%s", logident_base); - - if (read_aliases() != 0) - errx(EX_SOFTWARE, "could not parse aliases file `%s'", config.aliases); - exit(EX_OK); + } else if (strcmp(own_name, "newaliases") == 0) { + newaliases = 1; + goto skipopts; } opterr = 0; @@ -481,7 +480,7 @@ main(int argc, char **argv) if (optarg[0] == 'c' || optarg[0] == 'm') { break; } - /* else FALLTRHOUGH */ + /* Else FALLTHROUGH */ case 'b': /* -bX is being ignored, except for -bp */ if (optarg[0] == 'p') { @@ -491,7 +490,7 @@ main(int argc, char **argv) queue_only = 1; break; } - /* else FALLTRHOUGH */ + /* Else FALLTHROUGH */ case 'D': daemonize = 0; break; @@ -511,7 +510,7 @@ main(int argc, char **argv) /* -oX is being ignored, except for -oi */ if (optarg[0] != 'i') break; - /* else FALLTRHOUGH */ + /* Else FALLTHROUGH */ case 'O': break; case 'i': @@ -545,7 +544,7 @@ main(int argc, char **argv) doqueue = 1; break; } - /* FALLTHROUGH */ + /* Else FALLTHROUGH */ default: fprintf(stderr, "invalid argument: `-%c'\n", optopt); @@ -596,6 +595,9 @@ skipopts: if (read_aliases() != 0) errlog(EX_SOFTWARE, "could not parse aliases file `%s'", config.aliases); + if (newaliases) + return(0); + if ((sender = set_from(&queue, sender)) == NULL) errlog(EX_SOFTWARE, "set_from()"); |