daemon/Win32: Add contributed test script to test daemon using Wine.
[libguestfs.git] / daemon / proto.c
index c22bbee..2231037 100644 (file)
 #include <string.h>
 #include <unistd.h>
 #include <errno.h>
-#include <ctype.h>
 #include <sys/param.h>         /* defines MIN */
+#include <sys/select.h>
 #include <rpc/types.h>
 #include <rpc/xdr.h>
 
+#include "c-ctype.h"
 #include "ignore-value.h"
 
 #include "daemon.h"
@@ -63,16 +64,16 @@ main_loop (int _sock)
 
     /* Read the length word. */
     if (xread (sock, lenbuf, 4) == -1)
-      exit (1);
+      exit (EXIT_FAILURE);
 
     xdrmem_create (&xdr, lenbuf, 4, XDR_DECODE);
-    xdr_uint32_t (&xdr, &len);
+    xdr_u_int (&xdr, &len);
     xdr_destroy (&xdr);
 
     if (len > GUESTFS_MESSAGE_MAX) {
       fprintf (stderr, "guestfsd: incoming message is too long (%u bytes)\n",
                len);
-      exit (1);
+      exit (EXIT_FAILURE);
     }
 
     buf = malloc (len);
@@ -82,7 +83,7 @@ main_loop (int _sock)
     }
 
     if (xread (sock, buf, len) == -1)
-      exit (1);
+      exit (EXIT_FAILURE);
 
 #ifdef ENABLE_PACKET_DUMP
     if (verbose) {
@@ -96,7 +97,7 @@ main_loop (int _sock)
           printf ("   ");
         printf ("|");
         for (j = i; j < MIN (i+16, len); ++j)
-          if (isprint (buf[j]))
+          if (c_isprint (buf[j]))
             printf ("%c", buf[j]);
           else
             printf (".");
@@ -115,7 +116,7 @@ main_loop (int _sock)
     xdrmem_create (&xdr, buf, len, XDR_DECODE);
     if (!xdr_guestfs_message_header (&xdr, &hdr)) {
       fprintf (stderr, "guestfsd: could not decode message header\n");
-      exit (1);
+      exit (EXIT_FAILURE);
     }
 
     /* Check the version etc. */
@@ -218,30 +219,30 @@ send_error (const char *msg)
 
   if (!xdr_guestfs_message_header (&xdr, &hdr)) {
     fprintf (stderr, "guestfsd: failed to encode error message header\n");
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 
   err.error_message = (char *) msg;
 
   if (!xdr_guestfs_message_error (&xdr, &err)) {
     fprintf (stderr, "guestfsd: failed to encode error message body\n");
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 
   len = xdr_getpos (&xdr);
   xdr_destroy (&xdr);
 
   xdrmem_create (&xdr, lenbuf, 4, XDR_ENCODE);
-  xdr_uint32_t (&xdr, &len);
+  xdr_u_int (&xdr, &len);
   xdr_destroy (&xdr);
 
   if (xwrite (sock, lenbuf, 4) == -1) {
     fprintf (stderr, "xwrite failed\n");
-    exit (1);
+    exit (EXIT_FAILURE);
   }
   if (xwrite (sock, buf, len) == -1) {
     fprintf (stderr, "xwrite failed\n");
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 }
 
@@ -265,7 +266,7 @@ reply (xdrproc_t xdrp, char *ret)
 
   if (!xdr_guestfs_message_header (&xdr, &hdr)) {
     fprintf (stderr, "guestfsd: failed to encode reply header\n");
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 
   if (xdrp) {
@@ -284,16 +285,16 @@ reply (xdrproc_t xdrp, char *ret)
   xdr_destroy (&xdr);
 
   xdrmem_create (&xdr, lenbuf, 4, XDR_ENCODE);
-  xdr_uint32_t (&xdr, &len);
+  xdr_u_int (&xdr, &len);
   xdr_destroy (&xdr);
 
   if (xwrite (sock, lenbuf, 4) == -1) {
     fprintf (stderr, "xwrite failed\n");
-    exit (1);
+    exit (EXIT_FAILURE);
   }
   if (xwrite (sock, buf, len) == -1) {
     fprintf (stderr, "xwrite failed\n");
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 }
 
@@ -311,10 +312,10 @@ receive_file (receive_cb cb, void *opaque)
   for (;;) {
     /* Read the length word. */
     if (xread (sock, lenbuf, 4) == -1)
-      exit (1);
+      exit (EXIT_FAILURE);
 
     xdrmem_create (&xdr, lenbuf, 4, XDR_DECODE);
-    xdr_uint32_t (&xdr, &len);
+    xdr_u_int (&xdr, &len);
     xdr_destroy (&xdr);
 
     if (len == GUESTFS_CANCEL_FLAG)
@@ -323,7 +324,7 @@ receive_file (receive_cb cb, void *opaque)
     if (len > GUESTFS_MESSAGE_MAX) {
       fprintf (stderr, "guestfsd: incoming message is too long (%u bytes)\n",
                len);
-      exit (1);
+      exit (EXIT_FAILURE);
     }
 
     buf = malloc (len);
@@ -333,7 +334,7 @@ receive_file (receive_cb cb, void *opaque)
     }
 
     if (xread (sock, buf, len) == -1)
-      exit (1);
+      exit (EXIT_FAILURE);
 
     xdrmem_create (&xdr, buf, len, XDR_DECODE);
     memset (&chunk, 0, sizeof chunk);
@@ -379,7 +380,7 @@ cancel_receive (void)
   uint32_t flag = GUESTFS_CANCEL_FLAG;
 
   xdrmem_create (&xdr, fbuf, sizeof fbuf, XDR_ENCODE);
-  xdr_uint32_t (&xdr, &flag);
+  xdr_u_int (&xdr, &flag);
   xdr_destroy (&xdr);
 
   if (xwrite (sock, fbuf, sizeof fbuf) == -1) {
@@ -454,7 +455,7 @@ check_for_library_cancellation (void)
     return 0;
 
   xdrmem_create (&xdr, buf, sizeof buf, XDR_DECODE);
-  xdr_uint32_t (&xdr, &flag);
+  xdr_u_int (&xdr, &flag);
   xdr_destroy (&xdr);
 
   if (flag != GUESTFS_CANCEL_FLAG) {
@@ -496,14 +497,14 @@ send_chunk (const guestfs_chunk *chunk)
   xdr_destroy (&xdr);
 
   xdrmem_create (&xdr, lenbuf, 4, XDR_ENCODE);
-  xdr_uint32_t (&xdr, &len);
+  xdr_u_int (&xdr, &len);
   xdr_destroy (&xdr);
 
   int err = (xwrite (sock, lenbuf, 4) == 0
              && xwrite (sock, buf, len) == 0 ? 0 : -1);
   if (err) {
     fprintf (stderr, "send_chunk: write failed\n");
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 
   return err;