To support files that do not have a simple unique key implement commonio_append to allow new entries to be added. Signed-off-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx> --- lib/commonio.c | 30 ++++++++++++++++++++++++++++++ lib/commonio.h | 1 + 2 files changed, 31 insertions(+), 0 deletions(-) diff --git a/lib/commonio.c b/lib/commonio.c index 6b6ce7b..7a76975 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -1113,6 +1113,36 @@ int commonio_update (struct commonio_db *db, const void *eptr) return 1; } +int commonio_append (struct commonio_db *db, const void *eptr) +{ + struct commonio_entry *p; + void *nentry; + + if (!db->isopen || db->readonly) { + errno = EINVAL; + return 0; + } + nentry = db->ops->dup (eptr); + if (NULL == nentry) { + errno = ENOMEM; + return 0; + } + /* new entry */ + p = (struct commonio_entry *) malloc (sizeof *p); + if (NULL == p) { + db->ops->free (nentry); + errno = ENOMEM; + return 0; + } + + p->eptr = nentry; + p->line = NULL; + p->changed = true; + add_one_entry (db, p); + + db->changed = true; + return 1; +} void commonio_del_entry (struct commonio_db *db, const struct commonio_entry *p) { diff --git a/lib/commonio.h b/lib/commonio.h index a1117a8..1866b89 100644 --- a/lib/commonio.h +++ b/lib/commonio.h @@ -146,6 +146,7 @@ extern int commonio_lock_nowait (struct commonio_db *, bool log); extern int commonio_open (struct commonio_db *, int); extern /*@observer@*/ /*@null@*/const void *commonio_locate (struct commonio_db *, const char *); extern int commonio_update (struct commonio_db *, const void *); +extern int commonio_append (struct commonio_db *, const void *); extern int commonio_remove (struct commonio_db *, const char *); extern int commonio_rewind (struct commonio_db *); extern /*@observer@*/ /*@null@*/const void *commonio_next (struct commonio_db *); -- 1.7.5.4 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers