X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdynamic-string.c;h=dbb33a3563304cfec53e5505598096ef35e132d2;hb=ddc293871574e141e1f377b88aec2ccf90ab954a;hp=3af7fc9f56634e169b757e93c1abf8f39095597a;hpb=2a022368f4b37559de5d5621a88c648023493f75;p=sliver-openvswitch.git diff --git a/lib/dynamic-string.c b/lib/dynamic-string.c index 3af7fc9f5..dbb33a356 100644 --- a/lib/dynamic-string.c +++ b/lib/dynamic-string.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -207,6 +207,32 @@ ds_get_line(struct ds *ds, FILE *file) } } +/* Reads a line from 'file' into 'ds', clearing anything initially in 'ds'. + * Deletes comments introduced by "#" and skips lines that contains only white + * space (after deleting comments). + * + * Returns 0 if successful, EOF if no non-blank line was found. */ +int +ds_get_preprocessed_line(struct ds *ds, FILE *file) +{ + while (!ds_get_line(ds, file)) { + char *line = ds_cstr(ds); + char *comment; + + /* Delete comments. */ + comment = strchr(line, '#'); + if (comment) { + *comment = '\0'; + } + + /* Return successfully unless the line is all spaces. */ + if (line[strspn(line, " \t\n")] != '\0') { + return 0; + } + } + return EOF; +} + char * ds_cstr(struct ds *ds) {