8 weeks agoRelease 1.1. master v1.1
Nick Bowler [Sun, 14 Mar 2021 02:31:56 +0000 (21:31 -0500)]
Release 1.1.

8 weeks agoImprove cdecl99 error output.
Nick Bowler [Sat, 13 Mar 2021 23:53:31 +0000 (18:53 -0500)]
Improve cdecl99 error output.

Ensure that printed error messages are appropriately prefixed,
and mark some missed strings as translateable.

8 weeks agoRework library error reporting.
Nick Bowler [Sat, 13 Mar 2021 22:23:46 +0000 (17:23 -0500)]
Rework library error reporting.

This removes (hopefully) all cases where the libcdecl prints
error messages directly to stderr, and reports these messages
via cdecl_get_error instead.

8 weeks agoGenerate specifier strings directly from cdecl.h
Nick Bowler [Fri, 12 Mar 2021 05:34:27 +0000 (00:34 -0500)]
Generate specifier strings directly from cdecl.h

Since the specs.lst file is no longer used for output ordering, it is
now mostly redundant information.  There is another list of specifiers:
the enumeration constants in cdecl.h.  We can fairly easily reconstruct
the strings from this instead.

8 weeks agoRestructure the type specifier check.
Nick Bowler [Fri, 12 Mar 2021 04:54:24 +0000 (23:54 -0500)]
Restructure the type specifier check.

As the typemap.c functionality is only used for one thing and is quite
simple, let's integrate that more closely with the declaration specifier
checks.  This further reduces the code size of the library somewhat.

The old sed line noise is replaced by a similar awk script which should
be much easier to adjust as needed.

8 weeks agoHand-code the normalized specifier ordering.
Nick Bowler [Fri, 12 Mar 2021 04:58:52 +0000 (23:58 -0500)]
Hand-code the normalized specifier ordering.

For the most part, the enumerated values for specifier types in the
library are already in an acceptable order for normalization.  This
list is part of the API and is expected to be stable.

We can achieve the desired ordering by simply tweaking these values
as needed.  There is also no need to totally order the specifiers
because some combinations are never valid.  This change not only
eliminates a pile of comparatively complex code generation, but
also reduces the overall size of the library somewhat.

Add a new testcase to validate the resulting ordering.

8 weeks agoAvoid a couple warnings reported by gcc.
Nick Bowler [Thu, 11 Mar 2021 05:43:59 +0000 (00:43 -0500)]
Avoid a couple warnings reported by gcc.

There would be a presentation bug in the "help" command output if
we had anything in the list sufficiently long to cause wrapping.

8 weeks agoReplace with a new and improved script.
Nick Bowler [Wed, 10 Mar 2021 07:31:59 +0000 (02:31 -0500)]
Replace with a new and improved script.

The old has a bunch of portability problems; let's write
a new script in awk which is a better tool for this sort of code
generation task anyway.

8 weeks agoFix configuration with heirloom-sh.
Nick Bowler [Wed, 10 Mar 2021 06:07:17 +0000 (01:07 -0500)]
Fix configuration with heirloom-sh.

Gnulib's conditional dependency feature installs 'if ! ...' constructs
into configure, which fail under traditional shells such as heirloom-sh.

Let's replace these constructs with more portable ones while

8 weeks agoMinor portability improvements.
Nick Bowler [Wed, 10 Mar 2021 01:44:49 +0000 (20:44 -0500)]
Minor portability improvements.

Pull in the Gnulib snprintf and flexmember modules to get better
portability improvements related to these C features.

Update dxcommon to get some recent bug fixes.

8 weeks agoWork around designated initializer bug on HP-UX cc.
Nick Bowler [Wed, 10 Mar 2021 01:34:05 +0000 (20:34 -0500)]
Work around designated initializer bug on HP-UX cc.

Work around a designated initializer bug encountered on old versions
of HP-UX.  It seems there are some glitches leading to compilation
failures when the initializers are out of order (or omitted), and
the initializer for such a member is non-constant, and there is a
type conversion involved.

This affects several of the parser actions that initialize declspec
values.  In this case, it is super easy to just change the type and
avoid type conversion, which easily avoids the bug.

8 weeks agoFix empty and help commands causing program exit.
Nick Bowler [Wed, 10 Mar 2021 01:25:21 +0000 (20:25 -0500)]
Fix empty and help commands causing program exit.

