X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-common%2Fstrlst.c;h=46ed852720766b5df780c2d75f6f0fa5b7129caf;hb=d859c4c4c0b5889af50355f6552fbcd2eae36bd3;hp=0853414d9e1f591e21e3ce5b36a8f89fee43e03c;hpb=9962a048634c590db23a00db1d01daada779844c;p=catta diff --git a/avahi-common/strlst.c b/avahi-common/strlst.c index 0853414..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,5 +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 i; + + g_assert(array); + + 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; }