mLib
12 months ago@@@ BROKEN wip
Mark Wooding [Sat, 3 Jun 2023 09:31:39 +0000 (10:31 +0100)]
@@@ BROKEN wip

12 months ago@@@ more mess
Mark Wooding [Fri, 26 May 2023 09:33:42 +0000 (10:33 +0100)]
@@@ more mess

12 months ago@@@ so much mess
Mark Wooding [Thu, 25 May 2023 07:45:34 +0000 (08:45 +0100)]
@@@ so much mess

12 months ago@@@ adjust bench timings
Mark Wooding [Thu, 11 May 2023 01:55:25 +0000 (02:55 +0100)]
@@@ adjust bench timings

12 months ago@@@ sink bench
Mark Wooding [Thu, 11 May 2023 01:55:16 +0000 (02:55 +0100)]
@@@ sink bench

12 months ago@@@ tvec error return
Mark Wooding [Thu, 11 May 2023 01:46:22 +0000 (02:46 +0100)]
@@@ tvec error return

12 months ago@@@ wip type definitions in manpage synopses
Mark Wooding [Wed, 10 May 2023 01:26:19 +0000 (02:26 +0100)]
@@@ wip type definitions in manpage synopses

12 months agostruct/hash.3: Zap spurious space before pointer argument name.
Mark Wooding [Wed, 10 May 2023 23:09:37 +0000 (00:09 +0100)]
struct/hash.3: Zap spurious space before pointer argument name.

12 months agosys/mdup.3: Add missing `.nf'...`.fi' around the synopsis.
Mark Wooding [Wed, 10 May 2023 23:09:20 +0000 (00:09 +0100)]
sys/mdup.3: Add missing `.nf'...`.fi' around the synopsis.

12 months agocodec/base64.3: Supply missing Oxford comma.
Mark Wooding [Wed, 10 May 2023 23:09:01 +0000 (00:09 +0100)]
codec/base64.3: Supply missing Oxford comma.

12 months ago*/*.3: Align arguments properly to the right of the opening `('.
Mark Wooding [Wed, 10 May 2023 23:02:16 +0000 (00:02 +0100)]
*/*.3: Align arguments properly to the right of the opening `('.

This involves a little stunt roff, but we'll manage somehow.

12 months agotest/testrig.3: Correct return type of `test_do' in the synopsis.
Mark Wooding [Wed, 10 May 2023 23:04:04 +0000 (00:04 +0100)]
test/testrig.3: Correct return type of `test_do' in the synopsis.

The later text explains what the function returns, so it clearly is
meant to have a meaningful return value, so the synopsis was just always
wrong.

12 months agocodec/url.3: Add missing documentation for the `URLF_SEMI' flag.
Mark Wooding [Wed, 10 May 2023 22:56:44 +0000 (23:56 +0100)]
codec/url.3: Add missing documentation for the `URLF_SEMI' flag.

12 months agocodec/url.h: Delete stray blank line.
Mark Wooding [Wed, 10 May 2023 01:25:58 +0000 (02:25 +0100)]
codec/url.h: Delete stray blank line.

12 months ago@@@ all the mess ever
Mark Wooding [Mon, 8 May 2023 23:32:27 +0000 (00:32 +0100)]
@@@ all the mess ever

12 months agoutils/control.h: Allow statement block without terminating semicolon.
Mark Wooding [Mon, 8 May 2023 23:42:32 +0000 (00:42 +0100)]
utils/control.h: Allow statement block without terminating semicolon.

13 months ago@@@ major overhaul, new primitives mdw/control
Mark Wooding [Tue, 25 Apr 2023 00:21:11 +0000 (01:21 +0100)]
@@@ major overhaul, new primitives

13 months ago@@@ better tests
Mark Wooding [Sun, 23 Apr 2023 23:05:35 +0000 (00:05 +0100)]
@@@ better tests

13 months ago@@@ wip@g
Mark Wooding [Sun, 23 Apr 2023 14:47:00 +0000 (15:47 +0100)]
@@@ wip@g

13 months ago@@@ control wip@cb
Mark Wooding [Sat, 22 Apr 2023 20:53:17 +0000 (21:53 +0100)]
@@@ control wip@cb

13 months agocodec/tests.at: Delete stray space before tab.
Mark Wooding [Sat, 30 Apr 2022 15:27:33 +0000 (16:27 +0100)]
codec/tests.at: Delete stray space before tab.

13 months agoutils/macros.h: Add `MUST_CHECK', so return codes aren't ignored.
Mark Wooding [Thu, 22 Dec 2022 17:10:27 +0000 (17:10 +0000)]
utils/macros.h: Add `MUST_CHECK', so return codes aren't ignored.

13 months agoutils/macros.3: Create manpage for the `CLANG_WARNING' macro.
Mark Wooding [Thu, 22 Dec 2022 17:09:33 +0000 (17:09 +0000)]
utils/macros.3: Create manpage for the `CLANG_WARNING' macro.

13 months ago.gitignore: Absorb `t/.gitignore'.
Mark Wooding [Sat, 30 Apr 2022 16:02:14 +0000 (17:02 +0100)]
.gitignore: Absorb `t/.gitignore'.

The ignored files are mostly global machinery which happens to be tucked
away in `t/'.

