chiark / gitweb /
prefork-interp: break out stabs_same_inode
[chiark-utils.git] / cprogs / prefork-interp.c
index 56e848ad1adcceb8d9f64303d6abd43287a30821..2a7fdc35c54dd8a24b56316abf94c64be1f1b722 100644 (file)
@@ -271,13 +271,14 @@ static void send_request(void) {
   size_t len = 0;
   prepare_message(&len, 0);
 
-  char *m = xmalloc(len + 4);
+  size_t tlen = len + 4;
+  char *m = xmalloc(tlen);
   char *p = m;
   prepare_length(0, &p, len);
   prepare_message(0, &p);
-  assert(p == m + len + 4);
+  assert(p == m + tlen);
 
-  ssize_t sr = fwrite(p, len, 1, call_sock);
+  ssize_t sr = fwrite(m, tlen, 1, call_sock);
   if (sr != 1) diee("write request (buffer)");
 
   if (fflush(call_sock)) diee("write request");
@@ -390,8 +391,7 @@ static void watcher_cb_sockpath(uv_fs_event_t *handle, const char *filename,
       if (errno==EINTR) continue;
       diee("stat socket: %s", socket_path);
     }
-    if (!(now_stab.st_dev == initial_stab.st_dev &&
-         now_stab.st_ino == initial_stab.st_ino))
+    if (!stabs_same_inode(&now_stab, &initial_stab))
       _exit(0);
   }
 }
@@ -446,6 +446,7 @@ void become_setup(int sfd, int fake_pair[2],
 
   int null_0 = open("/dev/null", O_RDONLY);  if (null_0 < 0) diee("open null");
   if (dup2(null_0, 0)) diee("dup2 /dev/null onto stdin");
+  close(null_0);
   if (dup2(2, 1) != 1) die("dup2 stderr onto stdout");
 
   nonblock(sfd);