X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdynamic-string.c;h=dbb33a3563304cfec53e5505598096ef35e132d2;hb=refs%2Fheads%2Fbranch-1.4;hp=5f8054a45adb5893caf40f745837c6672e7b19e3;hpb=d295e8e97acae13552a5b220d3fbcff8201064a2;p=sliver-openvswitch.git diff --git a/lib/dynamic-string.c b/lib/dynamic-string.c index 5f8054a45..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. @@ -147,8 +147,6 @@ ds_put_format_valist(struct ds *ds, const char *format, va_list args_) if (needed < available) { ds->length += needed; } else { - size_t available; - ds_reserve(ds, ds->length + needed); va_copy(args, args_); @@ -209,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) {