gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r16636 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r16636 - gnunet/src/transport
Date: Tue, 30 Aug 2011 14:23:34 +0200

Author: wachs
Date: 2011-08-30 14:23:34 +0200 (Tue, 30 Aug 2011)
New Revision: 16636

Modified:
   gnunet/src/transport/test_transport_api.c
   gnunet/src/transport/test_transport_api_reliability.c
   gnunet/src/transport/test_transport_api_unreliability.c
Log:
tests now use GNUNET_OS_check_helper_binary to find helper executables


Modified: gnunet/src/transport/test_transport_api.c
===================================================================
--- gnunet/src/transport/test_transport_api.c   2011-08-30 11:53:22 UTC (rev 
16635)
+++ gnunet/src/transport/test_transport_api.c   2011-08-30 12:23:34 UTC (rev 
16636)
@@ -260,117 +260,6 @@
   return ok;
 }
 
-/**
- * Return the actual path to a file found in the current
- * PATH environment variable.
- *
- * @param binary the name of the file to find
- */
-static char *
-get_path_from_PATH (char *binary)
-{
-  char *path;
-  char *pos;
-  char *end;
-  char *buf;
-  const char *p;
-
-  p = getenv ("PATH");
-  if (p == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("PATH environment variable is unset.\n"));
-    return NULL;
-  }
-  path = GNUNET_strdup (p);     /* because we write on it */
-  buf = GNUNET_malloc (strlen (path) + 20);
-  pos = path;
-
-  while (NULL != (end = strchr (pos, PATH_SEPARATOR)))
-  {
-    *end = '\0';
-    sprintf (buf, "%s/%s", pos, binary);
-    if (GNUNET_DISK_file_test (buf) == GNUNET_YES)
-    {
-      GNUNET_free (path);
-      return buf;
-    }
-    pos = end + 1;
-  }
-  sprintf (buf, "%s/%s", pos, binary);
-  if (GNUNET_DISK_file_test (buf) == GNUNET_YES)
-  {
-    GNUNET_free (path);
-    return buf;
-  }
-  GNUNET_free (buf);
-  GNUNET_free (path);
-  return NULL;
-}
-
-/**
- * Check whether the suid bit is set on a file.
- * Attempts to find the file using the current
- * PATH environment variable as a search path.
- *
- * @param binary the name of the file to check
- *
- * @return GNUNET_YES if the binary is found and
- *         can be run properly, GNUNET_NO otherwise
- */
-static int
-check_gnunet_nat_binary (char *binary)
-{
-  struct stat statbuf;
-  char *p;
-
-#ifdef MINGW
-  SOCKET rawsock;
-#endif
-
-#ifdef MINGW
-  char *binaryexe;
-
-  GNUNET_asprintf (&binaryexe, "%s.exe", binary);
-  p = get_path_from_PATH (binaryexe);
-  free (binaryexe);
-#else
-  p = get_path_from_PATH (binary);
-#endif
-  if (p == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("Could not find binary `%s' in PATH!\n"), binary);
-    return GNUNET_NO;
-  }
-  if (0 != STAT (p, &statbuf))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("stat (%s) failed: %s\n"), p,
-                STRERROR (errno));
-    GNUNET_free (p);
-    return GNUNET_SYSERR;
-  }
-  GNUNET_free (p);
-#ifndef MINGW
-  if ((0 != (statbuf.st_mode & S_ISUID)) && (statbuf.st_uid == 0))
-    return GNUNET_YES;
-  return GNUNET_NO;
-#else
-  rawsock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
-  if (INVALID_SOCKET == rawsock)
-  {
-    DWORD err = GetLastError ();
-
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "socket (AF_INET, SOCK_RAW, IPPROTO_ICMP) have failed! GLE = 
%d\n",
-                err);
-    return GNUNET_NO;           /* not running as administrator */
-  }
-  closesocket (rawsock);
-  return GNUNET_YES;
-#endif
-}
-
 int
 main (int argc, char *argv[])
 {
@@ -388,6 +277,7 @@
   char *backup = pch;
   char *filename = NULL;
   char *dotexe;
+  int nat_res;
 
   /* get executable filename */
   pch = strtok (pch, "/");
@@ -407,27 +297,27 @@
   GNUNET_asprintf (&cfg_file_p2, "%s_peer2.conf", filename);
   GNUNET_free (backup);
 
-  if (strstr (argv[0], "tcp_nat") != NULL)
+  if ((strstr (argv[0], "tcp_nat") != NULL) || (strstr (argv[0], "udp_nat") != 
NULL))
   {
-    if (GNUNET_YES != check_gnunet_nat_binary ("gnunet-nat-server"))
+    nat_res = GNUNET_OS_check_helper_binary ("gnunet-nat-server");
+    if (GNUNET_NO == nat_res)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "`%s' not properly installed, cannot run NAT test!\n",
-                  "gnunet-nat-server");
+          "Cannot run NAT test: `%s' %s \n",
+          "gnunet-nat-server",
+           "SUID not set");
       return 0;
     }
-  }
-  else if (strstr (argv[0], "udp_nat") != NULL)
-  {
-    if (GNUNET_YES != check_gnunet_nat_binary ("gnunet-nat-server"))
+    if (GNUNET_SYSERR ==  nat_res)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "`%s' not properly installed, cannot run NAT test!\n",
-                  "gnunet-nat-server");
+          "Cannot run NAT test: `%s' %s \n",
+          "gnunet-nat-server",
+          "file not found");
       return 0;
     }
-  }
 
+  }
   ret = check ();
 
   GNUNET_free (cfg_file_p1);

Modified: gnunet/src/transport/test_transport_api_reliability.c
===================================================================
--- gnunet/src/transport/test_transport_api_reliability.c       2011-08-30 
11:53:22 UTC (rev 16635)
+++ gnunet/src/transport/test_transport_api_reliability.c       2011-08-30 
12:23:34 UTC (rev 16636)
@@ -398,121 +398,11 @@
   return ok;
 }
 
-/**
- * Return the actual path to a file found in the current
- * PATH environment variable.
- *
- * @param binary the name of the file to find
- */
-static char *
-get_path_from_PATH (char *binary)
-{
-  char *path;
-  char *pos;
-  char *end;
-  char *buf;
-  const char *p;
-
-  p = getenv ("PATH");
-  if (p == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("PATH environment variable is unset.\n"));
-    return NULL;
-  }
-  path = GNUNET_strdup (p);     /* because we write on it */
-  buf = GNUNET_malloc (strlen (path) + 20);
-  pos = path;
-
-  while (NULL != (end = strchr (pos, PATH_SEPARATOR)))
-  {
-    *end = '\0';
-    sprintf (buf, "%s/%s", pos, binary);
-    if (GNUNET_DISK_file_test (buf) == GNUNET_YES)
-    {
-      GNUNET_free (path);
-      return buf;
-    }
-    pos = end + 1;
-  }
-  sprintf (buf, "%s/%s", pos, binary);
-  if (GNUNET_DISK_file_test (buf) == GNUNET_YES)
-  {
-    GNUNET_free (path);
-    return buf;
-  }
-  GNUNET_free (buf);
-  GNUNET_free (path);
-  return NULL;
-}
-
-/**
- * Check whether the suid bit is set on a file.
- * Attempts to find the file using the current
- * PATH environment variable as a search path.
- *
- * @param binary the name of the file to check
- *
- * @return GNUNET_YES if the binary is found and
- *         can be run properly, GNUNET_NO otherwise
- */
-static int
-check_gnunet_nat_binary (char *binary)
-{
-  struct stat statbuf;
-  char *p;
-
-#ifdef MINGW
-  SOCKET rawsock;
-#endif
-
-#ifdef MINGW
-  char *binaryexe;
-
-  GNUNET_asprintf (&binaryexe, "%s.exe", binary);
-  p = get_path_from_PATH (binaryexe);
-  free (binaryexe);
-#else
-  p = get_path_from_PATH (binary);
-#endif
-  if (p == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("Could not find binary `%s' in PATH!\n"), binary);
-    return GNUNET_NO;
-  }
-  if (0 != STAT (p, &statbuf))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("stat (%s) failed: %s\n"), p,
-                STRERROR (errno));
-    GNUNET_free (p);
-    return GNUNET_SYSERR;
-  }
-  GNUNET_free (p);
-#ifndef MINGW
-  if ((0 != (statbuf.st_mode & S_ISUID)) && (statbuf.st_uid == 0))
-    return GNUNET_YES;
-  return GNUNET_NO;
-#else
-  rawsock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
-  if (INVALID_SOCKET == rawsock)
-  {
-    DWORD err = GetLastError ();
-
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "socket (AF_INET, SOCK_RAW, IPPROTO_ICMP) have failed! GLE = 
%d\n",
-                err);
-    return GNUNET_NO;           /* not running as administrator */
-  }
-  closesocket (rawsock);
-  return GNUNET_YES;
-#endif
-}
-
 int
 main (int argc, char *argv[])
 {
   int ret;
+  int nat_res;
 
   GNUNET_log_setup ("test-transport-api",
 #if VERBOSE
@@ -545,27 +435,26 @@
   GNUNET_asprintf (&cfg_file_p2, "%s_peer2.conf", filename);
   GNUNET_free (backup);
 
-  if (strstr (argv[0], "tcp_nat") != NULL)
+  if ((strstr (argv[0], "tcp_nat") != NULL) || (strstr (argv[0], "udp_nat") != 
NULL))
   {
-    if (GNUNET_YES != check_gnunet_nat_binary ("gnunet-nat-server"))
+    nat_res = GNUNET_OS_check_helper_binary ("gnunet-nat-server");
+    if (GNUNET_NO == nat_res)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "`%s' not properly installed, cannot run NAT test!\n",
-                  "gnunet-nat-server");
+          "Cannot run NAT test: `%s' %s \n",
+          "gnunet-nat-server",
+           "SUID not set");
       return 0;
     }
