New functions ds_truncate(), ds_last().
[sliver-openvswitch.git] / lib / dynamic-string.c
index ca14178..4b83681 100644 (file)
@@ -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;
+}