From: Ben Pfaff Date: Tue, 19 Aug 2008 18:12:59 +0000 (-0700) Subject: New functions ds_truncate(), ds_last(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12e6e0e2dd02ce8c89b6024fd6ba02698bec61ef;p=openvswitch New functions ds_truncate(), ds_last(). --- diff --git a/include/dynamic-string.h b/include/dynamic-string.h index c85756db..7c1b0466 100644 --- a/include/dynamic-string.h +++ b/include/dynamic-string.h @@ -50,6 +50,7 @@ struct ds { void ds_init(struct ds *); void ds_clear(struct ds *); +void ds_truncate(struct ds *, size_t new_length); void ds_reserve(struct ds *, size_t min_length); void ds_put_char(struct ds *, char); void ds_put_cstr(struct ds *, const char *); @@ -62,4 +63,6 @@ void ds_put_hex_dump(struct ds *ds, const void *buf_, size_t size, char *ds_cstr(struct ds *); void ds_destroy(struct ds *); +int ds_last(const struct ds *); + #endif /* dynamic-string.h */ diff --git a/lib/dynamic-string.c b/lib/dynamic-string.c index ca141783..4b836819 100644 --- a/lib/dynamic-string.c +++ b/lib/dynamic-string.c @@ -52,6 +52,15 @@ ds_clear(struct ds *ds) ds->length = 0; } +void +ds_truncate(struct ds *ds, size_t new_length) +{ + if (ds->length > new_length) { + ds->length = new_length; + ds->string[new_length] = '\0'; + } +} + void ds_reserve(struct ds *ds, size_t min_length) { @@ -200,3 +209,9 @@ ds_put_hex_dump(struct ds *ds, const void *buf_, size_t size, size -= n; } } + +int +ds_last(const struct ds *ds) +{ + return ds->length > 0 ? (unsigned char) ds->string[ds->length - 1] : EOF; +}