From ad557de2c31ac61ef253fc71e3d8a803982e460b Mon Sep 17 00:00:00 2001
From: Avery Pennarun <apenwarr@gmail.com>
Date: Sat, 23 Feb 2013 00:22:01 -0500
Subject: [PATCH] Make it compile on linux.

---
 .gitignore |    3 +++
 Makefile   |   17 ++++++++---------
 file.c     |    8 +++++++-
 grep.c     |    7 ++++---
 mmfile.c   |    2 --
 util.c     |    8 ++++++++
 6 files changed, 30 insertions(+), 15 deletions(-)
 create mode 100644 .gitignore

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f806a1a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*~
+*.o
+grep
diff --git a/Makefile b/Makefile
index 5c066d2..3752f46 100644
--- a/Makefile
+++ b/Makefile
@@ -15,13 +15,12 @@ MLINKS= grep.1 egrep.1 \
 	grep.1 zegrep.1 \
 	grep.1 zfgrep.1
 
-CFLAGS+= -Wall
+CFLAGS+= -Wall -DNOZ -DNOFTS -D_GNU_SOURCE -g
 
-.if ${OPSYS} == "Minix"
-CPPFLAGS+= -DNOZ -D_POSIX_SOURCE -D_MINIX
-.include <minix.prog.mk>
-.else
-LDADD=  -lz
-DPADD=  ${LIBZ}
-.include <bsd.prog.mk>
-.endif
+all: grep
+
+grep: $(SRCS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+clean:
+	rm -f *~ grep *.o
diff --git a/file.c b/file.c
index 1787ac0..b565aab 100644
--- a/file.c
+++ b/file.c
@@ -53,6 +53,8 @@ struct file {
 #ifndef NOZ
 	gzFile	*gzf;
 #endif
+	char	*buf;
+	size_t	 n;
 };
 
 #ifndef NOZ
@@ -133,6 +135,8 @@ grep_open(char *path, char *mode)
 
 	f = grep_malloc(sizeof *f);
 	f->noseek = 0;
+	f->buf = NULL;
+	f->n = 0;
 
 #ifndef NOZ
 	if (Zflag) {
@@ -182,7 +186,8 @@ grep_fgetln(file_t *f, size_t *l)
 {
 	switch (f->type) {
 	case FILE_STDIO:
-		return fgetln(f->f, l);
+		*l = getline(&f->buf, &f->n, f->f);
+		return (ssize_t)*l >= 0 ? f->buf : NULL;
 	case FILE_MMAP:
 		return mmfgetln(f->mmf, l);
 #ifndef NOZ
@@ -198,6 +203,7 @@ grep_fgetln(file_t *f, size_t *l)
 void
 grep_close(file_t *f)
 {
+	free(f->buf);
 	switch (f->type) {
 	case FILE_STDIO:
 		fclose(f->f);
diff --git a/grep.c b/grep.c
index b316981..6b0431b 100755
--- a/grep.c
+++ b/grep.c
@@ -218,13 +218,14 @@ static void
 read_patterns(const char *fn)
 {
 	FILE *f;
-	char *line;
-	size_t len;
+	char *line = NULL;
+	size_t n, len;
 
 	if ((f = fopen(fn, "r")) == NULL)
 		err(2, "%s", fn);
-	while ((line = fgetln(f, &len)) != NULL)
+	while ((len = getline(&line, &n, f)) >= 0)
 		add_pattern(line, *line == '\n' ? 0 : len);
+	free(line);
 	if (ferror(f))
 		err(2, "%s", fn);
 	fclose(f);
diff --git a/mmfile.c b/mmfile.c
index aa1a28a..ddf915d 100644
--- a/mmfile.c
+++ b/mmfile.c
@@ -53,8 +53,6 @@ mmopen(char *fn, char *mode)
 		goto ouch1;
 	if (fstat(mmf->fd, &st) == -1)
 		goto ouch2;
-	if (st.st_size > SIZE_T_MAX) /* too big to mmap */
-		goto ouch2;
 	if (!S_ISREG(st.st_mode)) /* only mmap regular files */
 		goto ouch2;
 	mmf->len = (size_t)st.st_size;
diff --git a/util.c b/util.c
index 028ddc6..fb9e18e 100644
--- a/util.c
+++ b/util.c
@@ -32,7 +32,9 @@
 #include <ctype.h>
 #include <err.h>
 #include <errno.h>
+#ifndef NOFTS
 #include <fts.h>
+#endif
 #include <regex.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -54,6 +56,7 @@ static void	grep_revstr(unsigned char *, int);
 int
 grep_tree(char **argv)
 {
+#ifndef NOFTS
 	FTS	*fts;
 	FTSENT	*p;
 	int	c, fts_flags;
@@ -90,6 +93,11 @@ grep_tree(char **argv)
 		err(2, "fts_read");
 
 	return c;
+#else
+	errno = ENOTSUP;
+	warn("recursive mode");
+	return 0;
+#endif
 }
 
 int
-- 
1.7.9.dirty

