util: add blob_finish_get_buffer
authorMarek Olšák <marek.olsak@amd.com>
Fri, 8 Nov 2019 00:10:55 +0000 (19:10 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 8 Nov 2019 20:30:28 +0000 (15:30 -0500)
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/util/blob.c
src/util/blob.h

index c89092e1cf3a98b0c2f9b9222cd23fd73e13d8df..050df8351f88b836512c8a13481ca41aed66dae7 100644 (file)
@@ -125,6 +125,17 @@ blob_init_fixed(struct blob *blob, void *data, size_t size)
    blob->out_of_memory = false;
 }
 
+void
+blob_finish_get_buffer(struct blob *blob, void **buffer, size_t *size)
+{
+   *buffer = blob->data;
+   *size = blob->size;
+   blob->data = NULL;
+
+   /* Trim the buffer. */
+   *buffer = realloc(*buffer, *size);
+}
+
 bool
 blob_overwrite_bytes(struct blob *blob,
                      size_t offset,
index b56fa4b2fe012d028c2277e81dfb749eeac76538..0c2759119836a9c187b5b2577f48bd07e9c30387 100644 (file)
@@ -117,6 +117,9 @@ blob_finish(struct blob *blob)
       free(blob->data);
 }
 
+void
+blob_finish_get_buffer(struct blob *blob, void **buffer, size_t *size);
+
 /**
  * Add some unstructured, fixed-size data to a blob.
  *