From 751248c9f444f5d00818a67a793dc0319749f236 Mon Sep 17 00:00:00 2001 From: bapt Date: Mon, 9 May 2016 20:04:22 +0000 Subject: Replace fparseln(3) with getline(3) to remove dependency on libutil --- usr.sbin/services_mkdb/Makefile | 2 -- usr.sbin/services_mkdb/services_mkdb.c | 16 +++++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'usr.sbin/services_mkdb') diff --git a/usr.sbin/services_mkdb/Makefile b/usr.sbin/services_mkdb/Makefile index 05a4b76..74e892a 100644 --- a/usr.sbin/services_mkdb/Makefile +++ b/usr.sbin/services_mkdb/Makefile @@ -4,6 +4,4 @@ PROG= services_mkdb MAN= services_mkdb.8 SRCS= services_mkdb.c uniq.c extern.h -LIBADD= util - .include diff --git a/usr.sbin/services_mkdb/services_mkdb.c b/usr.sbin/services_mkdb/services_mkdb.c index c928ea9..fe23355 100644 --- a/usr.sbin/services_mkdb/services_mkdb.c +++ b/usr.sbin/services_mkdb/services_mkdb.c @@ -40,12 +40,12 @@ __FBSDID("$FreeBSD$"); #include #include #include +#define _WITH_GETLINE #include #include #include #include #include -#include #include #include #include @@ -235,7 +235,8 @@ add(DB *db, StringList *sl, size_t port, const char *proto, size_t *cnt, static StringList *** parseservices(const char *fname, StringList *sl) { - size_t len, line, pindex; + ssize_t len; + size_t linecap, line, pindex; FILE *fp; StringList ***svc, *s; char *p, *ep; @@ -243,18 +244,23 @@ parseservices(const char *fname, StringList *sl) if ((fp = fopen(fname, "r")) == NULL) err(1, "Cannot open `%s'", fname); - line = 0; + line = linecap = 0; if ((svc = calloc(PMASK + 1, sizeof(StringList **))) == NULL) err(1, "Cannot allocate %zu bytes", (size_t)(PMASK + 1)); - /* XXX: change NULL to "\0\0#" when fparseln fixed */ - for (; (p = fparseln(fp, &len, &line, NULL, 0)) != NULL; free(p)) { + p = NULL; + while ((len = getline(&p, &linecap, fp)) != -1) { char *name, *port, *proto, *aliases, *cp, *alias; unsigned long pnum; + line++; + if (len == 0) continue; + if (p[len - 1] == '\n') + p[len - 1] = '\0'; + for (cp = p; *cp && isspace((unsigned char)*cp); cp++) continue; -- cgit v1.1