From e1792064898bbce2c4d7574ada82a06f5e19d47f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 5 Aug 2005 23:51:50 +0000 Subject: * require automake 1.9 * bump version number * fix a lot of problems detected after compilation with excessive warnings * merge patch from Sean Meiners, adding search list support * update for newer avahi git-svn-id: file:///home/lennart/svn/public/nss-mdns/trunk@82 0ee8848e-81ea-0310-a63a-f631d1a40d77 --- src/avahi.c | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) (limited to 'src/avahi.c') diff --git a/src/avahi.c b/src/avahi.c index cd4db00..96ce615 100644 --- a/src/avahi.c +++ b/src/avahi.c @@ -19,6 +19,9 @@ USA. ***/ +#ifdef HAVE_CONFIG_H +#include +#endif #include #include @@ -32,7 +35,7 @@ #include "avahi.h" #include "util.h" -#define AVAHI_SOCKET "/var/run/avahi/socket" +#define WHITESPACE " \t" static FILE *open_socket(void) { int fd = -1; @@ -67,7 +70,7 @@ fail: int avahi_resolve_name(int af, const char* name, void* data) { FILE *f; - char *e, *p; + char *p; int ret = -1; char ln[256]; @@ -88,9 +91,22 @@ int avahi_resolve_name(int af, const char* name, void* data) { } p = ln+1; - p += strspn(p, "\t "); - e = p + strcspn(p, "\n\r\t "); - *e = 0; + p += strspn(p, WHITESPACE); + + /* Skip interface */ + p += strcspn(p, WHITESPACE); + p += strspn(p, WHITESPACE); + + /* Skip protocol */ + p += strcspn(p, WHITESPACE); + p += strspn(p, WHITESPACE); + + /* Skip host name */ + p += strcspn(p, WHITESPACE); + p += strspn(p, WHITESPACE); + + /* Cut off end of line */ + *(p + strcspn(p, "\n\r\t ")) = 0; if (inet_pton(af, p, data) <= 0) goto finish; @@ -107,7 +123,7 @@ finish: int avahi_resolve_address(int af, const void *data, char* name, size_t name_len) { FILE *f; - char *e, *p; + char *p; int ret = -1; char a[256], ln[256]; @@ -127,9 +143,18 @@ int avahi_resolve_address(int af, const void *data, char* name, size_t name_len) } p = ln+1; - p += strspn(p, "\t "); - e = p + strcspn(p, "\n\r\t "); - *e = 0; + p += strspn(p, WHITESPACE); + + /* Skip interface */ + p += strcspn(p, WHITESPACE); + p += strspn(p, WHITESPACE); + + /* Skip protocol */ + p += strcspn(p, WHITESPACE); + p += strspn(p, WHITESPACE); + + /* Cut off end of line */ + *(p + strcspn(p, "\n\r\t ")) = 0; strncpy(name, p, name_len-1); name[name_len-1] = 0; -- cgit