chiark / gitweb /
Low level playlist database operations: read, createwrite, list, delete.
[disorder] / lib / syscalls.c
index ddfcb463beb73c178a6b7439d688e1380c4af5d1..2d0245d5e3e05a46d99078bdefc74166caf03633 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004, 2005 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
  * USA
  */
 
-#include <config.h>
+#include "common.h"
 
 #include <unistd.h>
 #include <errno.h>
@@ -27,8 +27,6 @@
 #include <sys/socket.h>
 #include <sys/time.h>
 #include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
 
 #include "syscalls.h"
 #include "log.h"
@@ -47,8 +45,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 +65,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,
@@ -148,4 +154,3 @@ c-basic-offset:2
 comment-column:40
 End:
 */
-/* arch-tag:0be4384b4081d464d1a2fad746469d3d */