diff options
Diffstat (limited to 'libstore')
-rw-r--r-- | libstore/set.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/libstore/set.c b/libstore/set.c index d59538e1..8daba9dd 100644 --- a/libstore/set.c +++ b/libstore/set.c @@ -27,10 +27,10 @@ /* Set STORE's current runs list to (a copy of) RUNS and NUM_RUNS. */ error_t -store_set_runs (struct store *store, const off_t *runs, unsigned num_runs) +store_set_runs (struct store *store, const struct store_run *runs, unsigned num_runs) { - unsigned size = num_runs * sizeof (off_t); - off_t *copy = malloc (size); + unsigned size = num_runs * sizeof (struct store_run); + struct store_run *copy = malloc (size); if (!copy) return ENOMEM; @@ -48,6 +48,27 @@ store_set_runs (struct store *store, const off_t *runs, unsigned num_runs) return 0; } +/* Set STORE's current children list to (a copy of) CHILDREN and NUM_CHILDREN. */ +error_t +store_set_children (struct store *store, + struct store *const *children, unsigned num_children) +{ + unsigned size = num_children * sizeof (struct store_run); + struct store **copy = malloc (size); + + if (!copy) + return ENOMEM; + + if (store->children) + free (store->children); + + bcopy (children, copy, size); + store->children = copy; + store->num_children = num_children; + + return 0; +} + /* Sets the name associated with STORE to a copy of NAME. */ error_t store_set_name (struct store *store, const char *name) |