Merge "BSD grep: sync with upstream."
am: a42823b264
Change-Id: I5cbc85a29fe9092861dc6853e13c4030de17e748
This commit is contained in:
commit
1a420368d8
5 changed files with 51 additions and 28 deletions
|
|
@ -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",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue