Message-Id: <201212172340.qBHNeiw6031910@delorie.com> Date: Tue, 18 Dec 2012 00:08:56 +0100 From: Juan Manuel Guerrero To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: DJGPP port of PCRE 8.32 uploaded. Content-Type: text/plain; charset=ISO-8859-15; format=flowed Reply-To: djgpp AT delorie DOT com This is a port of PCRE 8.32 to MSDOS/DJGPP. The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. PCRE has its own native API, as well as a set of wrapper functions that correspond to the POSIX regular expression API. DJGPP specific changes. ======================= To configure and compile this port you will need an OS with LFN support. The products itself will even work on systems that have only SFN support. The usual stuff to configure the sources have been added. As usual, it is stored together with the diffs file that documents my changes in the /djgpp directory. The port has been configured to support gzip and bzip2 compressed files. The binaries will detect at runtime if LFN or SFN support is available. If there is LFN support available then only the default extensions ".bz2" and ".gz" will be used and no other ones will be honored. But if only SFN support is available, then also ".*bz" will be accepted as a valid bzip2 extension and in the case of gzip compressed files also ".*gz" and ".**z" will be accepted as valid extensions, where "*" always stands for any valid character. If a file with a valid bzip2 or gzip extension can not be opened using the appro- priate compressor library functions, it will be treated as an uncopressed file and will be opened as a plain file. Please note that all files are opened in binary mode and that neither the original code nor this port offers any way to change this behaviour. The library can be configured to accept different EOL characters. I have choosen to configure this port using the option to enable any EOL characters. This means that CR, LF and CRLF will be recognized as valid EOL character. If you do not like this, you will have to reconfigure and recompile the port passing the option you prefer to config.bat. The following command line options are available: cr: enables CR as EOL lf: enables LF as EOL crlf: enables CRLF as EOL any-crlf: enables CR, LF and CRLF as EOL Also the following command line options are available to disable any of the EOL characters: no-cr: disables CR as EOL no-lf: disables LF as EOL no-crlf: disables CRLF as EOL no-any-crlf: disables CR, LF and CRLF as EOL Enabling one of them disables all of the other ones. This concerns only the library. The EOL character used by pcregrep can always be controlled with the -N command line option. Please note that this choice has the consequence that if you have a string looking like this: foo\r\nbar PCRE library and pcregrep.exe will find 2 EOLs. One for \r and one for \n. In other words the following two sequences "CRCRLF" and "LFCRLF" will always produce two EOL matches. The "CRCRLF" sequence will produce one match for the first CR and a second one for the following CRLF. The "LFCRLF" sequence will produce a match for the first LF and a second match for the following CRLF. Please note that this behaviour differs from the DJGPP's port of grep. It was not my intention to modify the PCRE code in such a drastic way to be able to emulation DJGPP's grep behaviour. pcregrep.exe also offers color support without having to install an ansi.sys driver. Please also note that I have not configured the port to support neither UTF-8 Unicode character strings nor any UTF-8 EOL character sequence. There are more options like this: cpp or no-cpp, default cpp. Enable C++ support. pcre8 or no-pcre8, default pcre8. Enable 8 bit character set support and disable 16 bit character set support. pcre16 or no-pcre16, default no-pcre16. Disable 8 bit character set support and enables 16 bit character set support. DJGPP does not support 16 bit character sets AFAIK. jit or no-jit, default no-jit. Disable Just-In-Time compiling support. grepjit or no-grepjit, default no-grepjit. Disable Just-In-Time support in pcregrep. Neither the Just-In-Time compiling support for the library nor the JIT support for pcregrep are supported by me. I have checked the code to see if there are DOS specific issues to fix but I did not found any. To compile it you will need to install some pthread library together with a socket library. I have never used that kind of libraries on DOS with DJGPP so I am not able to support JIT. If you want to try you are alone. The pcretest.exe binary will not support the -S command line option that allows to change the program stack. This is because DJGPP's setrlimit does not support this feature. The port has been configure to use the readline and history libraries. If you do not like this you will have to reconfigure the sources passing the "no-rl" command line option to config.bat. The default is always that readline is used. The port passes the test suite except for the last test. This test is completely UNIX or LF centric and does not work well with any other EOL encoding than the one used on posix systems. This is known by the author and maintainer of PCRE library and I have no plans to write a CRLF specific test case for the DJGPP port. Certain man and html pages have been renamed to fit into the SFN limits. The index.html has been adjusted accordingly. As told before, to configure and compile the package you will have to install the following packages too: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/rdln62b.zip ftp://ftp.delorie.com/pub/djgpp/current/v2tk/zlib127b.zip ftp://ftp.delorie.com/pub/djgpp/current/v2tk/bz2-106a.zip or: ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/rdln62b.zip ftp://ftp.delorie.com/pub/djgpp/beta/v2tk/zlib127b.zip ftp://ftp.delorie.com/pub/djgpp/beta/v2tk/bz2-106a.zip Of course, you can always download newer versions of these ports if available. The files stored in /current have been compiled with djdev203 and the ones from /beta are compiled with djdev204 beta. The source package is now distributed configured for both DJGPP 2.03 and DJGPP 2.04. In the top srcdir there is be a "_build.203" directory and a "_build.204" directory. Please read the docs. There are no info formated docs. All the extensive documentation is html formated and placed in /share/doc/pcre/html User visible changes (from NEWS): Changes in version PCRE 8.32: . There is now support for 32-bit character strings and UTF-32. Like the 16-bit support, this is done by compiling a separate 32-bit library. . \X now matches a Unicode extended grapheme cluster. . Case-independent matching of Unicode characters that have more than one "other case" now makes all three (or more) characters equivalent. This applies, for example, to Greek Sigma, which has two lowercase versions. . Unicode character properties are updated to Unicode 6.2.0. . The EBCDIC support, which had decayed, has had a spring clean. . A number of JIT optimizations have been added, which give faster JIT execution speed. In addition, a new direct interface to JIT execution is available. This bypasses some of the sanity checks of pcre_exec() to give a noticeable speed-up. . A number of issues in pcregrep have been fixed, making it more compatible with GNU grep. In particular, --exclude and --include (and variants) apply to all files now, not just those obtained from scanning a directory recursively. In Windows environments, the default action for directories is now "skip" instead of "read" (which provokes an error). . If the --only-matching (-o) option in pcregrep is specified multiple times, each one causes appropriate output. For example, -o1 -o2 outputs the substrings matched by the 1st and 2nd capturing parentheses. A separating string can be specified by --om-separator (default empty). . When PCRE is built via Autotools using a version of gcc that has the "visibility" feature, it is used to hide internal library functions that are not part of the public API. The port has been compiled using stock djdev203 (patchlevel 2) and consists of the two packages that can be downloaded from ftp.delorie.com and mirrors as (timestamp 2012-12-17): PCRE 8.32 binaries, headers, libs and man formated documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2tk/pcre832b.zip PCRE 8.32 source: ftp://ftp.delorie.com/pub/djgpp/current/v2tk/pcre832s.zip The binaries have been produced a second time using the stock version of djdev204 beta library. This package is available at ftp.delorie.com and mirrors as (timestamp 2012-12-17): PCRE 8.32 binaries, headers, libs and man formated documentation: ftp://ftp.delorie.com/pub/djgpp/beta/v2tk/pcre832b.zip Send PCRE specific bug reports to . Send suggestions and bug reports concerning the DJGPP port to comp.os.msdos.djgpp or . Enjoy. Guerrero, Juan Manuel