svn commit: r299284 - head/usr.sbin/services_mkdb
Baptiste Daroussin
bapt at FreeBSD.org
Mon May 9 20:04:23 UTC 2016
Author: bapt
Date: Mon May 9 20:04:22 2016
New Revision: 299284
URL: https://svnweb.freebsd.org/changeset/base/299284
Log:
Replace fparseln(3) with getline(3) to remove dependency on libutil
Modified:
head/usr.sbin/services_mkdb/Makefile
head/usr.sbin/services_mkdb/services_mkdb.c
Modified: head/usr.sbin/services_mkdb/Makefile
==============================================================================
--- head/usr.sbin/services_mkdb/Makefile Mon May 9 20:01:34 2016 (r299283)
+++ head/usr.sbin/services_mkdb/Makefile Mon May 9 20:04:22 2016 (r299284)
@@ -4,6 +4,4 @@ PROG= services_mkdb
MAN= services_mkdb.8
SRCS= services_mkdb.c uniq.c extern.h
-LIBADD= util
-
.include <bsd.prog.mk>
Modified: head/usr.sbin/services_mkdb/services_mkdb.c
==============================================================================
--- head/usr.sbin/services_mkdb/services_mkdb.c Mon May 9 20:01:34 2016 (r299283)
+++ head/usr.sbin/services_mkdb/services_mkdb.c Mon May 9 20:04:22 2016 (r299284)
@@ -40,12 +40,12 @@ __FBSDID("$FreeBSD$");
#include <err.h>
#include <fcntl.h>
#include <netdb.h>
+#define _WITH_GETLINE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <libgen.h>
-#include <libutil.h>
#include <ctype.h>
#include <errno.h>
#include <stringlist.h>
@@ -235,7 +235,8 @@ add(DB *db, StringList *sl, size_t port,
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, StringL
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;
More information about the svn-src-all
mailing list