X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-common%2Fstrlst.c;h=46ed852720766b5df780c2d75f6f0fa5b7129caf;hb=d859c4c4c0b5889af50355f6552fbcd2eae36bd3;hp=d962188d080c73a4657af9bc85cf1b3ea380bef4;hpb=cc7bb72552184951e806f4d0f2449629b35b9c93;p=catta diff --git a/avahi-common/strlst.c b/avahi-common/strlst.c index d962188..46ed852 100644 --- a/avahi-common/strlst.c +++ b/avahi-common/strlst.c @@ -28,14 +28,25 @@ #include "strlst.h" +AvahiStringList*avahi_string_list_add_anonymous(AvahiStringList *l, guint size) { + AvahiStringList *n; + + n = g_malloc(sizeof(AvahiStringList) + size); + n->next = l; + n->size = size; + + return n; +} + AvahiStringList *avahi_string_list_add_arbitrary(AvahiStringList *l, const guint8*text, guint size) { AvahiStringList *n; g_assert(text); - n = g_malloc(sizeof(AvahiStringList) + size); - n->next = l; - memcpy(n->text, text, n->size = size); + n = avahi_string_list_add_anonymous(l, size); + + if (size > 0) + memcpy(n->text, text, size); return n; } @@ -78,7 +89,7 @@ void avahi_string_list_free(AvahiStringList *l) { } } -static AvahiStringList* string_list_reverse(AvahiStringList *l) { +AvahiStringList* avahi_string_list_reverse(AvahiStringList *l) { AvahiStringList *r = NULL, *n; while (l) { @@ -96,7 +107,7 @@ gchar* avahi_string_list_to_string(AvahiStringList *l) { guint s = 0; gchar *t, *e; - l = string_list_reverse(l); + l = avahi_string_list_reverse(l); for (n = l; n; n = n->next) { if (n != l) @@ -120,7 +131,7 @@ gchar* avahi_string_list_to_string(AvahiStringList *l) { g_assert(e); } - l = string_list_reverse(l); + l = avahi_string_list_reverse(l); *e = 0; @@ -136,7 +147,7 @@ guint avahi_string_list_serialize(AvahiStringList *l, gpointer data, guint size) g_assert(data); - l = string_list_reverse(l); + l = avahi_string_list_reverse(l); c = data; for (n = l; n; n = n->next) { @@ -158,7 +169,7 @@ guint avahi_string_list_serialize(AvahiStringList *l, gpointer data, guint size) used += 1+ k; } - l = string_list_reverse(l); + l = avahi_string_list_reverse(l); } else { AvahiStringList *n; @@ -241,17 +252,26 @@ AvahiStringList *avahi_string_list_copy(const AvahiStringList *l) { for (; l; l = l->next) r = avahi_string_list_add_arbitrary(r, l->text, l->size); - return string_list_reverse(r); + return avahi_string_list_reverse(r); } AvahiStringList *avahi_string_list_new_from_array(const gchar *array[], gint length) { AvahiStringList *r = NULL; - gint index; + gint i; g_assert(array); - for (index = 0; length >= 0 ? index < length : !!array[index]; index++) - r = avahi_string_list_add(r, array[index]); + for (i = 0; length >= 0 ? i < length : !!array[i]; i++) + r = avahi_string_list_add(r, array[i]); return r; } + +guint avahi_string_list_length(const AvahiStringList *l) { + guint n = 0; + + for (; l; l = l->next) + n++; + + return n; +}