23 months agoutils/macros.h (STATIC_ASSERT): Boolean-canonify the expression.
Mark Wooding [Thu, 23 Jun 2022 14:01:14 +0000 (15:01 +0100)]
utils/macros.h (STATIC_ASSERT): Boolean-canonify the expression.

6.7.10p3 insists that the expression be an integer constant expression,
but this isn't in a constraint, so the behaviour is undefined if it's
not an integer constant expression.  Apply `!!' to force pointerish
expressions to integer type.

*headdesk*

2 years agoconfigure.ac: Provide a non-empty default manpage extension.
Mark Wooding [Sat, 30 Apr 2022 16:02:14 +0000 (17:02 +0100)]
configure.ac: Provide a non-empty default manpage extension.

This has been a bug forever, but there's been a corresponding bug
in the `mdw_MANEXT' macro forever which ignores the supplied default
and uses `mLib' instead, so nobody noticed.  Until I fixed the
other bug and my build broke.

2 years agovars.am: Quote `$(manext)', or things break if it's empty.
Mark Wooding [Sat, 30 Apr 2022 16:00:22 +0000 (17:00 +0100)]
vars.am: Quote `$(manext)', or things break if it's empty.

It's not usually empty because it's defaulted in `configure.ac', but
it can be overridden to be empty.  Also, there might be bugs.

2 years ago.gitignore: Organize and clean up.
Mark Wooding [Sat, 30 Apr 2022 18:51:14 +0000 (19:51 +0100)]
.gitignore: Organize and clean up.

Divide into sections and add headings; add leading `/' to patterns which
are only expected to match in the same directory as the `.gitignore'
file; and add trailing `/' to patterns which should match directories.

2 years agoutils/compiler.h: Prefer `ifdef' rather than `if defined'.
Mark Wooding [Sat, 4 Sep 2021 18:53:51 +0000 (19:53 +0100)]
utils/compiler.h: Prefer `ifdef' rather than `if defined'.

4 years agostruct/buf.h: Muffle annoying new GCC warning.
Mark Wooding [Fri, 8 May 2020 23:10:54 +0000 (00:10 +0100)]
struct/buf.h: Muffle annoying new GCC warning.

This one seems like more trouble than it's worth.  Just squash it in
GCC versions recent enough to know about the warning.

4 years agoRelease 2.5.0. 2.5.0
Mark Wooding [Fri, 8 May 2020 19:16:53 +0000 (20:16 +0100)]
Release 2.5.0.

4 years agoutils/versioncmp.h: Add a wrapper macro for `versioncmp'.
Mark Wooding [Fri, 8 May 2020 19:15:30 +0000 (20:15 +0100)]
utils/versioncmp.h: Add a wrapper macro for `versioncmp'.

