From: epg <> Date: Thu, 30 Mar 2006 02:09:04 +0000 (+0000) Subject: Define and use try_unlink macro instead of save_errno(unlink) all over X-Git-Url: https://diplodocus.org/git/mdeliver/commitdiff_plain/e497634c7431527c093d230a8464cac4c54d2080?ds=inline Define and use try_unlink macro instead of save_errno(unlink) all over the place. (_err): Don't use the wrong errno if some printing fails. --- diff --git a/mdeliver.c b/mdeliver.c index 4768c8a..44e7e16 100644 --- a/mdeliver.c +++ b/mdeliver.c @@ -53,6 +53,7 @@ op; \ errno = olderrno; \ } +#define try_unlink(fn) save_errno( unlink(fn) ) static char ident[] = "$Id$"; @@ -63,6 +64,7 @@ static void _err(bool want_strerror, int lineno, char *format, ...) { va_list ap; + int olderrno = errno; fprintf(stderr, "mdeliver:%d:", lineno); @@ -71,10 +73,10 @@ _err(bool want_strerror, int lineno, char *format, ...) va_end(ap); if (want_strerror) { - perror(""); - } else { - fputs("\n", stderr); + fputs(": ", stderr); + fputs(strerror(olderrno), stderr); } + fputs("\n", stderr); exit(EX_TEMPFAIL); } @@ -186,7 +188,7 @@ strip_from(int fd, char *buf, char *fn) */ r = read(0, buf, 5); if (r != 5) { - save_errno( unlink(fn) ); + try_unlink(fn); err("read(0, 5)"); } @@ -199,12 +201,12 @@ strip_from(int fd, char *buf, char *fn) } if (r == -1) { - save_errno( unlink(fn) ); + try_unlink(fn); err("read(0, 1)"); } } else { if (full_write(fd, buf, r) != r) { - save_errno( unlink(fn) ); + try_unlink(fn); err("write(%s)", fn); } } @@ -226,23 +228,23 @@ copy_file(int infd, int outfd, char *buf, size_t bufsize, char *fn) while ((r = read(infd, buf, bufsize)) > 0 || (r == -1 && errno == EINTR)) { if (full_write(outfd, buf, r) != r) { - save_errno( unlink(fn) ); + try_unlink(fn); err("write(%s)", fn); } } if (r == -1) { - save_errno( unlink(fn) ); + try_unlink(fn); err("read(%d, %d)", infd, bufsize); } if (fsync(outfd) < 0) { - save_errno( unlink(fn) ); + try_unlink(fn); err("fsync(%s)", fn); } if (close(outfd) < 0) { - save_errno( unlink(fn) ); + try_unlink(fn); err("close(%s)", fn); } } @@ -277,13 +279,13 @@ deliver(char *maildir, char *sub, char *newfn) buf = getenv("RPLINE"); len = strlen(buf); if (full_write(fd, buf, len) != len) { - save_errno( unlink(fn) ); + try_unlink(fn); err("write(%s)", fn); } buf = getenv("DTLINE"); len = strlen(buf); if (full_write(fd, buf, len) != len) { - save_errno( unlink(fn) ); + try_unlink(fn); err("write(%s)", fn); } } @@ -297,10 +299,10 @@ deliver(char *maildir, char *sub, char *newfn) memcpy(newfn, sub, 3); if (link(fn, newfn) != 0) { - save_errno( unlink(fn) ); + try_unlink(fn); err("link(%s, %s)", fn, newfn); } - save_errno( unlink(fn) ); + try_unlink(fn); } /* Run a program to process the new message. */