diff options
author | wiz <wiz> | 2006-03-11 13:10:42 +0000 |
---|---|---|
committer | wiz <wiz> | 2006-03-11 13:10:42 +0000 |
commit | 5c9c4fa63654eecaa8338c35d1097f8fdb269296 (patch) | |
tree | e0ad8574e33b57b3279b9ec0914a00d2ecf6828f /textproc | |
parent | 0e748bf1a15ce16a14486b7b7202548a286c922e (diff) | |
download | pkgsrc-5c9c4fa63654eecaa8338c35d1097f8fdb269296.tar.gz |
Update to 2.4.2 with latest patch (2.4.2-mlb2). Provided by OBATA Akio
in PR 31895.
Patch changes unknown.
Mainstream changes between 2.0 and 2.4.2:
Version 2.4.2
- Added more check in configure to default the grep-${version}/src/regex.c
instead of the one in GNU Lib C.
Version 2.4.1
- If the final byte of an input file is not a newline, grep now silently
supplies one.
- The new option --binary-files=TYPE makes grep assume that a binary input
file is of type TYPE.
--binary-files='binary' (the default) outputs a 1-line summary of matches.
--binary-files='without-match' assumes binary files do not match.
--binary-files='text' treats binary files as text
(equivalent to the -a or --text option).
- New option -I; equivalent to --binary-files='without-match'.
Version 2.4:
- egrep is now equivalent to `grep -E' as required by POSIX,
removing a longstanding source of confusion and incompatibility.
`grep' is now more forgiving about stray `{'s, for backward
compatibility with traditional egrep.
- The lower bound of an interval is not optional.
You must use an explicit zero, e.g. `x{0,10}' instead of `x{,10}'.
(The old documentation incorrectly claimed that it was optional.)
- The --revert-match option has been renamed to --invert-match.
- The --fixed-regexp option has been renamed to --fixed-string.
- New option -H or --with-filename.
- New option --mmap. By default, GNU grep now uses read instead of mmap.
This is faster on some hosts, and is safer on all.
- The new option -z or --null-data causes `grep' to treat a zero byte
(the ASCII NUL character) as a line terminator in input data, and
to treat newlines as ordinary data.
- The new option -Z or --null causes `grep' to output a zero byte
instead of the normal separator after a file name.
- These two options can be used with commands like `find -print0',
`perl -0', `sort -z', and `xargs -0' to process arbitrary file names,
even those that contain newlines.
- The environment variable GREP_OPTIONS specifies default options;
e.g. GREP_OPTIONS='--directories=skip' reestablishes grep 2.1's
behavior of silently skipping directories.
- You can specify a matcher multiple times without error, e.g.
`grep -E -E' or `fgrep -F'. It is still an error to specify
conflicting matchers.
- -u and -U are now allowed on non-DOS hosts, and have no effect.
- Modifications of the tests scripts to go around the "Broken Pipe"
errors from bash. See Bash FAQ.
- New option -r or --recursive or --directories=recurse.
(This option was also in grep 2.3, but wasn't announced here.)
- --without-included-regex disable, was causing bogus reports .i.e
doing more harm then good.
Version 2.3:
- When searching a binary file FOO, grep now just reports
`Binary file FOO matches' instead of outputting binary data.
This is typically more useful than the old behavior,
and it is also more consistent with other utilities like `diff'.
A file is considered to be binary if it contains a NUL (i.e. zero) byte.
The new -a or --text option causes `grep' to assume that all
input is text. (This option has the same meaning as with `diff'.)
Use it if you want binary data in your output.
- `grep' now searches directories just like ordinary files; it no longer
silently skips directories. This is the traditional behavior of
Unix text utilities (in particular, of traditional `grep').
Hence `grep PATTERN DIRECTORY' should report
`grep: DIRECTORY: Is a directory' on hosts where the operating system
does not permit programs to read directories directly, and
`grep: DIRECTORY: Binary file matches' (or nothing) otherwise.
The new -d ACTION or --directories=ACTION option affects directory handling.
`-d skip' causes `grep' to silently skip directories, as in grep 2.1;
`-d read' (the default) causes `grep' to read directories if possible,
as in earlier versions of grep.
- The MS-DOS and Microsoft Windows ports now behave identically to the
GNU and Unix ports with respect to binary files and directories.
Version 2.2:
Bug fix release.
- Status error number fix.
- Skipping directories removed.
- Many typos fix.
- -f /dev/null fix(not to consider as an empty pattern).
- Checks for wctype/wchar.
- -E was using the wrong matcher fix.
- bug in regex char class fix
- Fixes for DJGPP
Version 2.1:
This is a bug fix release(see Changelog) i.e. no new features.
- More compliance to GNU standard.
- Long options.
- Internationalisation.
- Use automake/autoconf.
- Directory hierarchy change.
- Sigvec with -e on Linux corrected.
- Sigvec with -f on Linux corrected.
- Sigvec with the mmap() corrected.
- Bug in kwset corrected.
- -q, -L and -l stop on first match.
- New and improve regex.[ch] from Ulrich Drepper.
- New and improve dfa.[ch] from Arnold Robbins.
- Prototypes for over zealous C compiler.
- Not scanning a file, if it's a directory
(cause problems on Sun).
- Ported to MS-DOS/MS-Windows with DJGPP tools.
See Changelog for the full story and proper credits.
Diffstat (limited to 'textproc')
-rw-r--r-- | textproc/ja-grep/Makefile | 17 | ||||
-rw-r--r-- | textproc/ja-grep/PLIST | 23 | ||||
-rw-r--r-- | textproc/ja-grep/distinfo | 13 | ||||
-rw-r--r-- | textproc/ja-grep/patches/patch-aa | 2844 | ||||
-rw-r--r-- | textproc/ja-grep/patches/patch-ab | 39 |
5 files changed, 42 insertions, 2894 deletions
diff --git a/textproc/ja-grep/Makefile b/textproc/ja-grep/Makefile index 74d8945cfe1..5c7705835a8 100644 --- a/textproc/ja-grep/Makefile +++ b/textproc/ja-grep/Makefile @@ -1,19 +1,28 @@ -# $NetBSD: Makefile,v 1.3 2005/03/24 21:13:02 wiz Exp $ +# $NetBSD: Makefile,v 1.4 2006/03/11 13:10:42 wiz Exp $ -DISTNAME= grep-2.0 -PKGNAME= ja-grep-2.0 +DISTNAME= grep-2.4.2 +PKGNAME= ja-grep-2.4.2 CATEGORIES= japanese textproc MASTER_SITES= ${MASTER_SITE_GNU:=grep/} +PATCH_SITES= http://www.hinadori.atnifty.com/~wills/program/ +PATCHFILES= grep-2.4.2-mlb2.patch.gz +PATCH_DIST_STRIP= -p1 + MAINTAINER= tech-pkg-ja@jp.NetBSD.org HOMEPAGE= http://www.gnu.org/software/grep/grep.html COMMENT= GNU grep + multi-byte extension GNU_CONFIGURE= yes -PATCH_STRIP= -p1 +USE_PKGLOCALEDIR= yes +CONFIGURE_ARGS+= --program-transform-name='s,^,j,' +TEST_TARGET= check + +INFO_FILES= grep.info post-install: ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/ja-grep ${INSTALL_DATA} ${WRKSRC}/README.MB ${PREFIX}/share/doc/ja-grep +.include "../../devel/gettext-lib/buildlink3.mk" .include "../../mk/bsd.pkg.mk" diff --git a/textproc/ja-grep/PLIST b/textproc/ja-grep/PLIST index a3ac205a24b..a97e94a5f05 100644 --- a/textproc/ja-grep/PLIST +++ b/textproc/ja-grep/PLIST @@ -1,7 +1,28 @@ -@comment $NetBSD: PLIST,v 1.1.1.1 2002/05/31 13:00:42 seb Exp $ +@comment $NetBSD: PLIST,v 1.2 2006/03/11 13:10:42 wiz Exp $ bin/jgrep bin/jegrep bin/jfgrep man/man1/jgrep.1 +man/man1/jegrep.1 +man/man1/jfgrep.1 share/doc/ja-grep/README.MB +${PKGLOCALEDIR}/locale/cs/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/de/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/el/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/eo/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/es/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/et/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/fr/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/hr/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/id/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/it/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/ja/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/ko/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/nl/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/no/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/pl/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/pt_BR/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/ru/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/sl/LC_MESSAGES/grep.mo +${PKGLOCALEDIR}/locale/sv/LC_MESSAGES/grep.mo @dirrm share/doc/ja-grep diff --git a/textproc/ja-grep/distinfo b/textproc/ja-grep/distinfo index adee8d3e240..8b324fe0db6 100644 --- a/textproc/ja-grep/distinfo +++ b/textproc/ja-grep/distinfo @@ -1,7 +1,8 @@ -$NetBSD: distinfo,v 1.3 2005/02/24 14:48:43 agc Exp $ +$NetBSD: distinfo,v 1.4 2006/03/11 13:10:42 wiz Exp $ -SHA1 (grep-2.0.tar.gz) = 99e8f917557f1496cd3786e6c13f3900b8de24d8 -RMD160 (grep-2.0.tar.gz) = 9bef80d053aaa96fe6d7e6867d044f44748c4da2 -Size (grep-2.0.tar.gz) = 127065 bytes -SHA1 (patch-aa) = 41d2bd451f1332b8dbc3f72e6c6a56308a2c081b -SHA1 (patch-ab) = ee7821abf28e1cdfab00068f86c1454362d7f25d +SHA1 (grep-2.4.2.tar.gz) = 83fbd0fcb6ec4b10edf438a28d12608a4f06d588 +RMD160 (grep-2.4.2.tar.gz) = 768399d130cb517889ccfea952e6bc6798dd27cc +Size (grep-2.4.2.tar.gz) = 460582 bytes +SHA1 (grep-2.4.2-mlb2.patch.gz) = d2df678e73efd995db2a41cba110e1d0c1ff5104 +RMD160 (grep-2.4.2-mlb2.patch.gz) = d1d59c8e252d4ef5096843f6ea2fed0277237ecb +Size (grep-2.4.2-mlb2.patch.gz) = 39453 bytes diff --git a/textproc/ja-grep/patches/patch-aa b/textproc/ja-grep/patches/patch-aa deleted file mode 100644 index 593905a3722..00000000000 --- a/textproc/ja-grep/patches/patch-aa +++ /dev/null @@ -1,2844 +0,0 @@ -$NetBSD: patch-aa,v 1.1.1.1 2002/05/31 13:00:43 seb Exp $ - -$B!|!|!|!|!|(B GNU grep version 2.0 + multi-byte extension 1.04 $B!|!|!|!|!|(B -$B!|!|!|!|!|(B Jun. 2, 1994 by t^2 $B!|!|!|!|!|(B - - $B$3$N%U%!%$%k$O(B GNU grep version 2.0 (grep-2.0) $B$N%=!<%9%3!<%I$+$i(B, $B$=(B - $B$N%^%k%A%P%$%HJ8;zBP1~HG(B grep-2.0+mb1.04 $B$N%=!<%9%3!<%I$r@8@.$9$k$?$a(B - $B$N:9J,$r4^$s$G$$$^$9(B. grep-2.0 $B$N%=!<%9$rE83+$7$F$"$k%G%#%l%/%H%j$G(B - - % patch -p1 < $B$3$N%U%!%$%k(B - - $B$J$I$H$7$F%Q%C%A$rEv$F$F$/$@$5$$(B. $B$=$N8e(B README.MB $B$rFI$s$G$/$@$5$$(B. - -$B")(B810 $BJ!2,;TCf1{6hG_8w1`CDCO(B 7-207 -TEL/FAX: 092-731-4025 (TEL/FAX $B<+F0@ZBX$((B) - 092-724-6342 (TEL $B$N$_(B) -E-mail: NBC02362@niftyserve.or.jp t^2 ($BC+K\9'9@(B) - -diff -ru2N grep-2.0/ChangeLog.MB grep+mb1.04/ChangeLog.MB ---- grep-2.0/ChangeLog.MB Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/ChangeLog.MB Thu Jun 2 17:01:42 1994 -@@ -0,0 +1,219 @@ -+Thu Jun 2 16:58:03 1994 Takahiro Tanimoto (tt@isaac) -+ -+ * Version 2.0 + multi-byte extension 1.04 released. -+ -+Sat Mar 5 16:30:16 1994 Takahiro Tanimoto (tt@isaac) -+ -+ * README.MSC: PC-9800 $B%7%j!<%:MQ(B MS-C 6.00A $B$N(B, $B%o%$%k%I%+!<%IE8(B -+ $B3+%k!<%A%s$N%P%0$KBP=h$7$?(B. $B0JA0$N(B stdargv.diff $B$r$3$l$KE}9g$7(B, -+ $B:o=|$7$?(B. (Thanks to $BJ!9@K.$5$s(B <GFE00522@niftyserve.or.jp>) -+ -+Thu Aug 19 04:26:09 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * regex.c (re_compile_fastmap): charset_not $B$N(B fastmap $B$N:n@.=h(B -+ $BM}$,4V0c$C$F$$$F(B, regex $B$N(B fastmap $B$r;HMQ$9$k>l9g(B (e?grep $B$G$O(B -+ fastmap $B$r;HMQ$7$F$$$J$$$?$a(B, $B$3$NLdBj$OI=LL$K$O8=$l$J$$(B), $B@55,(B -+ $BI=8=$N@hF,$N(B [^$B#A(B] $B$d(B [^a] $B$KNc$($P(B $B#B(B $B$,%^%C%A$7$J$+$C$?(B. -+ (Thanks to $B>.20NIM4$5$s(B <JAE03716@niftyserve.or.jp>) -+ -+Tue Aug 10 01:29:05 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * regex.c (set_list_bits): $BJ8;z%/%i%9Cf$N%^%k%A%P%$%HJ8;z$N:GE,(B -+ $B2=$G(B, $B6h4V=*E@$N99?7=hM}ItJ,$K%P%0$,$"$j(B, [$B#A(B-$B#C#E(B-$B#G#B(B-$B#D(B] $B$r:G(B -+ $BE,2=$9$k$H(B [$B#A(B-$B#G(B] $B$@$,(B, $B$3$l$,(B [$B#A(B-$B#E(B] $B$H$J$C$F$7$^$C$F$$$?(B. -+ $B$?$@$7(B, regex $B$G$O$J$/(B dfa $B$,;HMQ$5$l$k>l9g$K$O$3$N%P%0$OI=LL$K(B -+ $B$O8=$l$J$$(B. -+ -+Fri Jul 23 03:22:13 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * Version 2.0 + multi-byte extension 1.03 released. -+ -+ * DEFS.dos: strcmpi $B$r(B stricmp $B$KJQ99(B. -+ -+ * grep.c (main): MS-DOS $B$N>l9g(B, argv[0] $B$r2C9)$7$?J8;zNs$X$N%]%$(B -+ $B%s%?$r(B argv[0] $B$X$b%;%C%H$9$k(B. getopt $B$,=PNO$9$k%a%C%;!<%8$b2C(B -+ $B9)$5$l$?J8;zNs$H$J$k(B. -+ -+ * grep.c (main): MS-C 6.00A $B$N(B stdargv.asm $B$N%P%0$r%U%#%C%/%9$7(B -+ $B$?$?$a(B, argv[0] == "" $B$N$H$-$N=hM}$r:o=|$7$?(B. -+ -+ * stdargv.diff: $BDI2C(B. -+ -+Tue Jul 13 07:04:13 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * Version 2.0 + multi-byte extension 1.02 released. -+ -+Mon Jul 12 00:20:36 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * grep.c: HAVE_STRCASECMP $B$,(B #define $B$5$l$F$$$J$$$H$-(B, $B0lJ}$NJ8(B -+ $B;zNs$@$1$r>.J8;z$K$7$F$+$iHf3S$9$k4X?t$rDj5A$7$F$$$?$,(B, $B;H$$J}$,(B -+ $B0-$+$C$?(B. $B$=$l$r(B strcasecmp() $B$HF1$8$b$N$KJQ99$7$?(B. -+ -+ * DEFS.dos: HAVE_STRCMPI $B$r(B #define $B$9$kBe$o$j$K(B, -+ HAVE_STRCASECMP $B$r(B #define $B$7(B, strcasecmp $B$r(B strcmpi $B$K(B #define -+ $B$7$?(B. -+ -+Sat Jul 10 01:05:04 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * Version 2.0 + multi-byte extension 1.01 released. -+ -+ * grep.c (main): MSDOS $B$N>l9g(B, argv[0] $B$r>.J8;z$K$7$F(B prog $B$K%;%C(B -+ $B%H$9$k(B. $B$^$?(B, $B3HD%;R$O<h$j=|$/(B. -+ -+ * obstack.h: chunk_size $B$N7?$r(B size_t $B$+$i(B unsigned $B$KJQ99(B. -+ old-C $B$N>l9g(B, size_t $B$,Dj5A$5$l$F$$$J$$>uBV$H$J$C$?$?$a(B. -+ -+ * regex.h: $BDj?t$N8e$K(B U, UL $B$r$D$1$k$H(B old-C $B$G%3%s%Q%$%k$G$-$J(B -+ $B$$(B. $B$3$l$i$r%-%c%9%H$KJQ99$7$?(B. -+ -+ * regex.h: RE_DUP_MAX $B$NDj5A$r(B 16 $B%S%C%H(B int $B$N%^%7%s$G$b%*!<%P(B -+ $B%U%m!<$7$J$$=q$-J}$K=$@5(B. -+ -+ * obstack.h: struct obstack $B$N%a%s%P(B chunk_size $B$N7?$r(B size_t $B$H(B -+ $B$7$?(B. PTR_INT_TYPE $B$r30It$+$i(B #define $B$G$-$k$h$&$K$7$?(B. MSDOS -+ $B$G(B SMALL MODEL $B0J30$N>l9g(B, __PTR_TO_INT, __INT_TO_PTR $B$H$H$b$K(B, -+ $B%]%$%s%?$H(B long $B$rJQ49$9$k$h$&$K$7$?(B. -+ -+ * grep.c (fillbuf, grep): read() $B$NJV$jCM$N@5Ii$K$h$k%(%i!<%A%'%C(B -+ $B%/$r(B, -1 $B$KEy$7$$$+$I$&$+$G9T$&$h$&$KJQ99(B. -+ -+ * grep.c: totalcc, totalnl $B$r(B unsigned long $B$KJQ99$7(B, prline() -+ $BCf$N(B printf() $B$N=q<0$r9g$o$;$?(B. -+ -+ * DEFS.dos: BUFSALLOC $B$r(B 4096 $B$K(B #define. (See reset() in -+ grep.c.) -+ -+ * getpagesize.h: MSDOS $B$N>l9g(B, $B%Z!<%8%5%$%:$O(B 4096 $B$H$7$?(B. -+ -+ * dfa.c: STDC_HEADERS $B$^$?$O(B HAVE_STRING_H $B$N$H$-(B, bcopy, bzero -+ $B$r%^%/%mE83+$9$k(B. -+ -+Fri Jul 9 13:16:50 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * mbc.c, mbc.h, ...: ismbchar() $B$r%b%8%e!<%kKh$KFHN)$7$FDj5A$9$k(B -+ $B$N$r$d$a(B, $B%b%8%e!<%k$rDI2C$7$?(B. -+ -+ * search.c (Fexecute): fgrep $B$r%^%k%A%P%$%HJ8;z$KBP1~$5$;$?(B. -+ -+Wed Jul 7 17:02:33 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * kwset.c (bmexec): 8 $B%S%C%H%/%j!<%s$G$J$$$H$3$m$r=$@5(B. -+ -+ * $B%Y!<%9$r(B grep-2.0 $B$XJQ99(B. -+ -+Sun Jul 4 08:48:12 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * regex.c (re_match_2): $B%*%j%8%J%k$N%P%0(B. maybe_finalize_jump -+ $B$N=hM}Cf(B, start_memory/stop_memory $B$r%9%-%C%W$9$k$H$3$m$G(B, $B0z?t(B -+ $B$N%9%-%C%W$r$7$F$$$J$$%P%0$r=$@5(B. $BNc$($P(B "([a-n]+).*\1" $B$,@5$7(B -+ $B$/(B "abcxyzab" $B$K%^%C%A$9$k$h$&$K$J$C$?(B. -+ -+Sat Jul 3 06:51:33 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * Version 1.6 + multi-byte extension 1.00 released. -+ -+Sat Jul 3 04:29:14 1993 Takahiro Tanimoto (tt at pc98) -+ -+ * grep.c (bufprev): -b $B%*%W%7%g%s$GI=<($9$k%P%$%H%*%U%;%C%H$r(B -+ long $B$K$9$k$?$a$K(B bufprev $B$r(B long $B$H$7$?(B. bufprev $B0J30$OJQ99$7(B -+ $B$F$$$J$$$?$a(B, 1 $B9T$N%5%$%:$,(B int $B$NHO0O$r1[$($k$H@5$7$/=hM}$5$l(B -+ $B$J$$(B. $B$^$?(B, DOS $B$G$O(B CR+LF $B$r(B 1 $B%P%$%H$H$7$F%+%&%s%H$7$F$7$^$&(B. -+ ($B<jH4$-(B) -+ -+ * regex.c (re_match_2): $BJ8;z%/%i%9$N=hM}Cf$N(B 16 $B%S%C%H(B int $B$G@5(B -+ $B>oF0:n$7$J$$ItJ,$r=$@5(B. -+ -+ * regex.c (re_exec): re_search() $B$X$N:G8e$N0z?t$r(B 0 $B$+$i(B NULL $B$X(B -+ $B=$@5(B. -+ -+ * regex.c (re_match): re_match_2() $B$X$N#2HVL\$N0z?t$r(B 0 $B$+$i(B -+ NULL $B$X=$@5(B. -+ -+ * regex.c (re_search): re_search_2() $B$X$N#2HVL\$N0z?t$r(B 0 $B$+$i(B -+ NULL $B$X=$@5(B. -+ -+ * grep.c (main): MS-C $B$N(B setargv $B$N%P%0$N$;$$$G(B, grep "\\" foo -+ $B$H$9$k$H(B argv[0] == "" $B$H$J$C$F$7$^$&(B. argv[0] == "" $B$N$H$-$O6/(B -+ $B@)E*$K(B "grep" $B$^$?$O(B "egrep" $B$r%;%C%H$9$k$h$&$K$7$?(B. -+ -+Fri Jul 2 19:25:58 1993 Takahiro Tanimoto (tt at pc98) -+ -+ * grep.c (main): $BJQ?t(B prog $B$N@_Dj$r(B DOS $BMQ$K=$@5$7$?(B. $B$=$N:](B, -+ $B%*%j%8%J%k$N$d$jJ}$O$^$:$+$C$?$N$G=$@5$7$?(B. -+ -+ * grep.c: MSDOS $B$N$H$-(B errno $B$H(B sys_errlist $B$N@k8@$r$7$J$$$h$&$K(B -+ $B=$@5$7$?(B. -+ -+ * regex.c (set_list_bits): $B;HMQ$7$F$$$J$+$C$?JQ?t$r:o=|(B. -+ -+ * Makefile.msc: DOS $B%5%]!<%H$N$?$aDI2C(B. -+ -+Fri Jun 11 04:14:22 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * grep.c: version $BJ8;zNs$,8E$$$^$^$@$C$?(B. -+ -+Tue May 25 00:10:49 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * Version 1.6 + multi-byte extension 0.02 released. -+ -+Mon May 24 15:57:31 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * regex.c (re_search_2): $B8eJ}$X(B advance $B$9$k:]$N%P%0$r=$@5(B. -+ -+Sat May 22 02:03:41 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * regex.c (re_compile_fastmap): exactn $B$G(B translate $B$9$k$N$r$d$a(B -+ $B$?(B. re_compile_pattern $B$G0lEY(B translate $B$5$l$F$$$k$O$:(B. -+ -+ * regex.c (re_match_2): exactn $B$N=hM}ItJ,$G(B, #if 0 $B$r(B #if 1 $B$K$7(B -+ $B$?>l9g(B, $B@5$7$$=hM}$r9T$C$F$$$J$+$C$?$N$r=$@5(B. -+ -+Fri May 21 20:04:07 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * regex.[ch]: mbcharset, mbcharset_not $B$rGQ;_(B. $BBe$o$j$K(B -+ charset, charset_not $B$,%^%k%A%P%$%HJ8;z$r$bJ];}$9$k(B. -+ -+ * grep.c (main): $B2<5-$NJQ99$KH<$C$F(B, "^.*(" ... ")" $B$rIU2C$9$k=h(B -+ $BM}$r:o=|$7$?(B. -+ -+ * dfa.c (regcompile): searchflag $B$,(B ON $B$N$H$-(B, $B@55,I=8=$r(B "^.*(" -+ ... ")" $B$H$7$F%3%s%Q%$%k$9$k$h$&$K$7$?(B. $B0JA0$O(B grep.c $B$NCf$GF1(B -+ $B$8$3$H$r9T$C$F$$$?(B. -+ -+ * dfa.c (lex): $BJ8;z%/%i%9$G%^%k%A%P%$%HJ8;z$N#1J8;zL\$N=89g$+$i(B, -+ $B%7%s%0%k%P%$%HJ8;z$r=|30$9$k=hM}$rDI2C$7$?(B. -+ -+ * dfa.c (lex): $BJ8;z%/%i%9$G%7%s%0%k%P%$%HJ8;z$N>e8B$,4V0c$C$F$$(B -+ $B$?$N$r=$@5$7$?(B. -+ -+Wed May 19 01:27:07 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * regex.c: !__STDC__ $B$N$H$-$K(B const $B$r(B #define. -+ -+ * dfa.h: $B%*%j%8%J%k$G$O(B !STDC_HEADERS $B$N$H$-$K(B const $B$r(B #define -+ $B$7$F$$$?$,(B, $B$3$l$r(B !__STDC__ $B$N$H$-$K(B #define $B$9$k$h$&$KJQ99$7$?(B. -+ -+ * configure.in: bcopy(), memmove() $B$N%A%'%C%/$rDI2C(B. -+ -+ * dfa.c (reginit): cs_tok[] $B$N=i4|2=$rDI2C$7$?(B. -i $B%U%i%0$rIU$1(B -+ $B$?>l9g$NIT6q9g$r=$@5(B. -+ -+Tue May 18 18:14:04 1993 Takahiro Tanimoto (tt@albert) -+ -+ * dfa.h: regex.h $B$G$N(B RE_MBCTYPE_??? $B$NCM$H0lCW$5$;$?(B. -+ -+ * regex.[ch] (RE_TRANSLATED_RANGE): mbsed-0.01 $B$G9T$C$?3HD%$rM"(B -+ $BF~$7$?(B. -+ -+Sat May 15 04:27:32 1993 Takahiro Tanimoto (tt@isaac) -+ -+ * $B%^%k%A%P%$%HJ8;zBP1~HG$,0lDL$j40@.$7$?(B. -+ -+ -+Local Variables: -+mode: indented-text -+left-margin: 8 -+fill-column: 72 -+fill-prefix: " " -+version-control: never -+End: -diff -ru2N grep-2.0/DEFS.dos grep+mb1.04/DEFS.dos ---- grep-2.0/DEFS.dos Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/DEFS.dos Fri Jul 23 03:23:31 1993 -@@ -0,0 +1,15 @@ -+#define STDC_HEADERS 1 -+#define HAVE_STRING_H 1 -+#define HAVE_MEMCHR 1 -+#define HAVE_STRERROR 1 -+#define HAVE_MEMMOVE 1 -+#define HAVE_STRCASECMP 1 -+#define strcasecmp stricmp -+ -+#define BUFSALLOC 4096 -+ -+#ifndef M_I86SM -+#define __PTR_TO_INT(P) ((long)(P)) -+#define __INT_TO_PTR(P) ((char *)(P)) -+#define PTR_INT_TYPE long -+#endif -diff -ru2N grep-2.0/MANIFEST.MB grep+mb1.04/MANIFEST.MB ---- grep-2.0/MANIFEST.MB Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/MANIFEST.MB Sat Mar 5 16:37:46 1994 -@@ -0,0 +1,11 @@ -+ChangeLog.MB Revision history of multi-byte extension to grep. -+DEFS.dos Definitions for DOS. -+MANIFEST.MB This file. -+Makefile.msc Makefile for MS-C version 6. -+README.MB Documentation for multi-byte extension. -+README.MSC Patch for source/startup/... of MS-C 6.00A -+mbc.c Multi-byte char handler. -+mbc.h Interface to mbc.c. -+tests/batgen.awk DOS version of scriptgen.awk. -+tests/check.bat DOS version of check.sh -+tests/spencer.dos Input for batgen. -diff -ru2N grep-2.0/Makefile.in grep+mb1.04/Makefile.in ---- grep-2.0/Makefile.in Mon May 3 05:54:24 1993 -+++ grep+mb1.04/Makefile.in Mon Jul 12 02:02:28 1993 -@@ -16,4 +16,7 @@ - # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -+# Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto) -+# Last change: Jul. 12, 1993 by t^2 -+ - SHELL = /bin/sh - -@@ -40,4 +43,11 @@ - DEFS=-DGREP @DEFS@ - -+# Things you might set to MBCTYPE_DEF to spec. default multi-byte char type. -+# -DEUC will make default multi-byte char type EUC and -+# -DSJIS SJIS. -+# If you do not set EUC/SJIS, grep assumes no multi-byte -+# char as default. -+MBCTYPE_DEF=-DEUC -+ - # Extra libraries. - LIBS=@LIBS@ -@@ -69,9 +79,9 @@ - #### End of system configuration section. #### - --SRCS=grep.c getopt.c regex.c dfa.c kwset.c obstack.c search.c --OBJS=grep.o getopt.o regex.o dfa.o kwset.o obstack.o search.o -+SRCS=grep.c getopt.c regex.c dfa.c kwset.c obstack.c search.c mbc.c -+OBJS=grep.o getopt.o regex.o dfa.o kwset.o obstack.o search.o mbc.o - - .c.o: -- $(CC) $(CFLAGS) $(DEFS) -I$(srcdir) -c $< -+ $(CC) $(CFLAGS) $(DEFS) $(MBCTYPE_DEF) -I$(srcdir) -c $< - - all: grep check.done -@@ -120,7 +130,9 @@ - dist: - V=`sed -n '/version\\[/s/.*\\([0-9][0-9]*\\.[0-9]*\\).*/\\1/p' \ -+ grep.c`+mb`sed -n '/^ + multi-byte/s/[^0-9]*\\([0-9.]*\\).*/\\1/p' \ - grep.c`; \ - mkdir grep-$$V; mkdir grep-$$V/tests; \ -- for f in `awk '{print $$1}' MANIFEST`; do ln $$f grep-$$V/$$f; done; \ -+ for f in `awk '{print $$1}' MANIFEST MANIFEST.MB`; \ -+ do ln $$f grep-$$V/$$f; done; \ - tar cvhf - grep-$$V | gzip > grep-$$V.tar.z; \ - rm -fr grep-$$V -@@ -132,2 +144,3 @@ - kwset.o obstack.o: obstack.h - regex.o search.o: regex.h -+grep.o regex.o dfa.o search.o mbc.o: mbc.h -diff -ru2N grep-2.0/Makefile.msc grep+mb1.04/Makefile.msc ---- grep-2.0/Makefile.msc Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/Makefile.msc Fri Jul 23 04:03:17 1993 -@@ -0,0 +1,138 @@ -+# Generated automatically from Makefile.in by configure. -+# Makefile for GNU grep -+# Copyright (C) 1992 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2, or (at your option) -+# any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+# Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto) -+# Last change: Jul. 23, 1993 by t^2 -+ -+#### Start of system configuration section. #### -+ -+srcdir=. -+VPATH=. -+ -+AWK=gawk -+INSTALL=cp -+INSTALL_PROGRAM=$(INSTALL) -+INSTALL_DATA=$(INSTALL) -+ -+CC=cl -nologo -D__STDC__ -AL -+LINT=lint -+ -+# Things you might add to DEFS: -+# -DSTDC_HEADERS If you have ANSI C headers and libraries. -+# -DHAVE_UNISTD_H If you have unistd.h. -+# -DUSG If you have System V/ANSI C string -+# and memory functions and headers. -+# -D__CHAR_UNSIGNED__ If type `char' is unsigned. -+# gcc defines this automatically. -+# -+# For DOS, add those to DEFS.dos. -+ -+# Things you might set to MBCTYPE_DEF to spec. default multi-byte char type. -+# -DEUC will make default multi-byte char type EUC and -+# -DSJIS SJIS. -+# If you do not set EUC/SJIS, grep assumes no multi-byte -+# char as default. -+MBCTYPE_DEF=-DSJIS -+ -+# Extra libraries. -+LIBS=setargv/noe/st:30000 -+ALLOCA= -+ -+CFLAGS=-Ox -+LDFLAGS=$(CFLAGS) -+ -+prefix= -+exec_prefix=$(prefix) -+ -+# Prefix for installed program, normally empty or `g'. -+binprefix= -+# Prefix for installed man page, normally empty or `g'. -+manprefix= -+ -+# Where to install executables. -+bindir=$(exec_prefix)/bin -+ -+# Where to install man pages. -+mandir=$(prefix)/man/man1 -+ -+# Extension for man pages. -+manext=1 -+ -+# How to make a hard link. -+LN=cp -+ -+#### End of system configuration section. #### -+ -+SRCS=grep.c getopt.c regex.c dfa.c kwset.c obstack.c search.c mbc.c -+OBJS=grep.obj getopt.obj regex.obj dfa.obj kwset.obj obstack.obj search.obj mbc.obj -+ -+.c.obj: -+ cat DEFS.dos $< > $*_.c -+ $(CC) $(CFLAGS) $(MBCTYPE_DEF) -I$(srcdir) -c -Fo$@ $*_.c -+ rm $*_.c -+ -+all: grep.exe check.don -+ -+# For Saber C. -+grep.loa: $(SRCS) -+ #load $(CFLAGS) $(DEFS) -I$(srcdir) (SRCS) -+ -+# For Lint. -+grep.lin: $(SRCS) -+ $(LINT) $(CFLAGS) $(DEFS) -I$(srcdir) $(SRCS) -+ -+install: all -+ $(INSTALL_PROGRAM) grep.exe $(bindir)/$(binprefix)grep.exe -+ rm -f $(bindir)/$(binprefix)egrep.exe -+ $(LN) $(bindir)/$(binprefix)grep.exe $(bindir)/$(binprefix)egrep.exe -+ rm -f $(bindir)/$(binprefix)fgrep.exe -+ $(LN) $(bindir)/$(binprefix)grep.exe $(bindir)/$(binprefix)fgrep.exe -+ -+check: -+ tests\check -+ echo done >check.don -+ -+check.don: grep.exe -+ tests\check -+ echo done >check.don -+ -+grep.exe: $(OBJS) -+ echo $(OBJS:.obj =.obj+)+>link.tmp -+ echo $(LIBS)>>link.tmp -+ echo $@/noi;>>link.tmp -+ link @link.tmp -+ rm link.tmp -+ -+clean: -+ rm -f grep.exe *.obj check.don tmp.bat tmp.in khadafy.out -+ -+mostlycl: clean -+ -+distclea: clean -+ rm -f Makefile config.sta -+ -+realclea: distclea -+ rm -f TAGS -+ -+# Some header file dependencies that really ought to be automatically deduced. -+dfa.obj search.obj: dfa.h -+grep.obj search.obj: grep.h -+kwset.obj search.obj: kwset.h -+kwset.obj obstack.obj: obstack.h -+regex.obj search.obj: regex.h -+grep.obj regex.obj dfa.obj search.obj mbc.obj: mbc.h -diff -ru2N grep-2.0/README.MB grep+mb1.04/README.MB ---- grep-2.0/README.MB Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/README.MB Thu Jun 2 17:03:37 1994 -@@ -0,0 +1,327 @@ -+$B!|!|!|!|!|(B GNU grep version 2.0 + multi-byte extension 1.04 $B!|!|!|!|!|(B -+$B!|!|!|!|!|(B Jun. 2, 1994 by t^2 $B!|!|!|!|!|(B -+ -+ grep-2.0+mb1.04 -- $B%^%k%A%P%$%HJ8;zBP1~HG(B GNU grep -+ -+$B!|35MW(B -+ -+ GNU $B%W%m%8%'%/%H$K$h$k(B grep, egrep, fgrep ($B0J2<C1$K(B grep) $B$r%^%k%A%P(B -+ $B%$%HJ8;zBP1~2=$7$?$b$N$G$9(B. -+ -+$B!|;HMQK!(B -+ -+ grep $B$+$i$N3HD%ItJ,$@$1$r@bL@$7$^$9(B. -+ -+ $BA}$($?%*%W%7%g%s$O0J2<$NDL$j$G$9(B. -+ -+ -Wctype=ASCII -+ $B%^%k%A%P%$%HJ8;z$r9MN8$7$^$;$s(B. $B$3$N%*%W%7%g%s$r;HMQ$7$?>l(B -+ $B9g(B, grep $B$N%*%j%8%J%k$HF1$8F0:n$K$J$k$O$:$G$9(B. -+ -+ -Wctype=EUC -+ $B%^%k%A%P%$%HJ8;z$H$7$F(B EUC $B$rG'<1$7$^$9(B. -+ -+ -Wctype=SJIS -+ $B%^%k%A%P%$%HJ8;z$H$7$F(B Shift-JIS $B$rG'<1$7$^$9(B. -+ -+ MS-DOS $B0J30$N%7%9%F%`$G(B, Makefile(.in)? $B$r=q$-49$($:$K%$%s%9%H!<(B -+ $B%k$7$?>l9g(B, $B%G%U%)%k%H$G$O(B EUC $B$rG'<1$7$^$9(B. MS-DOS $B$G$O%G%U%)(B -+ $B%k%H$G(B Shift-JIS $B$rG'<1$7$^$9(B. -+ -+$B!|(B GREM104.LZH (MS-DOS $BHG<B9T7A<0$r4^$`%"!<%+%$%V(B) $B$K$D$$$F(B ($B$=$l0J30$N(B -+ $B7ABV$GF~<j$5$l$?J}$OL5;k$7$F$/$@$5$$(B) -+ -+ 1. $B%"!<%+%$%V$K4^$^$l$F$$$k%U%!%$%k(B -+ -+ $B%*%j%8%J%k$+$iA4$/<j$r2C$($F$$$J$$%U%!%$%k(B -+ -+ AUTHORS $B%*%j%8%J%k$N%=!<%9$K4^$^$l$F$$$k(B AUTHORS -+ CHANGELO $B%*%j%8%J%k$N%=!<%9$K4^$^$l$F$$$k(B ChangeLog -+ COPYING $B%*%j%8%J%k$N%=!<%9$K4^$^$l$F$$$k(B COPYING -+ MANIFEST $B%*%j%8%J%k$N%=!<%9$K4^$^$l$F$$$k(B MANIFEST -+ NEWS $B%*%j%8%J%k$N%=!<%9$K4^$^$l$F$$$k(B NEWS -+ PROJECTS $B%*%j%8%J%k$N%=!<%9$K4^$^$l$F$$$k(B PROJECTS -+ README $B%*%j%8%J%k$N%=!<%9$K4^$^$l$F$$$k(B README -+ -+ grep+mb $BMQ$N%U%!%$%k(B -+ -+ CHANGELO.MB grep+mb $B$NJQ99MzNr(B -+ README.MB $B$3$N%U%!%$%k(B -+ -+ MS-DOS $BHG(B grep+mb $BMQ$N%U%!%$%k(B -+ -+ GREP.CAT $B%*%j%8%J%k$N%=!<%9$K4^$^$l$F$$$k%^%K%e%"%k%Z!<%8(B. -+ grep.man $B$r(B GNU roff $B$G%U%)!<%^%C%H$7$?$b$N(B. -+ GREP.EXE MS-DOS $BHG(B grep-2.0+mb1.04 $B$N<B9T7A<0(B -+ READMAN.SED sed $B$r;}$C$F$$$k?M$X$*$^$1(B -+ (sed -f readman.sed grep.cat) -+ -+ 2. GREP.EXE $B$K$D$$$F(B -+ -+ grep-2.0+mb1.04 $B$r(B MS-C 6.00A $B$G%3%s%Q%$%k$7$?$b$N$G$9(B. -+ -+ $B%G%U%)%k%H$G(B Shift-JIS $B4A;z%3!<%I$r4^$`%Q%?!<%s$d%F%-%9%H$r=hM}(B -+ $B$G$-$^$9(B. -+ -+ setargv.obj $B$rAH$_9~$s$G$"$j$^$9$N$G(B, MS-DOS $B$G%]%T%e%i!<$J%?%$(B -+ $B%W$N%o%$%k%I%+!<%I$,;HMQ$G$-$^$9(B. UNIX $B$N(B csh $B%i%$%/$J%o%$%k%I(B -+ $B%+!<%IE83+%k!<%A%s$rMQ0U$7$h$&$+$H$b;W$C$?$N$G$9$,(B, MS-DOS $B$NB>(B -+ $B$N%3%^%s%I$H$N@09g@-$,<h$l$J$$$7(B, $B%*%j%8%J%k$r$J$k$Y$/B:=E$7$?$+$C(B -+ $B$?$N$GCGG0$7$^$7$?(B. -+ -+ 3. $B%$%s%9%H!<%k(B -+ -+ GREP.EXE $B$O(B, grep $B$O$b$A$m$s(B, egrep, fgrep $B$N5!G=$r4^$s$G$$$^$9(B. -+ grep $B$K(B -E $B%*%W%7%g%s$rM?$($k$H(B egrep $B$NF0:n(B, -F $B%*%W%7%g%s$rM?(B -+ $B$($k$H(B fgrep $B$NF0:n$r$7$^$9(B. $B$^$?(B, GREP.EXE $B$r(B EGREP.EXE, -+ FGREP.EXE $B$H$$$&L>A0$G%3%T!<$7$F(B egrep, fgrep $B$H$7$F5/F0$9$k$H(B, -+ $B$=$NL>A0$K$U$5$o$7$$F0:n$r$7$^$9(B. $B%O!<%I%G%#%9%/$KM>M5$N$J$$J}(B -+ $B0J30$O(B, -+ -+ A>copy grep.exe a:\bin -+ A>copy grep.exe a:\bin\egrep.exe -+ A>copy grep.exe a:\bin\fgrep.exe -+ -+ $B$J$I$H$7$F$4;HMQ$K$J$i$l$k$3$H$r$*4+$a$7$^$9(B. $B$I$&$7$F$b%O!<%I(B -+ $B%G%#%9%/$NL5BL;H$$$r$7$?$/$J$1$l$P(B, -+ -+ @echo off -+ grep -E %1 %2 %3 %4 %5 %6 %7 %8 %9 -+ -+ $B$J$I$N%P%C%A%U%!%$%k$r:n@.$9$k$H$$$&<j$b$"$j$^$9(B. -+ -+ 4. $B%3%^%s%I%i%$%s0z?t$K$D$$$F(B -+ -+ $BA0=R$7$?$H$*$j(B MS-C $B$N(B setargv.obj $B$r%j%s%/$7$F$$$^$9$N$G(B, $B$=$N(B -+ $B;EMM$K=>$o$J$1$l$P$J$j$^$;$s(B. -+ -+ $B#1$D#1$D$N0z?t$O6uGr$G6h@Z$j$^$9(B. $B0z?t$K6uGr(B, ", \, <, >, | $B$r(B -+ $B4^$`$H$-$O%/%)!<%F%#%s%0$,I,MW$G$9(B. $B$=$NJ}K!$O(B COMMAND.COM $B$N%P(B -+ $B%0=-$$;EMM$H(B, $B$5$i$K(B setargv.obj $B$K$bLdBj$,$"$j(B, $B$+$J$jFq$7$$$N(B -+ $B$G$3$3$G$O@bL@$r>J$-$^$9(B. $B3F<+8&5f$7$F$/$@$5$$(B. $B0lHV4JC1$J$N$O(B, -+ $B8!:w%Q%?!<%s$r%U%!%$%k$K$7$F(B -+ -+ grep -f $B%U%!%$%kL>(B -+ -+ $B$H$9$k$3$H$G$9(B. -+ -+ 5. $B%^%K%e%"%k(B -+ -+ roff $B7O$N%U%)!<%^%C%?$r;H$($J$$?M$N$?$a$K(B GNU roff $B$G%U%)!<%^%C(B -+ $B%H:Q$_$N%^%K%e%"%k$rMQ0U$7$^$7$?(B. $B%\!<%k%I%U%'!<%9(B, $B%"%s%@!<%i(B -+ $B%$%sBP1~$N(B less $B$J$I$G$*FI$_$/$@$5$$(B. $B%(%G%#%?$J$I$G$O(B ^H $B$,F~$C(B -+ $B$F$$$FFI$_$K$/$$$H;W$$$^$9(B. -+ -+ s/.^H//g -+ -+ $B$H$$$&(B sed $B$N%W%m%0%i%`$KDL$;$P(B, $BDL>o$N%F%-%9%H%U%!%$%k$,F@$i$l(B -+ $B$^$9(B. (^H $B$H$$$&$N$O%3%s%H%m!<%k%3!<%I$rD>@\Kd$a$3$`$H$$$&0UL#(B -+ $B$G$9(B.) -+ -+$B!|%$%s%9%H!<%k(B (MS-DOS $B0J30(B) -+ -+ $B%G%U%)%k%H$N%^%k%A%P%$%HJ8;z$N@_Dj$O(B, Makefile.in $B$NCf$G;XDj$7$^$9(B. -+ $B%G%U%)%k%H$r(B Shift-JIS $B$H$9$k>l9g$H(B, $B%G%U%)%k%H$G%^%k%A%P%$%HJ8;z$r(B -+ $B;HMQ$7$J$$>l9g$O(B Makefile.in $B$N(B MBCTYPE_DEF $B%^%/%m$NDj5A$r$=$l$>$l0J(B -+ $B2<$N$h$&$KJQ$($F$/$@$5$$(B. -+ -+ MBCTYPE_DEF=-DSJIS ($B%G%U%)%k%H$G(B Shift-JIS $B$N>l9g(B) -+ MBCTYPE_DEF= ($B%G%U%)%k%H$G;HMQ$7$J$$>l9g(B) -+ -+ $B$$$:$l$N>l9g$G$b5/F0;~$N%*%W%7%g%s$K$h$j%^%k%A%P%$%HJ8;z%3!<%I$NA*Br(B -+ $B$,2DG=$G$9(B. -+ -+ $B$=$NB>$N:n6H$O(B, $B%*%j%8%J%k$N(B grep $B$HF1MM$G$9$N$G(B INSTALL $B$r$*FI$_$/(B -+ $B$@$5$$(B. -+ -+$B!|%$%s%9%H!<%k(B (MS-DOS $BHG(B. $B$3$3$G$$$&%$%s%9%H!<%k$H$$$&$N$O(B, $B%=!<%9$+$i(B -+ $B$N%$%s%9%H!<%k$N$3$H$G$9(B) -+ -+ MS-C 6.00A $B$r;HMQ$7$F(B, $B%G%U%)%k%H$G(B Shift-JIS $B$rG'<1$9$k(B grep $B$r:n@.(B -+ $B$9$k>l9g$O(B, README.MSC $B$KL\$rDL$7$F(B, $BI,MW$J$i%i%$%V%i%j$K%Q%C%A$rEv(B -+ $B$F$?8e(B, -+ -+ A>nmake -f makefile.msc -+ -+ $B$H$9$k$@$1$G#O#K$G$9(B. grep.exe $B$r:n@.8e(B, $B<+F0E*$K%F%9%H$r9T$$$^$9(B. -+ $B$=$N:](B, grep $B$+$i$N%(%i!<%a%C%;!<%8$,$$$/$D$+I=<($5$l$^$9$,(B, $B$=$l$O(B -+ $B0[>o$G$O$"$j$^$;$s(B. $B%(%i!<$r4^$`%Q%?!<%s$rEO$7$?;~$K(B, $B=*N;%9%F!<%?(B -+ $B%9$,(B 2 $B$H$J$k$3$H$r3NG'$7$F$$$k$@$1$G$9(B. $BK\Ev$K0[>o$,$"$C$?>l9g$O(B -+ "Spencer test #nn faild" (nn $B$O?t;z(B) $B$HI=<($5$l$^$9(B. -+ -+ $B%F%9%H$K%Q%9$7$?$i(B, grep.exe $B$rE,Ev$J%G%#%l%/%H%j$K%3%T!<$7$F$/$@$5(B -+ $B$$(B. $B$=$N:](B, $BL>A0$r(B egrep.exe, fgrep.exe $B$HJQ$($k$@$1$G(B, $B$=$l$>$l(B -+ egrep, fgrep $B$NF0:n$r$7$^$9(B. $B$=$3$G(B, $BNc$($P(B a:\bin $B$X%$%s%9%H!<%k$9(B -+ $B$k>l9g(B, -+ -+ A>copy grep.exe a:\bin -+ A>copy grep.exe a:\bin\egrep.exe -+ A>copy grep.exe a:\bin\fgrep.exe -+ -+ $B$J$I$H$7$^$9(B. -+ -+ $B$=$NB>$N=hM}7O$r;HMQ$9$k>l9g$d(B, $B%G%U%)%k%H$r(B Shift-JIS $B0J30$K$9$k>l(B -+ $B9g$O(B Makefile.msc $B$r;29M$K(B Makefile $B$r=q$$$F$/$@$5$$(B. $B$J$*(B, $B%F%9%H$K(B -+ $B$O(B awk (gawk) $B$,I,MW$G$9(B. -+ -+$B!|%P%0(B -+ -+ 1. $B$$$o$f$k(B JIS $B$K$OBP1~$7$F$$$^$;$s(B. $B>-MhBP1~$9$kM=Dj$b$"$j$^$;$s(B. -+ -+ 2. $B%^%k%A%P%$%HJ8;z%3!<%I$O$"$^$j873J$K$O9M$($F$$$^$;$s(B. -+ -+ EUC $B#1%P%$%HL\(B ... 0x80 - 0xff -+ EUC $B#2%P%$%HL\(B ... 0x01 - 0xff (0x0a $B$r=|$/(B) -+ -+ Shift-JIS $B#1%P%$%HL\(B ... 0x80 - 0x9f, 0xe0 - 0xff -+ Shift-JIS $B#2%P%$%HL\(B ... 0x01 - 0xff (0x0a $B$r=|$/(B) -+ -+ $B$H$7$F=hM}$7$F$$$^$9(B. $BH>3Q%+%J$b;H$($^$9(B. EUC $B$N(B SS3 (0x8f) $B$K(B -+ $B;O$^$k#3%P%$%H%3!<%I$O;H$($^$;$s(B. ($B;d$O$3$l$r%5%]!<%H$7$F$$$k%7(B -+ $B%9%F%`$r8+$?$3$H$,$J$$(B...) -+ -+ 3. -b $B%*%W%7%g%s$GI=<($5$l$k%P%$%H%*%U%;%C%H$O(B DOS $B$N>l9g(B CR+LF $B$r(B 1 -+ $B$H$7$F%+%&%s%H$7$?CM$K$J$j$^$9(B. ($B<jH4$-(B) -+ -+$B!|%"%k%4%j%:%`(B (dfa.[ch] $B$N%^%k%A%P%$%HJ8;zBP1~2=(B) -+ -+ $B0JA0$OGyA3$H(B, DFA $B$rD>@\(B EUC $B$d(B Shift-JIS $B$N$h$&$JJ8;z<o$NB?$$%3!<%I(B -+ $B%;%C%H$KBP1~$5$;$k$N$O(B, $BHs>o$KFq$7$$$H;W$C$F$$$^$7$?(B. $B$H$3$m$,$"$k(B -+ $BF|(B, $B<+:n%i%$%V%i%j$N%F%9%HMQ$K(B, $B@55,I=8=$r(B DFA $B$XJQ49$9$k4JC1$J%W%m(B -+ $B%0%i%`$r=q$$$?$H$-$K(B, $BFMA3$&$^$$%"%$%G%#%"$,A.$$$?$N$G$9(B. $B%^%k%A%P(B -+ $B%$%HJ8;z$H$$$($I$b7k6I$O%P%$%H$NJB$S$G$9(B. $B%^%k%A%P%$%HJ8;z$r(B, $B$9$Y(B -+ $B$F%P%$%HC10L$KJ,2r$7$F(B, $B@55,I=8=$r:n$C$F$7$^$($P$h$+$C$?$N$G$9(B. -+ -+ $B8@MU$G$O$&$^$/I=8=$G$-$J$$$N$G(B, $B0J2<$N5-9f$r;HMQ$7(B, $B$I$&$$$&$U$&$K%P(B -+ $B%$%HC10L$KJ,2r$7$F$$$k$N$+(B, $BNc$r5s$2$^$9(B. -+ -+ a, b, c ... $B%7%s%0%k%P%$%HJ8;z(B. -+ x, y, z ... $B%^%k%A%P%$%HJ8;z$N#1J8;zL\(B. -+ -+ . ($BG$0U$N#1J8;z(B) -+ ==> [a-c]|[x-z][a-z] -+ -+ ($B%7%s%0%k%P%$%HJ8;z$+(B, $B$^$?$O%^%k%A%P%$%HJ8;z$N#1J8;zL\$H(B -+ $BG$0U$N#1J8;z$NO"@\(B.) -+ -+ [xb-zx] (xb $B$+$i(B zx $B$NHO0O$N%^%k%A%P%$%HJ8;z(B) -+ ==> x[b-z]|y[a-z]|z[a-x] -+ -+ yb* -+ ==> (yb)* -+ -+ $B<B:]$K$O@55,I=8=$r:n$j=P$9$N$G$O$J$/(B, $B@55,I=8=$rJ,2r$7$?%H!<%/%s$rD>(B -+ $B@\@8@.$7$F$$$^$9(B. $B$3$NJU(B, $B6=L#$,$"$kJ}$O%=!<%9$r8+$?$[$&$,Aa$$$H;W(B -+ $B$$$^$9(B. ($B$"$^$j%(%l%,%s%H$G$O$"$j$^$;$s$N$G%=!<%9$r$8$C$/$j8+$i$l$k(B -+ $B$N$OCQ$:$+$7$$5$$b$7$^$9$,(B...) -+ -+ $B$3$l$@$1$G$O(B, $BNc$($P$"$k%F%-%9%H$+$i(B xy $B$H$$$&J8;z$rC5$=$&$H$9$k$H(B, -+ xxyy $B$N$h$&$JJ8;z$NJB$S$K$^$GH?1~$7$F$7$^$$$^$9(B. $B$=$3$G(B, $B%^%k%A%P%$(B -+ $B%H%b!<%I$N$H$-$K$OI,$:(B "^.*(" + $B%f!<%6%Q%?!<%s(B + ")" $B$H$7$F=hM}$7$^(B -+ $B$9(B. '.*' $B$K$h$j(B, '.' $B$O%^%k%A%P%$%HJ8;z$N0lIt$K$O%^%C%A$7$^$;$s$+$i(B, -+ $BF,=P$7$G$-$k$o$1$G$9(B. -+ -+$B!|(B dfa.[ch], regex.[ch] $B$N3HD%;EMM(B -+ -+ dfa.[ch], regex.[ch] $B%b%8%e!<%k$O(B mbc.[ch] $B%b%8%e!<%k$K0MB8$7$F$$$^(B -+ $B$9(B. $B$^$?(B, $B$3$l$O%*%j%8%J%k$N;EMM$G$9$,(B, dfa.[ch] $B$r;HMQ$9$k>l9g$O(B -+ regex.h $B$NDj5A$,I,MW$G$9(B. -+ -+ $B%^%k%A%P%$%HJ8;z$N%?%$%W$O(B, mbc.[ch] $B$N(B mbcinit() $B$G@_Dj$7$^$9(B. -+ mbc.h $B$KDj5A$5$l$F$$$k%^%/%m(B MBCTYPE_ASCII, MBCTYPE_EUC, -+ MBCTYPE_SJIS $B$N$$$:$l$+$r(B mbcinit() $B$KEO$7$F$/$@$5$$(B. -+ -+ dfa.[ch] $B$O(B, $B%Q%?!<%s$N%3%s%Q%$%k;~$K$@$1(B, $B$3$N(B mbc.[ch] $B$N@_Dj$r;2(B -+ $B>H$7$^$9(B. $B%Q%?!<%s%^%C%A%s%0$N:]$O(B, $B%3%s%Q%$%k;~$K@_Dj$5$l$F$$$?(B, -+ $B%^%k%A%P%$%HJ8;z$N%?%$%W$r8!:w$7$^$9(B. -+ -+ $B0lJ}(B, regex.[ch] $B$O(B, $B%Q%?!<%s%3%s%Q%$%k;~(B, $B%^%C%A%s%0;~$NN>J}$G(B -+ mbc.[ch] $B$N@_Dj$r;2>H$7$^$9(B. $B$,(B, $B$3$NN><T$G(B mbc.[ch] $B$N@_Dj$rJQ99$9(B -+ $B$k$3$H$O$G$-$^$;$s(B. $B$D$^$j(B, Shift-JIS $B$G5-=R$5$l$?%Q%?!<%s$r(B, EUC -+ $B%F%-%9%H$+$i8!:w$9$k$H$$$C$?F0:n$O$G$-$^$;$s(B. $BCm0U$7$F$/$@$5$$(B. -+ -+ $B%^%k%A%P%$%HJ8;zBP1~$KH<$C$FCm0U$9$Y$-@55,I=8=$r0J2<$K5-$7$^$9(B. -+ -+ . $BG$0U$N#1%P%$%HJ8;z(B, $B@5Ev$J%^%k%A%P%$%HJ8;z$K%^%C%A$7$^$9(B. -+ $B!V@5Ev$J%^%k%A%P%$%HJ8;z!W$H$O(B, $B%^%k%A%P%$%HJ8;z$N#1J8;z(B -+ $BL\$K(B, '\0' $B$^$?$O(B '\n' $B0J30$,B3$/J8;z$N$3$H$G$9(B. -+ -+ [x-y] $BJ8;z%3!<%I(B ($BFbItI=8=(B) $B$,(B x $B$+$i(B y $B$NHO0O$K$"$kG$0U$N#1J8(B -+ $B;z$K%^%C%A$7$^$9(B. $B$3$l$b(B . $B$HF1$8$/(B, $B@5Ev$G$J$$J8;z$K$O(B -+ $B%^%C%A$7$^$;$s(B. -+ -+ [^x-y] $BJ8;z%3!<%I(B ($BFbItI=8=(B) $B$,(B x $B$+$i(B y $B$NHO0O$K$J$$G$0U$N#1J8(B -+ $B;z$K%^%C%A$7$^$9(B. $B@5Ev$G$J$$J8;z$K$b%^%C%A$7$^$9(B. -+ -+ $B%^%k%A%P%$%HJ8;z$NFbItI=8=$OC1$K#1%P%$%HL\$r>e0L%P%$%H(B, $B#2%P%$%HL\$r(B -+ $B2<0L%P%$%H$H$7$?#1#6%S%C%HId9f$J$7@0?t$G$9(B. Shift-JIS $B$G$b(B EUC $B$G$b(B -+ -+ $B#1%P%$%H(B ASCII $BJ8;z(B < $BH>3Q%+%JJ8;z(B < $BA43QJ8;z(B -+ -+ $B$H$$$&Bg>.4X78$,@.$jN)$C$F$$$^$9(B. -+ -+$B!|$=$NB>(B -+ -+ 1. $B%*%j%8%J%k$N(B GNU grep $B$NCx:n8"$O(B Free Software Foundation, Inc. -+ $B$,M-$7$F$$$^$9(B. $B%Q%C%AItJ,(B (grep-mb.diff) $B$NCx:n8"$O;d(B (t^2) $B$,M-(B -+ $B$7$F$$$^$9(B. -+ -+ 2. GNU grep $B$N%=!<%9%3!<%I$O3F=j$N(B ftp $B%5%$%H(B, $B$b$7$/$O(B Nifty-serve -+ $B$N(B FUNIX $B$N%G!<%?%i%$%V%i%j$+$iF~<j2DG=$G$9(B. GNU grep $B$+$i(B -+ grep+mb $B$X$N:9J,(B grep-mb.diff $B$O(B, $B;d$,(B FUNIX $B$XEPO?$7(B, $BF21`OBO:;a(B -+ (dohzono@sdsft.kme.mei.co.jp) $B$,(B fj.sources $B$X%]%9%H$7$F$/$@$5$C(B -+ $B$F$$$^$9(B. -+ -+ 3. $B:9J,(B grep-mb.diff $B$N:FG[I[$O<+M3$G$9(B. $B$3$l$K4X$7$F$O(B FSF $B$N5,Dj$K(B -+ $B=>$&I,MW$b$"$j$^$;$s(B. $B$7$+$7:9J,$rE,MQ$7$?7k2L$N%=!<%9%3!<%I(B, $B$*(B -+ $B$h$S<B9T7A<0$G$N:FG[I[$N:]$O(B GNU GENERAL PUBLIC LICENSE (COPYING -+ $B;2>H(B) $B$K=>$C$F$/$@$5$$(B. -+ -+ grep+mb $B$K2?$i$+$N2~JQ$r2C$($?$b$N$r:FG[I[$9$k:]$b(B, GNU GENERAL -+ PUBLIC LICENSE $B$K=>$&$h$&$KCm0U$7$F$/$@$5$$(B. $B$^$?(B grep+mb $B$K4^$^(B -+ $B$l$k%3!<%I(B (dfa.[ch] $B$d(B regex.[ch]) $B$rMxMQ$7$?%W%m%0%i%`$rG[I[$9(B -+ $B$k:]$b(B GNU GENERAL PUBLIC LICENSE $B$N3:EvItJ,$K=>$C$F$/$@$5$$(B. -+ -+ $B$^$?5AL3$G$O$"$j$^$;$s$,:FG[I[$5$l$kJ}$O;v8e$K$G$bO"Mm$r$/$@$5$$(B. -+ $B$=$7$F2DG=$J8B$j(B, $B?7$7$$%P!<%8%g%s$X$N%"%C%W%G!<%H$KEX$a(B, $BMxMQ<T(B -+ $B$+$i$NO"Mm$,;d$KFO$/$h$&$KG[N8$7$F$/$@$5$$(B. -+ -+ 4. $B$3$N%W%m%0%i%`$OL5J]>Z$G$9(B. -+ -+ 5. grep+mb $B$K2?$i$+$NIT6q9g$,H/@8$7$?>l9g(B, (FSF $B$d(B, $B%*%j%8%J%k$N:n<T(B -+ $B$G$O$J$/(B) $B;d$KO"Mm$7$F$/$@$5$$(B. $BG[I[$7$??M$,4uK>$7$F$$$k>l9g$O(B, -+ $B$=$N?M$KO"Mm$7$F$/$@$5$$(B. -+ -+ 6. $B$4<ALd(B/$B$4MWK>(B/$B$*<8$j(B, $B$=$NB>$bBg4?7^$G$9(B. $B$G$-$k$+$.$j%5%]!<%H$7(B -+ $B$^$9(B. -+ -+$B!|<U<-(B -+ -+ $B86:n<T$*$h$S(B FSF $B$K46<U$7$^$9(B. -+ -+ $B%I%-%e%a%s%H:n@.$K4X$7$F=u8@$r$/$@$5$C$?F21`OBO:;a(B -+ (dohzono@sdsft.kme.mei.co.jp) $B$K46<U$7$^$9(B. -+ -+ $B$3$l$^$GE>:\(B/$B%P%0Js9p$r$/$@$5$C$?J}!9$K46<U$7$^$9(B. $B<BL>$r5s$2$5$;$F(B -+ $BD:$-$?$+$C$?$N$G$9$,%O!<%I%G%#%9%/$N%H%i%V%k$G$[$H$s$I$N%a!<%k$r>C<:(B -+ $B$5$;$F$7$^$$$^$7$?(B. -+ -+ $B:G8e$K(B, $B5.=E$J%G%#%9%/%9%Z!<%9$r(B grep+mb $B$N$?$a$K3d$$$F$4;HMQD:$$$F(B -+ $B$$$k$9$Y$F$NMxMQ<T$NJ}!9$K46<U$7$^$9(B. -+ -+$B!|!V;d!W$NO"Mm@h(B -+ -+ $B")(B810 $BJ!2,;TCf1{6hG_8w1`CDCO(B 7-207 ($BCm(B: $BE>5o$7$^$7$?(B) -+ TEL/FAX: 092-731-4025 (TEL/FAX $B<+F0@ZBX$((B) -+ 092-724-6342 (TEL $B$N$_(B) -+ E-mail: NBC02362@niftyserve.or.jp $BC+K\9'9@(B -+ -+# Local variables: -+# mode: indented-text -+# indent-tabs-mode: nil -+# tab-stop-list: (4 8 16 24 32 40 48 56 64 72 80) -+# left-margin: 4 -+# fill-column: 72 -+# fill-prefix: " " -+# version-control: never -+# End: -diff -ru2N grep-2.0/README.MSC grep+mb1.04/README.MSC ---- grep-2.0/README.MSC Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/README.MSC Sat Mar 5 16:14:14 1994 -@@ -0,0 +1,99 @@ -+PC-9801 $BMQ(B MS-C version 6.00A $B$N0z?t$N%;%C%H%"%C%W%k!<%A%s$K$O%P%0$,$"$j(B -+$B$^$9(B. -+ -+#include <stdio.h> -+ -+int -+main(int argc, char **argv) -+{ -+ int i; -+ -+ for (i = 0; i <= argc; i++) -+ printf("argv[%d] == %s\n", i, argv[i]); -+ return 0; -+} -+ -+$B$r%3%s%Q%$%k(B, $B%j%s%/$7$?(B FOO.EXE $B$K(B -+ -+ A>foo "\\" abc -+ -+$B$J$I$N0z?t$rEO$7$F<B9T$9$k$H(B, $B%P%0$,3NG'$G$-$^$9(B. $B$^$?(B, $B%o%$%k%I%+!<%I(B -+$BE83+%k!<%A%s$K$b%P%0$,$"$j(B, $B>e5-$N%W%m%0%i%`$r(B SETARGV.OBJ $B$H$H$b$K%j%s(B -+$B%/$7$F(B -+ -+ A>foo \DOS\*.com -+ -+$B$J$I$N0z?t$G<B9T$9$k$H(B, $B$*$+$7$JE83+$N;EJ}$r$7$F$7$^$$$^$9(B. -+ -+$B$3$N%P%0$O(B SOURCE/STARTUP $B2<$N(B DOS/STDARGV.ASM $B$*$h$S(B WILD.C $B$K0J2<$N%Q%C(B -+$B%A$rEv$F$k$H=$@5$G$-$k$h$&$G$9(B. $B%Q%C%A$rEv$F$F(B STARTUP.BAT $B$G%3%s%Q%$%k(B -+$B$7$F$/$@$5$$(B. $B$=$N8e(B, $BNc$($P%i!<%8%b%G%kMQ$N%i%$%V%i%j$r=$@5$9$k>l9g(B, -+L/DOS/STDARGV.OBJ, L/DOS/_SETARGV.OBJ, L/WILD.OBJ $B$r$=$l$>$l(B -+KSTDARGV.OBJ, _KSTARGV.OBJ, KWILD.OBJ $B$H%j%M!<%`$7(B, -+ -+ lib \msc6\lib\llibce.lib-+dos\kstdargv.obj-+dos\_kstargv.obj-+kwild.obj; -+ -+$B$J$I$H$7$F%b%8%e!<%k$r99?7$7$F$/$@$5$$(B. $BG0$N$?$a$3$N:n6H$r9T$&A0$K(B, -+ -+ lib \msc6\lib\llibce.lib*kstdargv.obj*_kstargv.obj*kwild.obj; -+ -+$B$J$I$G(B, kstdargv.obj, _kstargv.obj, kwild.obj $B$N%P%C%/%"%C%W$r$H$C$FCV$/(B -+$B$H$$$$$G$7$g$&(B. -+ -+$B$J$*(B, $B$3$N%Q%C%A$OEvA3$N$3$H$J$,$iL5J]>Z$G$9(B. -+ -+Mar. 5, 1994 t^2 -+ -+*** stdargv.org Mon Oct 8 19:50:46 1990 -+--- stdargv.asm Thu Jul 22 17:50:44 1993 -+*************** -+*** 409,415 **** -+ shr cx,1 -+ adc dx,cx ; add 1 for every pair of backslashes -+ test al,1 ; plus 1 for the " if odd number of \ -+! jz arg310 ; [J1] -+ jmp arg210 ; [J1] -+ ; -+ ; Command line is fully parsed - compute number of bytes needed -+--- 409,415 ---- -+ shr cx,1 -+ adc dx,cx ; add 1 for every pair of backslashes -+ test al,1 ; plus 1 for the " if odd number of \ -+! jnz arg310 ; ! Jul.21.93 t^2 -+ jmp arg210 ; [J1] -+ ; -+ ; Command line is fully parsed - compute number of bytes needed -+ -+*** wild.org Mon Oct 8 19:49:48 1990 -+--- wild.c Sat Mar 5 00:42:12 1994 -+*************** -+*** 186,197 **** -+ char *ptr2 = arg; // [J1] -+ -+ if(ptr != arg) { // [J1] -+! while(ptr2 + 1 != ptr && *ptr2 != SLASHCHAR && *ptr2 != FWDSLASHCHAR -+! && *ptr2 != ':') { // [J1] -+ if(iskanji(*ptr2)) ptr2++; // [J1] -+ ptr2++; // [J1] -+ } // [J1] -+! ptr = ptr2; // [J1] -+ } // [J1] -+ -+ if (*ptr == ':' && ptr != arg+1) /* weird name, just add it as is */ -+--- 186,201 ---- -+ char *ptr2 = arg; // [J1] -+ -+ if(ptr != arg) { // [J1] -+! char *ptr3 = arg; -+! -+! while (ptr2 < ptr) { -+! if (*ptr2 == SLASHCHAR || *ptr2 == FWDSLASHCHAR -+! || *ptr2 == ':') -+! ptr3 = ptr2; -+ if(iskanji(*ptr2)) ptr2++; // [J1] -+ ptr2++; // [J1] -+ } // [J1] -+! ptr = ptr3; -+ } // [J1] -+ -+ if (*ptr == ':' && ptr != arg+1) /* weird name, just add it as is */ -diff -ru2N grep-2.0/configure grep+mb1.04/configure ---- grep-2.0/configure Sat May 22 13:20:23 1993 -+++ grep+mb1.04/configure Fri Jul 9 13:05:45 1993 -@@ -566,5 +566,5 @@ - fi - --for func in getpagesize memchr strerror valloc -+for func in getpagesize memchr strerror valloc bcopy memmove strcasecmp - do - trfunc=HAVE_`echo $func | tr '[a-z]' '[A-Z]'` -diff -ru2N grep-2.0/configure.in grep+mb1.04/configure.in ---- grep-2.0/configure.in Sat May 22 13:20:16 1993 -+++ grep+mb1.04/configure.in Fri Jul 9 13:05:32 1993 -@@ -12,5 +12,5 @@ - AC_SIZE_T - AC_ALLOCA --AC_HAVE_FUNCS(getpagesize memchr strerror valloc) -+AC_HAVE_FUNCS(getpagesize memchr strerror valloc bcopy memmove strcasecmp) - AC_CHAR_UNSIGNED - AC_CONST -diff -ru2N grep-2.0/dfa.c grep+mb1.04/dfa.c ---- grep-2.0/dfa.c Mon May 31 08:02:20 1993 -+++ grep+mb1.04/dfa.c Sat Jul 10 01:17:14 1993 -@@ -18,4 +18,6 @@ - /* Written June, 1988 by Mike Haertel - Modified July, 1988 by Arthur David Olson to assist BMG speedups */ -+/* Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 10, 1993 by t^2 */ - - #include <assert.h> -@@ -35,4 +37,8 @@ - #undef index - #define index strchr -+#undef bcopy -+#define bcopy(s, d, n) memcpy(d, s, n) -+#undef bzero -+#define bzero(d, n) memset(d, 0, n) - #else - #include <strings.h> -@@ -71,4 +77,5 @@ - #include "dfa.h" - #include "regex.h" -+#include "mbc.h" - - #if __STDC__ -@@ -141,5 +148,8 @@ - fprintf(stderr, "END"); - else if (t < NOTCHAR) -- fprintf(stderr, "%c", t); -+ if (t & 0x80) -+ fprintf(stderr, "0x%02x", (unsigned char)t); -+ else -+ fprintf(stderr, "%c", t); - else - { -@@ -239,4 +249,16 @@ - } - -+static int -+isemptyset(s) -+ charclass s; -+{ -+ int i; -+ -+ for (i = 0; i < CHARCLASS_INTS; i++) -+ if (s[i]) -+ return 0; -+ return 1; -+} -+ - /* A pointer to the current dfa is kept here during parsing. */ - static struct dfa *dfa; -@@ -259,5 +281,6 @@ - - /* Syntax bits controlling the behavior of the lexical analyzer. */ --static int syntax_bits, syntax_bits_set; -+static unsigned long syntax_bits; -+static int syntax_bits_set; - - /* Flag for case-folding letters into sets. */ -@@ -267,5 +290,5 @@ - void - dfasyntax(bits, fold) -- int bits; -+ unsigned long bits; - int fold; - { -@@ -289,4 +312,66 @@ - static int minrep, maxrep; /* Repeat counts for {m,n}. */ - -+static charclass cs_cset[8]; -+static token cs_tok[8] = {0, 0, 0, 0, 0, 0, 0, 0}; -+ -+static enum { -+ MBEXTTOK_NONE = -1, -+ MBEXTTOK_NOTCHAR = 256, -+ MBEXTTOK_ORMBC = MBEXTTOK_NOTCHAR, -+ MBEXTTOK_ORMBC_NL, -+ MBEXTTOK_CLASS, -+ MBEXTTOK_INVCLASS, -+} mbexttok = MBEXTTOK_NONE; -+ -+static charclass mbcset_set; -+static charclass mbcset_all; -+static charclass mbcset[128]; /* 128*256/8 = 4 Kbytes */ -+ -+/* $BIQHK$K;HMQ$5$l$k(B ($B$H;W$o$l$k(B) $BJ8;z=89g$r%H!<%/%s$H$7$FJV$9(B. -+ n = 0 ... 1$B%P%$%HJ8;zA4BN$N=89g(B. -+ 1 ... 2$B%P%$%HJ8;z$N(B1$B%P%$%HL\A4BN$N=89g(B. -+ 2 ... 2$B%P%$%HJ8;z$N(B2$B%P%$%HL\A4BN$N=89g(B. -+ +4 ... '\n'$B$r=|30$7$J$$(B. */ -+static token -+setcodeset(n) -+ int n; -+{ -+ token c; -+ -+ if (!cs_tok[n]) { -+ zeroset(cs_cset[n]); -+ switch (n) { -+ case 0: -+ case 4: -+ /* 1$B%P%$%HJ8;zA4BN$N=89g(B. */ -+ for (c = 0; c < NOTCHAR; c++) -+ if (ismbchar(c)) -+ setbit(c, cs_cset[n]); -+ notset(cs_cset[n]); -+ break; -+ case 1: -+ case 5: -+ /* 2$B%P%$%HJ8;z$N(B1$BJ8;zL\A4BN$N=89g(B. */ -+ for (c = 0; c < NOTCHAR; c++) -+ if (ismbchar(c)) -+ setbit(c, cs_cset[n]); -+ break; -+ case 2: -+ case 6: -+ /* 2$B%P%$%HJ8;z$N(B2$BJ8;zL\A4BN$N=89g(B. */ -+ notset(cs_cset[n]); -+ break; -+ } -+ if (!(n & 4)) { -+ if (syntax_bits & RE_DOT_NOT_NULL || n != 0) -+ clrbit('\0', cs_cset[n]); -+ if (!(syntax_bits & RE_DOT_NEWLINE) || n != 0) -+ clrbit('\n', cs_cset[n]); -+ } -+ cs_tok[n] = CSET + charclass_index(cs_cset[n]); -+ } -+ return cs_tok[n]; -+} -+ - /* Note that characters become unsigned here. */ - #define FETCH(c, eoferr) \ -@@ -362,4 +447,5 @@ - it means that just about every case begins with - "if (backslash) ...". */ -+ mbexttok = MBEXTTOK_NONE; - for (i = 0; i < 2; ++i) - { -@@ -543,14 +629,19 @@ - if (backslash) - goto normal_char; -+ if (current_mbctype != MBCTYPE_ASCII) -+ mbexttok = MBEXTTOK_ORMBC; -+ laststart = 0; -+ return setcodeset(0); -+ -+ case 'w': -+ if (!backslash) -+ goto normal_char; - zeroset(ccl); -- notset(ccl); -- if (!(syntax_bits & RE_DOT_NEWLINE)) -- clrbit('\n', ccl); -- if (syntax_bits & RE_DOT_NOT_NULL) -- clrbit('\0', ccl); -+ for (c2 = 0; c2 < NOTCHAR; ++c2) -+ if (ISALNUM(c2)) -+ setbit(c2, ccl); - laststart = 0; - return lasttok = CSET + charclass_index(ccl); - -- case 'w': - case 'W': - if (!backslash) -@@ -558,8 +649,7 @@ - zeroset(ccl); - for (c2 = 0; c2 < NOTCHAR; ++c2) -- if (ISALNUM(c2)) -+ if (!ISALNUM(c2) && !ismbchar(c2)) - setbit(c2, ccl); -- if (c == 'W') -- notset(ccl); -+ mbexttok = MBEXTTOK_ORMBC_NL; - laststart = 0; - return lasttok = CSET + charclass_index(ccl); -@@ -579,4 +669,6 @@ - do - { -+ unsigned char ch = 0, c2h = 0; -+ - /* Nobody ever said this had to be fast. :-) - Note that if we're looking at some other [:...:] -@@ -599,4 +691,8 @@ - if (c == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) - FETCH(c, "Unbalanced ["); -+ if (ismbchar(c)) { -+ ch = (unsigned char)c; -+ FETCH(c, "Multi-byte char incomplete"); -+ } - FETCH(c1, "Unbalanced ["); - if (c1 == '-') -@@ -616,19 +712,83 @@ - && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) - FETCH(c2, "Unbalanced ["); -+ if (ismbchar(c2)) { -+ c2h = (unsigned char)c2; -+ FETCH(c2, "Multi-byte char incomplete"); -+ } - FETCH(c1, "Unbalanced ["); - } - } -- else -+ else { -+ c2h = ch; - c2 = c; -- while (c <= c2) -- { -- setbit(c, ccl); -- if (case_fold) -- if (ISUPPER(c)) -- setbit(tolower(c), ccl); -- else if (ISLOWER(c)) -- setbit(toupper(c), ccl); -- ++c; -+ } -+ if (ch < c2h || (ch == c2h && c <= c2)) { -+ if (ch == 0) { -+ ch = (unsigned char)c2; -+ if (c2h > 0) -+ ch = NOTCHAR - 1; -+ for (; (unsigned char)c <= ch; c++) { -+ setbit(c, ccl); -+ if (case_fold) { -+ if (ISUPPER(c)) -+ setbit(tolower(c), ccl); -+ else if (ISLOWER(c)) -+ setbit(toupper(c), ccl); -+ } -+ } -+ ch = 0x80; -+ c = 0x00; - } -+ if (ch <= c2h) { -+ if (mbexttok < 0) { -+ mbexttok = MBEXTTOK_CLASS; -+ zeroset(mbcset_set); -+ zeroset(mbcset_all); -+ } -+ if (ch < c2h && c != 0x00) { /* $B:G=i$NH>C<(B */ -+ int t; -+ -+ if (ismbchar(ch) -+ && ((t = tstbit(ch, mbcset_set)) -+ || !tstbit(ch, mbcset_all))) { -+ if (!t) { -+ setbit(ch, mbcset_set); -+ zeroset(mbcset[ch - 0x80]); -+ } -+ for (; c < NOTCHAR; c++) -+ setbit(c, mbcset[ch - 0x80]); -+ } -+ ch++; -+ c = 0x00; -+ } -+ if (ch < c2h || (ch == c2h && c == 0x00 && c2 == 0xff)) { -+ if (c == 0x00 && c2 == 0xff) -+ c2h++; -+ for (; ch < c2h; ch++) -+ if (ismbchar(ch)) { -+ clrbit(ch, mbcset_set); -+ setbit(ch, mbcset_all); -+ } -+ if (c == 0x00 && c2 == 0xff) -+ c2h--; -+ c = 0x00; -+ } -+ if (ch <= c2h) { -+ int t; -+ -+ /* $B$3$3$G$OI,$:(B c <= c2 $B$H$J$C$F$$$k(B. */ -+ if (ismbchar(ch) -+ && ((t = tstbit(ch, mbcset_set)) -+ || !tstbit(ch, mbcset_all))) { -+ if (!t) { -+ setbit(ch, mbcset_set); -+ zeroset(mbcset[ch - 0x80]); -+ } -+ for (; c <= c2; c++) -+ setbit(c, mbcset[ch - 0x80]); -+ } -+ } -+ } -+ } - skip: - ; -@@ -640,5 +800,20 @@ - if (syntax_bits & RE_HAT_LISTS_NOT_NEWLINE) - clrbit('\n', ccl); -+ if (mbexttok == MBEXTTOK_CLASS) { -+ mbexttok = MBEXTTOK_INVCLASS; -+ if (!isemptyset(mbcset_set)) { -+ for (c = 0x80; c <= 0xff; c++) -+ if (tstbit(c, mbcset_set)) -+ notset(mbcset[c - 0x80]); -+ } -+ notset(mbcset_all); -+ } -+ else -+ mbexttok = MBEXTTOK_ORMBC_NL; - } -+ if (current_mbctype != MBCTYPE_ASCII) -+ for (c = 0x80; c <= 0xff; c++) -+ if (ismbchar(c)) -+ clrbit(c, ccl); - laststart = 0; - return lasttok = CSET + charclass_index(ccl); -@@ -647,4 +822,8 @@ - normal_char: - laststart = 0; -+ if (ismbchar(c)) { -+ FETCH(mbexttok, "Multi-byte char incomplete"); -+ return c; -+ } - if (case_fold && ISALPHA(c)) - { -@@ -746,5 +925,67 @@ - atom() - { -- if ((tok >= 0 && tok < NOTCHAR) || tok >= CSET || tok == BACKREF -+ if (mbexttok >= 0) { -+ if (mbexttok < MBEXTTOK_NOTCHAR) { -+ addtok(tok); -+ addtok(mbexttok); -+ addtok(CAT); -+ } -+ else -+ switch (mbexttok) { -+ case MBEXTTOK_ORMBC: -+ case MBEXTTOK_ORMBC_NL: -+ addtok(tok); -+ if (mbexttok == MBEXTTOK_ORMBC) { -+ addtok(setcodeset(1)); -+ addtok(setcodeset(2)); -+ } -+ else { -+ addtok(setcodeset(5)); -+ addtok(setcodeset(6)); -+ } -+ addtok(CAT); -+ addtok(OR); -+ break; -+ case MBEXTTOK_CLASS: -+ case MBEXTTOK_INVCLASS: -+ { -+ token c; -+ -+ addtok(tok); -+ if (!isemptyset(mbcset_set)) -+ for (c = 0x80; c <= 0xff; c++) -+ if (tstbit(c, mbcset_set)) { -+ /* Make sure all bits in mbcset_all valid. */ -+ clrbit(c, mbcset_all); -+ addtok(c); -+ if (mbexttok == MBEXTTOK_CLASS) { -+ clrbit('\n', mbcset[c - 0x80]); -+ clrbit('\0', mbcset[c - 0x80]); -+ } -+ else { -+ setbit('\n', mbcset[c - 0x80]); -+ setbit('\0', mbcset[c - 0x80]); -+ } -+ addtok(CSET + charclass_index(mbcset[c - 0x80])); -+ addtok(CAT); -+ addtok(OR); -+ } -+ if (!isemptyset(mbcset_all)) { -+ addtok(CSET + charclass_index(mbcset_all)); -+ if (mbexttok == MBEXTTOK_CLASS) -+ addtok(setcodeset(2)); -+ else -+ addtok(setcodeset(6)); -+ addtok(CAT); -+ addtok(OR); -+ } -+ } -+ break; -+ default: -+ break; -+ } -+ tok = lex(); -+ } -+ else if ((tok >= 0 && tok < NOTCHAR) || tok >= CSET || tok == BACKREF - || tok == BEGLINE || tok == ENDLINE || tok == BEGWORD - || tok == ENDWORD || tok == LIMWORD || tok == NOTLIMWORD) -@@ -1904,4 +2145,6 @@ - - d->musts = 0; -+ -+ bzero(cs_tok, sizeof cs_tok); - } - -@@ -1916,8 +2159,8 @@ - if (case_fold) /* dummy folding in service of dfamust() */ - { -- char *copy; -+ char *copy, *p; - int i; - -- copy = malloc(len); -+ p = copy = malloc(len + 7); - if (!copy) - dfaerror("out of memory"); -@@ -1925,23 +2168,61 @@ - /* This is a kludge. */ - case_fold = 0; -+ if (current_mbctype != MBCTYPE_ASCII && searchflag) { -+ *p++ = '^'; -+ *p++ = '.'; -+ *p++ = '*'; -+ if (!(syntax_bits & RE_NO_BK_PARENS)) -+ *p++ = '\\'; -+ *p++ = '('; -+ } - for (i = 0; i < len; ++i) - if (ISUPPER(s[i])) -- copy[i] = tolower(s[i]); -+ *p++ = tolower((unsigned char)s[i]); - else -- copy[i] = s[i]; -+ *p++ = s[i]; -+ if (current_mbctype != MBCTYPE_ASCII && searchflag) { -+ if (!(syntax_bits & RE_NO_BK_PARENS)) -+ *p++ = '\\'; -+ *p++ = ')'; -+ } - - dfainit(d); -- dfaparse(copy, len, d); -- free(copy); -+ dfaparse(copy, p - copy, d); - dfamust(d); - d->cindex = d->tindex = d->depth = d->nleaves = d->nregexps = 0; -+ bzero(cs_tok, sizeof cs_tok); - case_fold = 1; -- dfaparse(s, len, d); -+ if (current_mbctype != MBCTYPE_ASCII && searchflag) { -+ bcopy(s, copy + (syntax_bits & RE_NO_BK_PARENS ? 4 : 5), len); -+ dfaparse(copy, p - copy, d); -+ } -+ else -+ dfaparse(s, len, d); - dfaanalyze(d, searchflag); -+ free(copy); - } - else - { - dfainit(d); -- dfaparse(s, len, d); -+ if (current_mbctype != MBCTYPE_ASCII && searchflag) { -+ char *copy, *p; -+ -+ p = copy = malloc(len + 7); -+ *p++ = '^'; -+ *p++ = '.'; -+ *p++ = '*'; -+ if (!(syntax_bits & RE_NO_BK_PARENS)) -+ *p++ = '\\'; -+ *p++ = '('; -+ bcopy(s, p, len); -+ p += len; -+ if (!(syntax_bits & RE_NO_BK_PARENS)) -+ *p++ = '\\'; -+ *p++ = ')'; -+ dfaparse(copy, p - copy, d); -+ free(copy); -+ } -+ else -+ dfaparse(s, len, d); - dfamust(d); - dfaanalyze(d, searchflag); -diff -ru2N grep-2.0/dfa.h grep+mb1.04/dfa.h ---- grep-2.0/dfa.h Mon Apr 12 06:17:22 1993 -+++ grep+mb1.04/dfa.h Wed Jul 7 17:02:13 1993 -@@ -15,4 +15,6 @@ - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -+/* Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 7, 1993 by t^2 */ - - /* Written June, 1988 by Mike Haertel */ -@@ -306,5 +308,5 @@ - /* dfasyntax() takes two arguments; the first sets the syntax bits described - earlier in this file, and the second sets the case-folding flag. */ --extern void dfasyntax(int, int); -+extern void dfasyntax(unsigned long, int); - - /* Compile the given string of the given length into the given struct dfa. -diff -ru2N grep-2.0/getpagesize.h grep+mb1.04/getpagesize.h ---- grep-2.0/getpagesize.h Fri May 21 14:18:58 1993 -+++ grep+mb1.04/getpagesize.h Sat Jul 10 02:19:10 1993 -@@ -1,2 +1,4 @@ -+/* Multi-byte extension added Jul., 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 10, 1993 by t^2 */ - #ifdef BSD - #ifndef BSD4_1 -@@ -35,5 +37,9 @@ - #endif /* no EXEC_PAGESIZE */ - #else /* !HAVE_SYS_PARAM_H */ -+#ifndef MSDOS - #define getpagesize() 8192 /* punt totally */ -+#else -+#define getpagesize() 4096 -+#endif - #endif /* !HAVE_SYS_PARAM_H */ - #endif /* no _SC_PAGESIZE */ -diff -ru2N grep-2.0/grep.c grep+mb1.04/grep.c ---- grep-2.0/grep.c Sun May 23 14:52:52 1993 -+++ grep+mb1.04/grep.c Thu Jun 2 17:01:53 1994 -@@ -17,4 +17,6 @@ - - Written July 1992 by Mike Haertel. */ -+/* Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jun. 2, 1994 by t^2 */ - - #include <errno.h> -@@ -22,6 +24,8 @@ - - #ifndef errno -+#ifndef MSDOS - extern int errno; - #endif -+#endif - - #ifdef STDC_HEADERS -@@ -59,4 +63,5 @@ - #include "getpagesize.h" - #include "grep.h" -+#include "mbc.h" - - #undef MAX -@@ -315,6 +320,6 @@ - cc = read(bufdesc, buffer + bufsalloc, bufalloc - bufsalloc); - #endif -- if (cc > 0) -- buflim = buffer + bufsalloc + cc; -+ if (cc != -1) -+ buflim = buffer + bufsalloc + (unsigned)cc; - else - buflim = buffer + bufsalloc; -@@ -332,10 +337,10 @@ - - /* Internal variables to keep track of byte count, context, etc. */ --static size_t totalcc; /* Total character count before bufbeg. */ -+static unsigned long totalcc; /* Total character count before bufbeg. */ - static char *lastnl; /* Pointer after last newline counted. */ - static char *lastout; /* Pointer after last character output; - NULL if no character has been output - or if it's conceptually before bufbeg. */ --static size_t totalnl; /* Total newline count before lastnl. */ -+static unsigned long totalnl; /* Total newline count before lastnl. */ - static int pending; /* Pending lines of output. */ - -@@ -363,5 +368,5 @@ - { - nlscan(beg); -- printf("%d%c", ++totalnl, sep); -+ printf("%lu%c", ++totalnl, sep); - lastnl = lim; - } -@@ -519,5 +524,5 @@ - for (;;) - { -- if (fillbuf(save) < 0) -+ if (fillbuf(save) == -1) - { - error(filename, errno); -@@ -564,8 +569,10 @@ - } - --static char version[] = "GNU grep version 2.0"; -+static char version[] = "GNU grep version 2.0\ -+ + multi-byte extension 1.04"; - - #define USAGE \ -- "usage: %s [-[[AB] ]<num>] [-[CEFGVchilnqsvwx]] [-[ef]] <expr> [<files...>]\n" -+ "usage: %s [-[[AB] ]<num>] [-[CEFGVchilnqsvwx]] [-W ctype=...]\n\ -+ [-[ef]] <expr> [<files...>]\n" - - static void -@@ -594,4 +601,32 @@ - } - -+#ifndef HAVE_STRCASECMP -+ -+static int -+#ifdef __STDC__ -+strcasecmp(const char *s1, const char *s2) -+#else -+strcasecmp(s1, s2) -+ char *s1, *s2; -+#endif -+{ -+ unsigned char c1, c2; -+ -+ while ((c1 = *s1++)) { -+ if ((unsigned char)(c1 - 'A') <= (unsigned char)('Z' - 'A')) -+ c1 += 'a' - 'A'; -+ c2 = *s2++; -+ if ((unsigned char)(c2 - 'A') <= (unsigned char)('Z' - 'A')) -+ c2 += 'a' - 'A'; -+ if (c1 != c2) { -+ --s2; -+ break; -+ } -+ } -+ return c1 - (unsigned char)*s2; -+} -+ -+#endif -+ - int - main(argc, argv) -@@ -607,7 +642,27 @@ - extern int optind; - -- prog = argv[0]; -- if (prog && strrchr(prog, '/')) -- prog = strrchr(prog, '/') + 1; -+ if ((prog = argv[0]) && prog[0]) { -+ char c, *p; -+#ifdef MSDOS -+ static char progname[8 + 1]; -+#endif -+ -+ for (p = prog; (c = *p++); ) -+ if (c == '/' -+#ifdef MSDOS -+ || c == '\\' || c == ':' -+#endif -+ ) -+ prog = p; -+#ifdef MSDOS -+ for (p = progname; p < &progname[8] && (c = *prog++) && c != '.'; ) { -+ if ((unsigned char)(c - 'A') <= (unsigned char)('Z' - 'A')) -+ c += 'a' - 'A'; -+ *p++ = c; -+ } -+ *p++ = '\0'; -+ prog = argv[0] = progname; -+#endif -+ } - - keys = NULL; -@@ -620,5 +675,5 @@ - matcher = NULL; - -- while ((opt = getopt(argc, argv, "0123456789A:B:CEFGVX:bce:f:hiLlnqsvwxy")) -+ while ((opt = getopt(argc, argv, "0123456789A:B:CEFGVX:bce:f:hiLlnqsvwxyW:")) - != EOF) - switch (opt) -@@ -747,4 +802,19 @@ - case 'x': - match_lines = 1; -+ break; -+ case 'W': -+ if (strcasecmp(optarg, "ctype=ASCII") == 0) { -+ mbcinit(MBCTYPE_ASCII); -+ break; -+ } -+ if (strcasecmp(optarg, "ctype=EUC") == 0) { -+ mbcinit(MBCTYPE_EUC); -+ break; -+ } -+ if (strcasecmp(optarg, "ctype=SJIS") == 0) { -+ mbcinit(MBCTYPE_SJIS); -+ break; -+ } -+ fatal("unknown argument to -Wctype", 0); - break; - default: -diff -ru2N grep-2.0/kwset.c grep+mb1.04/kwset.c ---- grep-2.0/kwset.c Mon May 3 04:26:20 1993 -+++ grep+mb1.04/kwset.c Fri Jul 9 14:54:46 1993 -@@ -19,4 +19,6 @@ - The author may be reached (Email) at the address mike@ai.mit.edu, - or (US mail) as Mike Haertel c/o Free Software Foundation. */ -+/* Multi-byte extension added Jul, 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 9, 1993 by t^2 */ - - /* The algorithm implemented by these routines bears a startling resemblence -@@ -592,5 +594,5 @@ - if (d != 0) - continue; -- if (tp[-2] == gc) -+ if (U(tp[-2]) == gc) - { - for (i = 3; i <= len && U(tp[-i]) == U(sp[-i]); ++i) -diff -ru2N grep-2.0/mbc.c grep+mb1.04/mbc.c ---- grep-2.0/mbc.c Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/mbc.c Fri Jul 9 14:38:28 1993 -@@ -0,0 +1,98 @@ -+/* Functions for multi-byte support. -+ Created for grep multi-byte extension Jul., 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 9, 1993 by t^2 */ -+#include "mbc.h" -+ -+static const unsigned char mbctab_ascii[] = { -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -+}; -+ -+static const unsigned char mbctab_euc[] = { -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -+}; -+ -+static const unsigned char mbctab_sjis[] = { -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -+}; -+ -+#ifdef EUC -+const unsigned char *mbctab = mbctab_euc; -+int current_mbctype = MBCTYPE_EUC; -+#else -+#ifdef SJIS -+const unsigned char *mbctab = mbctab_sjis; -+int current_mbctype = MBCTYPE_SJIS; -+#else -+const unsigned char *mbctab = mbctab_ascii; -+int current_mbctype = MBCTYPE_ASCII; -+#endif -+#endif -+ -+void -+#ifdef __STDC__ -+mbcinit(int mbctype) -+#else -+mbcinit(mbctype) -+ int mbctype; -+#endif -+{ -+ switch (mbctype) { -+ case MBCTYPE_ASCII: -+ mbctab = mbctab_ascii; -+ current_mbctype = MBCTYPE_ASCII; -+ break; -+ case MBCTYPE_EUC: -+ mbctab = mbctab_euc; -+ current_mbctype = MBCTYPE_EUC; -+ break; -+ case MBCTYPE_SJIS: -+ mbctab = mbctab_sjis; -+ current_mbctype = MBCTYPE_SJIS; -+ break; -+ } -+} -diff -ru2N grep-2.0/mbc.h grep+mb1.04/mbc.h ---- grep-2.0/mbc.h Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/mbc.h Fri Jul 9 14:40:03 1993 -@@ -0,0 +1,38 @@ -+#ifndef MBC_H -+#define MBC_H 1 -+/* Definitions for multi-byte support. -+ Created for grep multi-byte extension Jul., 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 9, 1993 by t^2 */ -+ -+#ifndef const -+#ifndef __STDC__ -+#ifdef __GNUC__ -+#define const __const__ -+#define volatile __volatile__ -+#else -+#define const -+#define volatile -+#endif -+#endif -+#endif -+ -+#ifndef _ -+#ifdef __STDC__ -+#define _(x) x -+#else -+#define _(x) () -+#endif -+#endif -+ -+#define MBCTYPE_ASCII 0 -+#define MBCTYPE_EUC 1 -+#define MBCTYPE_SJIS 2 -+ -+extern const unsigned char *mbctab; -+extern int current_mbctype; -+ -+void mbcinit _((int)); -+ -+#define ismbchar(c) mbctab[(unsigned char)c] -+ -+#endif /* !MBC_H */ -diff -ru2N grep-2.0/obstack.h grep+mb1.04/obstack.h ---- grep-2.0/obstack.h Sat May 22 11:55:23 1993 -+++ grep+mb1.04/obstack.h Sat Jul 10 04:47:06 1993 -@@ -15,4 +15,6 @@ - along with this program; if not, write to the Free Software - Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ -+/* Multi-byte extension added Jul., 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 10, 1993 by t^2 */ - - /* Summary: -@@ -136,4 +138,5 @@ - #endif - -+#ifndef PTR_INT_TYPE - #ifdef __STDC__ - #define PTR_INT_TYPE ptrdiff_t -@@ -141,4 +144,5 @@ - #define PTR_INT_TYPE long - #endif -+#endif - - struct _obstack_chunk /* Lives at front of each chunk. */ -@@ -151,5 +155,5 @@ - struct obstack /* control current object in current chunk */ - { -- long chunk_size; /* preferred size to allocate chunks in */ -+ unsigned chunk_size; /* preferred size to allocate chunks in */ - struct _obstack_chunk* chunk; /* address of current struct obstack_chunk */ - char *object_base; /* address of object we are building */ -diff -ru2N grep-2.0/regex.c grep+mb1.04/regex.c ---- grep-2.0/regex.c Fri May 21 14:11:40 1993 -+++ grep+mb1.04/regex.c Thu Aug 19 04:37:03 1993 -@@ -19,4 +19,6 @@ - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -+/* Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Aug. 19, 1993 by t^2 */ - - /* AIX requires this to be the first thing in the file. */ -@@ -54,6 +56,33 @@ - #define bcmp(s1, s2, n) memcmp ((s1), (s2), (n)) - #endif -+#ifdef HAVE_MEMMOVE - #ifndef bcopy --#define bcopy(s, d, n) memcpy ((d), (s), (n)) -+#define bcopy(s, d, n) memmove ((d), (s), (n)) -+#endif -+#else -+#ifndef HAVE_BCOPY -+static void -+#ifdef __STDC__ -+bcopy (const void *s0, void *d0, size_t n) -+#else -+bcopy (s, d, n) -+ const void *s0; -+ void *d; -+ size_t n; -+#endif -+{ -+ const char *s = s0; -+ char *d = d0; -+ -+ if (s < d) { -+ s += n, d += n; -+ while (n--) -+ *--d = *--s; -+ } -+ else -+ while (n--) -+ *d++ = *s++; -+} -+#endif - #endif - #ifndef bzero -@@ -124,4 +153,5 @@ - /* Get the interface, including the syntax bits. */ - #include "regex.h" -+#include "mbc.h" - - /* isalpha etc. are used for the character classes. */ -@@ -462,4 +492,19 @@ - - #endif /* DEBUG */ -+ -+#define STORE_MBC(p, c) \ -+ ((p)[0] = (unsigned char) ((c) >> 8), (p)[1] = (unsigned char) (c)) -+#define STORE_MBC_AND_INCR(p, c) \ -+ (*(p)++ = (unsigned char) ((c) >> 8), *(p)++ = (unsigned char) (c)) -+ -+#define EXTRACT_MBC(p) \ -+ ((unsigned char) (p)[0] << 8 | (unsigned char) (p)[1]) -+#define EXTRACT_MBC_AND_INCR(p) \ -+ ((p) += 2, (unsigned char) (p)[-2] << 8 | (unsigned char) (p)[-1]) -+ -+#define EXTRACT_UNSIGNED(p) \ -+ ((unsigned char) (p)[0] | (unsigned char) (p)[1] << 8) -+#define EXTRACT_UNSIGNED_AND_INCR(p) \ -+ ((p) += 2, (unsigned char) (p)[-2] | (unsigned char) (p)[-1] << 8) - - /* If DEBUG is defined, Regex prints many voluminous messages about what -@@ -558,4 +603,8 @@ - { - putchar ('/'); -+ if (ismbchar (*p) && 2 <= mcnt) { -+ printf ("/%.2s", (char *) p), p += 2, --mcnt; -+ continue; -+ } - printchar (*p++); - } -@@ -618,7 +667,14 @@ - printchar (last); - -- putchar (']'); -- - p += 1 + *p; -+ { -+ unsigned short i, size; -+ -+ size = EXTRACT_UNSIGNED_AND_INCR (p); -+ for (i = 0; i < size; i++) -+ printf ("%.2s-%.2s", (char *) p, (char *) p + 2), -+ p += 4; -+ } -+ putchar (']'); - } - break; -@@ -779,5 +835,5 @@ - printf ("not_bol: %d\t", bufp->not_bol); - printf ("not_eol: %d\t", bufp->not_eol); -- printf ("syntax: %d\n", bufp->syntax); -+ printf ("syntax: %lu\n", bufp->syntax); - /* Perhaps we should print the translate table? */ - } -@@ -878,5 +934,7 @@ - static boolean at_begline_loc_p (), at_endline_loc_p (); - static boolean group_in_compile_stack (); -+#if 0 - static reg_errcode_t compile_range (); -+#endif - - /* Fetch the next character in the uncompiled pattern---translating it -@@ -887,5 +945,6 @@ - do {if (p == pend) return REG_EEND; \ - c = (unsigned char) *p++; \ -- if (translate) c = translate[c]; \ -+ if (translate && !ismbchar (c)) \ -+ c = (unsigned char) translate[(unsigned char) c]; \ - } while (0) - -@@ -905,5 +964,7 @@ - `char *', to avoid warnings when a string constant is passed. But - when we use a character as a subscript we must make it unsigned. */ --#define TRANSLATE(d) (translate ? translate[(unsigned char) (d)] : (d)) -+#define TRANSLATE(d) (translate \ -+ ? (unsigned char) translate[(unsigned char) (d)] \ -+ : (d)) - - -@@ -1075,4 +1136,159 @@ - || STREQ (string, "cntrl") || STREQ (string, "blank")) - -+/* Handle charset(_not)?. -+ -+ Structure of charset(_not)? in compiled pattern. -+ -+ struct { -+ unsinged char id; charset(_not)? -+ unsigned char sbc_size; -+ unsigned char sbc_map[sbc_size]; same as original up to here. -+ unsigned short mbc_size; number of intervals. -+ struct { -+ unsigned short beg; beginning of interval. -+ unsigned short end; end of interval. -+ } intervals[mbc_size]; -+ }; */ -+ -+static reg_errcode_t -+#ifdef __STDC__ -+set_list_bits (unsigned short c1, unsigned short c2, -+ reg_syntax_t syntax, unsigned char *b, const char *translate) -+#else -+set_list_bits (c1, c2, syntax, b, translate) -+ unsigned short c1, c2; -+ reg_syntax_t syntax; -+ unsigned char *b; -+ const char *translate; -+#endif -+{ -+ unsigned char sbc_size = b[-1]; -+ unsigned short mbc_size = EXTRACT_UNSIGNED (&b[sbc_size]); -+ unsigned short beg, end, upb; -+ -+ if (c1 > c2) -+ return syntax & RE_NO_EMPTY_RANGES ? REG_ERANGE : REG_NOERROR; -+ if (c1 < 1 << BYTEWIDTH) { -+ upb = c2; -+ if (1 << BYTEWIDTH <= upb) -+ upb = (1 << BYTEWIDTH) - 1; /* The last single-byte char */ -+ if (sbc_size <= upb / BYTEWIDTH) { -+ /* Allocate maximum size so it never happens again. */ -+ /* NOTE: memcpy() would not work here. */ -+ bcopy (&b[sbc_size], &b[(1 << BYTEWIDTH) / BYTEWIDTH], 2 + mbc_size*4); -+ bzero (&b[sbc_size], (1 << BYTEWIDTH) / BYTEWIDTH - sbc_size); -+ b[-1] = sbc_size = (1 << BYTEWIDTH) / BYTEWIDTH; -+ } -+ if (!translate) { -+ for (; c1 <= upb; c1++) -+ if (!ismbchar (c1)) -+ SET_LIST_BIT (c1); -+ } -+ else -+ for (; c1 <= upb; c1++) -+ if (!ismbchar (c1)) -+ SET_LIST_BIT (TRANSLATE (c1)); -+ if (c2 < 1 << BYTEWIDTH) -+ return REG_NOERROR; -+ c1 = 0x8000; /* The first wide char */ -+ } -+ b = &b[sbc_size + 2]; -+ -+ /* intervals[beg] -+ $B!|(B----------$B!|(B $B!|(B----------$B!|(B -+ c1 -+ $B!{(B----------------------$B!|(B -+ -+ $B>e?^$N$h$&$J6h4V$N%$%s%G%C%/%9(B beg $B$r7hDj$9$k(B. */ -+ for (beg = 0, upb = mbc_size; beg < upb; ) { -+ unsigned short mid = (beg + upb) >> 1; -+ -+ if (c1 - 1 > EXTRACT_MBC (&b[mid*4 + 2])) -+ beg = mid + 1; -+ else -+ upb = mid; -+ } -+ -+ /* intervals[end] -+ $B!|(B-------$B!|(B $B!|(B----------$B!|(B -+ c2 -+ $B!|(B---------------$B!{(B -+ -+ $B>e?^$N$h$&$J6h4V$N%$%s%G%C%/%9(B end $B$r7hDj$9$k(B. */ -+ for (end = beg, upb = mbc_size; end < upb; ) { -+ unsigned short mid = (end + upb) >> 1; -+ -+ if (c2 >= EXTRACT_MBC (&b[mid*4]) - 1) -+ end = mid + 1; -+ else -+ upb = mid; -+ } -+ -+ if (beg != end) { -+ /* $B4{B8$N6h4V$r>/$J$/$H$b(B1$B$DE}9g$9$k>l9g(B, -+ $B6h4V$N;OE@(B, $B=*E@$r=$@5$9$k(B. */ -+ if (c1 > EXTRACT_MBC (&b[beg*4])) -+ c1 = EXTRACT_MBC (&b[beg*4]); -+ if (c2 < EXTRACT_MBC (&b[end*4 - 2])) -+ c2 = EXTRACT_MBC (&b[end*4 - 2]); -+ } -+ if (end < mbc_size && end != beg + 1) -+ /* $BDI2C$5$l$k6h4V$N8e$m$K4{B8$N6h4V$r0\F0$9$k(B. */ -+ /* NOTE: memcpy() would not work here. */ -+ bcopy (&b[end*4], &b[(beg + 1)*4], (mbc_size - end)*4); -+ STORE_MBC (&b[beg*4 + 0], c1); -+ STORE_MBC (&b[beg*4 + 2], c2); -+ mbc_size += beg + 1 - end; -+ STORE_NUMBER (&b[-2], mbc_size); -+ return REG_NOERROR; -+} -+ -+static int -+#ifdef __STDC__ -+is_in_list (unsigned short c, const unsigned char *b) -+#else -+is_in_list (c, b) -+ unsigned short c; -+ const unsigned char *b; -+#endif -+{ -+ unsigned short size; -+ int in = (re_opcode_t) b[-1] == charset_not; -+ -+ size = *b++; -+ if (c < 1 << BYTEWIDTH) { -+ if (c / BYTEWIDTH < size && b[c / BYTEWIDTH] & 1 << c % BYTEWIDTH) -+ in = !in; -+ } -+ else { -+ unsigned short i, j; -+ -+ b += size + 2; -+ size = EXTRACT_UNSIGNED (&b[-2]); -+ -+ /* intervals[i] -+ $B!|(B-------$B!|(B $B!|(B--------$B!|(B -+ c -+ $B!{(B----------------$B!|(B -+ -+ $B>e?^$N$h$&$J6h4V$N%$%s%G%C%/%9(B i $B$r7hDj$9$k(B. */ -+ for (i = 0, j = size; i < j; ) { -+ unsigned short k = (i + j) >> 1; -+ -+ if (c > EXTRACT_MBC (&b[k*4 + 2])) -+ i = k + 1; -+ else -+ j = k; -+ } -+ if (i < size && EXTRACT_MBC (&b[i*4]) <= c -+ /* [...] $B$+$i(B, $BL58z$J%^%k%A%P%$%HJ8;z$r=|30$9$k(B. $B$3$3$G$O4JC1$N(B -+ $B$?$a#2%P%$%HL\$,(B '\n' $B$^$?$O(B '\0' $B$@$1$rL58z$H$7$?(B. [^...] -+ $B$N>l9g$O(B, $B5U$KL58z$J%^%k%A%P%$%HJ8;z$r%^%C%A$5$;$k(B. */ -+ && ((unsigned char) c != '\n' && (unsigned char) c != '\0')) -+ in = !in; -+ } -+ return in; -+} -+ - /* `regex_compile' compiles PATTERN (of length SIZE) according to SYNTAX. - Returns one of error codes defined in `regex.h', or zero for success. -@@ -1385,4 +1601,6 @@ - { - boolean had_char_class = false; -+ unsigned short c, c1; -+ int last_char = -1; - - if (p == pend) return REG_EBRACK; -@@ -1390,5 +1608,6 @@ - /* Ensure that we have enough space to push a charset: the - opcode, the length count, and the bitset; 34 bytes in all. */ -- GET_BUFFER_SPACE (34); -+ /* + 2 + 4 for mbcharset(_not)? with just one interval. */ -+ GET_BUFFER_SPACE (34 + 2 + 4); - - laststart = b; -@@ -1407,5 +1626,5 @@ - - /* Clear the whole map. */ -- bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH); -+ bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH + 2); - - /* charset_not matches newline according to a syntax bit. */ -@@ -1417,7 +1636,14 @@ - for (;;) - { -+ int size; -+ - if (p == pend) return REG_EBRACK; - -- PATFETCH (c); -+ if ((size = EXTRACT_UNSIGNED (&b[(1 << BYTEWIDTH) / BYTEWIDTH]))) -+ /* Ensure the space is enough to hold another interval -+ of multi-byte chars in charset(_not)?. */ -+ GET_BUFFER_SPACE (32 + 2 + size*4 + 4); -+ -+ PATFETCH_RAW (c); - - /* \ might escape characters inside [...] and [^...]. */ -@@ -1426,6 +1652,16 @@ - if (p == pend) return REG_EESCAPE; - -- PATFETCH (c1); -- SET_LIST_BIT (c1); -+ PATFETCH_RAW (c1); -+ if (ismbchar (c1)) { -+ unsigned char c2; -+ -+ PATFETCH_RAW (c2); -+ c1 = c1 << 8 | c2; -+ (void) set_list_bits (c1, c1, syntax, b, translate); -+ last_char = c1; -+ continue; -+ } -+ SET_LIST_BIT (TRANSLATE (c1)); -+ last_char = c1; - continue; - } -@@ -1442,4 +1678,11 @@ - return REG_ERANGE; - -+ if (ismbchar (c)) { -+ unsigned char c2; -+ -+ PATFETCH_RAW (c2); -+ c = c << 8 | c2; -+ } -+ - /* Look ahead to see if it's a range when the last thing - was a character: if this is a hyphen not at the -@@ -1447,10 +1690,25 @@ - operator. */ - if (c == '-' -+#if 0 /* The original was: */ - && !(p - 2 >= pattern && p[-2] == '[') - && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^') -+#else /* I wonder why he did not write like this. -+ Have we got any problems? */ -+ && p != p1 + 1 -+#endif - && *p != ']') - { -- reg_errcode_t ret -- = compile_range (&p, pend, translate, syntax, b); -+ reg_errcode_t ret; -+ -+ assert (last_char >= 0); -+ PATFETCH_RAW (c1); -+ if (ismbchar (c1)) { -+ unsigned char c2; -+ -+ PATFETCH_RAW (c2); -+ c1 = c1 << 8 | c2; -+ } -+ ret = set_list_bits (last_char, c1, syntax, b, translate); -+ last_char = c1; - if (ret != REG_NOERROR) return ret; - } -@@ -1461,7 +1719,15 @@ - - /* Move past the `-'. */ -- PATFETCH (c1); -- -- ret = compile_range (&p, pend, translate, syntax, b); -+ PATFETCH_RAW (c1); -+ -+ PATFETCH_RAW (c1); -+ if (ismbchar (c1)) { -+ unsigned char c2; -+ -+ PATFETCH_RAW (c2); -+ c1 = c1 << 8 | c2; -+ } -+ ret = set_list_bits (c, c1, syntax, b, translate); -+ last_char = c1; - if (ret != REG_NOERROR) return ret; - } -@@ -1474,5 +1740,5 @@ - char str[CHAR_CLASS_MAX_LENGTH + 1]; - -- PATFETCH (c); -+ PATFETCH_RAW (c); - c1 = 0; - -@@ -1534,4 +1800,7 @@ - } - had_char_class = true; -+#ifdef DEBUG -+ last_char = -1; -+#endif - } - else -@@ -1540,7 +1809,13 @@ - while (c1--) - PATUNFETCH; -+#if 0 /* The original was: */ - SET_LIST_BIT ('['); - SET_LIST_BIT (':'); -+#else /* I think this is the right way. */ -+ SET_LIST_BIT (TRANSLATE ('[')); -+ SET_LIST_BIT (TRANSLATE (':')); -+#endif - had_char_class = false; -+ last_char = ':'; - } - } -@@ -1548,5 +1823,6 @@ - { - had_char_class = false; -- SET_LIST_BIT (c); -+ (void) set_list_bits (c, c, syntax, b, translate); -+ last_char = c; - } - } -@@ -1556,5 +1832,9 @@ - while ((int) b[-1] > 0 && b[b[-1] - 1] == 0) - b[-1]--; -- b += b[-1]; -+ if (b[-1] != (1 << BYTEWIDTH) / BYTEWIDTH) -+ bcopy (&b[(1 << BYTEWIDTH) / BYTEWIDTH], &b[b[-1]], -+ 2 + EXTRACT_UNSIGNED (&b[(1 << BYTEWIDTH) / BYTEWIDTH])*4); -+ b += b[-1] + 2 + EXTRACT_UNSIGNED (&b[b[-1]])*4; -+ break; - } - break; -@@ -2023,5 +2303,6 @@ - not to translate; but if we don't translate it - it will never match anything. */ -- c = TRANSLATE (c); -+ if (!ismbchar (c)) -+ c = TRANSLATE (c); - goto normal_char; - } -@@ -2032,4 +2313,11 @@ - /* Expects the character in `c'. */ - normal_char: -+ -+ c1 = 0; -+ if (ismbchar (c)) { -+ c1 = c; -+ PATFETCH_RAW (c); -+ } -+ - /* If no exactn currently being built. */ - if (!pending_exact -@@ -2039,5 +2327,6 @@ - - /* We have only one byte following the exactn for the count. */ -- || *pending_exact == (1 << BYTEWIDTH) - 1 -+ || *pending_exact >= (c1 ? (1 << BYTEWIDTH) - 2 -+ : (1 << BYTEWIDTH) - 1) - - /* If followed by a repetition operator. */ -@@ -2059,4 +2348,8 @@ - } - -+ if (c1) { -+ BUF_PUSH (c1); -+ (*pending_exact)++; -+ } - BUF_PUSH (c); - (*pending_exact)++; -@@ -2184,5 +2477,5 @@ - at_endline_loc_p (p, pend, syntax) - const char *p, *pend; -- int syntax; -+ reg_syntax_t syntax; - { - const char *next = p; -@@ -2220,4 +2513,5 @@ - - -+#if 0 /* We use set_list_bits() now. */ - /* Read the ending character of a range (in a bracket expression) from the - uncompiled pattern *P_PTR (which ends at PEND). We assume the -@@ -2275,4 +2569,5 @@ - return REG_NOERROR; - } -+#endif - - /* Failure stack declarations and macros; both re_compile_fastmap and -@@ -2638,18 +2933,65 @@ - - case charset: -+ /* NOTE: Charset for single-byte chars never contain -+ multi-byte char. See set_list_bits(). */ - for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--) - if (p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH))) - fastmap[j] = 1; -+ { -+ unsigned short size; -+ unsigned char c, end; -+ -+ p += p[-1] + 2; -+ size = EXTRACT_UNSIGNED (&p[-2]); -+ for (j = 0; j < size; j++) -+ /* set bits for 1st bytes of multi-byte chars. */ -+ for (c = (unsigned char) p[j*4], -+ end = (unsigned char) p[j*4 + 2]; -+ c <= end; c++) -+ /* NOTE: Charset for multi-byte chars might contain -+ single-byte chars. We must reject them. */ -+ if (ismbchar (c)) -+ fastmap[c] = 1; -+ } - break; - - - case charset_not: -+ /* S: set of all single-byte chars. -+ M: set of all first bytes that can start multi-byte chars. -+ s: any set of single-byte chars. -+ m: any set of first bytes that can start multi-byte chars. -+ -+ We assume S+M = U. -+ ___ _ _ -+ s+m = (S*s+M*m). */ - /* Chars beyond end of map must be allowed. */ -+ /* NOTE: Charset_not for single-byte chars might contain -+ multi-byte chars. See set_list_bits(). */ - for (j = *p * BYTEWIDTH; j < (1 << BYTEWIDTH); j++) -- fastmap[j] = 1; -+ if (!ismbchar (j)) -+ fastmap[j] = 1; - - for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--) - if (!(p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH)))) -- fastmap[j] = 1; -+ if (!ismbchar (j)) -+ fastmap[j] = 1; -+ { -+ unsigned short size; -+ unsigned short c, beg; -+ -+ p += p[-1] + 2; -+ size = EXTRACT_UNSIGNED (&p[-2]); -+ c = 0x00; -+ for (j = 0; j < size; j++) { -+ for (beg = (unsigned char) p[j*4 + 0]; c <= beg; c++) -+ if (ismbchar (c)) -+ fastmap[c] = 1; -+ c = (unsigned char) p[j*4 + 2]; -+ } -+ for (beg = 0xff; c <= beg; c++) -+ if (ismbchar (c)) -+ fastmap[c] = 1; -+ } - break; - -@@ -2964,4 +3306,5 @@ - register int lim = 0; - int irange = range; -+ unsigned char c; - - if (startpos < size1 && startpos + range >= size1) -@@ -2973,11 +3316,23 @@ - inside the loop. */ - if (translate) -- while (range > lim -- && !fastmap[(unsigned char) -- translate[(unsigned char) *d++]]) -+ while (range > lim) { -+ c = *d++; -+ if (ismbchar (c)) { -+ if (fastmap[c]) -+ break; -+ d++; -+ range -= 2; -+ continue; -+ } -+ if (fastmap[(unsigned char) translate[c]]) -+ break; - range--; -+ } - else -- while (range > lim && !fastmap[(unsigned char) *d++]) -+ while (range > lim && (c = *d++, !fastmap[c])) { -+ if (ismbchar (c)) -+ d++, range--; - range--; -+ } - - startpos += irange - range; -@@ -3012,11 +3367,34 @@ - else if (range > 0) - { -- range--; -- startpos++; -+ const char *d = ((startpos >= size1 ? string2 - size1 : string1) -+ + startpos); -+ -+ if (ismbchar (*d)) { -+ range--, startpos++; -+ if (!range) -+ break; -+ } -+ range--, startpos++; - } - else - { -- range++; -- startpos--; -+ range++, startpos--; -+ { -+ const char *s, *d, *p; -+ -+ if (startpos < size1) -+ s = string1, d = string1 + startpos; -+ else -+ s = string2, d = string2 + startpos - size1; -+ for (p = d; p-- > s && ismbchar(*p); ) -+ /* --p >= s $B$@$H(B 80[12]?86 $B$GF0$+$J$$2DG=@-$,$"$k(B. (huge -+ model $B0J30$G(B, s $B$N%*%U%;%C%H$,(B 0 $B$@$C$?>l9g(B.) */ -+ ; -+ if (!((d - p) & 1)) { -+ if (!range) -+ break; -+ range++, startpos--; -+ } -+ } - } - } -@@ -3578,6 +3956,19 @@ - do - { -+ unsigned char c; -+ - PREFETCH (); -- if (translate[(unsigned char) *d++] != (char) *p++) -+ c = *d++; -+ if (ismbchar (c)) { -+ if (c != (unsigned char) *p++ -+ || !--mcnt /* $B%Q%?!<%s$,@5$7$/%3%s%Q%$%k$5(B -+ $B$l$F$$$k8B$j(B, $B$3$N%A%'%C%/$O(B -+ $B>iD9$@$,G0$N$?$a(B. */ -+ || d == dend -+ || (unsigned char) *d++ != (unsigned char) *p++) -+ goto fail; -+ continue; -+ } -+ if ((unsigned char) translate[c] != (unsigned char) *p++) - goto fail; - } -@@ -3588,6 +3979,26 @@ - do - { -+#if 0 -+ /* $BB>$NItJ,$G$O(B, string1 $B$H(B string2 $B$K%^%k%A%P%$%HJ8;z(B -+ $B$,8Y$k$N$r5v$7$F$$$J$$(B. $B$3$N$3$H$rB.EY$r5>@7$K$7$F(B -+ $B$b%A%'%C%/$9$k>l9g$O(B, $B$3$3$H<!$N(B `#if 0' $B$r(B `#if 1' -+ $B$KJQ$($k$3$H(B. */ -+ unsigned char c; -+ -+#endif - PREFETCH (); -+#if 0 -+ c = *d++; -+ if (ismbchar (c)) { -+ if (c != (unsigned char) *p++ -+ || !--mcnt -+ || d == dend) -+ goto fail; -+ c = *d++; -+ } -+ if (c != (unsigned char) *p++) goto fail; -+#else - if (*d++ != (char) *p++) goto fail; -+#endif - } - while (--mcnt); -@@ -3602,4 +4013,14 @@ - - PREFETCH (); -+ if (ismbchar (*d)) { -+ if (d + 1 == dend || d[1] == '\n' || d[1] == '\0') -+ /* $BL58z$J%^%k%A%P%$%HJ8;z$K$O%^%C%A$5$;$J$$(B. $B$3$3$G$O(B, $B4J(B -+ $BC1$N$?$a#2%P%$%HL\$,(B '\n', '\0' $B$N$b$N$@$1$rL58z$H$9$k(B. */ -+ goto fail; -+ SET_REGS_MATCHED (); -+ DEBUG_PRINT2 (" Matched `%d'.\n", EXTRACT_MBC (&d[0])); -+ d += 2; -+ break; -+ } - - if ((!(bufp->syntax & RE_DOT_NEWLINE) && TRANSLATE (*d) == '\n') -@@ -3616,19 +4037,23 @@ - case charset_not: - { -- register unsigned char c; -- boolean not = (re_opcode_t) *(p - 1) == charset_not; -+ register unsigned short c; -+ boolean not; - -- DEBUG_PRINT2 ("EXECUTING charset%s.\n", not ? "_not" : ""); -+ DEBUG_PRINT2 ("EXECUTING charset%s.\n", -+ (re_opcode_t) *(p - 1) == charset_not ? "_not" : ""); - - PREFETCH (); -- c = TRANSLATE (*d); /* The character to match. */ -+ c = (unsigned char) *d; -+ if (ismbchar (c)) { -+ c <<= 8; -+ if (d + 1 != dend) -+ c |= (unsigned char) d[1]; -+ } -+ else -+ c = TRANSLATE (c); /* The character to match. */ - -- /* Cast to `unsigned' instead of `unsigned char' in case the -- bit list is a full 32 bytes long. */ -- if (c < (unsigned) (*p * BYTEWIDTH) -- && p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH))) -- not = !not; -+ not = is_in_list (c, p); - -- p += 1 + *p; -+ p += 1 + *p + 2 + EXTRACT_UNSIGNED (&p[1 + *p])*4; - - if (!not) goto fail; -@@ -3636,4 +4061,6 @@ - SET_REGS_MATCHED (); - d++; -+ if (d != dend && c >= 1 << BYTEWIDTH) -+ d++; - break; - } -@@ -3801,5 +4228,5 @@ - - /* xx why this test? */ -- if ((int) old_regend[r] >= (int) regstart[r]) -+ if (old_regend[r] >= regstart[r]) - regend[r] = old_regend[r]; - } -@@ -4052,5 +4479,5 @@ - || (bufp->newline_anchor && (re_opcode_t) *p2 == endline)) - { -- register unsigned char c -+ register unsigned short c - = *p2 == (unsigned char) endline ? '\n' : p2[2]; - p1 = p + mcnt; -@@ -4069,13 +4496,10 @@ - || (re_opcode_t) p1[3] == charset_not) - { -- int not = (re_opcode_t) p1[3] == charset_not; -- -- if (c < (unsigned char) (p1[4] * BYTEWIDTH) -- && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH))) -- not = !not; -+ if (ismbchar (c)) -+ c = c << 8 | p2[3]; - -- /* `not' is equal to 1 if c would match, which means -+ /* `is_in_list()' is TRUE if c would match, which means - that we can't change to pop_failure_jump. */ -- if (!not) -+ if (!is_in_list (c, p1 + 4)) - { - p[-3] = (unsigned char) pop_failure_jump; -@@ -4632,8 +5056,15 @@ - char *translate; - { -- register unsigned char *p1 = s1, *p2 = s2; -+ register unsigned char *p1 = s1, *p2 = s2, c; - while (len) - { -- if (translate[*p1++] != translate[*p2++]) return 1; -+ c = *p1++; -+ if (ismbchar(c)) { -+ if (c != *p2++ || !--len || *p1++ != *p2++) -+ return 1; -+ } -+ else -+ if (translate[c] != translate[*p2++]) -+ return 1; - len--; - } -@@ -4778,5 +5209,5 @@ - { - reg_errcode_t ret; -- unsigned syntax -+ reg_syntax_t syntax - = (cflags & REG_EXTENDED) ? - RE_SYNTAX_POSIX_EXTENDED : RE_SYNTAX_POSIX_BASIC; -diff -ru2N grep-2.0/regex.h grep+mb1.04/regex.h ---- grep-2.0/regex.h Fri May 21 14:11:43 1993 -+++ grep+mb1.04/regex.h Sat Jul 10 04:38:03 1993 -@@ -17,4 +17,6 @@ - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -+/* Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 10, 1993 by t^2 */ - - #ifndef __REGEXP_LIBRARY_H__ -@@ -36,9 +38,9 @@ - the definitions shifted by one from the previous bit; thus, when we - add or remove a bit, only one other definition need change. */ --typedef unsigned reg_syntax_t; -+typedef unsigned long reg_syntax_t; - - /* If this bit is not set, then \ inside a bracket expression is literal. - If set, then such a \ quotes the following character. */ --#define RE_BACKSLASH_ESCAPE_IN_LISTS (1) -+#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long)1) - - /* If this bit is not set, then + and ? are operators, and \+ and \? are -@@ -206,5 +208,5 @@ - #undef RE_DUP_MAX - #endif --#define RE_DUP_MAX ((1 << 15) - 1) -+#define RE_DUP_MAX ((int)(((unsigned)1 << 15) - 1)) - - -@@ -397,4 +399,10 @@ - - #define _RE_ARGS(args) () -+ -+#ifdef __GNUC__ -+#define const __const__ -+#else -+#define const -+#endif - - #endif /* not __STDC__ */ -diff -ru2N grep-2.0/search.c grep+mb1.04/search.c ---- grep-2.0/search.c Mon May 3 06:02:00 1993 -+++ grep+mb1.04/search.c Fri Jul 9 14:55:21 1993 -@@ -17,4 +17,6 @@ - - Written August 1992 by Mike Haertel. */ -+/* Multi-byte extension added Jul., 1993 by t^2 (Takahiro Tanimoto) -+ Last change: Jul. 9, 1993 by t^2 */ - - #include <ctype.h> -@@ -61,4 +63,5 @@ - #include "kwset.h" - #include "regex.h" -+#include "mbc.h" - - #define NCHAR (UCHAR_MAX + 1) -@@ -434,8 +437,9 @@ - char **endp; - { -- register char *beg, *try, *end; -+ register char *beg, *try, *end, *p, *lim; - register size_t len; - struct kwsmatch kwsmatch; - -+ lim = buf; - for (beg = buf; beg <= buf + size; ++beg) - { -@@ -456,4 +460,8 @@ - if (try > buf && WCHAR((unsigned char) try[-1])) - break; -+ for (p = try; p-- > lim && ismbchar(*p); ) -+ ; -+ if (!((try - p) & 1)) -+ break; - if (try + len < buf + size && WCHAR((unsigned char) try[len])) - { -@@ -464,6 +472,12 @@ - goto success; - } -- else -- goto success; -+ else { -+ for (p = beg; p-- > lim && ismbchar(*p); ) -+ ; -+ if ((beg - p) & 1) -+ goto success; -+ if (lim + 1 < beg) -+ lim = beg - 1; -+ } - } - -diff -ru2N grep-2.0/tests/batgen.awk grep+mb1.04/tests/batgen.awk ---- grep-2.0/tests/batgen.awk Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/tests/batgen.awk Sat Jul 10 02:10:24 1993 -@@ -0,0 +1,10 @@ -+BEGIN { print "@echo off"; } -+$0 !~ /^#/ && NF == 3 { -+ printf "echo #%d --\n", ++n -+ print "set R=0"; -+ print "echo " $3 ">tmp.in"; -+ print "grep -E -e \"" $2 "\" tmp.in >nul"; -+ print "if errorlevel 1 set R=1"; -+ print "if errorlevel 2 set R=2"; -+ printf "if not %R% == " $1 " echo Spencer test #%d failed\n", n -+} -diff -ru2N grep-2.0/tests/check.bat grep+mb1.04/tests/check.bat ---- grep-2.0/tests/check.bat Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/tests/check.bat Fri Jul 9 17:05:30 1993 -@@ -0,0 +1,14 @@ -+@echo off -+rem -+rem Regression test for GNU e?grep. -+rem -+ -+rem The Khadafy test is brought to you by Scott Anderson . . . -+grep -E -f tests/khadafy.reg tests/khadafy.lin > khadafy.out -+fc tests\khadafy.lin khadafy.out -+ -+rem . . . and the following by Henry Spencer. -+ -+gawk -F: -f tests/batgen.awk tests/spencer.dos > tmp.bat -+ -+tmp -diff -ru2N grep-2.0/tests/spencer.dos grep+mb1.04/tests/spencer.dos ---- grep-2.0/tests/spencer.dos Thu Jan 1 09:00:00 1970 -+++ grep+mb1.04/tests/spencer.dos Sat Jul 10 02:12:59 1993 -@@ -0,0 +1,122 @@ -+0:abc:abc -+1:abc:xbc -+1:abc:axc -+1:abc:abx -+0:abc:xabcy -+0:abc:ababc -+0:ab*c:abc -+0:ab*bc:abc -+0:ab*bc:abbc -+0:ab*bc:abbbbc -+0:ab+bc:abbc -+1:ab+bc:abc -+1:ab+bc:abq -+0:ab+bc:abbbbc -+0:ab?bc:abbc -+0:ab?bc:abc -+1:ab?bc:abbbbc -+0:ab?c:abc -+0:^abc$:abc -+1:^abc$:abcc -+0:^abc:abcc -+1:^abc$:aabc -+0:abc$:aabc -+0:^:abc -+0:$:abc -+0:a.c:abc -+0:a.c:axc -+0:a.*c:axyzc -+1:a.*c:axyzd -+1:a[bc]d:abc -+0:a[bc]d:abd -+1:a[b-d]e:abd -+0:a[b-d]e:ace -+0:a[b-d]:aac -+0:a[-b]:a- -+0:a[b-]:a- -+1:a[b-a]:- -+2:a[]b:- -+2:a[:- -+0:a]:a] -+0:a[]]b:a]b -+0:a[^bc]d:aed -+1:a[^bc]d:abd -+0:a[^-b]c:adc -+1:a[^-b]c:a-c -+1:a[^]b]c:a]c -+0:a[^]b]c:adc -+0:ab|cd:abc -+0:ab|cd:abcd -+0:()ef:def -+0:()*:- -+1:*a:- -+0:^*:- -+0:$*:- -+1:(*)b:- -+1:$b:b -+2:a\\:- -+0:a\(b:a(b -+0:a\(*b:ab -+0:a\(*b:a((b -+1:a\x:a\x -+2:abc):- -+2:(abc:- -+0:((a)):abc -+0:(a)b(c):abc -+0:a+b+c:aabbabc -+0:a**:- -+0:a*?:- -+0:(a*)*:- -+0:(a*)+:- -+0:(a|)*:- -+0:(a*|b)*:- -+0:(a+|b)*:ab -+0:(a+|b)+:ab -+0:(a+|b)?:ab -+0:[^ab]*:cde -+0:(^)*:- -+0:(ab|)*:- -+2:)(:- -+1:abc: -+1:abc: -+0:a*: -+0:([abc])*d:abbbcd -+0:([abc])*bcd:abcd -+0:a|b|c|d|e:e -+0:(a|b|c|d|e)f:ef -+0:((a*|b))*:- -+0:abcd*efg:abcdefg -+0:ab*:xabyabbbz -+0:ab*:xayabbbz -+0:(ab|cd)e:abcde -+0:[abhgefdc]ij:hij -+1:^(ab|cd)e:abcde -+0:(abc|)ef:abcdef -+0:(a|b)c*d:abcd -+0:(ab|ab*)bc:abc -+0:a([bc]*)c*:abc -+0:a([bc]*)(c*d):abcd -+0:a([bc]+)(c*d):abcd -+0:a([bc]*)(c+d):abcd -+0:a[bcd]*dcdcde:adcdcde -+1:a[bcd]+dcdcde:adcdcde -+0:(ab|a)b*c:abc -+0:((a)(b)c)(d):abcd -+0:[A-Za-z_][A-Za-z0-9_]*:alpha -+0:^a(bc+|b[eh])g|.h$:abh -+0:(bc+d$|ef*g.|h?i(j|k)):effgz -+0:(bc+d$|ef*g.|h?i(j|k)):ij -+1:(bc+d$|ef*g.|h?i(j|k)):effg -+1:(bc+d$|ef*g.|h?i(j|k)):bcdd -+0:(bc+d$|ef*g.|h?i(j|k)):reffgz -+1:((((((((((a)))))))))):- -+0:(((((((((a))))))))):a -+1:multiple words of text:uh-uh -+0:multiple words:multiple words, yeah -+0:(.*)c(.*):abcde -+1:\((.*),:(.*)\) -+1:[k]:ab -+0:abcd:abcd -+0:a(bc)d:abcd -+0:a[-]?c:ac -+0:(....).*\1:beriberi diff --git a/textproc/ja-grep/patches/patch-ab b/textproc/ja-grep/patches/patch-ab deleted file mode 100644 index 9bab1a4dd9b..00000000000 --- a/textproc/ja-grep/patches/patch-ab +++ /dev/null @@ -1,39 +0,0 @@ -$NetBSD: patch-ab,v 1.2 2004/12/11 08:04:25 minskim Exp $ - ---- grep-2.0/Makefile.in.orig 2004-12-11 01:56:57.000000000 -0600 -+++ grep-2.0/Makefile.in -@@ -60,9 +60,9 @@ prefix=/usr/local - exec_prefix=$(prefix) - - # Prefix for installed program, normally empty or `g'. --binprefix= -+binprefix=j - # Prefix for installed man page, normally empty or `g'. --manprefix= -+manprefix=j - - # Where to install executables. - bindir=$(exec_prefix)/bin -@@ -74,7 +74,7 @@ mandir=$(prefix)/man/man1 - manext=1 - - # How to make a hard link. --LN=ln -+LN=ln -s - - #### End of system configuration section. #### - -@@ -97,10 +97,10 @@ grep.lint: $(SRCS) - install: all - $(INSTALL_PROGRAM) grep $(bindir)/$(binprefix)grep - rm -f $(bindir)/$(binprefix)egrep -- $(LN) $(bindir)/$(binprefix)grep $(bindir)/$(binprefix)egrep -+ cd $(bindir); $(LN) $(binprefix)grep $(binprefix)egrep - rm -f $(bindir)/$(binprefix)fgrep -- $(LN) $(bindir)/$(binprefix)grep $(bindir)/$(binprefix)fgrep -- $(INSTALL_DATA) $(srcdir)/grep.man $(mandir)/grep.$(manext) -+ cd $(bindir); $(LN) $(binprefix)grep $(binprefix)fgrep -+ $(INSTALL_DATA) $(srcdir)/grep.man $(mandir)/$(manprefix)grep.$(manext) - - check: - AWK=$(AWK) sh $(srcdir)/tests/check.sh $(srcdir)/tests |