From 377cdbe1022b4557836e4efba2a748d450820ff2 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 16 Dec 2008 16:39:20 -0800 Subject: [PATCH] New function ds_get_line(). --- lib/dynamic-string.c | 16 ++++++++++++++++ lib/dynamic-string.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/lib/dynamic-string.c b/lib/dynamic-string.c index 2c2effbe8..03efac074 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 0fb5ce4c0..5529d4b98 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 *); -- 2.43.0