Add some tests.
[gnupg.git] / tests / asschk.c
index 40b95ba..176fcac 100644 (file)
@@ -5,7 +5,7 @@
  *
  * GnuPG is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * GnuPG is distributed in the hope that it will be useful,
@@ -14,9 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- * USA.
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 /* This is a simple stand-alone Assuan server test program.  We don't
@@ -273,10 +271,12 @@ writen (int fd, const char *buffer, size_t length)
    type and store that in recv_type.  The function terminates on a
    communication error.  Returns a pointer into the inputline to the
    first byte of the arguments.  The parsing is very strict to match
-   excalty what we want to send. */
+   exaclty what we want to send. */
 static char *
 read_assuan (int fd)
 {
+  /* FIXME: For general robustness, the pending stuff needs to be
+     associated with FD.  */
   static char pending[MAX_LINELEN];
   static size_t pending_len;
   size_t nleft = sizeof recv_line;
@@ -296,23 +296,26 @@ read_assuan (int fd)
           pending_len = 0;
         }
       else
-        n = read (fd, buf, nleft);
-
-      if (opt_verbose)
+        {
+          do
+            {
+              n = read (fd, buf, nleft);
+            }
+          while (n < 0 && errno == EINTR);
+        }
+      
+      if (opt_verbose && n >= 0 )
        {
          int i;
-         printf ("%s: read \"", __FUNCTION__);
+
+         printf ("%s: read \"", __func__);
          for (i = 0; i < n; i ++)
            putc (buf[i], stdout);
          printf ("\"\n");
        }
 
       if (n < 0)
-        {
-          if (errno == EINTR)
-            continue;
-          die ("reading fd %d failed: %s", fd, strerror (errno));
-        }
+        die ("reading fd %d failed: %s", fd, strerror (errno));
       else if (!n)
         die ("received incomplete line on fd %d", fd);
       p = buf;