cap-list: return lower-case capability names, similar to libcap's cap_to_name(), for compat reasons
test-cap-list: always check libcap comes to the same names as we do, for the names it knows
networkctl: show MAC address OUI vendor next to MAC addresses
networkctl: also show gateway address when "networkctl status" without further arguments is passed
networkctl: show interface names next to IP addresses if we dump adresses from all interfaces
networkctl: also draw a nice unicode cirlce when "networkctl status" is run without parameters
core: retry unmounting until we are done, in case of stacked mounts
update TODO
wrap a few *_FOREACH macros in curly braces

cppcheck would give up with "syntax error" without them. This led
to reports of syntax errors in unrelated locations and potentially
hid other errors
networkctl: remove unused variable
hwdb: sort mice by brand,type,dpi,frequency

This way entries from the same brand with the same dpi and frequency
can be coalesced. It is also visually easier to find the right DPI
than order hexadecimal identifiers.
hwdb: add more mice

https://bugs.freedesktop.org/show_bug.cgi?id=87271
shared/hashmap.h: fix comment

An early version used underscore prefixes for internal functions, but
the current version uses the prefix "internal_".
configure.ac: add a generic --enable-debug, replace --enable-hashmap-debug

There will be more debugging options later.
 --enable-debug will enable them all.
 --enable-debug=hashmap will enable only hashmap debugging.

Also rename the C #define to ENABLE_DEBUG_* pattern.
journal: add debug mode for mmap-cache (--enable-debug=mmap-cache)

This is useful for exposing unsafe access to mmapped objects after
the context that they were mapped in was already moved.

For example:
journal_file_move_to_object(f1, OBJECT_DATA, p1, &o1);
journal_file_move_to_object(f2, OBJECT_DATA, p2, &o2);
t = o1->object.type; /* this usually works, but is unsafe */
journal: map objects to context set by caller, not by actual object type

When the caller of journal_file_move_to_object() specifies type==0,
the object header is at first mapped in context 0. Then after the header
is checked, the whole object is mapped in a context determined by
the actual object type (which is not even range-checked using
type_to_context()). This looks wrong. It should map in the
caller-specified context.

An old comment in sd_journal_enumerate_unique() supports this view:
    /* We do not use the type context here, but 0 instead,
     * so that we can look at this data object at the same
     * time as one on another file */
Clearly the expectation was that the data object will remain mapped
in context 0 without being pushed away by mapping other objects in
context OBJECT_DATA.

I suspect that this was the real bug that got fixed by ae97089d49
"journal: fix access to munmapped memory in sd_journal_enumerate_unique".
In other words, journal_file_object_keep/release are superfluous after
applying this patch.
journal: remove journal_file_object_keep/release functions

The only user is sd_journal_enumerate_unique() and, as explained in
the previous commit (fed67c38e3 "journal: map objects to context set by
caller, not by actual object type"), the use of them there is now
superfluous. Let's remove them.

This reverts major parts of commits:
  ae97089d49 journal: fix access to munmapped memory in
             sd_journal_enumerate_unique
  06cc69d44c sd-journal: fix sd_journal_enumerate_unique skipping values

Tested with an "--enable-debug" build and "journalctl --list-boots".
It gives the expected number of results. Additionally, if I then revert
the previous commit ("journal: map objects to context set by caller, not
to actual object type"), it crashes with SIGSEGV, as expected.
journal: move type_to_context() to journal-file.c

It has no other callers. It does not need to be in the header file.
journal: consistently allow type==0 to mean "any type"

If type==0 and a non-NULL object were given as arguments to
journal_file_hmac_put_object(), its object type check would fail and it
would return -EBADMSG.

All existing callers use either a positive type or -1. Still, for
behavior consistency with journal_file_move_to_object() let's allow
type 0 to pass.
journal: consistently use OBJECT_<type> names instead of numbers

Note that numbers 0 and -1 are both replaced with OBJECT_UNUSED,
because they are treated the same everywhere (e.g. type_to_context()
translates them both to 0).