PERFORCE change 143475 for review
Gabor Kovesdan
gabor at FreeBSD.org
Sat Jun 14 22:57:50 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=143475
Change 143475 by gabor at gabor_server on 2008/06/14 22:56:55
- Implement -J / --bz2decompress
Affected files ...
.. //depot/projects/soc2008/gabor_textproc/grep/binary.c#6 edit
.. //depot/projects/soc2008/gabor_textproc/grep/file.c#5 edit
.. //depot/projects/soc2008/gabor_textproc/grep/grep.1#10 edit
Differences ...
==== //depot/projects/soc2008/gabor_textproc/grep/binary.c#6 (text+ko) ====
==== //depot/projects/soc2008/gabor_textproc/grep/file.c#5 (text+ko) ====
@@ -66,18 +66,32 @@
static char *
bzfgetln(BZFILE *f, size_t *len)
{
- int bzerror;
+ size_t n;
+ char c;
+ int bzerr = 0;
+
+ for (n = 0; ; ++n) {
+ BZ2_bzRead(&bzerr, f, &c, 1);
+
+ if ((bzerr == BZ_STREAM_END) || (bzerr == BZ_SEQUENCE_ERROR)) {
+ if (n == 0)
+ return (NULL);
+ else
+ break;
+ } else if (bzerr != BZ_OK)
+ err(2, NULL);
- if (lnbuflen != *len)
- {
- lnbuflen = *len;
- lnbuf = grep_realloc(lnbuf, ++lnbuflen);
+ if (n >= lnbuflen) {
+ lnbuflen *= 2;
+ lnbuf = grep_realloc(lnbuf, ++lnbuflen);
+ }
+ if (c == '\n')
+ break;
+ lnbuf[n] = c;
}
- if (BZ2_bzRead(&bzerror, f, lnbuf, *len) > 0)
- return (lnbuf);
- else
- return (NULL);
+ *len = n;
+ return (lnbuf);
}
static char *
@@ -197,7 +211,7 @@
case FILE_GZIP:
return (gzbin_file(f->gzf));
case FILE_BZIP:
-/*XXX
+/* XXX: we cannot seek in bzip2 files, just suppose that it is not binary
return (bzbin_file(f->bzf)); */
return (0);
default:
==== //depot/projects/soc2008/gabor_textproc/grep/grep.1#10 (text+ko) ====
@@ -29,7 +29,7 @@
.\"
.\" @(#)grep.1 8.3 (Berkeley) 4/18/94
.\"
-.Dd 13 Jun, 2008
+.Dd 15 Jun, 2008
.Dt GREP 1
.Os
.Sh NAME
@@ -39,7 +39,7 @@
.Sh SYNOPSIS
.Nm grep
.Bk -words
-.Op Fl abcdDEFGHhIiLlmnOoPqRSsUVvwxZ
+.Op Fl abcdDEFGHhIiJLlmnOoPqRSsUVvwxZ
.Op Fl A Ar num
.Op Fl B Ar num
.Op Fl C Ns Op Ar num
@@ -227,6 +227,10 @@
By default,
.Nm grep
is case sensitive.
+.It Fl J, Fl Fl bz2decompress
+Decompress the
+.Xr bzip2 1
+compressed file before looking for the text.
.It Fl L , Fl Fl files-without-match
Only the names of files not containing selected lines are written to
standard output.
@@ -418,7 +422,7 @@
specification.
.Pp
The flags
-.Op Fl AaBbCGHhILoPRSUVwZ
+.Op Fl AaBbCDdGHhIJLmoPRSUVwZ
are extensions to that specification, and the behaviour of the
.Fl f
flag when used with an empty pattern file is left undefined.
More information about the p4-projects
mailing list