#include "strlst.h"
-static flxStringList *string_list_add_internal(flxStringList *l, const gchar *text, guint size) {
- flxStringList *n;
+AvahiStringList *avahi_string_list_add_arbitrary(AvahiStringList *l, const guint8*text, guint size) {
+ AvahiStringList *n;
g_assert(text);
- n = g_malloc(sizeof(flxStringList) + size);
+ n = g_malloc(sizeof(AvahiStringList) + size);
n->next = l;
- strncpy(n->text, text, size);
- n->text[size] = 0;
+ memcpy(n->text, text, n->size = size);
return n;
}
-flxStringList *flx_string_list_add(flxStringList *l, const gchar *text) {
+AvahiStringList *avahi_string_list_add(AvahiStringList *l, const gchar *text) {
g_assert(text);
- return string_list_add_internal(l, text, strlen(text));
+ return avahi_string_list_add_arbitrary(l, (const guint8*) text, strlen(text));
}
-flxStringList *flx_string_list_parse(gconstpointer data, guint size) {
- flxStringList *r = NULL;
+AvahiStringList *avahi_string_list_parse(gconstpointer data, guint size) {
+ AvahiStringList *r = NULL;
const guint8 *c;
g_assert(data);
break;
k = *(c++);
- r = string_list_add_internal(r, (const gchar*) c, k);
+ r = avahi_string_list_add_arbitrary(r, c, k);
c += k;
size -= 1 + k;
return r;
}
-void flx_string_list_free(flxStringList *l) {
- flxStringList *n;
+void avahi_string_list_free(AvahiStringList *l) {
+ AvahiStringList *n;
while (l) {
n = l->next;
}
}
-
-static flxStringList* string_list_reverse(flxStringList *l) {
- flxStringList *r = NULL, *n;
+static AvahiStringList* string_list_reverse(AvahiStringList *l) {
+ AvahiStringList *r = NULL, *n;
while (l) {
n = l->next;
return r;
}
-gchar* flx_string_list_to_string(flxStringList *l) {
- flxStringList *n;
+gchar* avahi_string_list_to_string(AvahiStringList *l) {
+ AvahiStringList *n;
guint s = 0;
gchar *t, *e;
if (n != l)
s ++;
- s += strlen(n->text)+2;
+ s += n->size+3;
}
- t = e = g_new(gchar, s+1);
+ t = e = g_new(gchar, s);
for (n = l; n; n = n->next) {
if (n != l)
*(e++) = ' ';
*(e++) = '"';
- strcpy(e, n->text);
- e += strlen(n->text);
+ strncpy(e, n->text, n->size);
+ e[n->size] = 0;
+ e = strchr(e, 0);
*(e++) = '"';
}
return t;
}
-guint flx_string_list_serialize(flxStringList *l, gpointer data, guint size) {
+guint avahi_string_list_serialize(AvahiStringList *l, gpointer data, guint size) {
guint used = 0;
if (data) {
guint8 *c;
- flxStringList *n;
+ AvahiStringList *n;
g_assert(data);
if (size < 1)
break;
- k = strlen(n->text);
+ k = n->size;
if (k > 255)
k = 255;
l = string_list_reverse(l);
} else {
- flxStringList *n;
+ AvahiStringList *n;
for (n = l; n; n = n->next) {
guint k;
- k = strlen(n->text);
+ k = n->size;
if (k > 255)
k = 255;
return used;
}
-gboolean flx_string_list_equal(flxStringList *a, flxStringList *b) {
+gboolean avahi_string_list_equal(AvahiStringList *a, AvahiStringList *b) {
for (;;) {
if (!a && !b)
if (!a || !b)
return FALSE;
- if (strcmp(a->text, b->text) != 0)
+ if (a->size != b->size)
+ return FALSE;
+
+ if (a->size != 0 && memcmp(a->text, b->text, a->size) != 0)
return FALSE;
a = a->next;
}
}
-flxStringList *flx_string_list_add_many(flxStringList *r, ...) {
+AvahiStringList *avahi_string_list_add_many(AvahiStringList *r, ...) {
va_list va;
va_start(va, r);
- r = flx_string_list_add_many_va(r, va);
+ r = avahi_string_list_add_many_va(r, va);
va_end(va);
return r;
}
-flxStringList *flx_string_list_add_many_va(flxStringList *r, va_list va) {
+AvahiStringList *avahi_string_list_add_many_va(AvahiStringList *r, va_list va) {
const gchar *txt;
while ((txt = va_arg(va, const gchar*)))
- r = flx_string_list_add(r, txt);
+ r = avahi_string_list_add(r, txt);
return r;
}
-flxStringList *flx_string_list_new(const gchar *txt, ...) {
+
+AvahiStringList *avahi_string_list_new(const gchar *txt, ...) {
va_list va;
- flxStringList *r = NULL;
+ AvahiStringList *r = NULL;
if (txt) {
- r = flx_string_list_add(r, txt);
+ r = avahi_string_list_add(r, txt);
va_start(va, txt);
- r = flx_string_list_add_many_va(r, va);
+ r = avahi_string_list_add_many_va(r, va);
va_end(va);
}
return r;
}
-flxStringList *flx_string_list_new_va(va_list va) {
- return flx_string_list_add_many_va(NULL, va);
+AvahiStringList *avahi_string_list_new_va(va_list va) {
+ return avahi_string_list_add_many_va(NULL, va);
}
-flxStringList *flx_string_list_copy(flxStringList *l) {
- flxStringList *r;
+AvahiStringList *avahi_string_list_copy(AvahiStringList *l) {
+ AvahiStringList *r = NULL;
for (; l; l = l->next)
- r = flx_string_list_add(l, l->text);
+ r = avahi_string_list_add_arbitrary(r, l->text, l->size);
return string_list_reverse(r);
}