chiark / gitweb /
log bad closes
authorRichard Kettlewell <rjk@greenend.org.uk>
Sat, 10 Nov 2007 11:40:28 +0000 (11:40 +0000)
committerRichard Kettlewell <rjk@greenend.org.uk>
Sat, 10 Nov 2007 11:40:28 +0000 (11:40 +0000)
lib/syscalls.c
lib/syscalls.h

index f05b644c37f825daf6a77c0ff895878c0015ed17..66c3d4760ae50853ce440717687460ac25711ebc 100644 (file)
@@ -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) {
index 296084d79b4b510a6f41377e90541108916b4d8b..4f3d780df94b9abef1df831bbeaac0fdacacef99 100644 (file)
@@ -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);