-doxygen
[oweals/gnunet.git] / src / transport / gnunet-helper-transport-wlan-dummy.c
index dddd51cb7ecfd90bffc1f0eb5567b698b07c07e5..e6be00a7399c1d9dbb6ca6432c073bee8e8ec5d7 100644 (file)
@@ -119,7 +119,7 @@ send_mac_to_plugin (char *buffer, struct GNUNET_TRANSPORT_WLAN_MacAddress *mac)
  * @param client unused
  * @param hdr inbound message from the FIFO
  */
-static void
+static int
 stdin_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
 {
   struct SendBuffer *write_pout = cls;
@@ -133,7 +133,7 @@ stdin_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
   if ( (GNUNET_MESSAGE_TYPE_WLAN_DATA_TO_HELPER != ntohs (hdr->type)) ||
        (sizeof (struct GNUNET_TRANSPORT_WLAN_RadiotapSendMessage) > sendsize) )
   {
-    fprintf (stderr, "Received malformed message\n");
+    FPRINTF (stderr, "%s", "Received malformed message\n");
     exit (1);
   }
   payload_size = sendsize - sizeof (struct GNUNET_TRANSPORT_WLAN_RadiotapSendMessage);
@@ -154,6 +154,7 @@ stdin_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
          &in[1],
          payload_size);
   write_pout->size += payload_size;
+  return GNUNET_OK;
 }
 
 
@@ -164,7 +165,7 @@ stdin_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
  * @param client unused
  * @param hdr the message we received to copy to the buffer
  */
-static void
+static int
 file_in_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
 {
   struct SendBuffer *write_std = cls;
@@ -178,6 +179,7 @@ file_in_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
   }
   memcpy (write_std->buf + write_std->size, hdr, sendsize);
   write_std->size += sendsize;
+  return GNUNET_OK;
 }
 
 
@@ -222,37 +224,35 @@ main (int argc, char *argv[])
   }
 
   /* make the fifos if needed */
-  if (0 != stat (FIFO_FILE1, &st))
+  umask (0);
+  if ( (GNUNET_OK != GNUNET_DISK_directory_create_for_file (FIFO_FILE1)) ||
+       (GNUNET_OK != GNUNET_DISK_directory_create_for_file (FIFO_FILE2)) )
   {
-    if (0 == stat (FIFO_FILE2, &st))
-    {
-      FPRINTF (stderr, "%s", "FIFO_FILE2 exists, but FIFO_FILE1 not\n");
-      exit (1);
-    }
-    umask (0);
-    erg = mkfifo (FIFO_FILE1, 0666);
-    if (0 != erg)
-    {
-      FPRINTF (stderr, "Error in mkfifo(%s): %s\n", FIFO_FILE1,
-               strerror (errno));
-    }
-    erg = mkfifo (FIFO_FILE2, 0666);
-    if (0 != erg)
+    FPRINTF (stderr, "Failed to create directory for file `%s'\n", FIFO_FILE1);
+    return 1;
+  }
+  if (0 == strcmp (argv[1], "1") )
+  {
+    if (0 != stat (FIFO_FILE1, &st))
     {
-      FPRINTF (stderr, "Error in mkfifo(%s): %s\n", FIFO_FILE2,
-               strerror (errno));
+      erg = mkfifo (FIFO_FILE1, 0666);
+      if ( (0 != erg) && (EEXIST != errno) )
+       FPRINTF (stderr, "Error in mkfifo(%s): %s\n", FIFO_FILE1,
+                strerror (errno));
     }
   }
   else
   {
     if (0 != stat (FIFO_FILE2, &st))
     {
-      FPRINTF (stderr, "%s", "FIFO_FILE1 exists, but FIFO_FILE2 not\n");
-      exit (1);
+       GNUNET_break (0 == (erg = mkfifo (FIFO_FILE2, 0666)));
+      if ( (0 != erg) && (EEXIST != errno) )
+       FPRINTF (stderr, "Error in mkfifo(%s): %s\n", FIFO_FILE2,
+                strerror (errno));
     }
   }
 
-  if (0 != strcmp (argv[1], "1"))
+  if (0 == strcmp (argv[1], "1"))
   {
     first = 1;
     fpin = fopen (FIFO_FILE1, "r");
@@ -261,7 +261,11 @@ main (int argc, char *argv[])
       FPRINTF (stderr, "fopen of read FIFO_FILE1 failed: %s\n", STRERROR (errno));
       goto end;
     }
-    fpout = fopen (FIFO_FILE2, "w");
+    if (NULL == (fpout = fopen (FIFO_FILE2, "w")))
+    {
+      GNUNET_break (0 == mkfifo (FIFO_FILE2, 0666));
+      fpout = fopen (FIFO_FILE2, "w");
+    }
     if (NULL == fpout)
     {
       FPRINTF (stderr, "fopen of write FIFO_FILE2 failed: %s\n", STRERROR (errno));
@@ -271,7 +275,11 @@ main (int argc, char *argv[])
   else
   {
     first = 0;
-    fpout = fopen (FIFO_FILE1, "w");
+    if (NULL == (fpout = fopen (FIFO_FILE1, "w")))
+    {
+       GNUNET_break (0 == mkfifo (FIFO_FILE1, 0666));
+      fpout = fopen (FIFO_FILE1, "w");
+    }
     if (NULL == fpout)
     {
       FPRINTF (stderr, "fopen of write FIFO_FILE1 failed: %s\n", STRERROR (errno));
@@ -306,7 +314,8 @@ main (int argc, char *argv[])
 
   signal (SIGINT, &sigfunc);
   signal (SIGTERM, &sigfunc);
-
+  signal (GNUNET_TERM_SIG, &sigfunc);
+  
   write_std.size = 0;
   write_std.pos = 0;
   write_pout.size = 0;