6 AvahiStringList *avahi_string_list_add_arbitrary(AvahiStringList *l, const guint8*text, guint size) {
11 n = g_malloc(sizeof(AvahiStringList) + size);
13 memcpy(n->text, text, n->size = size);
18 AvahiStringList *avahi_string_list_add(AvahiStringList *l, const gchar *text) {
21 return avahi_string_list_add_arbitrary(l, (const guint8*) text, strlen(text));
24 AvahiStringList *avahi_string_list_parse(gconstpointer data, guint size) {
25 AvahiStringList *r = NULL;
37 r = avahi_string_list_add_arbitrary(r, c, k);
46 void avahi_string_list_free(AvahiStringList *l) {
56 static AvahiStringList* string_list_reverse(AvahiStringList *l) {
57 AvahiStringList *r = NULL, *n;
69 gchar* avahi_string_list_to_string(AvahiStringList *l) {
74 l = string_list_reverse(l);
76 for (n = l; n; n = n->next) {
83 t = e = g_new(gchar, s);
85 for (n = l; n; n = n->next) {
90 strncpy(e, n->text, n->size);
96 l = string_list_reverse(l);
103 guint avahi_string_list_serialize(AvahiStringList *l, gpointer data, guint size) {
112 l = string_list_reverse(l);
115 for (n = l; n; n = n->next) {
128 memcpy(c, n->text, k);
134 l = string_list_reverse(l);
138 for (n = l; n; n = n->next) {
152 gboolean avahi_string_list_equal(AvahiStringList *a, AvahiStringList *b) {
161 if (a->size != b->size)
164 if (a->size != 0 && memcmp(a->text, b->text, a->size) != 0)
172 AvahiStringList *avahi_string_list_add_many(AvahiStringList *r, ...) {
176 r = avahi_string_list_add_many_va(r, va);
182 AvahiStringList *avahi_string_list_add_many_va(AvahiStringList *r, va_list va) {
185 while ((txt = va_arg(va, const gchar*)))
186 r = avahi_string_list_add(r, txt);
192 AvahiStringList *avahi_string_list_new(const gchar *txt, ...) {
194 AvahiStringList *r = NULL;
197 r = avahi_string_list_add(r, txt);
200 r = avahi_string_list_add_many_va(r, va);
207 AvahiStringList *avahi_string_list_new_va(va_list va) {
208 return avahi_string_list_add_many_va(NULL, va);
211 AvahiStringList *avahi_string_list_copy(AvahiStringList *l) {
212 AvahiStringList *r = NULL;
214 for (; l; l = l->next)
215 r = avahi_string_list_add_arbitrary(r, l->text, l->size);
217 return string_list_reverse(r);