common/iobuf.h: Clarify semantics of nofast. Simplify implementation.
[gnupg.git] / tools / rfc822parse.c
index dd8b316..285e084 100644 (file)
@@ -808,10 +808,12 @@ parse_field (HDR_LINE hdr)
   s++; /* Move over the colon. */
   for (;;)
     {
-      if (!*s)
+      while (!*s)
        {
          if (!hdr->next || !hdr->next->cont)
-           break;
+            return tok; /* Ready.  */
+
+          /* Next item is a header continuation line.  */
          hdr = hdr->next;
          s = hdr->line;
        }
@@ -824,10 +826,11 @@ parse_field (HDR_LINE hdr)
          invalid = 0;
          for (s++;; s++)
            {
-             if (!*s)
+             while (!*s)
                {
                  if (!hdr->next || !hdr->next->cont)
-                   break;
+                   goto oparen_out;
+                  /* Next item is a header continuation line.  */
                  hdr = hdr->next;
                  s = hdr->line;
                }
@@ -849,6 +852,7 @@ parse_field (HDR_LINE hdr)
              else if (*s == '\"')
                in_quote = 1;
            }
+        oparen_out:
          if (!*s)
            ; /* Actually this is an error, but we don't care about it. */
          else
@@ -880,6 +884,7 @@ parse_field (HDR_LINE hdr)
 
              if (*s2 || !hdr->next || !hdr->next->cont)
                break;
+              /* Next item is a header continuation line.  */
              hdr = hdr->next;
              s = hdr->line;
            }
@@ -931,8 +936,7 @@ parse_field (HDR_LINE hdr)
          s++;
        }
     }
-
-  return tok;
+  /*NOTREACHED*/
 
  failure:
   {
@@ -1155,7 +1159,7 @@ show_param (rfc822parse_field_t ctx, const char *name)
     return;
   s = rfc822parse_query_parameter (ctx, name, 0);
   if (s)
-    printf ("***   %s: `%s'\n", name, s);
+    printf ("***   %s: '%s'\n", name, s);
 }
 
 
@@ -1202,7 +1206,7 @@ msg_cb (void *dummy_arg, rfc822parse_event_t event, rfc822parse_t msg)
           const char *s1, *s2;
           s1 = rfc822parse_query_media_type (ctx, &s2);
           if (s1)
-            printf ("***   media: `%s/%s'\n", s1, s2);
+            printf ("***   media: '%s/%s'\n", s1, s2);
           else
             printf ("***   media: [not found]\n");
           show_param (ctx, "boundary");