From 8bb67afe38e216185a23b7cf2e7996c68b5d8e9e Mon Sep 17 00:00:00 2001 Message-Id: <8bb67afe38e216185a23b7cf2e7996c68b5d8e9e.1714719406.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sat, 10 Nov 2007 11:40:28 +0000 Subject: [PATCH] log bad closes Organization: Straylight/Edgeware From: Richard Kettlewell --- lib/syscalls.c | 5 +++-- lib/syscalls.h | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/syscalls.c b/lib/syscalls.c index f05b644..66c3d47 100644 --- a/lib/syscalls.c +++ b/lib/syscalls.c @@ -47,8 +47,9 @@ pid_t xfork(void) { return pid; } -void xclose(int fd) { - mustnotbeminus1("close", close(fd)); +void xclose_guts(const char *path, int line, int fd) { + if(close(fd) < 0) + fatal(errno, "%s:%d: close %d", path, line, fd); } void xdup2(int fd1, int fd2) { diff --git a/lib/syscalls.h b/lib/syscalls.h index 296084d..4f3d780 100644 --- a/lib/syscalls.h +++ b/lib/syscalls.h @@ -34,7 +34,8 @@ struct timezone; #include "types.h" pid_t xfork(void); -void xclose(int); +void xclose_guts(const char *, int, int); +#define xclose(fd) xclose_guts(__FILE__, __LINE__, fd) void xdup2(int, int); void xpipe(int *); int xfcntl(int, int, long); -- [mdw]