Similar to the macros introduced for `strcmp' end friends in
3618811496a6d131fd4bffa19e262c521d39e819.

4 years agostruct/assoc.[ch]: Fix some commentary typos.
Mark Wooding [Sat, 28 Mar 2020 09:32:52 +0000 (09:32 +0000)]
struct/assoc.[ch]: Fix some commentary typos.

4 years ago*/t/*.py: Fix the various testing scripts for Python 3 compatibility.
Mark Wooding [Fri, 4 Oct 2019 17:30:26 +0000 (18:30 +0100)]
*/t/*.py: Fix the various testing scripts for Python 3 compatibility.

  * Put parentheses around `print' arguments.  (This is most of the
    churn.)

  * Cope with `xrange' being renamed to `range' in Python 3.

  * Cope with `MAP.keys()' not returning a list any more in Python 3.

  * Cope with integer division not returning an integer any more in
    Python 3.  (Use a shift, because that's not changed.)

4 years agoutils/macros.h: Add <ctype.h> and `foocmp' helper macros.
Mark Wooding [Tue, 1 Oct 2019 17:41:17 +0000 (18:41 +0100)]
utils/macros.h: Add <ctype.h> and `foocmp' helper macros.

Both of these have been a nuisance for years.  Do something about it.

The command

git grep -En '\<(is|to)[a-z]+\(|\<(str|mem)[a-z]*cmp\(' -- '*.[ch]'

finds code which it might be good to change.

The hairy Emacs command

(query-replace-regexp
 "\\<\\(\\(str\\|mem\\)\\sw*cmp\\)(\\([^,]*\\), \\([^)]*\\)) \\(==\\|!=\\|<\\|<=\\|>\\|>=\\) 0"
 '(replace-eval-replacement
   . (concat (replace-quote (upcase (match-string 1)))
     "(\\3, \\5, \\4)"))
 nil
 (if (and transient-mark-mode mark-active) (region-beginning))
 (if (and transient-mark-mode mark-active) (region-end))
 nil)

will convert easy cases of `foocmp' calls, but hard ones have to be done
by hand.

4 years agoMerge branch '2.4.x'
Mark Wooding [Fri, 8 May 2020 12:43:59 +0000 (13:43 +0100)]
Merge branch '2.4.x'

* 2.4.x:
  Release 2.4.2.
  sel/bres-adns.c: Fix incorrect array bound.

4 years agoRelease 2.4.2. 2.4.x 2.4.2
Mark Wooding [Fri, 8 May 2020 11:45:33 +0000 (12:45 +0100)]
Release 2.4.2.

4 years agosel/bres-adns.c: Fix incorrect array bound.
Mark Wooding [Tue, 7 Apr 2020 19:30:49 +0000 (20:30 +0100)]
sel/bres-adns.c: Fix incorrect array bound.

GCC helpfully points out that `N(av)' does nothing very useful.  In
fact, I expect that it's almost always zero, which means that we don't
end up assembling addresses correctly.  And we never have done.

How embarrassing.

(cherry picked from commit 5086ffd7745337f5bee3c5c771cfcf1da71b03c3)

4 years agosel/bres-adns.c: Fix incorrect array bound.
Mark Wooding [Tue, 7 Apr 2020 19:30:49 +0000 (20:30 +0100)]
sel/bres-adns.c: Fix incorrect array bound.

GCC helpfully points out that `N(av)' does nothing very useful.  In
fact, I expect that it's almost always zero, which means that we don't
end up assembling addresses correctly.  And we never have done.

How embarrassing.

4 years agoMerge branch '2.4.x'
Mark Wooding [Sat, 19 Oct 2019 13:41:53 +0000 (14:41 +0100)]
Merge branch '2.4.x'

* 2.4.x:
  struct/buf.c (buf_getmem*): Add an explicit `BENSURE'.

4 years agostruct/buf.c (buf_getmem*): Add an explicit `BENSURE'.
Mark Wooding [Fri, 11 Oct 2019 22:15:42 +0000 (23:15 +0100)]
struct/buf.c (buf_getmem*): Add an explicit `BENSURE'.

Otherwise we fail when processing a 64-bit length on a 32-bit platform:
an overlong 64-bit length gets truncated to a possibly-acceptable 32-bit
length in the implicit conversion to `size_t' in the call to `buf_get'.
Using `BENSURE' directly ensures that the comparison gets done with the
correct integer type.

4 years agoMerge branch '2.4.x'
Mark Wooding [Tue, 8 Oct 2019 10:29:17 +0000 (11:29 +0100)]
Merge branch '2.4.x'

* 2.4.x:
  utils/str.3: Fix typeface for mathematics.
  sys/tests.at: Add full stops after header comments.
  codec/codec.3: Fix spacing after ellipsis.
  utils/t/bits-testgen.py: Set the `SEED' from the command-line correctly.
  utils/t/bits-testgen.py: Make `arg' return arguments in the right order.

4 years agodebian/changelog: Prepare for the next version.
Mark Wooding [Fri, 4 Oct 2019 15:24:44 +0000 (16:24 +0100)]
debian/changelog: Prepare for the next version.

4 years agoutils/str.3: Fix typeface for mathematics.
Mark Wooding [Tue, 8 Oct 2019 10:24:37 +0000 (11:24 +0100)]
utils/str.3: Fix typeface for mathematics.

4 years agosys/tests.at: Add full stops after header comments.
Mark Wooding [Tue, 8 Oct 2019 10:24:01 +0000 (11:24 +0100)]
sys/tests.at: Add full stops after header comments.

4 years agocodec/codec.3: Fix spacing after ellipsis.
Mark Wooding [Tue, 8 Oct 2019 10:23:37 +0000 (11:23 +0100)]
codec/codec.3: Fix spacing after ellipsis.

4 years agoutils/t/bits-testgen.py: Set the `SEED' from the command-line correctly.
Mark Wooding [Fri, 4 Oct 2019 17:27:28 +0000 (18:27 +0100)]
utils/t/bits-testgen.py: Set the `SEED' from the command-line correctly.

This never stood a chance before, because `arg' always returned the
script path.  Now that's fixed, instead `int' complains that the hex
number it's being given isn't acceptable.  I can't fix this by
explicitly passing a radix of 0 because that doesn't allow an existing
integer object.  So we have this circumlocution.