This bug was introduced when the input handling was reworked: the
"help" and blank commands are now causing the program to exit.

Add some test coverage to ensure we don't regress again in the future.

2 months agoMinor manual updates.
Nick Bowler [Sun, 7 Mar 2021 04:14:37 +0000 (23:14 -0500)]
Minor manual updates.

Fix some typographic errors and minor wording problems in the manuals.

Additionally, flatten the directory hierarchy so the manuals are just
under "doc".

2 months agoAdd configure option to disable readline.
Nick Bowler [Fri, 5 Mar 2021 00:15:37 +0000 (19:15 -0500)]
Add configure option to disable readline.

Apparently the Gnulib readline module does not provide any obvious way
for users to disable it.  Setting the gl_cv_lib_readline cache variable
works but probably only Autoconfers will know how to discover that.

Add an explicit --with-readline (and --without-readline) option which
internally sets this.  Since this option shows up in configure's help
output it is hopefully more obvious.

2 months agoFix testcase compilation with --disable-shared.
Nick Bowler [Wed, 3 Mar 2021 02:21:50 +0000 (21:21 -0500)]
Fix testcase compilation with --disable-shared.

Since the libtest library depends on functions in libcdecl,
we must list libcdecl after libtest on the linker command line,
otherwise required objects from static libcdecl will not be
pulled in to the link.  A similar problem also occurs when
building tests with LDFLAGS=-Wl,--as-needed.

2 months agoRelease 1. v1
Nick Bowler [Wed, 24 Feb 2021 04:58:17 +0000 (23:58 -0500)]
Release 1.

2 months agoUse common strtab generator for error strings.
Nick Bowler [Tue, 2 Mar 2021 05:52:48 +0000 (00:52 -0500)]
Use common strtab generator for error strings.

We have a (hopefully better) generic string table generator now.
Let's replace this crazy sed nonsense with it.

2 months agoConsolidate header files.
Nick Bowler [Tue, 2 Mar 2021 05:13:56 +0000 (00:13 -0500)]
Consolidate header files.

There is no need for this quantity of tiny header files.  We can simply
use a single internal header file for libcdecl, and a single internal
header file for cdecl99, including all necessary declarations.

2 months agoUse gperf to implement command selection.
Nick Bowler [Tue, 2 Mar 2021 04:28:16 +0000 (23:28 -0500)]
Use gperf to implement command selection.

Instead of iterating through a static a table of commands,
let's use gperf and our new string table generator to do this
a bit more efficiently.

2 months agoUse the newly-minted option generator script from dxcommon.
Nick Bowler [Fri, 26 Feb 2021 05:37:17 +0000 (00:37 -0500)]
Use the newly-minted option generator script from dxcommon.

Instead of maintaining the relation between long options and help text
dircetly in C code, let's use this new script to generate C code from
a simple description file.

This ditches support for translated option names.  I'm a bit unsure
about the practical use of this functionality as I do not personally
use it and locale-specific interpretation of command-line arguments
just seems like it would cause more problems than it would solve.

2 months agoAdd a couple more positive tests.
Nick Bowler [Wed, 24 Feb 2021 05:49:04 +0000 (00:49 -0500)]
Add a couple more positive tests.

A review of the ChangeLog suggests we regressed on 'int **' at some
point, so it seems like a good idea to explicitly test this.

Also test int (*) because thought I had found an error but of course
the robot was correct and I was wrong: there was no such error.

Validate both the type name and declaration forms for each.

2 months agoImprove usage messages a bit.
Nick Bowler [Wed, 24 Feb 2021 05:24:02 +0000 (00:24 -0500)]
Improve usage messages a bit.

2 months agoGive better errors when flex/bison are unavailable.
Nick Bowler [Wed, 24 Feb 2021 05:08:16 +0000 (00:08 -0500)]
Give better errors when flex/bison are unavailable.

2 months agoBundle scripts to help re-bootstrap the package.
Nick Bowler [Wed, 24 Feb 2021 01:46:55 +0000 (20:46 -0500)]
Bundle scripts to help re-bootstrap the package.

We can include the main bootstrapping scripts easily enough in the
package.  If the user has a (possibly updated) Gnulib available, it
is now possible to regenerate the build system just by running the
included bootstrap script.

