aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2022-02-03 18:51:06 +0000
committerEd Maste <emaste@FreeBSD.org>2022-11-18 20:57:45 +0000
commit166551aa4da5705fa7d58c7aaefbcc472e5cdd03 (patch)
treea8bd3d3b9b754667f63f047b7ef96c4abe92b988
parente5c0e6d7810cbfc57b80f123ca48b485bdcd48d1 (diff)
downloadsrc-166551aa4da5705fa7d58c7aaefbcc472e5cdd03.tar.gz
src-166551aa4da5705fa7d58c7aaefbcc472e5cdd03.zip
dma: use canonical getline() loop
getline() returns -1 on erorr or EOF, so use that condition instead of feof() and check that there was no error after the loop exits. Reviewed by: bapt, kevans (both earlier) MFC after: 3 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D34159 (cherry picked from commit d21e71efce3963b068ccaa807a099b591dc220e9) (cherry picked from commit 2e8403e0215868a13e2bdd1c979fc351971b8d91)
-rw-r--r--contrib/dma/mail.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/contrib/dma/mail.c b/contrib/dma/mail.c
index 9e00c22d71db..9641818b8814 100644
--- a/contrib/dma/mail.c
+++ b/contrib/dma/mail.c
@@ -405,10 +405,8 @@ readmail(struct queue *queue, int nodot, int recp_from_header)
if ((ssize_t)error < 0)
return (-1);
- while (!feof(stdin)) {
+ while ((linelen = getline(&line, &linecap, stdin)) > 0) {
newline[0] = '\0';
- if ((linelen = getline(&line, &linecap, stdin)) <= 0)
- break;
if (had_last_line)
errlogx(EX_DATAERR, "bad mail input format:"
" from %s (uid %d) (envelope-from %s)",
@@ -510,8 +508,8 @@ readmail(struct queue *queue, int nodot, int recp_from_header)
}
}
}
-
- ret = 0;
+ if (ferror(stdin) == 0)
+ ret = 0;
fail:
free(line);
return (ret);