4 years agoutils/t/bits-testgen.py: Make `arg' return arguments in the right order.
Mark Wooding [Fri, 4 Oct 2019 17:26:07 +0000 (18:26 +0100)]
utils/t/bits-testgen.py: Make `arg' return arguments in the right order.

Obviously I never watched this run before.

4 years agodebian/: Bump to Debhelper 10.
Mark Wooding [Sun, 29 Sep 2019 14:50:36 +0000 (15:50 +0100)]
debian/: Bump to Debhelper 10.

4 years agoRelease 2.4.1. 2.4.1
Mark Wooding [Sun, 29 Sep 2019 14:13:44 +0000 (15:13 +0100)]
Release 2.4.1.

4 years agodebian/: Ship correct symbols files.
Mark Wooding [Fri, 27 Sep 2019 16:25:15 +0000 (17:25 +0100)]
debian/: Ship correct symbols files.

4 years agodebian/.gitignore: Ignore generated `lib2-adns.install' file.
Mark Wooding [Fri, 27 Sep 2019 16:24:47 +0000 (17:24 +0100)]
debian/.gitignore: Ignore generated `lib2-adns.install' file.

4 years agomem/track.[ch]: Delete ancient debris.
Mark Wooding [Fri, 27 Sep 2019 16:19:53 +0000 (17:19 +0100)]
mem/track.[ch]: Delete ancient debris.

Apparently these got forgotten in the source-tree reorganization back in
2.2.0.  They've been languishing in the version-control system, but
haven't been built or distributed since then -- and nothing has
noticed.  Also, they've never been documented, and don't do anything
very useful anyway.

So just delete them and let history forget they ever existed.

4 years agohash/unihash.c: Replace a dynamic assertion with a static one.
Mark Wooding [Sun, 29 Sep 2019 14:18:53 +0000 (15:18 +0100)]
hash/unihash.c: Replace a dynamic assertion with a static one.

4 years agoutils/macros.h: Introduce a `STATIC_ASSERT' macro.
Mark Wooding [Thu, 26 Sep 2019 19:18:11 +0000 (20:18 +0100)]
utils/macros.h: Introduce a `STATIC_ASSERT' macro.

4 years agoRelease 2.4.0. 2.4.0
Mark Wooding [Sat, 21 Sep 2019 20:38:36 +0000 (21:38 +0100)]
Release 2.4.0.

4 years agostruct/buf.c: Muffle an annoying Clang warning about a pointless assertion.
Mark Wooding [Wed, 18 Sep 2019 19:22:39 +0000 (20:22 +0100)]
struct/buf.c: Muffle an annoying Clang warning about a pointless assertion.

Of course, since this code is macro-generated, it's not at all
pointless.

4 years agoutils/macros.h: Sprinkle `__...__' over GCC (and Clang) attribute names.
Mark Wooding [Wed, 18 Sep 2019 16:29:30 +0000 (17:29 +0100)]
utils/macros.h: Sprinkle `__...__' over GCC (and Clang) attribute names.

