From: Ben Pfaff Date: Wed, 17 Dec 2008 00:39:20 +0000 (-0800) Subject: New function ds_get_line(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d2610810984f90678b38f45276ce5fe163a28a4;p=openvswitch New function ds_get_line(). --- diff --git a/lib/dynamic-string.c b/lib/dynamic-string.c index 98711f0d..0c5dd5f3 100644 --- a/lib/dynamic-string.c +++ b/lib/dynamic-string.c @@ -178,6 +178,22 @@ ds_put_strftime(struct ds *ds, const char *template, const struct tm *tm) } } +int +ds_get_line(struct ds *ds, FILE *file) +{ + ds_clear(ds); + for (;;) { + int c = getc(file); + if (c == EOF) { + return ds->length ? 0 : EOF; + } else if (c == '\n') { + return 0; + } else { + ds_put_char(ds, c); + } + } +} + char * ds_cstr(struct ds *ds) { diff --git a/lib/dynamic-string.h b/lib/dynamic-string.h index 0fb5ce4c..5529d4b9 100644 --- a/lib/dynamic-string.h +++ b/lib/dynamic-string.h @@ -38,6 +38,7 @@ #include #include #include +#include #include "compiler.h" struct tm; @@ -67,6 +68,8 @@ void ds_put_strftime(struct ds *, const char *, const struct tm *) STRFTIME_FORMAT(2); void ds_put_hex_dump(struct ds *ds, const void *buf_, size_t size, uintptr_t ofs, bool ascii); +int ds_get_line(struct ds *, FILE *); + char *ds_cstr(struct ds *); void ds_destroy(struct ds *);