+ g_assert(a);
+ g_assert(b);
+
+ if (a == b)
+ return TRUE;
+
+ for (;;) {
+ gchar ca[65], cb[65], *pa, *pb;
+
+ pa = avahi_unescape_label(&a, ca, sizeof(ca));
+ pb = avahi_unescape_label(&b, cb, sizeof(cb));
+
+ if (!pa && !pb)
+ return TRUE;
+ else if ((pa && !pb) || (!pa && pb))
+ return FALSE;
+
+ if (utf8_strcasecmp(pa, pb))
+ return FALSE;
+ }
+
+ return TRUE;