I suspect that things like `noreturn' might already be macros.  Though,
honestly, this header file is not a shining example of namespace hygiene
in countless other ways.

4 years agohash/Makefile.am, hash/crc32.h: Make the CRC table be `const'.
Mark Wooding [Wed, 4 Sep 2019 17:41:14 +0000 (18:41 +0100)]
hash/Makefile.am, hash/crc32.h: Make the CRC table be `const'.

Yay.  That's an extra kilobyte of sharable data.

4 years agohash/crc-mktab.c, hash/unihash-mkstatic.c: Add `const' option.
Mark Wooding [Wed, 4 Sep 2019 17:39:52 +0000 (18:39 +0100)]
hash/crc-mktab.c, hash/unihash-mkstatic.c: Add `const' option.

Add `-C' option to produce `const' tables.

I'd probably like this to be the default, at least for `crc-mktab', but
currently it isn't for (a) compatibility and (b) consistency between the
two.

4 years agoRelease 2.3.3.1. 2.3.3.1
Mark Wooding [Fri, 9 Aug 2019 10:33:17 +0000 (11:33 +0100)]
Release 2.3.3.1.

4 years agoutils/macros.h: Define missing fallback for `NORETURN'.
Mark Wooding [Fri, 9 Aug 2019 10:30:09 +0000 (11:30 +0100)]
utils/macros.h: Define missing fallback for `NORETURN'.

5 years agoRelease 2.3.3. 2.3.3
Mark Wooding [Tue, 25 Dec 2018 15:06:42 +0000 (15:06 +0000)]
Release 2.3.3.

5 years agosys/fdpass.c: Allocate extra cmsg space to hack around a Qemu bug.
Mark Wooding [Tue, 25 Dec 2018 18:07:27 +0000 (18:07 +0000)]
sys/fdpass.c: Allocate extra cmsg space to hack around a Qemu bug.

*shakes head sadly*

5 years agosys/t/fdpass-test.c: Add a simple test for file-descriptor passing.
Mark Wooding [Tue, 25 Dec 2018 15:02:08 +0000 (15:02 +0000)]
sys/t/fdpass-test.c: Add a simple test for file-descriptor passing.

5 years agosys/fdpass.c: Fix expected size of descriptor message.
Mark Wooding [Tue, 25 Dec 2018 15:01:18 +0000 (15:01 +0000)]
sys/fdpass.c: Fix expected size of descriptor message.

This typo breaks 64-bit targets, and I'd never noticed because of
inadequate testing.

5 years agoMakefile.am: Link the main library with $(MLIB_LIBS).
Mark Wooding [Wed, 12 Dec 2018 18:54:31 +0000 (18:54 +0000)]
Makefile.am: Link the main library with $(MLIB_LIBS).

Otherwise we miss out `-ladns' and there is sadness.  I have no idea why
this has only become a problem just now.

5 years agosys/t/mdup-test.c: Cope with Cygwin setting top inode-number bits.
Mark Wooding [Fri, 16 Nov 2018 18:09:19 +0000 (18:09 +0000)]
sys/t/mdup-test.c: Cope with Cygwin setting top inode-number bits.

Maybe it's because the files have been deleted, but in any event it's
rather annoying: Cygwin seems to set high-numbered bits in the result
inode numbers, which causes spurious test failures.  Compensate by
masking the numbers.

5 years agosys/t/mdup-test.c: Introduce a `-v' option to help debug failures.
Mark Wooding [Fri, 16 Nov 2018 18:06:20 +0000 (18:06 +0000)]
sys/t/mdup-test.c: Introduce a `-v' option to help debug failures.

In particular, just reporting `ino FD[I] wrong' isn't very helpful.  But
adding inode numbers won't help unless we've already printed the initial
numbers, and that would add unnecessary verbosity in the usual case.

5 years agosys/t/mdup-test.c: Cope with the idea of arguments which aren't fd pairs.
Mark Wooding [Fri, 16 Nov 2018 18:03:38 +0000 (18:03 +0000)]
sys/t/mdup-test.c: Cope with the idea of arguments which aren't fd pairs.

