Zbigniew Jędrzejewski-Szmek [Thu, 28 Feb 2019 14:37:06 +0000 (15:37 +0100)]
README: mention that we need tzdata >= 2014f
zone1970.tab was added in that version. Not that it makes sense to use
outdata timezone tables, but people do strange things.
C.f. https://github.com/nodatime/nodatime/issues/319.
Christopher Wong [Thu, 28 Feb 2019 13:22:42 +0000 (14:22 +0100)]
Use new time zone list
When systemd retrieve the time zone it read what is in the file
/usr/share/zoneinfo/zone.tab provided by the Time Zone Database.
According to the comments in zone.tab its content is for backward-
compatibility aid for older programs. New programs should use
zone1970.tab. This patch replaces zone.tab with zone1970.tab.
Lennart Poettering [Mon, 25 Feb 2019 10:02:46 +0000 (11:02 +0100)]
sd-bus: deal with cookie overruns
Apparently this happens IRL. Let's carefully deal with issues like this:
when we overrun, let's not go back to zero but instead leave the highest
cookie bit set. We use that as indication that we are in "overrun
territory", and then are particularly careful with checking cookies,
i.e. that they haven't been used for still outstanding replies yet. This
should retain the quick cookie generation behaviour we used to have, but
permits dealing with overruns.
Replaces: #11804
Fixes: #11809
Lennart Poettering [Thu, 28 Feb 2019 11:02:08 +0000 (12:02 +0100)]
Merge pull request #11840 from yuwata/network-route-onlink
network: enable GatewayOnLink= if no static address is configured
Yu Watanabe [Thu, 28 Feb 2019 05:02:33 +0000 (14:02 +0900)]
fuzz: do not assume the existence of /sys/class/net/lo
Hopefully fixes oss-fuzz#13440.
Yu Watanabe [Thu, 28 Feb 2019 01:57:20 +0000 (10:57 +0900)]
network: wrap long lines
Yu Watanabe [Thu, 28 Feb 2019 01:56:33 +0000 (10:56 +0900)]
network: simplify config_parse_lifetime()
Yu Watanabe [Thu, 28 Feb 2019 01:54:17 +0000 (10:54 +0900)]
network: avoid address section freed
Otherwise, if HomeAddress= or friends are specified at the first line of
a section, then its assignment will be ignored.
Yu Watanabe [Thu, 28 Feb 2019 01:39:14 +0000 (10:39 +0900)]
network: cleanup logging in route related config parsers
Yu Watanabe [Thu, 28 Feb 2019 01:37:58 +0000 (10:37 +0900)]
network: do not override previously specified family
Yu Watanabe [Wed, 27 Feb 2019 10:10:47 +0000 (19:10 +0900)]
test-network: add testcase for #1850
Yu Watanabe [Wed, 27 Feb 2019 09:41:49 +0000 (18:41 +0900)]
network: enable GatewayOnLink= if Gateway= without static address configured
And warn about that.
But this only done if GatewayOnLink= is not specified. When it is
explicitly disabled, then the flag will not be set.
Yu Watanabe [Thu, 28 Feb 2019 01:10:38 +0000 (10:10 +0900)]
network: save GatewayOnLink= value as tristate in Route
This should not change any behavior. But used in the later commit.
Yu Watanabe [Wed, 27 Feb 2019 09:22:40 +0000 (18:22 +0900)]
network: relax the .network file check
Previously, if a .networ file contains invalid [Address] or [Route]
section, then the file is completely dropped. This makes networkd
just drops invalid sections.
Yu Watanabe [Wed, 27 Feb 2019 08:43:08 +0000 (17:43 +0900)]
network: rename GatewayOnlink= to GatewayOnLink=
But still GatewayOnlink= is supported for backward compatibility.
Lennart Poettering [Wed, 27 Feb 2019 17:43:56 +0000 (18:43 +0100)]
Merge pull request #11795 from yuwata/fix-network-routing-policy-11280
network: fix routing policy rule issue #11280
Jörg Sommer [Mon, 11 Feb 2019 23:19:13 +0000 (00:19 +0100)]
journalctl: New option --cursor-file
The option cursor-file takes a filename as argument. If the file exists and
contains a valid cursor, this is used to start the output after this position.
At the end, the last cursor gets written to the file.
This allows for an easy implementation of a timer that regularly looks in the
journal for some messages.
journalctl --cursor-file err-cursor -b -p err
journalctl --cursor-file audit-cursor -t audit --grep DENIED
Or you might want to walk the journal in steps of 10 messages:
journalctl --cursor-file ./curs -n10 --since=today -t systemd
Lennart Poettering [Wed, 27 Feb 2019 16:45:55 +0000 (17:45 +0100)]
Merge pull request #11844 from keszybz/networkd-fuzzer-fixes
Networkd fuzzer fixes
Zbigniew Jędrzejewski-Szmek [Wed, 27 Feb 2019 16:15:29 +0000 (17:15 +0100)]
Merge pull request #11807 from yuwata/test-vlan-mtu
network: increase MTU if VLAN= or MACVLAN= requests higher value
Topi Miettinen [Wed, 27 Feb 2019 13:26:43 +0000 (15:26 +0200)]
analyze security: check for ProtectHostname=yes
Zbigniew Jędrzejewski-Szmek [Wed, 27 Feb 2019 13:45:29 +0000 (14:45 +0100)]
networkd: refuse more than 128 NTP servers
This test case is a bit silly, but it shows that our code is unprepared to
handle so many network servers, with quadratic complexity in various places.
I don't think there are any valid reasons to have hundres of NTP servers
configured, so let's just emit a warning and cut the list short.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13354
Zbigniew Jędrzejewski-Szmek [Wed, 27 Feb 2019 13:15:29 +0000 (14:15 +0100)]
networkd: fix memleak when the same NetDev is specified twice
hashmap_put() returns 0 if the (key, value) pair is already present in the
hashmap, and -EEXIST if the key exists, but the value is different.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13433
Zbigniew Jędrzejewski-Szmek [Wed, 27 Feb 2019 12:34:51 +0000 (13:34 +0100)]
network: wrap some long lines
Michal Sekletar [Tue, 26 Feb 2019 16:33:27 +0000 (17:33 +0100)]
selinux: don't log SELINUX_INFO and SELINUX_WARNING messages to audit
Previously we logged even info message from libselinux as USER_AVC's to
audit. For example, setting SELinux to permissive mode generated
following audit message,
time->Tue Feb 26 11:29:29 2019
type=USER_AVC msg=audit(
1551198569.423:334): pid=1 uid=0 auid=
4294967295 ses=
4294967295 subj=system_u:system_r:init_t:s0 msg='avc: received setenforce notice (enforcing=0) exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?'
This is unnecessary and wrong at the same time. First, kernel already
records audit event that SELinux was switched to permissive mode, also
the type of the message really shouldn't be USER_AVC.
Let's ignore SELINUX_WARNING and SELINUX_INFO and forward to audit only
USER_AVC's and errors as these two libselinux message types have clear
mapping to audit message types.
Davide Cavalca [Tue, 26 Feb 2019 21:08:02 +0000 (16:08 -0500)]
man: clarify whitespace handling in systemd.syntax
Lennart Poettering [Wed, 27 Feb 2019 10:26:47 +0000 (11:26 +0100)]
Merge pull request #11837 from yuwata/network-tiny-cleanups
network: tiny cleanups
Yu Watanabe [Fri, 22 Feb 2019 03:28:51 +0000 (12:28 +0900)]
test-network: add testcase for issue #11280
Yu Watanabe [Wed, 27 Feb 2019 10:22:27 +0000 (19:22 +0900)]
test-network: drop relevant ip routing policy rules before testing
Yu Watanabe [Wed, 27 Feb 2019 04:54:13 +0000 (13:54 +0900)]
network: fix error code in log
Yu Watanabe [Tue, 26 Feb 2019 05:36:07 +0000 (14:36 +0900)]
network: merge conditions and use FLAGS_SET() macro
Yu Watanabe [Tue, 26 Feb 2019 05:34:25 +0000 (14:34 +0900)]
network: make ndisc_router_process_options() propagate error
And its caller ignore the error.
Davide Cavalca [Tue, 26 Feb 2019 21:09:40 +0000 (16:09 -0500)]
fs-util: add missing linux/falloc.h include
Yu Watanabe [Fri, 22 Feb 2019 04:32:47 +0000 (13:32 +0900)]
network: do not remove rule when it is requested by existing links
Otherwise, the first link once removes all saved rules in the foreign
rule database, and the second or later links create again...
Yu Watanabe [Fri, 22 Feb 2019 04:27:44 +0000 (13:27 +0900)]
network: remove routing policy rule from foreign rule database when it is removed
Previously, When the first link configures rules, it removes all saved
rules, which were configured by networkd previously, in the foreign rule
database, but the rules themselves are still in the database.
Thus, when the second or later link configures rules, it errnously
treats the rules already exist.
This is the root of issue #11280.
This removes rules from the foreign database when they are removed.
Fixes #11280.
Yu Watanabe [Sat, 23 Feb 2019 10:25:01 +0000 (19:25 +0900)]
test-network: add test for MTUBytes= in vlan or macvlan devices
Yu Watanabe [Wed, 27 Feb 2019 00:57:16 +0000 (09:57 +0900)]
network: bump mtu if stacked vlan or macvlan requests larger size
Closes #5972.
Lennart Poettering [Tue, 26 Feb 2019 18:02:12 +0000 (19:02 +0100)]
Merge pull request #11824 from keszybz/fuzzer-fixes
Fuzzer fixes
Lennart Poettering [Tue, 26 Feb 2019 17:58:03 +0000 (18:58 +0100)]
Merge pull request #11827 from keszybz/pkgconfig-variables
Allow overriding pkgconfig prefixes
Lennart Poettering [Tue, 26 Feb 2019 16:22:04 +0000 (17:22 +0100)]
Merge pull request #11357 from GiacintoCifelli/dbus_labels
sd-bus: add methods and signals parameter names
Lennart Poettering [Tue, 26 Feb 2019 16:21:32 +0000 (17:21 +0100)]
Merge pull request #11823 from keszybz/more-fuzz-coverage
More fuzz coverage
Zbigniew Jędrzejewski-Szmek [Tue, 26 Feb 2019 12:12:53 +0000 (13:12 +0100)]
fuzz-ndisc-rs: avoid assertion failure on samples which dont fit in pipe
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11605.
Zbigniew Jędrzejewski-Szmek [Tue, 26 Feb 2019 12:12:53 +0000 (13:12 +0100)]
fuzz-lldp: avoid assertion failure on samples which dont fit in pipe
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11603.
Zbigniew Jędrzejewski-Szmek [Tue, 26 Feb 2019 12:00:35 +0000 (13:00 +0100)]
fuzz-journal-stream: avoid assertion failure on samples which don't fit in pipe
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11587.
We had a sample which was large enough that write(2) failed to push all the
data into the pipe, and an assert failed. The code could be changed to use
a loop, but then we'd need to interleave writes and sd_event_run (to process
the journal). I don't think the complexity is worth it — fuzzing works best
if the sample is not too huge anyway. So let's just reject samples above 64k,
and tell oss-fuzz about this limit.
Giacinto Cifelli [Tue, 8 Jan 2019 11:14:37 +0000 (12:14 +0100)]
sd-bus: add methods and signals parameter names. Fixes: #1564
Zbigniew Jędrzejewski-Szmek [Tue, 26 Feb 2019 11:43:07 +0000 (12:43 +0100)]
shared/ask-password-api: when echoing multi-byte characters, print the whole sequence
This is untested, but I don't see how the previous code could have worked
for multibyte characters (with echo on).
Zbigniew Jędrzejewski-Szmek [Tue, 26 Feb 2019 11:37:40 +0000 (12:37 +0100)]
basic/utf8: do not read past end of string when looking for a multi-byte character
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9341.
Zbigniew Jędrzejewski-Szmek [Tue, 26 Feb 2019 11:17:12 +0000 (12:17 +0100)]
basic/utf8: change type of function to emphasize that it only looks at one character
Lennart Poettering [Tue, 26 Feb 2019 09:26:38 +0000 (10:26 +0100)]
Merge pull request #11822 from yuwata/fuzz-udev-database
fuzz: add fuzzer for udev database
Anita Zhang [Thu, 21 Feb 2019 18:37:40 +0000 (10:37 -0800)]
core: consider non-SERVICE_EXEC_START commands for EXIT_CLEAN_COMMAND
When there are multiple ExecStop= statements, the next command would continue
to run even after TimeoutStopSec= is up and sends SIGTERM. This is because,
unless Type= is oneshot, the exit code/status would evaluate to SERVICE_SUCCESS
in service_sigchld_event()'s call to is_clean_exit(). This success indicates
following commands would continue running until the end of the list
is reached, or another timeout is hit and SIGKILL is sent.
Since long running processes should not be invoked in non-SERVICE_EXEC_START
commands, consider them for EXIT_CLEAN_COMMAND instead of EXIT_CLEAN_DAEMON.
Passing EXIT_CLEAN_COMMAND to is_clean_exit() evaluates the SIGTERM exit
code/status to failure and will stop execution after the first timeout is hit.
Fixes #11431
Zbigniew Jędrzejewski-Szmek [Tue, 26 Feb 2019 07:31:32 +0000 (08:31 +0100)]
Merge pull request #11780 from yuwata/fix-4211
network: skip .network files earlier when conditions do not match system environment
Yu Watanabe [Tue, 26 Feb 2019 04:21:13 +0000 (13:21 +0900)]
fuzz: add a sample for fuzz-udev-database
Yu Watanabe [Tue, 26 Feb 2019 04:10:31 +0000 (13:10 +0900)]
fuzz: add fuzzer for udev database
Yu Watanabe [Tue, 26 Feb 2019 03:55:40 +0000 (12:55 +0900)]
sd-device: split device_read_db_internal() into two part
The new device_read_db_internal_filename() will be used by a fuzzer.
Ryan Gonzalez [Sat, 23 Feb 2019 05:45:03 +0000 (23:45 -0600)]
cryptsetup: Treat key file errors as a failed password attempt
6f177c7dc092eb68762b4533d41b14244adb2a73 caused key file errors to immediately fail, which would make it hard to correct an issue due to e.g. a crypttab typo or a damaged key file.
Closes #11723.
Yu Watanabe [Fri, 22 Feb 2019 00:38:19 +0000 (09:38 +0900)]
network: assign Network::manager when it is listed to the manager object.
Now Network::manager is not necessary during parsing configs.
C.f.
838b2f7a30dbb68f4d6939626a165b313cc94542.
Yu Watanabe [Thu, 21 Feb 2019 07:40:34 +0000 (16:40 +0900)]
network: make resolving NetDev names delayed and moved to network_verify()
And before resolving NetDev names, check conditions in .network,
and if they do not match the system environment, drop the network
unit earlier.
Fixes #4211.
Yu Watanabe [Thu, 21 Feb 2019 07:41:47 +0000 (16:41 +0900)]
network: add debug log when conditions do not match system environment
Lennart Poettering [Mon, 25 Feb 2019 18:29:30 +0000 (19:29 +0100)]
Merge pull request #11767 from yuwata/network-bridge-enslaved
network: extend 'enslaved' state to bridge slave
Michael Olbrich [Mon, 25 Feb 2019 10:59:23 +0000 (11:59 +0100)]
meson: declare version.h as dependency for systemd
This is a followup to #11815 and adds the last missing dependency.
With this #11565 is hopefully really fixed.
Zbigniew Jędrzejewski-Szmek [Mon, 25 Feb 2019 14:45:13 +0000 (15:45 +0100)]
fuzz-unit-file: also run manager_dump()
This should increase coverage a bit.
Zbigniew Jędrzejewski-Szmek [Mon, 25 Feb 2019 14:37:40 +0000 (15:37 +0100)]
fuzz-unit-file: add some directives for stuff coverage reports as not covered
Some of those directives appear in the corpus, but without arguments, so maybe
the fuzzing libraries can't trigger the right cases. Let's help them.
Lennart Poettering [Mon, 25 Feb 2019 12:50:56 +0000 (13:50 +0100)]
Merge pull request #11798 from keszybz/mem-sanitizer-fix
meson: make sure preprocesor warnings are not treated as errors
Zbigniew Jędrzejewski-Szmek [Sun, 24 Feb 2019 21:49:38 +0000 (22:49 +0100)]
meson: declare version.h as dep for various targets that include build.h
Should fix #11565.
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2019 11:05:49 +0000 (12:05 +0100)]
test-json: use standard test intro
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2019 11:05:24 +0000 (12:05 +0100)]
test-json: avoid deep stack recursion under msan
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2019 12:23:57 +0000 (13:23 +0100)]
test-mountpoint-util: unpoison string allocated by sscanf %ms
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2019 12:07:00 +0000 (13:07 +0100)]
Add wrapper for __msan_unpoinson() to reduce #ifdeffery
This isn't really necessary for the subsequent commit, but I expect that we'll
need to unpoison more often once we turn on msan in CI, so I think think this
change makes sense in the long run.
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2019 10:20:18 +0000 (11:20 +0100)]
meson: make sure preprocesor warnings are not treated as errors
Clang includes -W#warning in -Werror, so the #warning used for msan would
be an error.
v2:
- use -Wno-error=... so that the warning is still emitted, but not as an error.
Zbigniew Jędrzejewski-Szmek [Mon, 25 Feb 2019 08:55:02 +0000 (09:55 +0100)]
Merge pull request #11796 from yuwata/fuzz-link-parser
fuzz: add fuzzer for .link files
Yu Watanabe [Fri, 22 Feb 2019 09:00:54 +0000 (18:00 +0900)]
tools: check all directives even if it detects non-updated files
Yu Watanabe [Fri, 22 Feb 2019 05:47:36 +0000 (14:47 +0900)]
tools: update check-directives.sh to support fuzz-link-parser
Yu Watanabe [Fri, 22 Feb 2019 05:45:46 +0000 (14:45 +0900)]
fuzz: add directives.link and 99-default.link for fuzz-link-parser
Also adds several reproducers of errors fixed in earlier commits.
Yu Watanabe [Fri, 22 Feb 2019 05:28:08 +0000 (14:28 +0900)]
fuzz: add fuzzer for parsing .link files
This also renames load_link() to link_load_one()
Yu Watanabe [Mon, 25 Feb 2019 03:02:17 +0000 (12:02 +0900)]
fuzz: use fflush() and drop unnecessary rewind()
Yu Watanabe [Mon, 25 Feb 2019 03:35:40 +0000 (12:35 +0900)]
udev/ethtool: fix error detection of ethtool_link_mode_bit_from_string()
Yu Watanabe [Fri, 22 Feb 2019 06:16:47 +0000 (15:16 +0900)]
udev: fix memleak in conditions for .link file
Yu Watanabe [Mon, 25 Feb 2019 02:54:50 +0000 (11:54 +0900)]
udev/net: drop .link files earlier when their conditions do not match system environment
Yu Watanabe [Mon, 25 Feb 2019 02:53:57 +0000 (11:53 +0900)]
udev/net: use structured initializer at one more place
Yu Watanabe [Mon, 25 Feb 2019 02:51:32 +0000 (11:51 +0900)]
udev/net: use size_t for index at one more place
Yu Watanabe [Mon, 25 Feb 2019 02:50:57 +0000 (11:50 +0900)]
udev/net: ignore errors in loading .link files but warn about that
Yu Watanabe [Mon, 25 Feb 2019 02:48:39 +0000 (11:48 +0900)]
udev/net: shorten load_link() a little bit
Yu Watanabe [Fri, 22 Feb 2019 04:57:31 +0000 (13:57 +0900)]
udev: drop unused Ethernet section
Yu Watanabe [Thu, 21 Feb 2019 01:07:02 +0000 (10:07 +0900)]
man: update explanation about operational state of network interfaces
Yu Watanabe [Thu, 21 Feb 2019 01:04:25 +0000 (10:04 +0900)]
man: mention that LinkLocalAddressing= is disabled by default when Bridge= is set
Yu Watanabe [Wed, 20 Feb 2019 03:45:40 +0000 (12:45 +0900)]
test-network: add more tests for IgnoreCarrierLoss=
Suggested by @amishmm in #9262.
Yu Watanabe [Wed, 20 Feb 2019 02:33:00 +0000 (11:33 +0900)]
test-network: add more tests for Bridge=
Yu Watanabe [Wed, 20 Feb 2019 01:31:15 +0000 (10:31 +0900)]
network: make bridge master also follow operstates of slave interfaces
If one of bridge slaves is in off, no-carrier, or dormant, then
operstate of the bridge master is set to degraded.
Yu Watanabe [Fri, 15 Feb 2019 03:35:30 +0000 (12:35 +0900)]
network: extend 'enslaved' state to bridge slave interfaces
Currently, the interface's operstate is set to 'enslaved' only when
it is managed by networkd.
Yu Watanabe [Wed, 20 Feb 2019 01:17:11 +0000 (10:17 +0900)]
network: disable LinkLocalAddressing= and IPv6AcceptRA= on bridge slaves by default
If they are not explicitly configured, then let's disable these
functionality on bridge slaves.
Yu Watanabe [Wed, 20 Feb 2019 01:07:20 +0000 (10:07 +0900)]
network: do not disable dynamic addressing for bridge slaves
This effectively reverts
5971cb9de9081b537945d28895df70992e5664d0 and
2b00a4e03dc375465de7f60f3a6937cbe8ffdf31.
Usually, it is not necessary to assign addresses to bridge slaves,
but such functionality is supported by kernel. If users explicitly
request such configuration, networkd should support that.
Yu Watanabe [Wed, 20 Feb 2019 02:32:29 +0000 (11:32 +0900)]
network: fix invalid memory access
This fixes a bug introduced by
959f65d32ec15cf84afe3efff1a18b0987b56c60.
Frantisek Sumsal [Sun, 24 Feb 2019 20:25:34 +0000 (21:25 +0100)]
Merge pull request #11808 from yuwata/fix-11806
test-network: testing with two bond slaves
Yu Watanabe [Wed, 20 Feb 2019 06:04:15 +0000 (15:04 +0900)]
test-network: testing with two bond slaves
Michal Sekletar [Fri, 22 Feb 2019 14:50:55 +0000 (15:50 +0100)]
logind: don't print warning when user@.service template is masked
User instance of systemd is optional feature and if user@.service
template is masked then administrator most likely doesn't want --user
instances of systemd for logged in users. We don't need to be verbose
about it.
Chris [Fri, 22 Feb 2019 15:47:31 +0000 (10:47 -0500)]
Fix manpage typo: abrubtly
Fix a minor typo: abrubtly -> abruptly.
Lennart Poettering [Fri, 22 Feb 2019 14:59:22 +0000 (15:59 +0100)]
Merge pull request #11797 from keszybz/analyze-calendar-highlight
Highlight in systemd-analyze calendar
Roman Kulikov [Tue, 15 Jan 2019 16:05:18 +0000 (19:05 +0300)]
logind: udev rule for Parallels video adapter
This enables graphical capability for a video adapter of Parallels
virtualization platform (Parallels Desktop for Mac product) which is not
a DRM device at the moment.
This fixes GUI in Fedora 29 guest on Parallels Desktop where gdm now
strictly checks for CanGraphical property of a seat, see [1].
Should be noted that there's no in-kernel driver for Parallels video at
the moment so device matching is done by vid/pid.
[1] https://gitlab.gnome.org/GNOME/gdm/merge_requests/37
Taro Yamada [Fri, 22 Feb 2019 08:16:34 +0000 (17:16 +0900)]
mkosi: (Archlinux) increase the size of root partition.
Currently "mkosi --default .mkosi/mkosi.arch" fails to build the image due to pacman error:
"error: Partition /var/tmp/mkosi-xxx/root too full: yyy blocks needed, zzz blocks free"
"error: not enough free disk space"
"error: failed to commit transaction (not enough free disk space)"
So increase the size to 3G.
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2019 08:51:50 +0000 (09:51 +0100)]
Merge pull request #11781 from yuwata/udev-rule-continuation-fix
udev-rules: fix line continuation
Zbigniew Jędrzejewski-Szmek [Fri, 22 Feb 2019 08:29:23 +0000 (09:29 +0100)]
analyze: add color highlighting when printing calendar elapses
With multiple iterations, I found it hard to pick out the interesting bits in
the column of text. I tried plain highlighting first, but it doesn't seem
enough. But blue/yellow makes it easy to jump to the right iteration.