Whitespace police, no functional changes.
In addition to checking the date/time values in their entireness, also
check them per digit. This exploits the fact that the values are encoded
as BCDs.

Simplify getbcd() because it will only be used per digit.
Add a flag "increase" to decode_time() which indicates if the time should
be increased in case of an error.

Adjust the checks in display_time() accordingly.

This should prevent the time drifting in case of short minutes due to
a bad radio signal.
Only increase the time manually in case of error when the accumulated
(wall clock) minute length is at least 60000 ms long.
Do not reset the accumulated minute length on after each time the time
is displayed, but only if there is really a new minute (i.e. after
startup or when the number of bits in the minute is OK).
Explicitly flush the log file each new minute.
Require the time and date to be valid when setting the announce flags
(DST change or leap second).
More whitespace police.
Also copy the date and time into oldtime if the minute is too long to
prevent false "value jump" messages.
fix typo in comment (code unchanged)
Differentiate between a DST error (bit 17 and 18 are equal) and a sudden
DST change (which gets ignored) by adding the DT_DSTJUMP flag.
Better explain why we need olderr
Introduce a shorthand for !generr && !p1 && !p2 && !p3
Check that there is no error when changing DST on the hour when it is
announced.
Reduce duplication in the leap second code, and insist that there is no
error while processing the leap second.
Preserve the TOOLONG flag across invocations of get_bit(), reset it in
next_bit() if the new minute fits.

Return immediately if it is set to prevent an immediate reset afterwards.
Set a bogus minute length when GETBIT_TOOLONG is set.
Revert "Explicitly flush the log file each new minute."

This reverts commit 04c30d030781842a7a6fa3adbcbc2364dd4b890b.

While the idea of an up-to-date log file is nice, over NFS this causes
too much delay for bit 0 to be properly received.