The code used to assume a fixed relationship between command-line
argument indices and indices in the `mdup_fd' table.  Fix this by
introducing separate index variables in the argument-parsing loop, and
set the table length correctly afterwards.

5 years agosys/t/mdup-test.c: Improve the layout.
Mark Wooding [Fri, 16 Nov 2018 17:59:23 +0000 (17:59 +0000)]
sys/t/mdup-test.c: Improve the layout.

5 years agoutils/macros.h (N): Properly parenthesize the argument.
Mark Wooding [Sun, 15 Jul 2018 18:26:55 +0000 (19:26 +0100)]
utils/macros.h (N): Properly parenthesize the argument.

WTF?  How did I write this wrong?

Fortunately, I don't think it actually matters.  The argument must have
array type.  Postfix operators are higher precedence, so that's not a
problem; prefix operators are in the right place already; and binary
operators don't yield array types.

5 years agobuild: Configure `pkg-config' correctly for static linking.
Mark Wooding [Thu, 14 Jun 2018 10:01:27 +0000 (11:01 +0100)]
build: Configure `pkg-config' correctly for static linking.

5 years agoRelease 2.3.2. 2.3.2
Mark Wooding [Tue, 12 Jun 2018 09:53:33 +0000 (10:53 +0100)]
Release 2.3.2.

5 years agocodec/url.c (encode): Fix bungled cast in previous refactoring.
Mark Wooding [Tue, 12 Jun 2018 09:48:14 +0000 (10:48 +0100)]
codec/url.c (encode): Fix bungled cast in previous refactoring.

5 years agoRelease 2.3.1. 2.3.1
Mark Wooding [Tue, 12 Jun 2018 00:40:34 +0000 (01:40 +0100)]
Release 2.3.1.

5 years agoMerge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/mLib
Mark Wooding [Tue, 12 Jun 2018 00:39:14 +0000 (01:39 +0100)]
Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/mLib

* 'master' of git.distorted.org.uk:~mdw/publish/public-git/mLib:
  Release 2.2.5.
  sel/ident.c: Don't close the descriptor twice on immediate connect failure.

5 years agoRelease 2.3.0. 2.3.0
Mark Wooding [Mon, 11 Jun 2018 23:31:05 +0000 (00:31 +0100)]
Release 2.3.0.

5 years agocodec/url.c (encode): Rewrite more compactly and perspicuously.
Mark Wooding [Mon, 11 Jun 2018 23:17:12 +0000 (00:17 +0100)]
codec/url.c (encode): Rewrite more compactly and perspicuously.

The condition in the `default' case was a bit gnarly: rewrite it as a
ladder of if/else.  Take the opportunity to compress the code, because
the individual case labels really don't deserve all of that vertical space.

5 years agoRelease 2.2.5. 2.2.5
Mark Wooding [Sat, 9 Jun 2018 16:40:36 +0000 (17:40 +0100)]
Release 2.2.5.

5 years agosel/ident.c: Don't close the descriptor twice on immediate connect failure.
Mark Wooding [Sat, 9 Jun 2018 13:54:40 +0000 (14:54 +0100)]
sel/ident.c: Don't close the descriptor twice on immediate connect failure.

Confusingly, `conn_init' has already done that.

6 years agocodec/url.c: Always encode whitespace characters.
Mark Wooding [Sat, 26 May 2018 22:31:00 +0000 (23:31 +0100)]
codec/url.c: Always encode whitespace characters.

Vertical whitespace is obviously bad, so this is a longstanding bug; but
all whitespace should really be escaped.

6 years agoutils/bits.h: Support compiler magic for unaligned loads and stores.
Mark Wooding [Sat, 26 May 2018 22:29:09 +0000 (23:29 +0100)]
utils/bits.h: Support compiler magic for unaligned loads and stores.

Introduce `RAWw' macros to access the raw memory, and implement `LOADwe'
and `STOREwe' in terms of these and `eTOHw'/`HTOew'.

These are remarkably tricky because GCC (I think mistakenly) thinks that
type-based aliasing is applicable when in fact the other type in
question is `unsigned char', which is known to be able to alias
anything.  Hit things with the `may_alias' hammer and hope they quieten
down.

6 years agoutils/bits.h: Add macros for swapping endianness in place.
Mark Wooding [Sat, 26 May 2018 15:32:01 +0000 (16:32 +0100)]
utils/bits.h: Add macros for swapping endianness in place.

Many processors and compilers provide handy instructions for doing this,
and it's a handy primitive for loading and storing.

The HTOLw etc. macros turn out to be remarkably slippery to define.
It's unfortunately nonsensical to speak about an integer value having an
endianness.

6 years agoutils/bits.h: Reformat `LOAD64_[BL]_' for consistency.
Mark Wooding [Sat, 26 May 2018 15:25:52 +0000 (16:25 +0100)]
utils/bits.h: Reformat `LOAD64_[BL]_' for consistency.

No functional change, just whitespace.

