-gboolean avahi_domain_cmp(const gchar *a, const gchar *b) {
- int escaped_a = 0, escaped_b = 0;
- g_assert(a);
- g_assert(b);
-
- for (;;) {
- /* Check for escape characters "\" */
- if ((escaped_a = *a == '\\'))
- a ++;
-
- if ((escaped_b = *b == '\\'))
- b++;
-
- /* Check for string end */
- if (*a == 0 && *b == 0)
- return 0;
-
- if (*a == 0 && !escaped_b && *b == '.' && *(b+1) == 0)
- return 0;
-
- if (!escaped_a && *a == '.' && *(a+1) == 0 && *b == 0)
- return 0;
-
- /* Compare characters */
- if (escaped_a == escaped_b && *a != *b)
- return *a < *b ? -1 : 1;
-
- /* Next characters */
- a++;
- b++;
-