chiark / gitweb /
partial tests for kvp.c
[disorder] / lib / syscalls.c
index a84e2eb763f3dee1d1094388d268a826f60db9cd..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) {
@@ -66,6 +67,13 @@ void nonblock(int fd) {
                                        fcntl(fd, F_GETFL)) | O_NONBLOCK));
 }
 
+void blocking(int fd) {
+  mustnotbeminus1("fcntl F_SETFL",
+                 fcntl(fd, F_SETFL,
+                       mustnotbeminus1("fcntl F_GETFL",
+                                       fcntl(fd, F_GETFL)) & ~O_NONBLOCK));
+}
+
 void cloexec(int fd) {
   mustnotbeminus1("fcntl F_SETFD",
                  fcntl(fd, F_SETFD,