2 months agoUse AC_CONFIG_HEADERS rather than AC_CONFIG_HEADER.
Nick Bowler [Wed, 24 Feb 2021 00:44:48 +0000 (19:44 -0500)]

The former name has been supported since approximately forever ago and
the latter form is now formally deprecated (with a warning) in recent
versions of Autoconf.

2 months agoEnsure INSTALL is packaged.
Nick Bowler [Wed, 24 Feb 2021 00:41:44 +0000 (19:41 -0500)]
Ensure INSTALL is packaged.

When Automake is run in foreign mode, the standard INSTALL file is not
copied by automake --add-missing.  As this file provides general usage
instructions for the GNU build system, it is useful to have included
in the package.

Just copy the file manually when bootstrapping to make that happen.

2 months agoRework the README.
Nick Bowler [Wed, 24 Feb 2021 00:33:16 +0000 (19:33 -0500)]
Rework the README.

This consolidates the text of this README with the text on my website,
and gets rid of a bunch of bootstrapping-related suggestions which
are not particularly interesting and probably obsolete anyway as none
of the tool versions listed have been updated in about a decade.

2 months agoGenerate ChangeLog from git at packaging time.
Nick Bowler [Tue, 23 Feb 2021 05:39:30 +0000 (00:39 -0500)]
Generate ChangeLog from git at packaging time.

Import the gitlog-to-changelog script from gnulib and add rules to
generate an up-to-date changelog from the git history, if available,
when running 'make dist'.

The ChangeLog is otherwise taken from srcdir as usual, so that
modified versions can be prepared from a release tarball without
requiring the full git history.  In this scenario, the ChangeLog
would have to be manually edited.

In case the ChangeLog generation fails, a distcheck-hook is added
to hopefully catch issues before releasing tarballs with a broken

2 months agoBump gnulib to latest.
Nick Bowler [Tue, 23 Feb 2021 04:50:06 +0000 (23:50 -0500)]
Bump gnulib to latest.

Switch to using the gettext-h module, which I believe should work
exactly the same as before, just that the Autoconf macros get pulled
in from gettext rather than gnulib when bootstrapping.

2 months agoBump dxcommon to pull in DX_LINGUAS fixes.
Nick Bowler [Tue, 23 Feb 2021 02:53:42 +0000 (21:53 -0500)]
Bump dxcommon to pull in DX_LINGUAS fixes.

3 months agoFix Gnulib integration issues.
Nick Bowler [Sun, 24 Jan 2021 03:27:53 +0000 (22:27 -0500)]
Fix Gnulib integration issues.

The recent dxcommon update introduced a regression with the Gnulib
symbol renaming, pull in the fix for that.

And apparently EXTRA_LTLIBRARIES are not cleaned by default.  This
behaviour is very strange but easily solved.

3 months agoFix build with new Bison versions.
Nick Bowler [Sat, 23 Jan 2021 23:56:21 +0000 (18:56 -0500)]
Fix build with new Bison versions.

New Bison needs additional options to work.  Pull in dxcommon updates to
get relevant configure tests and adapt the build recipes accordingly.

10 months agoFix use-after-free during parser error recovery.
Nick Bowler [Sat, 4 Jul 2020 17:28:53 +0000 (13:28 -0400)]
Fix use-after-free during parser error recovery.

When parsing a declaration containing more than one full declarator,
each such declarator references the same list of declaration specifiers.

While processing the declarators the specifier list is normalized and
each declarator needs to be updated to the new list.

However, if a syntax error is detected we break out of the processing
loop and end up with only some of these updates occurring.  When the
partially-updated declaration list is subsequently freed, this can
in some cases lead to a use after free when the stale pointers are

Fix this by updating all the specifier references before doing any
further processing to avoid dealing with partially-updated lists.

10 months agoPort random crossparse test to Autotest.
Nick Bowler [Fri, 3 Jul 2020 03:16:51 +0000 (23:16 -0400)]
Port random crossparse test to Autotest.

I don't really know why the existing crossparse testcase is so
complicated.  Sure running the test generation and execution in
parallel may be an interesting approach, but it seems to be total
overkill for this use case.

