diff options
author | Lennart Poettering <lennart@poettering.net> | 2005-08-11 23:45:42 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2005-08-11 23:45:42 +0000 |
commit | e63a65b3955b173a3e8d6b78c6377a518a9922d6 (patch) | |
tree | 9665358bbdd3c228cfeae6b3cbe27e29ac53e506 /avahi-common/alternative.c | |
parent | c3d36ee186b5fb24480590080215f7e14ee0f6a6 (diff) |
* drop glib from avahi-common
* add new module with avahi_malloc() and friends
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@298 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-common/alternative.c')
-rw-r--r-- | avahi-common/alternative.c | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/avahi-common/alternative.c b/avahi-common/alternative.c index b1b52de..53a1e6c 100644 --- a/avahi-common/alternative.c +++ b/avahi-common/alternative.c @@ -26,38 +26,47 @@ #include <string.h> #include <stdlib.h> #include <ctype.h> +#include <assert.h> #include "alternative.h" +#include "malloc.h" +#include "util.h" -gchar * avahi_alternative_host_name(const gchar *s) { - const gchar *p, *e = NULL; - gchar *c, *r; - gint n; +char * avahi_alternative_host_name(const char *s) { + const char *p, *e; + char *r; - g_assert(s); + assert(s); + + e = s; for (p = s; *p; p++) if (!isdigit(*p)) e = p+1; - if (e && *e) - n = atoi(e)+1; - else - n = 2; + if (*e) { + char *c; + + if (!(c = avahi_strndup(s, e-s))) + return NULL; - c = e ? g_strndup(s, e-s) : g_strdup(s); - r = g_strdup_printf("%s%i", c, n); - g_free(c); + r = avahi_strdup_printf("%s%i", c, atoi(e)+1); + avahi_free(c); + + } else + r = avahi_strdup_printf("%s2", s); return r; } -gchar *avahi_alternative_service_name(const gchar *s) { - const gchar *e; - g_assert(s); +char *avahi_alternative_service_name(const char *s) { + const char *e; + char *r; + + assert(s); if ((e = strstr(s, " #"))) { - const gchar *n, *p; + const char *n, *p; e += 2; while ((n = strstr(e, " #"))) @@ -71,10 +80,15 @@ gchar *avahi_alternative_service_name(const gchar *s) { } if (e) { - gchar *r, *c = g_strndup(s, e-s); - r = g_strdup_printf("%s%i", c, atoi(e)+1); - g_free(c); - return r; + char *c; + + if (!(c = avahi_strndup(s, e-s))) + return NULL; + + r = avahi_strdup_printf("%s%i", c, atoi(e)+1); + avahi_free(c); } else - return g_strdup_printf("%s #2", s); + r = avahi_strdup_printf("%s #2", s); + + return r; } |