summaryrefslogtreecommitdiffstats
path: root/src/avahi.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-08-05 23:51:50 +0000
committerLennart Poettering <lennart@poettering.net>2005-08-05 23:51:50 +0000
commite1792064898bbce2c4d7574ada82a06f5e19d47f (patch)
treec78959aca285aaa06427edc2398bd16376949f13 /src/avahi.c
parent6dc69c9a94e128f6703ddfcc38c253f0c8cc9d7b (diff)
* 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
Diffstat (limited to 'src/avahi.c')
-rw-r--r--src/avahi.c43
1 files changed, 34 insertions, 9 deletions
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 <config.h>
+#endif
#include <sys/socket.h>
#include <string.h>
@@ -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;