Make print_timestamped_message into a cross-module function.
[libguestfs.git] / daemon / guestfsd.c
index cd51f44..49aca08 100644 (file)
@@ -41,6 +41,7 @@
 #include <sys/wait.h>
 #include <arpa/inet.h>
 #include <netinet/in.h>
 #include <sys/wait.h>
 #include <arpa/inet.h>
 #include <netinet/in.h>
+#include <errno.h>
 
 #ifdef HAVE_PRINTF_H
 # include <printf.h>
 
 #ifdef HAVE_PRINTF_H
 # include <printf.h>
@@ -543,16 +544,23 @@ add_string (char ***argv, int *size, int *alloc, const char *str)
   return 0;
 }
 
   return 0;
 }
 
-int
+size_t
 count_strings (char *const *argv)
 {
 count_strings (char *const *argv)
 {
-  int argc;
+  size_t argc;
 
   for (argc = 0; argv[argc] != NULL; ++argc)
     ;
   return argc;
 }
 
 
   for (argc = 0; argv[argc] != NULL; ++argc)
     ;
   return argc;
 }
 
+/* http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 */
+int
+is_power_of_2 (unsigned long v)
+{
+  return v && ((v & (v - 1)) == 0);
+}
+
 static int
 compare (const void *vp1, const void *vp2)
 {
 static int
 compare (const void *vp1, const void *vp2)
 {
@@ -758,20 +766,20 @@ commandrvf (char **stdoutput, char **stderror, int flags,
    */
 
   if (pipe (so_fd) == -1 || pipe (se_fd) == -1) {
    */
 
   if (pipe (so_fd) == -1 || pipe (se_fd) == -1) {
-    perror ("pipe");
+    error (0, errno, "pipe");
     abort ();
   }
 
   if (flag_copy_stdin) {
     if (pipe (stdin_fd) == -1) {
     abort ();
   }
 
   if (flag_copy_stdin) {
     if (pipe (stdin_fd) == -1) {
-      perror ("pipe");
+      error (0, errno, "pipe");
       abort ();
     }
   }
 
   pid = fork ();
   if (pid == -1) {
       abort ();
     }
   }
 
   pid = fork ();
   if (pid == -1) {
-    perror ("fork");
+    error (0, errno, "fork");
     abort ();
   }
 
     abort ();
   }
 
@@ -781,9 +789,10 @@ commandrvf (char **stdoutput, char **stderror, int flags,
       dup2 (stdin_fd[0], 0);
       close (stdin_fd[0]);
       close (stdin_fd[1]);
       dup2 (stdin_fd[0], 0);
       close (stdin_fd[0]);
       close (stdin_fd[1]);
-    } else
+    } else {
       /* Set stdin to /dev/null (ignore failure) */
       open ("/dev/null", O_RDONLY);
       /* Set stdin to /dev/null (ignore failure) */
       open ("/dev/null", O_RDONLY);
+    }
     close (so_fd[0]);
     close (se_fd[0]);
     if (!(flags & COMMAND_FLAG_FOLD_STDOUT_ON_STDERR))
     close (so_fd[0]);
     close (se_fd[0]);
     if (!(flags & COMMAND_FLAG_FOLD_STDOUT_ON_STDERR))
@@ -804,7 +813,7 @@ commandrvf (char **stdoutput, char **stderror, int flags,
 
     stdin_pid = fork ();
     if (stdin_pid == -1) {
 
     stdin_pid = fork ();
     if (stdin_pid == -1) {
-      perror ("fork");
+      error (0, errno, "fork");
       abort ();
     }
 
       abort ();
     }