By enhancing the crossparse application to take a list of test cases
from a file, we can just generate the stimuli in one step and execute
the tests in another which is simple and works fine.

As this is the final test to port to Autotest, we can now retire the
use of the Automake test harness.

10 months agoAdd better --help text to the test programs.
Nick Bowler [Fri, 3 Jul 2020 00:12:25 +0000 (20:12 -0400)]
Add better --help text to the test programs.

At the very least these test programs can enumerate their own options
without requiring us to write any additional documentation.

10 months agoPort randomdecl sanity test to Autotest.
Nick Bowler [Thu, 2 Jul 2020 22:58:03 +0000 (18:58 -0400)]
Port randomdecl sanity test to Autotest.

10 months agoFix parsing of int (x*).
Nick Bowler [Thu, 2 Jul 2020 22:45:15 +0000 (18:45 -0400)]
Fix parsing of int (x*).

We are incorrectly eliminating the function declarator from this
parse, which ends up "flipping" the pointer declarator.  So the
result is simply wrong.  Fix that up.

Also remove some contextless notes in a comment which I am no
longer smart enough to understand.

10 months agoConvert invalid declaration test to Autotest.
Nick Bowler [Thu, 2 Jul 2020 05:04:14 +0000 (01:04 -0400)]
Convert invalid declaration test to Autotest.

Now most of these tests have headings too which will hopefully
help future me figure out WTF they are testing.

10 months agoBegin converting testsuite to Autotest.
Nick Bowler [Tue, 30 Jun 2020 04:59:55 +0000 (00:59 -0400)]
Begin converting testsuite to Autotest.

This is better.  Port the static symbol check to Autotest.

10 months agoOutput copyright symbol directly, rather than via translations.
Nick Bowler [Tue, 30 Jun 2020 03:54:43 +0000 (23:54 -0400)]
Output copyright symbol directly, rather than via translations.

The "(C)" isn't really a translatable string.  Instead of requiring
translations to deal with it, use Gnulib's str_iconv module to encode it
into the user's locale encoding.  We fall back to (C) if that fails for
any reason, or if NLS is disabled.

2 years agoUpdate .gitignore.
Nick Bowler [Sun, 6 Jan 2019 17:19:25 +0000 (12:19 -0500)]
Update .gitignore.

The ignored m4 files list has bitrotted slightly, fix it up.

2 years agoBump dxcommon for depfiles updates.
Nick Bowler [Sun, 6 Jan 2019 17:12:48 +0000 (12:12 -0500)]
Bump dxcommon for depfiles updates.

The older snippets fail with Automake 1.16.

Also update the URIs used in gitmodules to HTTPS variants.

6 years agoBump gnulib for gettext updates.
Nick Bowler [Fri, 29 Aug 2014 23:48:50 +0000 (19:48 -0400)]
Bump gnulib for gettext updates.

This eliminates bootstrap warnings about AM_PROG_MKDIR_P.  Update to the
v0.1 tag so we have a known checkpoint.

6 years agoBump dxcommon for fix-gnulib updates.
Nick Bowler [Fri, 29 Aug 2014 23:42:09 +0000 (19:42 -0400)]
Bump dxcommon for fix-gnulib updates.

Latest versions no longer require List::Compare so let's update.

8 years agoFix silent-rules alignment in Automake 1.12.
Nick Bowler [Wed, 9 Jan 2013 00:01:53 +0000 (19:01 -0500)]
Fix silent-rules alignment in Automake 1.12.

Automake 1.12 changes the alignment of silent-rules output, which
looks ugly.  Use the new compatibility helpers in dxcommon to fix
the alignment of flex/bison printouts in a backwards-compatible way.

8 years agoUpdate .gitignore for Automake-1.12.
Nick Bowler [Thu, 6 Dec 2012 00:45:22 +0000 (19:45 -0500)]
Update .gitignore for Automake-1.12.

8 years agoMove GLOBAL_SYMBOL_PIPE definition into dxcommon code.
Nick Bowler [Thu, 6 Dec 2012 00:43:34 +0000 (19:43 -0500)]
Move GLOBAL_SYMBOL_PIPE definition into dxcommon code.

This got left behind when was moved.

8 years agoAdd basic readline history support.
Nick Bowler [Thu, 30 Aug 2012 00:29:03 +0000 (20:29 -0400)]
Add basic readline history support.

