Let's not use parentheses in test.but in a way that tempts Halibut
[sgt/halibut] / input.c
diff --git a/input.c b/input.c
index 47d475a..f43604f 100644 (file)
--- a/input.c
+++ b/input.c
@@ -835,8 +835,10 @@ static void read_file(paragraph ***ret, input *in, indexdata *idx,
                needkw = 4;
                break;
              case c__comment:
-               if (isbrace(in))
+               if (isbrace(in)) {
+                   needkw = -1;
                    break;             /* `\#{': isn't a comment para */
+               }
                do {
                    dtor(t), t = get_token(in);
                } while (t.type != tok_eop && t.type != tok_eof);
@@ -903,7 +905,21 @@ static void read_file(paragraph ***ret, input *in, indexdata *idx,
                /* Get keywords. */
                dtor(t), t = get_token(in);
                fp = t.pos;
-               while (t.type == tok_lbrace) {
+               while (t.type == tok_lbrace ||
+                      (t.type == tok_white && (needkw & 24))) {
+                   /*
+                    * In paragraph types which can't accept any
+                    * body text (such as \cfg), we are lenient
+                    * about whitespace between keywords. This is
+                    * important for \cfg in particular since it
+                    * can often have many keywords which are long
+                    * pieces of text, so it's useful to permit the
+                    * user to wrap the line between them.
+                    */
+                   if (t.type == tok_white) {
+                       dtor(t), t = get_token(in); /* eat the space */
+                       continue;
+                   }
                    /* This is a keyword. */
                    nkeys++;
                    /* FIXME: there will be bugs if anyone specifies an
@@ -1568,7 +1584,10 @@ struct {
 } magics[] = {
     { "%!FontType1-",     12, &read_pfa_file },
     { "%!PS-AdobeFont-",  15, &read_pfa_file },
+    { "\x80\x01",          2, &read_pfb_file },
     { "StartFontMetrics", 16, &read_afm_file },
+    { "\x00\x01\x00\x00",  4, &read_sfnt_file },
+    { "true",             4, &read_sfnt_file },
 };
 
 paragraph *read_input(input *in, indexdata *idx) {