On 01/19/2018 09:23 AM, Richard W.M. Jones wrote:
This can be used to filter a single partition from a disk image.
---
TODO | 2 -
configure.ac | 1 +
filters/Makefile.am | 3 +-
filters/delay/delay.c | 12 +--
filters/offset/nbdkit-offset-filter.pod | 17 ++-
filters/offset/offset.c | 20 ++--
filters/partition/Makefile.am | 62 +++++++++++
filters/partition/nbdkit-partition-filter.pod | 94 +++++++++++++++++
filters/partition/partition.c | 145 ++++++++++++++++++++++++++
9 files changed, 336 insertions(+), 20 deletions(-)
diff --git a/TODO b/TODO
index 3ec45fd..b1f922e 100644
--- a/TODO
+++ b/filters/delay/delay.c
@@ -121,30 +121,30 @@ delay_config (nbdkit_next_config *next, void *nxdata,
/* Read data. */
static int
-delay_pread (struct nbdkit_next *next, void *nxdata,
+delay_pread (struct nbdkit_next_ops *next_ops, void *nxdata,
void *handle, void *buf, uint32_t count, uint64_t offset)
Squashed into the wrong patch?
+++ b/filters/offset/offset.c
@@ -81,10 +81,10 @@ offset_config_complete (nbdkit_next_config_complete *next, void
*nxdata)
/* Get the file size. */
static int64_t
-offset_get_size (struct nbdkit_next *next, void *nxdata,
+offset_get_size (struct nbdkit_next_ops *next_ops, void *nxdata,
Again, rebase churn not squashed correctly?
+++ b/filters/partition/partition.c
@@ -0,0 +1,145 @@
+/* Called for each key=value passed on the command line. */
+static int
+partition_config (nbdkit_next_config *next, void *nxdata,
+ const char *key, const char *value)
+{
+ if (strcmp (key, "partition") == 0) {
+ if (sscanf (value, "%d", &partnum) != 1 || partnum <= 0) {
I'm not a fan of scanf("%d") - it has undefined behavior on integer
overflow.
+#define partition_config_help \
+ "partition=<PART> (required) The partition number (counting from
1)."
+
+#if 0
Hence the RFC :)
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization:
qemu.org |
libvirt.org