]> git.decadent.org.uk Git - nfs-utils.git/commitdiff
Added support for line comments parsing which should
authorBenny Halevy <bhalevy@panasas.com>
Mon, 17 Aug 2009 11:12:03 +0000 (07:12 -0400)
committerSteve Dickson <steved@redhat.com>
Mon, 17 Aug 2009 11:12:03 +0000 (07:12 -0400)
help with readability with in the configuration file.

Signed-off-by: Steve Dickson <steved@redhat.com>
support/nfs/conffile.c

index b19b73923f7ba8d89e268381ffa96cf4f831ca50..6bf423728a5d02cb8e74a20d565fe177d1979f4f 100644 (file)
@@ -219,9 +219,6 @@ conf_parse_line(int trans, char *line, size_t sz)
 
        /* Lines starting with '#' or ';' are comments.  */
        ln++;
-       if (*line == '#' || *line == ';')
-               return;
-
        /* Ignore blank lines */
        if (*line == '\0')
                return;
@@ -230,6 +227,9 @@ conf_parse_line(int trans, char *line, size_t sz)
        while (isblank(*line)) 
                line++;
 
+       if (*line == '#' || *line == ';')
+               return;
+
        /* '[section]' parsing...  */
        if (*line == '[') {
                line++;
@@ -296,9 +296,23 @@ conf_parse_line(int trans, char *line, size_t sz)
                        }
                        line[strcspn (line, " \t=")] = '\0';
                        val = line + i + 1 + strspn (line + i + 1, " \t");
+
+                       /* Skip trailing comments, if any */
+                       for (j = 0; j < sz - (val - line); j++) {
+                               if (val[j] == '#' || val[j] == ';') {
+                                       val[j] = '\0';
+                                       break;
+                               }
+                       }
+
                        /* Skip trailing whitespace, if any */
-                       for (j = sz - (val - line) - 1; j > 0 && isspace(val[j]); j--)
-                               val[j] = '\0';
+                       for (j--; j > 0; j--) {
+                               if (isspace(val[j]))
+                                       val[j] = '\0';
+                               else 
+                                       break;
+                       }
+
                        /* XXX Perhaps should we not ignore errors?  */
                        conf_set(trans, section, arg, line, val, 0, 0);
                        return;