Fix comment parsing (again)
authorNeil Brown <neilb@suse.de>
Fri, 23 Jun 2006 04:06:00 +0000 (14:06 +1000)
committerNeil Brown <neilb@suse.de>
Fri, 23 Jun 2006 04:06:00 +0000 (14:06 +1000)
Bruce Fields noticed that I broke comment parsing...

as xskip() is always called before xgettok(), that is the
best place to put xskipcomment and still maintain proper
semantics of xskip and xgettok.

support/nfs/xio.c

index 1ce5157..221cce6 100644 (file)
@@ -95,11 +95,6 @@ xgettok(XFILE *xfp, char sepa, char *tok, int len)
 
        while (i < len && (c = xgetc(xfp)) != EOF &&
               (quoted || (c != sepa && !isspace(c)))) {
-               if (!quoted && i == 0 && c == '#') {
-                       c = xskipcomment(xfp);
-                       xfp->x_line++;
-                       break;
-               }
                if (c == '"') {
                        quoted = !quoted;
                        continue;
@@ -164,7 +159,12 @@ xskip(XFILE *xfp, char *str)
 {
        int     c;
 
-       while ((c = xgetc(xfp)) != EOF && strchr(str, c));
+       while ((c = xgetc(xfp)) != EOF) {
+               if (c == '#')
+                       c = xskipcomment(xfp);
+               if (strchr(str, c) == NULL)
+                       break;
+       }
        xungetc(c, xfp);
 }