summaryrefslogtreecommitdiff
path: root/libstore/set.c
diff options
context:
space:
mode:
Diffstat (limited to 'libstore/set.c')
-rw-r--r--libstore/set.c27
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)