summaryrefslogtreecommitdiffstats
path: root/avahi-common/alternative.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-08-11 23:45:42 +0000
committerLennart Poettering <lennart@poettering.net>2005-08-11 23:45:42 +0000
commite63a65b3955b173a3e8d6b78c6377a518a9922d6 (patch)
tree9665358bbdd3c228cfeae6b3cbe27e29ac53e506 /avahi-common/alternative.c
parentc3d36ee186b5fb24480590080215f7e14ee0f6a6 (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.c56
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;
}