Bump gnulib as later versions include a free check for history.h
already, then implement a wrapper for add_history that should work
even when support is not available.

8 years agoWork around breakage caused by newer Bison versions.
Nick Bowler [Wed, 29 Aug 2012 22:35:55 +0000 (18:35 -0400)]
Work around breakage caused by newer Bison versions.

Newer versions of GNU Bison automagically add a prototype for yyparse to
the header file, where previous versions did not.  Unfortunately, the
use of yyscan_t in %parse-param causes a build failure now, as yyscan_t
is declared in scan.h.  Moreover, since scan.h includes parse.h, we
cannot simply include scan.h in parse.h to get the type definition.

Work around the problem by declaring yyparse as taking a void *

8 years agoDon't allow restrict-qualified pointers to functions.
Nick Bowler [Wed, 29 Aug 2012 00:44:09 +0000 (20:44 -0400)]
Don't allow restrict-qualified pointers to functions.

Such pointers are prohibited by the C language, so we must reject them.

8 years agoUpdate dxcommon to latest version.
Nick Bowler [Wed, 29 Aug 2012 00:42:16 +0000 (20:42 -0400)]
Update dxcommon to latest version.

This is to get updates.

8 years agoAdd missing test script to the distribution.
Nick Bowler [Sat, 18 Aug 2012 01:31:19 +0000 (21:31 -0400)]
Add missing test script to the distribution.

This fixes a test failure in distcheck.

8 years agoUpdate dxcommon to get its version of
Nick Bowler [Sat, 18 Aug 2012 01:29:00 +0000 (21:29 -0400)]
Update dxcommon to get its version of

8 years agoWorkaround Gentoo's silly Automake wrapper in bootstrap.
Nick Bowler [Wed, 15 Aug 2012 00:34:44 +0000 (20:34 -0400)]
Workaround Gentoo's silly Automake wrapper in bootstrap.

It's pretty annoying when running bootstrap doesn't actually rebuild
using newly-installed tool versions.  This happens because Gentoo's
automake wrapper script detects that stuff has been previously built
with a particular version of Automake, and runs that instead of the

Since we're going to recreate them anyway, delete the generated files so
that Gentoo's script picks the latest.

8 years agoPrevent gratuitous Automake failures.
Nick Bowler [Wed, 15 Aug 2012 00:20:52 +0000 (20:20 -0400)]
Prevent gratuitous Automake failures.

Automake-1.12 introduces some new warnings, as well as fixing an earlier
bug that prevented -Wall from enabling all warnings.  Since we were
using -Werror, this causes Automake to fail.

However, the warnings are gratuitous: some are warning about stuff
provided by libtool (which should be fixed in libtool, not worked
around in this package), and the others are warning about the non-
portability of (hopefully!) portable constructs.  Most are automake
bug #9587 <>, but
Automake also warns about the $(.FEATURES) trick to use order-only
dependencies when available.

8 years agoMove some gettext bits to dxcommon.
Nick Bowler [Sat, 28 Jul 2012 20:32:18 +0000 (16:32 -0400)]
Move some gettext bits to dxcommon.

Migrate the mostly-package-agnostic parts of the gettext support into
dxcommon, thus allowing these bits to be shared with other packages.

We remove the AC_CONFIG_MACRO_DIR from because its
behaviour is not clearly specified, and it's not obvious how (if it's
even possible at all) one handles multiple directories containing macro
definitions.  Moreover, even if this macro is specified you still need
to define ACLOCAL_AMFLAGS anyway, and this definition must be kept
consistent with the AC_CONFIG_MACRO_DIR usage.

In the end, it looks like the only thing AC_CONFIG_MACRO_DIR does is
silence a single warning from libtoolize, without doing anything else
meaningful.  In light of the above, the warning seems preferable at
this time.

9 years agoAdd copyright header to bootstrap.
Nick Bowler [Thu, 10 May 2012 01:28:58 +0000 (21:28 -0400)]
Add copyright header to bootstrap.

9 years agoImprove bootstrap error messages.
Nick Bowler [Thu, 10 May 2012 01:26:21 +0000 (21:26 -0400)]
Improve bootstrap error messages.

Kill off the silly trap handler while we're at it, because it never
actually worked properly.  Just don't call die from a subshell.

