lib/printf.h, libtests/t-printf.c: Bodge to inhibit warning from GCC 9. It seems that GCC 9 now peers closely at field-width specifiers in `printf' format strings to make sure that they're sensible. This is a good thing except when you're trying to test how your `printf'-like function copes with out-of-range field width specifiers. Add a new macro `INHIBIT_PRINTF_FORMAT_CHECKING' to turn off the magic GCC attribute, and use it in `t-printf.c' to prevent GCC from breaking the build.
Mark `help' and `version' functions as not returning. They don't; and later versions of GCC complain about potential `switch' fall-through mistakes without this. Fixing this is a simple matter of adding `attribute((noreturn))' in the right places. Note that `server/gstdecode.c' doesn't share the common attribute-macro machinery.
libtests: Include the Unicode test files directly. Rather than fetch the files using `wget' at test time, fire up `gzip' to decompress them from local copies. The files compress really rather well, so this is an overall saving in disk space relative to the previous version -- especially since we now share the test files among all build trees rather than having a separate copy in each. On the other hand, they're moderately large things to have in the source distribution, though small compared to the `images/' tree. Of course, the main reason for doing this is to completely eliminate the need for external network connectivity during a build. The copyright notice, at https://www.unicode.org/copyright.html, appears to be compatible with the GPL (which is good, because I think we'd have had a problem using these files even if we didn't distribute them). I've included the copyright notice as COPYING.unicode-tests, in order to comply with requirement (a). Should it be necessary to update the copies of the test files, there's a (slightly hairy) make target `update-unicode-tests' which can be invoked by hand to do this.
Concentrate knowledge about the `pcre' API in one place. Introduce a new `regexp' API in the library which knows about `pcre' and actually invokes `pcre_...' functions. Remove this knowledge from everywhere else. The new API is, of course, suspiciously similar to `pcre' in many ways, but there are some differences. * Sizes, lengths, and offsets, are all `size_t' now. In particular, this means that the `ovector' type has changed. * Errors are reported differently: rather than returning a pointer to a static string, `regexp_compile' writes the error string into a caller-provided buffer. Observant readers might notice that these changes make the interface more similar to the `pcre2' API. They'd be right, and this is not a coincidence. But for now, there's no functional change.
A batch of copyright date updates.
build: various fixes for ubuntu 12.10/gcc 4.7 - One_old_user() is obsolete and uses nonexistent functions; I guess earlier GCC removed it before checking for errors. - Remove or use various unused objects that GCC is now better at spotting. - Makefile -l ordering fixes.