Message-Id: <201610301815.u9UIFnVK022936@delorie.com> Date: Sun, 30 Oct 2016 16:19:36 +0100 From: "Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de) [via djgpp-announce AT delorie DOT com]" To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: DJGPP port of GNU grep 2.26 uploaded. Content-Type: text/plain; charset=ISO-8859-15; format=flowed Reply-To: djgpp AT delorie DOT com This is a port of GNU grep 2.26 to MSDOS/DJGPP. This is GNU grep, the "fastest grep in the west". GNU grep is based on a fast lazy-state deterministic matcher (about twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper search for a fixed string that eliminates impossible text from being considered by the full regexp matcher without necessarily having to look at every character. The result is typically many times faster than Unix grep or egrep. (Regular expressions containing backreferencing will run more slowly, however.) DJGPP specific changes. ======================= - The directory under inspection has two file descriptors associated to it. But when the directory is left only one of them is closed thus the pool of descriptors become exhausted if the directory tree contains more than 234 (= 254 - 20) directories. This produces then an error message like this: grep: dir1/dir2/foobar: Too many open files (EMFILE) This has been fixed by recording the descriptor that remains open and that now is closed when the directory is left. - On DOS, CWD is global, so the starting directory must be recorded, to be able to restore and return to it in case the program gets interrupted by SIGINT or similar. To this purpose a signal catcher has been added. - The port has been tested by using it. I have used it on WinXP only. It has worked flawlessly. I do not konw if this will ever be the case on FreeDOS. I have never used/tested them in that environment. - The port has been configured and compiled on WinXP SP3 and Win98SE using gcc346b and bnu227b. There is no guarantee that this may be possible with any other DOS-like OS. Due to the massive use of long file names it will not be possible to configure and compile without LFN support. - The port does not provide NLS support. - The port has been configured with perl-regexp (pcre) support enabled. This means that you will have to install pcre libray available as: ftp://ftp.delorie.com/pub/djgpp/current/v2tk/pcre839b.zip if you decide to compile the the preconfigured sources. If you prefer to disable the pcre support you will have to reconfigure and recompile the sources again, but this time passing the "no-pcre" command line option to config.bat. The zip file contains only the one build with perl-regexp support enabled. I have tried to configure with pcr1021b but the configuration step failed, so that pcre838b has been used. As usual, all djgpp specific files (diffs, README files, etc.) are stored in the /djgpp directory. The sources have been configured to be build in the /_build directory. If for some reason it does not work for you, delete its contents and configure from scratch again. For further information about GNU grep please read the info docs and NEWS file. This is a verbatim extract of the NEWS file (multi-byte specific features are not supported by the DJGPP port): ------------------------------------------------------------------------------- * Noteworthy changes in release 2.26 (2016-10-02) [stable] ** Bug fixes Grep no longer omits output merely because it follows an output line suppressed due to encoding errors. [bug introduced in grep-2.21] In the Shift_JIS locale, grep no longer mistakenly matches in the middle of a multibyte character. [bug present since "the beginning"] ** Improvements grep can be much faster now when standard output is /dev/null. grep -F is now typically much faster when many patterns are given, as it now uses the Aho-Corasick algorithm instead of the Commentz-Walter algorithm in that case. grep -iF is typically much faster in a multibyte locale, if the pattern and its case counterparts contain only single byte characters. grep with complicated expressions (e.g., back-references) and without -i now uses the regex fastmap for better performance. In multibyte locales, grep now handles leading "." in patterns more efficiently. grep now prints a "FILENAME:LINENO: " prefix when diagnosing an invalid regular expression that was read from an '-f'-specified file. ------------------------------------------------------------------------------- The port consists of the usual three packages produced using djdev205 that can be downloaded from ftp.delorie.com and mirrors as (time stamp 2016-10-29): grep 2.26 binaries, info and man format documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/grep226b.zip grep 2.26 dvi, html, pdf and ps format documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/grep226d.zip grep 2.26 source: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/grep226s.zip Send grep specific bug reports to . Send suggestions and bug reports concerning the DJGPP port to comp.os.msdos.djgpp or . If you are not sure if the failure is really a grep failure or a djgpp specific failure, report it here and *not* to . Enjoy. Guerrero, Juan Manuel