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:
		
				
					committed by
					
						 Serge Hallyn
						Serge Hallyn
					
				
			
			
				
	
			
			
			
						parent
						
							23fd6cb1da
						
					
				
				
					commit
					5620c5ab5d
				
			| @@ -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) | ||||
| { | ||||
|   | ||||
| @@ -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 *); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user