-  }
-  else if (strstr (argv[0], "udp_nat") != NULL)
-  {
-    if (GNUNET_YES != check_gnunet_nat_binary ("gnunet-nat-server"))
+    if (GNUNET_SYSERR ==  nat_res)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "`%s' not properly installed, cannot run NAT test!\n",
-                  "gnunet-nat-server");
+          "Cannot run NAT test: `%s' %s \n",
+          "gnunet-nat-server",
+          "file not found");
       return 0;
     }
   }
-
   ret = check ();
 
   GNUNET_free (cfg_file_p1);

Modified: gnunet/src/transport/test_transport_api_unreliability.c
===================================================================
--- gnunet/src/transport/test_transport_api_unreliability.c     2011-08-30 
11:53:22 UTC (rev 16635)
+++ gnunet/src/transport/test_transport_api_unreliability.c     2011-08-30 
12:23:34 UTC (rev 16636)
@@ -598,119 +598,6 @@
   GNUNET_assert (p->th != NULL);
 }
 
-
-/**
- * Return the actual path to a file found in the current
- * PATH environment variable.
- *
- * @param binary the name of the file to find
- */
-static char *
-get_path_from_PATH (char *binary)
-{
-  char *path;
-  char *pos;
-  char *end;
-  char *buf;
-  const char *p;
-
-  p = getenv ("PATH");
-  if (p == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("PATH environment variable is unset.\n"));
-    return NULL;
-  }
-  path = GNUNET_strdup (p);     /* because we write on it */
-  buf = GNUNET_malloc (strlen (path) + 20);
-  pos = path;
-
-  while (NULL != (end = strchr (pos, PATH_SEPARATOR)))
-  {
-    *end = '\0';
-    sprintf (buf, "%s/%s", pos, binary);
-    if (GNUNET_DISK_file_test (buf) == GNUNET_YES)
-    {
-      GNUNET_free (path);
-      return buf;
-    }
-    pos = end + 1;
-  }
-  sprintf (buf, "%s/%s", pos, binary);
-  if (GNUNET_DISK_file_test (buf) == GNUNET_YES)
-  {
-    GNUNET_free (path);
-    return buf;
-  }
-  GNUNET_free (buf);
-  GNUNET_free (path);
-  return NULL;
-}
-
-/**
- * Check whether the suid bit is set on a file.
- * Attempts to find the file using the current
- * PATH environment variable as a search path.
- *
- * @param binary the name of the file to check
- *
- * @return GNUNET_YES if the binary is found and
- *         can be run properly, GNUNET_NO otherwise
- */
-static int
-check_gnunet_nat_binary (char *binary)
-{
-  struct stat statbuf;
-  char *p;
-
-#ifdef MINGW
-  SOCKET rawsock;
-#endif
-
-#ifdef MINGW
-  char *binaryexe;
-
-  GNUNET_asprintf (&binaryexe, "%s.exe", binary);
-  p = get_path_from_PATH (binaryexe);
-  free (binaryexe);
-#else
-  p = get_path_from_PATH (binary);
-#endif
-  if (p == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("Could not find binary `%s' in PATH!\n"), binary);
-    return GNUNET_NO;
-  }
-  if (0 != STAT (p, &statbuf))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("stat (%s) failed: %s\n"), p,
-                STRERROR (errno));
-    GNUNET_free (p);
-    return GNUNET_SYSERR;
-  }
-  GNUNET_free (p);
-#ifndef MINGW
-  if ((0 != (statbuf.st_mode & S_ISUID)) && (statbuf.st_uid == 0))
-    return GNUNET_YES;
-  return GNUNET_NO;
-#else
-  rawsock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
-  if (INVALID_SOCKET == rawsock)
-  {
-    DWORD err = GetLastError ();
-
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "socket (AF_INET, SOCK_RAW, IPPROTO_ICMP) have failed! GLE = 
%d\n",
-                err);
-    return GNUNET_NO;           /* not running as administrator */
-  }
-  closesocket (rawsock);
-  return GNUNET_YES;
-#endif
-}
-
-
 static void
 try_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
@@ -796,14 +683,6 @@
 #endif
   ok = 1;
 
-  if ((GNUNET_YES == is_tcp_nat) &&
-      (check_gnunet_nat_binary ("gnunet-nat-server") != GNUNET_YES))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "Not running NAT test case, binaries not properly 
installed.\n");
-    return 0;
-  }
-
   GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv,
                       "test-transport-api-unreliability", "nohelp", options,
                       &run, &ok);
@@ -881,6 +760,7 @@
 main (int argc, char *argv[])
 {
   int ret;
+  int nat_res;
 
   test_failed = GNUNET_NO;
 
@@ -928,6 +808,29 @@
                     "WARNING",
 #endif
                     NULL);
+
+
+  if ((strstr (argv[0], "tcp_nat") != NULL) || (strstr (argv[0], "udp_nat") != 
NULL))
+  {
+    nat_res = GNUNET_OS_check_helper_binary ("gnunet-nat-server");
+    if (GNUNET_NO == nat_res)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+          "Cannot run NAT test: `%s' %s \n",
+          "gnunet-nat-server",
+           "SUID not set");
+      return 0;
+    }
+    if (GNUNET_SYSERR ==  nat_res)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+          "Cannot run NAT test: `%s' %s \n",
+          "gnunet-nat-server",
+          "file not found");
+      return 0;
+    }
+  }
+
   ret = check ();
 
   GNUNET_free_non_null (test_name);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]