rekgrpth / gawkextlib Goto Github PK
View Code? Open in Web Editor NEWDynamically loaded extension libraries for GNU AWK (forked from https://git.code.sf.net/p/gawkextlib/code)
Home Page: https://gawkextlib.sourceforge.net/
Dynamically loaded extension libraries for GNU AWK (forked from https://git.code.sf.net/p/gawkextlib/code)
Home Page: https://gawkextlib.sourceforge.net/
This is gawkextlib. It contains several shared library extension packages for gawk, as well as libgawkextlib containing some APIs that are useful for extension packages. These extension libraries require the use of gawk (GNU Awk) version 4.1.1 or later, except for the select and json extensions, which are currently supported only by gawk 4.2 (API version 2) and later. The 1.1.0 releases of the extensions should work with both API versions 1 (prior to gawk 4.2) and 2 (starting with gawk 4.2). The API changes did not affect gawkextlib. Please download gawkextlib plus one or more individual extensions. You should build and install gawkextlib first. After you untar each package, please cd into its directory and build as follows: ./configure && make && make check && make install && echo Success. On an rpm-based system, such as Fedora or RHEL or CentOS, you should download each package's rpm spec file from the rpm-specs directory and place the tarballs in the customary RPM source directory, which defaults to $HOME/rpmbuild/SOURCES. You can then say rpmbuild -bb gawkextlib.spec After installing the gawkextlib rpm, you can then build the individual extension rpms like so: rpmbuild -bb gawk-<extension>.spec If you would like to build from git sources, please make sure that your system has these packages installed: autoconf, automake, gettext, libtool, and autopoint. On many systems, autopoint is part of the gettext package, but some distributions, such as Ubuntu, place it in a separate package. With that infrastructure in place, the steps are very similar: git clone git://git.code.sf.net/p/gawkextlib/code gawkextlib Please build lib first, and then the extensions you want, like so: autoreconf -i && \ ./configure && make && make check && make install && echo Success. Note: if gawk is installed in a non-standard location, please call `configure --with-gawk=/path/to/gawk`. Similarly, if you do not plan to install gawkextlib in the standard location, please use the `--prefix` option. So your configure command might look something like: configure --with-gawk=/path/to/gawk --prefix=/path/to/gawkextlib Please use the mailing lists to report bugs or contribute new code. We welcome the contribution of new extensions. Developers: please refer to the Development file. This file has more detailed instructions for building from git, installing in non-standard locations, creating new extensions, and testing packages. Note: if you are using legacy xgawk, please upgrade to gawk version 4.1.1 or later with these new packages. There is only one known incompatibility between xgawk and current gawk: in gawk 4.1 and later, the `@include` and `@load` directives require double quotes around the filename. With xgawk, there were no quotes. Please let us know if you find any other incompatibilities.
Is gawkextlib xml expected to work with gawk 5.2.1, API 3.2, with the new AWK_BOOL
?
It works as expected with awk 5.1.1, and with all earlier versions going back to 4.1.3. I've been using it regularly since 2017.
But with 5.2.1 I'm seeing anomalous behavior where empty xml elements (e.g. <doi></doi>
) are evaluating as true even though they string-equal "".
In connection with that empty xml field, gawk
5.2.1 crashes with
gawk: ../mkbib.awk:1142: (FILENAME=buzsaki_2003_EEG_source.xml FNR=173) fatal: internal error: file eval.c, line 1358: unexpected parameter type Node_illegal
If I build with sanitizer, I see concat_exp()
doing a double-free of an arg that was earlier freed by r_interpret()
.
I did a whole slew of experiments to try to understand what is happening, but it's a large and tricky code base. It seems to have something to do with Node_var
appearing where usually Node_val
does, but I was quickly in over my head.
libgawkextlib
and xml.so
were both built with gawk-5.2.1 installed. I tried with old release code and with the latest git sources -- same result.
Suspiciously, there are almost no substantive commits to the xml/
subdir in the git history.
If it's useful I can share buzsaki_2003_EEG_source.xml
and even the script that's crashing on 5.2.1.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.