9 years agoBring in fix-gnulib from a submodule.
Nick Bowler [Thu, 10 May 2012 01:08:15 +0000 (21:08 -0400)]
Bring in fix-gnulib from a submodule.

This should make it easier to keep this stuff in sync with other

9 years agoBetter document fix-gnulib.
Nick Bowler [Thu, 10 May 2012 00:02:29 +0000 (20:02 -0400)]
Better document fix-gnulib.

Add a big blurb in the comments describing the main bits required to use
the script in a project.  Also rename the header variables a bit so we
can ensure future compatibility with the documented behaviour.

9 years agoMake fix-gnulib only need a single output file.
Nick Bowler [Wed, 9 May 2012 23:59:32 +0000 (19:59 -0400)]
Make fix-gnulib only need a single output file.

We combine the Automake and M4 bits into a single polyglot that can be
interpreted by either, so all one needs to do is include the makefile
fragment in  I've created a monster.

9 years agoTest invalid English declarations as well.
Nick Bowler [Thu, 3 May 2012 23:54:30 +0000 (19:54 -0400)]
Test invalid English declarations as well.

9 years agoTest more bogus declarations.
Nick Bowler [Wed, 28 Mar 2012 15:29:34 +0000 (11:29 -0400)]
Test more bogus declarations.

9 years agoAdd a check to reject extra specifiers on void function parameters.
Nick Bowler [Sat, 24 Mar 2012 16:12:22 +0000 (12:12 -0400)]
Add a check to reject extra specifiers on void function parameters.

9 years agoAdd a simple test to check if cdecl99 rejects bogus input.
Nick Bowler [Fri, 23 Mar 2012 19:38:49 +0000 (15:38 -0400)]
Add a simple test to check if cdecl99 rejects bogus input.

9 years agoActually generate (void) function parameter lists in randomdecl.
Nick Bowler [Mon, 19 Mar 2012 01:44:56 +0000 (21:44 -0400)]
Actually generate (void) function parameter lists in randomdecl.

9 years agoAdd a sanity test for randomdecl.
Nick Bowler [Sun, 18 Mar 2012 22:10:36 +0000 (18:10 -0400)]
Add a sanity test for randomdecl.

9 years agoAdd an English output mode to randomdecl.
Nick Bowler [Sun, 18 Mar 2012 22:09:06 +0000 (18:09 -0400)]
Add an English output mode to randomdecl.

9 years agoUnbreak random array declarators.
Nick Bowler [Sun, 18 Mar 2012 22:05:05 +0000 (18:05 -0400)]
Unbreak random array declarators.

Passing really big values to gsl_rng_uniform_int is not supported by the
library.  Instead, add a function to generate any possible uintmax_t
value uniformly at random.

9 years agoFix bogus switch cases in declgen.
Nick Bowler [Sun, 18 Mar 2012 20:54:43 +0000 (16:54 -0400)]
Fix bogus switch cases in declgen.

One of the switch statements in declgen has completely bogus case
labels: '0', '1', ... instead of 0, 1, ...

Fix this up and also add a default: assert(0); which would have caught
this earlier.  Improve the test case output when a randomdecl failure
causes the test to fail.

Also add a comment to the one switch statement in this file which
intentionally does not have a default: assert(0).

9 years agoBatch up crossparse tests to improve performance.
Nick Bowler [Sat, 3 Mar 2012 03:30:15 +0000 (22:30 -0500)]
Batch up crossparse tests to improve performance.

A significant portion of the crossparse test time is spent just starting
the program hundreds of times.  Batch up the random declarations to
reduce this.  This makes the test script somewhat more complex, but the
gain is significant: the test time (500 iterations) on my machine is
shortened from 7 seconds to a mere .7 seconds.

9 years agoFree memory in randomdecl.
Nick Bowler [Thu, 1 Mar 2012 02:56:36 +0000 (21:56 -0500)]
Free memory in randomdecl.

Kind of silly to continuously allocate memory for a program intended to
run a long time.

9 years agoDon't generate invalid void function parameters in randomdecl.
Nick Bowler [Thu, 1 Mar 2012 01:29:58 +0000 (20:29 -0500)]
Don't generate invalid void function parameters in randomdecl.

Only parameters that are pointers or functions may have the "void" type

