Merge "BSD grep: sync with upstream."

am: a42823b264

Change-Id: I5cbc85a29fe9092861dc6853e13c4030de17e748
This commit is contained in:
Elliott Hughes 2019-03-29 13:16:33 -07:00 committed by android-build-merger
commit 1a420368d8
5 changed files with 51 additions and 28 deletions

View file

@ -7,6 +7,8 @@ cc_defaults {
"-Wno-unused-const-variable", "-Wno-unused-const-variable",
"-D_FILE_OFFSET_BITS=64", "-D_FILE_OFFSET_BITS=64",
"-DWITHOUT_NLS", "-DWITHOUT_NLS",
"-DWITHOUT_BZ2",
"-DWITHOUT_GZIP",
], ],
} }

View file

@ -1,4 +1,4 @@
/* $NetBSD: file.c,v 1.7 2011/04/18 22:46:48 joerg Exp $ */ /* $NetBSD: file.c,v 1.10 2018/08/12 09:03:21 christos Exp $ */
/* $FreeBSD: head/usr.bin/grep/file.c 211496 2010-08-19 09:28:59Z des $ */ /* $FreeBSD: head/usr.bin/grep/file.c 211496 2010-08-19 09:28:59Z des $ */
/* $OpenBSD: file.c,v 1.11 2010/07/02 20:48:48 nicm Exp $ */ /* $OpenBSD: file.c,v 1.11 2010/07/02 20:48:48 nicm Exp $ */
@ -35,15 +35,12 @@
#endif #endif
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: file.c,v 1.7 2011/04/18 22:46:48 joerg Exp $"); __RCSID("$NetBSD: file.c,v 1.10 2018/08/12 09:03:21 christos Exp $");
#include <sys/param.h> #include <sys/param.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#ifndef __ANDROID__
#include <bzlib.h>
#endif
#include <err.h> #include <err.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
@ -53,17 +50,16 @@ __RCSID("$NetBSD: file.c,v 1.7 2011/04/18 22:46:48 joerg Exp $");
#include <unistd.h> #include <unistd.h>
#include <wchar.h> #include <wchar.h>
#include <wctype.h> #include <wctype.h>
#ifndef __ANDROID__
#include <zlib.h>
#endif
#include "grep.h" #include "grep.h"
#define MAXBUFSIZ (32 * 1024) #define MAXBUFSIZ (32 * 1024)
#define LNBUFBUMP 80 #define LNBUFBUMP 80
#ifndef __ANDROID__ #ifndef WITHOUT_GZIP
static gzFile gzbufdesc; static gzFile gzbufdesc;
#endif
#ifndef WITHOUT_BZ2
static BZFILE* bzbufdesc; static BZFILE* bzbufdesc;
#endif #endif
@ -77,18 +73,21 @@ static size_t lnbuflen;
static inline int static inline int
grep_refill(struct file *f) grep_refill(struct file *f)
{ {
ssize_t nr; ssize_t nr = -1;
#ifndef __ANDROID__
int bzerr; int bzerr;
#endif
bufpos = buffer; bufpos = buffer;
bufrem = 0; bufrem = 0;
#ifndef __ANDROID__ #ifndef WITHOUT_GZIP
if (filebehave == FILE_GZIP) if (filebehave == FILE_GZIP) {
nr = gzread(gzbufdesc, buffer, MAXBUFSIZ); nr = gzread(gzbufdesc, buffer, MAXBUFSIZ);
else if (filebehave == FILE_BZIP && bzbufdesc != NULL) { if (nr == -1)
return -1;
}
#endif
#ifndef WITHOUT_BZ2
if (filebehave == FILE_BZIP && bzbufdesc != NULL) {
nr = BZ2_bzRead(&bzerr, bzbufdesc, buffer, MAXBUFSIZ); nr = BZ2_bzRead(&bzerr, bzbufdesc, buffer, MAXBUFSIZ);
switch (bzerr) { switch (bzerr) {
case BZ_OK: case BZ_OK:
@ -114,9 +113,13 @@ grep_refill(struct file *f)
/* Make sure we exit with an error */ /* Make sure we exit with an error */
nr = -1; nr = -1;
} }
} else if (nr == -1)
return -1;
}
#endif #endif
if (nr == -1) {
nr = read(f->fd, buffer, MAXBUFSIZ); nr = read(f->fd, buffer, MAXBUFSIZ);
}
if (nr < 0) if (nr < 0)
return (-1); return (-1);
@ -204,11 +207,13 @@ static inline struct file *
grep_file_init(struct file *f) grep_file_init(struct file *f)
{ {
#ifndef __ANDROID__ #ifndef WITHOUT_GZIP
if (filebehave == FILE_GZIP && if (filebehave == FILE_GZIP &&
(gzbufdesc = gzdopen(f->fd, "r")) == NULL) (gzbufdesc = gzdopen(f->fd, "r")) == NULL)
goto error; goto error;
#endif
#ifndef WITHOUT_BZ2
if (filebehave == FILE_BZIP && if (filebehave == FILE_BZIP &&
(bzbufdesc = BZ2_bzdopen(f->fd, "r")) == NULL) (bzbufdesc = BZ2_bzdopen(f->fd, "r")) == NULL)
goto error; goto error;

View file

@ -1,4 +1,4 @@
/* $NetBSD: grep.c,v 1.12 2014/07/11 16:30:45 christos Exp $ */ /* $NetBSD: grep.c,v 1.15 2018/08/12 09:03:21 christos Exp $ */
/* $FreeBSD: head/usr.bin/grep/grep.c 211519 2010-08-19 22:55:17Z delphij $ */ /* $FreeBSD: head/usr.bin/grep/grep.c 211519 2010-08-19 22:55:17Z delphij $ */
/* $OpenBSD: grep.c,v 1.42 2010/07/02 22:18:03 tedu Exp $ */ /* $OpenBSD: grep.c,v 1.42 2010/07/02 22:18:03 tedu Exp $ */
@ -34,7 +34,7 @@
#endif #endif
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: grep.c,v 1.12 2014/07/11 16:30:45 christos Exp $"); __RCSID("$NetBSD: grep.c,v 1.15 2018/08/12 09:03:21 christos Exp $");
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
@ -170,7 +170,9 @@ static const char optstr[] =
struct option long_options[] = struct option long_options[] =
{ {
{"binary-files", required_argument, NULL, BIN_OPT}, {"binary-files", required_argument, NULL, BIN_OPT},
#ifndef WITHOUT_GZIP
{"decompress", no_argument, NULL, DECOMPRESS_OPT}, {"decompress", no_argument, NULL, DECOMPRESS_OPT},
#endif
{"help", no_argument, NULL, HELP_OPT}, {"help", no_argument, NULL, HELP_OPT},
{"mmap", no_argument, NULL, MMAP_OPT}, {"mmap", no_argument, NULL, MMAP_OPT},
{"line-buffered", no_argument, NULL, LINEBUF_OPT}, {"line-buffered", no_argument, NULL, LINEBUF_OPT},
@ -197,7 +199,9 @@ struct option long_options[] =
{"no-filename", no_argument, NULL, 'h'}, {"no-filename", no_argument, NULL, 'h'},
{"with-filename", no_argument, NULL, 'H'}, {"with-filename", no_argument, NULL, 'H'},
{"ignore-case", no_argument, NULL, 'i'}, {"ignore-case", no_argument, NULL, 'i'},
#ifndef WITHOUT_BZ2
{"bz2decompress", no_argument, NULL, 'J'}, {"bz2decompress", no_argument, NULL, 'J'},
#endif
{"files-with-matches", no_argument, NULL, 'l'}, {"files-with-matches", no_argument, NULL, 'l'},
{"files-without-match", no_argument, NULL, 'L'}, {"files-without-match", no_argument, NULL, 'L'},
{"max-count", required_argument, NULL, 'm'}, {"max-count", required_argument, NULL, 'm'},
@ -338,6 +342,7 @@ main(int argc, char *argv[])
case 'g': case 'g':
grepbehave = GREP_BASIC; grepbehave = GREP_BASIC;
break; break;
#ifndef WITHOUT_GZIP
case 'z': case 'z':
filebehave = FILE_GZIP; filebehave = FILE_GZIP;
switch(__progname[1]) { switch(__progname[1]) {
@ -352,6 +357,7 @@ main(int argc, char *argv[])
break; break;
} }
break; break;
#endif
} }
lastc = '\0'; lastc = '\0';
@ -491,9 +497,11 @@ main(int argc, char *argv[])
iflag = true; iflag = true;
cflags |= REG_ICASE; cflags |= REG_ICASE;
break; break;
#ifndef WITHOUT_BZ2
case 'J': case 'J':
filebehave = FILE_BZIP; filebehave = FILE_BZIP;
break; break;
#endif
case 'L': case 'L':
lflag = false; lflag = false;
Lflag = true; Lflag = true;
@ -596,9 +604,11 @@ main(int argc, char *argv[])
strcasecmp("no", optarg) != 0) strcasecmp("no", optarg) != 0)
errx(2, getstr(3), "--color"); errx(2, getstr(3), "--color");
break; break;
#ifndef WITHOUT_GZIP
case DECOMPRESS_OPT: case DECOMPRESS_OPT:
filebehave = FILE_GZIP; filebehave = FILE_GZIP;
break; break;
#endif
case LABEL_OPT: case LABEL_OPT:
label = optarg; label = optarg;
break; break;
@ -679,8 +689,13 @@ main(int argc, char *argv[])
} }
} }
if (lbflag) if (lbflag) {
#ifdef _IOLBF
setvbuf(stdout, NULL, _IOLBF, 0);
#else
setlinebuf(stdout); setlinebuf(stdout);
#endif
}
if ((aargc == 0 || aargc == 1) && !Hflag) if ((aargc == 0 || aargc == 1) && !Hflag)
hflag = true; hflag = true;

