diff options
-rw-r--r-- | usr.bin/sdiff/Makefile | 1 | ||||
-rw-r--r-- | usr.bin/sdiff/sdiff.c | 19 |
2 files changed, 11 insertions, 9 deletions
diff --git a/usr.bin/sdiff/Makefile b/usr.bin/sdiff/Makefile index bc7d1dce1c53..490462658bbb 100644 --- a/usr.bin/sdiff/Makefile +++ b/usr.bin/sdiff/Makefile @@ -6,7 +6,6 @@ PROG= sdiff SRCS= common.c edit.c sdiff.c WARNS= 3 -LIBADD= util MAN1= sdiff.1 .if ${MK_TESTS} != "no" diff --git a/usr.bin/sdiff/sdiff.c b/usr.bin/sdiff/sdiff.c index d1d763e43881..b9facfe5c618 100644 --- a/usr.bin/sdiff/sdiff.c +++ b/usr.bin/sdiff/sdiff.c @@ -22,11 +22,11 @@ __FBSDID("$FreeBSD$"); #include <limits.h> #include <paths.h> #include <stdint.h> +#define _WITH_GETLINE #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> -#include <libutil.h> #include "common.h" #include "extern.h" @@ -693,20 +693,23 @@ println(const char *s1, const char div, const char *s2) static char * xfgets(FILE *file) { - const char delim[3] = {'\0', '\0', '\0'}; + size_t linecap; + ssize_t l; char *s; - /* XXX - Is this necessary? */ clearerr(file); + linecap = 0; + s = NULL; - if (!(s = fparseln(file, NULL, NULL, delim, 0)) && - ferror(file)) - err(2, "error reading file"); - - if (!s) { + if ((l = getline(&s, &linecap, file)) == -1) { + if (ferror(file)) + err(2, "error reading file"); return (NULL); } + if (s[l-1] == '\n') + s[l-1] = '\0'; + return (s); } |