This apparently doesn't come up often, so increase the default number of
test iterations to make it more likely.

9 years agoAdd a test case to check if libcdecl can parse its own output.
Nick Bowler [Thu, 1 Mar 2012 01:14:49 +0000 (20:14 -0500)]
Add a test case to check if libcdecl can parse its own output.

9 years agoAvoid recursively calling glthread_once in error init.
Nick Bowler [Wed, 29 Feb 2012 01:05:06 +0000 (20:05 -0500)]
Avoid recursively calling glthread_once in error init.

Apparently at least the GNU C library will deadlock when pthread_once is
called recursively on the same control variable.  This behaviour of the
library doesn't seem to be consistent with the POSIX standard, but it's
easy enough to avoid in this instance.

This can all go away once all the error paths have been updated to

9 years agoAdd a test case to verify symbol prefixes.
Nick Bowler [Sun, 26 Feb 2012 22:13:53 +0000 (17:13 -0500)]
Add a test case to verify symbol prefixes.

Our very first automated test case!

9 years agoFix libtest dependencies.
Nick Bowler [Sat, 25 Feb 2012 19:22:04 +0000 (14:22 -0500)]
Fix libtest dependencies.

Anything that includes <config.h> must depend on the gnulib headers.

9 years agoSimplify glconfig include mechanism.
Nick Bowler [Sat, 25 Feb 2012 17:08:23 +0000 (12:08 -0500)]
Simplify glconfig include mechanism.

Instead of relying on include order to select the right config.h, modify
config.h to include the glconfig header conditionally.

This allows the use of Automake's default include paths again, and is
conceptually simpler.

9 years agoAdd missing test files to the distribution.
Nick Bowler [Sat, 25 Feb 2012 16:27:36 +0000 (11:27 -0500)]
Add missing test files to the distribution.

Oops; distcheck wasn't testing this (yet) so half the files in test/
were not actually included in the distribution.

Also switch to using check_LTLIBRARIES instead of EXTRA_LTLIBRARIES
because the latter does not clean properly for some reason (and the
former is more appropriate conceptually, anyway).

9 years agoAdd more missing source files to the distribution.
Nick Bowler [Sat, 25 Feb 2012 04:07:19 +0000 (23:07 -0500)]
Add more missing source files to the distribution.

Somehow parse.y and scan.l managed to get omitted from the distribution.

9 years agoMark dist hooks as phony.
Nick Bowler [Sat, 25 Feb 2012 02:37:58 +0000 (21:37 -0500)]
Mark dist hooks as phony.

9 years agoAvoid per-target CFLAGS (for now).
Nick Bowler [Sat, 25 Feb 2012 02:28:51 +0000 (21:28 -0500)]
Avoid per-target CFLAGS (for now).

There's no real reason to use per-target CFLAGS to specify $(GSL_CFLAGS)
only on libtest, as the flags will simply be harmless (and useless) on
other targets.  Set them globally and completely avoid the mess
resulting from the use of per-target flags.

9 years agoFix GSL detection when using the default --with-gsl=auto.
Nick Bowler [Sat, 25 Feb 2012 02:25:21 +0000 (21:25 -0500)]
Fix GSL detection when using the default --with-gsl=auto.

The use of a shell case statement was preventing the AC_REQUIRE macros
in DX_CHECK_GSL from working correctly in the second case.  Switch to
AS_CASE to avoid the issue.

9 years agoFix "make dist" permissions when using a read-only srcdir.
Nick Bowler [Sat, 25 Feb 2012 01:54:45 +0000 (20:54 -0500)]
Fix "make dist" permissions when using a read-only srcdir.

Apparently Automake copies permissions from the source directory, so
if you run "make dist" in a VPATH build from a read-only srcdir, the
resulting distdir will be read-only.  Beyond the resulting tarball
permissions, this can actually cause dist hooks to fail in some

Add another dist hook which makes distdir user-writable.

9 years agoProperly describe several files in
Nick Bowler [Fri, 24 Feb 2012 03:20:07 +0000 (22:20 -0500)]
Properly describe several files in

A number of source files were missing from the distribution or generated
files were not removed by "make clean".  Fix that up.

9 years agoFix distribution of missing config header.
Nick Bowler [Fri, 24 Feb 2012 03:19:04 +0000 (22:19 -0500)]
Fix distribution of missing config header.