View file

@ -1,4 +1,4 @@
/* $NetBSD: grep.h,v 1.8 2012/05/06 22:27:00 joerg Exp $ */ /* $NetBSD: grep.h,v 1.10 2018/08/12 09:03:21 christos Exp $ */
/* $OpenBSD: grep.h,v 1.15 2010/04/05 03:03:55 tedu Exp $ */ /* $OpenBSD: grep.h,v 1.15 2010/04/05 03:03:55 tedu Exp $ */
/* $FreeBSD: head/usr.bin/grep/grep.h 211496 2010-08-19 09:28:59Z des $ */ /* $FreeBSD: head/usr.bin/grep/grep.h 211496 2010-08-19 09:28:59Z des $ */
@ -29,14 +29,14 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#ifndef __ANDROID__ #ifndef WITHOUT_BZ2
#include <bzlib.h> #include <bzlib.h>
#endif #endif
#include <limits.h> #include <limits.h>
#include <regex.h> #include <regex.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#ifndef __ANDROID__ #ifndef WITHOUT_GZIP
#include <zlib.h> #include <zlib.h>
#endif #endif

View file

@ -1,4 +1,4 @@
/* $NetBSD: util.c,v 1.17 2013/01/21 03:24:43 msaitoh Exp $ */ /* $NetBSD: util.c,v 1.19 2018/02/05 22:14:26 mrg Exp $ */
/* $FreeBSD: head/usr.bin/grep/util.c 211496 2010-08-19 09:28:59Z des $ */ /* $FreeBSD: head/usr.bin/grep/util.c 211496 2010-08-19 09:28:59Z des $ */
/* $OpenBSD: util.c,v 1.39 2010/07/02 22:18:03 tedu Exp $ */ /* $OpenBSD: util.c,v 1.39 2010/07/02 22:18:03 tedu Exp $ */
@ -34,7 +34,7 @@
#endif #endif
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: util.c,v 1.17 2013/01/21 03:24:43 msaitoh Exp $"); __RCSID("$NetBSD: util.c,v 1.19 2018/02/05 22:14:26 mrg Exp $");
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
@ -478,9 +478,10 @@ printline(struct str *line, int sep, regmatch_t *matches, int m)
if (color) if (color)
fprintf(stdout, "\33[%sm\33[K", color); fprintf(stdout, "\33[%sm\33[K", color);
fwrite(line->dat + matches[i].rm_so, fwrite(line->dat + matches[i].rm_so,
matches[i].rm_eo - matches[i].rm_so, 1, matches[i].rm_eo - matches[i].rm_so, 1,
stdout); stdout);
if (color) if (color)
fprintf(stdout, "\33[m\33[K"); fprintf(stdout, "\33[m\33[K");
a = matches[i].rm_eo; a = matches[i].rm_eo;