diff options
author | Andreas Schneider <mail@cynapses.org> | 2010-03-04 20:02:22 +0100 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2010-03-04 20:08:04 +0100 |
commit | dea644bbd65b6cc2d60956ff2be1399f63ac1782 (patch) | |
tree | 42e21f0a9e030c399cf089d59ca207d902fa8142 /libssh | |
parent | 8bcb835aa4ffb4e11deeb6ecea17387193ef7e8f (diff) | |
download | libssh-dea644bbd65b6cc2d60956ff2be1399f63ac1782.tar.gz libssh-dea644bbd65b6cc2d60956ff2be1399f63ac1782.tar.xz libssh-dea644bbd65b6cc2d60956ff2be1399f63ac1782.zip |
Added a prepend function for ssh_list.
Diffstat (limited to 'libssh')
-rw-r--r-- | libssh/misc.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libssh/misc.c b/libssh/misc.c index a86a163b..76f72a72 100644 --- a/libssh/misc.c +++ b/libssh/misc.c @@ -237,6 +237,25 @@ int ssh_list_add(struct ssh_list *list,const void *data){ return SSH_OK; } +int ssh_list_prepend(struct ssh_list *list, const void *data){ + struct ssh_iterator *it = ssh_iterator_new(data); + + if (it == NULL) { + return SSH_ERROR; + } + + if (list->end == NULL) { + /* list is empty */ + list->root = list->end = it; + } else { + /* set as new root */ + it->next = list->root; + list->root = it; + } + + return SSH_OK; +} + void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator){ struct ssh_iterator *ptr,*prev; prev=NULL; |