While we're at it, rename cfgtail.h to conf_post.h for consistency with
the example in the autoconf manual.

9 years agoAdd a tool to generate random declarations.
Nick Bowler [Fri, 24 Feb 2012 03:14:46 +0000 (22:14 -0500)]
Add a tool to generate random declarations.

The first of (hopefully) many components of a test suite.

9 years agoTry to fix explanations of "child" declarators in the manual.
Nick Bowler [Fri, 24 Feb 2012 02:51:26 +0000 (21:51 -0500)]
Try to fix explanations of "child" declarators in the manual.

The "child" relationship between declarators is somwhat unintuitive.
Try to explain it properly in the manual.  It's still probably not too
helpful, but it's certainly better than the outright lies that are in
there currently.

9 years agoFix spacing after qualified pointers when rendering C declarations.
Nick Bowler [Fri, 24 Feb 2012 02:31:58 +0000 (21:31 -0500)]
Fix spacing after qualified pointers when rendering C declarations.

We don't want to print spaces after pointer qualifiers all the time: in
particular, things like "type const pointer to array of int" would print
a space between the "const" and the ")", as in:

  int (* const )[]

Fix that up by eliding the space if (a) the pointer has qualifiers, and
(b) the child is not a null declarator.

9 years agoAdd note about old-style function declarations to the manual.
Nick Bowler [Wed, 30 Nov 2011 01:35:05 +0000 (20:35 -0500)]
Add note about old-style function declarations to the manual.

9 years agoMake is_abstract a proper library function.
Nick Bowler [Wed, 30 Nov 2011 01:08:54 +0000 (20:08 -0500)]
Make is_abstract a proper library function.

This function is generally useful.  Add it to the public API.

9 years agoReduce "set +x" noise in (un)install targets.
Nick Bowler [Tue, 29 Nov 2011 03:03:07 +0000 (22:03 -0500)]
Reduce "set +x" noise in (un)install targets.

By judicious use of subshells, we can eliminate the need to call
"set +x" explicitly, which should (slightly) reduce the noise of the
(un)install targets.

9 years agoGenerate the specifier switch statement automatically.
Nick Bowler [Sun, 20 Nov 2011 20:17:52 +0000 (15:17 -0500)]
Generate the specifier switch statement automatically.

We already have a list of specifier names, so use them!

9 years agoSeparate specifier handling from the output routines.
Nick Bowler [Sun, 20 Nov 2011 16:37:00 +0000 (11:37 -0500)]
Separate specifier handling from the output routines.

This moves all the code to handle redundant specifiers and multiple
orderings to the parser, so that the output routines just have to
print them out in order.

This will allow the output routines to be used by test generators.

9 years agoUse #n in strtab.sed.
Nick Bowler [Sun, 23 Oct 2011 16:35:51 +0000 (12:35 -0400)]
Use #n in strtab.sed.

This feature allows us to make all makefile rules which call sed scripts
the same.  This may help reduce code duplication in the makefile later.

9 years agoMake CDECL_SPEC_TYPE non-zero.
Nick Bowler [Sat, 22 Oct 2011 23:53:38 +0000 (19:53 -0400)]
Make CDECL_SPEC_TYPE non-zero.

This allows us to meaningfully OR together the various CDECL_SPEC_
constants.  A bit of code assumes that CDECL_SPEC_TYPE is zero, so that
needs to be fixed.

9 years agoUpdate Gnulib to latest version.
Nick Bowler [Sat, 22 Oct 2011 18:17:31 +0000 (14:17 -0400)]
Update Gnulib to latest version.

9 years agoMangle spliced makefile lines in Gnulib correctly.
Nick Bowler [Sat, 22 Oct 2011 17:37:27 +0000 (13:37 -0400)]
Mangle spliced makefile lines in Gnulib correctly.

Otherwise, target and variable mangling may only apply to the first

9 years agoAdd some examples to the manual.
Nick Bowler [Sat, 22 Oct 2011 16:06:10 +0000 (12:06 -0400)]
Add some examples to the manual.

9 years agoImplement --help.
Nick Bowler [Sat, 8 Oct 2011 14:53:33 +0000 (10:53 -0400)]
Implement --help.