6 years agoutils/bits.h: Refactor the load/store macros.
Mark Wooding [Sat, 26 May 2018 15:22:39 +0000 (16:22 +0100)]
utils/bits.h: Refactor the load/store macros.

  * Each macro is now only defined conditionally.  This allows earlier
    parts of the header file to define a compiler-specific
    implementation, with the generic definitions filling in the blanks.

  * Instead of writing the byte manipulations out longhand, build each
    one out of smaller pieces.  This has two benefits: firstly, the new
    definitions are smaller and easier to understand; and, secondly, if
    there's a compiler-specific trick for, say 16-bit loads, then 32-bit
    loads can win some of the benefit.

6 years agoutils/bits.3: Basically rewrite it, filling in the missing things.
Mark Wooding [Sat, 26 May 2018 17:22:39 +0000 (18:22 +0100)]
utils/bits.3: Basically rewrite it, filling in the missing things.

Oh, dear.  This manpage has been neglected for years.

6 years ago.skelrc: Fix for Skel's GPL rubric reorganization.
Mark Wooding [Sat, 26 May 2018 15:20:02 +0000 (16:20 +0100)]
.skelrc: Fix for Skel's GPL rubric reorganization.

6 years agoutils/: Split compiler-version macros into a separate header.
Mark Wooding [Sat, 26 May 2018 15:18:43 +0000 (16:18 +0100)]
utils/: Split compiler-version macros into a separate header.

This way we can use them in other headers without the namespace mess of
`macros.h'.

Also, actually document `CLANG_VERSION_P'.

6 years agoutils/macros.3: Document `CLANG_WARNING'.
Mark Wooding [Sat, 26 May 2018 15:16:49 +0000 (16:16 +0100)]
utils/macros.3: Document `CLANG_WARNING'.

Added back in ff3d3f01025b881c7cadf093b0f65309c35f2c53.

6 years ago.mailmap: Add file to fix CVS-ish names in history.
Mark Wooding [Tue, 15 Aug 2017 13:22:59 +0000 (14:22 +0100)]
.mailmap: Add file to fix CVS-ish names in history.

6 years agoRelease 2.2.4. 2.2.4
Mark Wooding [Sun, 13 Aug 2017 19:12:45 +0000 (20:12 +0100)]
Release 2.2.4.

6 years agoRevert "debian: Update for Debhelper 10."
Mark Wooding [Fri, 11 Aug 2017 11:00:57 +0000 (12:00 +0100)]
Revert "debian: Update for Debhelper 10."

I think I might still have to build for wheezy.
This reverts commit 6d061820334c97ed4f3266d7130e089de6b21b55.

6 years agostruct/buf.3: Fix synopsis for `BSTEP'.
Mark Wooding [Wed, 9 Aug 2017 19:48:54 +0000 (20:48 +0100)]
struct/buf.3: Fix synopsis for `BSTEP'.

6 years agodebian/copyright: Fix copyright dates.
Mark Wooding [Fri, 7 Jul 2017 09:48:58 +0000 (10:48 +0100)]
debian/copyright: Fix copyright dates.

6 years agodebian: Update for Debhelper 10.
Mark Wooding [Thu, 6 Jul 2017 09:57:03 +0000 (10:57 +0100)]
debian: Update for Debhelper 10.

6 years agodebian: Multi-Arch support.
Mark Wooding [Fri, 14 Jun 2013 18:24:17 +0000 (19:24 +0100)]
debian: Multi-Arch support.

6 years agodebian/copyright: Convert to machine-readable format.
Mark Wooding [Fri, 28 Jun 2013 20:44:58 +0000 (21:44 +0100)]
debian/copyright: Convert to machine-readable format.

6 years agodebian/control: Use ${binary:Version} instead of ${Source-Version}.
Mark Wooding [Thu, 6 Jul 2017 09:03:39 +0000 (10:03 +0100)]
debian/control: Use ${binary:Version} instead of ${Source-Version}.

6 years agovars.am: Tweak `silent-rules' machinery.
Mark Wooding [Thu, 6 Jul 2017 08:56:44 +0000 (09:56 +0100)]
vars.am: Tweak `silent-rules' machinery.

Since Automake 1.11, the advice for setting up custom silent-rules
recipes has changed, so use the new machinery.

Also, I'm no longer mainly working on wheezy, and Automake has made the
operation field two spaces wider while I wasn't looking, so make the
output line up properly.

This means that mLib now requires Automake 1.11.2 or later to build from
the Git tree.