summaryrefslogtreecommitdiff
path: root/plugins/clipboard/list.c
diff options
context:
space:
mode:
authorPerberos <[email protected]>2011-12-01 23:53:21 -0300
committerPerberos <[email protected]>2011-12-01 23:53:21 -0300
commit505cabbd3036081f26586cabc64c26e7769c0ec9 (patch)
tree09e0498bf572128f5c9ab551531cb28d6d75e992 /plugins/clipboard/list.c
downloadmate-settings-daemon-505cabbd3036081f26586cabc64c26e7769c0ec9.tar.bz2
mate-settings-daemon-505cabbd3036081f26586cabc64c26e7769c0ec9.tar.xz
moving from https://github.com/perberos/mate-desktop-environment
Diffstat (limited to 'plugins/clipboard/list.c')
-rw-r--r--plugins/clipboard/list.c150
1 files changed, 150 insertions, 0 deletions
diff --git a/plugins/clipboard/list.c b/plugins/clipboard/list.c
new file mode 100644
index 0000000..477eead
--- /dev/null
+++ b/plugins/clipboard/list.c
@@ -0,0 +1,150 @@
+/*
+ * Copyright © 2004 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Red Hat not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Red Hat makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Matthias Clasen, Red Hat, Inc.
+ */
+
+#include <stdlib.h>
+#include <list.h>
+
+
+void
+list_foreach (List *list,
+ Callback func,
+ void *user_data)
+{
+ while (list)
+ {
+ func (list->data, user_data);
+
+ list = list->next;
+ }
+}
+
+List *
+list_prepend (List *list,
+ void *data)
+{
+ List *link;
+
+ link = (List *) malloc (sizeof (List));
+ link->next = list;
+ link->data = data;
+
+ return link;
+}
+
+void
+list_free (List *list)
+{
+ while (list)
+ {
+ List *next = list->next;
+
+ free (list);
+
+ list = next;
+ }
+}
+
+List *
+list_find (List *list,
+ ListFindFunc func,
+ void *user_data)
+{
+ List *tmp;
+
+ for (tmp = list; tmp; tmp = tmp->next)
+ {
+ if ((*func) (tmp->data, user_data))
+ break;
+ }
+
+ return tmp;
+}
+
+List *
+list_remove (List *list,
+ void *data)
+{
+ List *tmp, *prev;
+
+ prev = NULL;
+ for (tmp = list; tmp; tmp = tmp->next)
+ {
+ if (tmp->data == data)
+ {
+ if (prev)
+ prev->next = tmp->next;
+ else
+ list = tmp->next;
+
+ free (tmp);
+ break;
+ }
+
+ prev = tmp;
+ }
+
+ return list;
+}
+
+int
+list_length (List *list)
+{
+ List *tmp;
+ int length;
+
+ length = 0;
+ for (tmp = list; tmp; tmp = tmp->next)
+ length++;
+
+ return length;
+}
+
+List *
+list_copy (List *list)
+{
+ List *new_list = NULL;
+
+ if (list)
+ {
+ List *last;
+
+ new_list = (List *) malloc (sizeof (List));
+ new_list->data = list->data;
+ new_list->next = NULL;
+
+ last = new_list;
+ list = list->next;
+
+ while (list)
+ {
+ last->next = (List *) malloc (sizeof (List));
+ last = last->next;
+ last->data = list->data;
+ list = list->next;
+ }
+
+ last->next = NULL;
+ }
+
+ return new_list;
+}