Implement commonio_append.
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@xmission.com>
This commit is contained in:
parent
23fd6cb1da
commit
5620c5ab5d
@ -1113,6 +1113,36 @@ int commonio_update (struct commonio_db *db, const void *eptr)
|
|||||||
return 1;
|
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)
|
void commonio_del_entry (struct commonio_db *db, const struct commonio_entry *p)
|
||||||
{
|
{
|
||||||
|
@ -146,6 +146,7 @@ extern int commonio_lock_nowait (struct commonio_db *, bool log);
|
|||||||
extern int commonio_open (struct commonio_db *, int);
|
extern int commonio_open (struct commonio_db *, int);
|
||||||
extern /*@observer@*/ /*@null@*/const void *commonio_locate (struct commonio_db *, const char *);
|
extern /*@observer@*/ /*@null@*/const void *commonio_locate (struct commonio_db *, const char *);
|
||||||
extern int commonio_update (struct commonio_db *, const void *);
|
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_remove (struct commonio_db *, const char *);
|
||||||
extern int commonio_rewind (struct commonio_db *);
|
extern int commonio_rewind (struct commonio_db *);
|
||||||
extern /*@observer@*/ /*@null@*/const void *commonio_next (struct commonio_db *);
|
extern /*@observer@*/ /*@null@*/const void *commonio_next (struct commonio_db *);
|
||||||
|
Loading…
Reference in New Issue
Block a user