aboutsummaryrefslogtreecommitdiff
path: root/libssh
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2010-03-04 20:02:22 +0100
committerAndreas Schneider <mail@cynapses.org>2010-03-04 20:08:04 +0100
commitdea644bbd65b6cc2d60956ff2be1399f63ac1782 (patch)
tree42e21f0a9e030c399cf089d59ca207d902fa8142 /libssh
parent8bcb835aa4ffb4e11deeb6ecea17387193ef7e8f (diff)
downloadlibssh-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.c19
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;