]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
4 years agoupdate-helper: also add "user-reexec" verb 20276/head
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 13:35:23 +0000 (15:35 +0200)] 
update-helper: also add "user-reexec" verb

This is not called from the systemd.triggers or systemd.macros files. Instead,
it would be called from the scriptlets in systemd rpm package itself, at the
place where we call systemctl daemon-reexec.

See https://github.com/systemd/systemd/pull/20289#issuecomment-885622200 .

4 years agorpm: restart user services at the end of the transaction
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 12:37:57 +0000 (14:37 +0200)] 
rpm: restart user services at the end of the transaction

This closes an important gap: so far we would reexecute the system manager and
restart system services that were configured to do so, but we wouldn't do the
same for user managers or user services.

The scheme used for user managers is very similar to the system one, except
that there can be multiple user managers running, so we query the system
manager to get a list of them, and then tell each one to do the equivalent
operations: daemon-reload, disable --now, set-property Markers=+needs-restart,
reload-or-restart --marked.

The total time that can be spend on this is bounded: we execute the commands in
parallel over user managers and units, and additionally set SYSTEMD_BUS_TIMEOUT
to a lower value (15 s by default). User managers should not have too many
units running, and they should be able to do all those operations very
quickly (<< 1s). The final restart operation may take longer, but it's done
asynchronously, so we only wait for the queuing to happen.

The advantage of doing this synchronously is that we can wait for each step to
happen, and for example daemon-reloads can finish before we execute the service
restarts, etc. We can also order various steps wrt. to the phases in the rpm
transaction.

When this was initially proposed, we discussed a more relaxed scheme with bus
property notifications. Such an approach would be more complex because a bunch
of infrastructure would have to be added to system manager to propagate
appropriate notifications to the user managers, and then the user managers
would have to wait for them. Instead, now there is no new code in the managers,
all new functionality is contained in src/rpm/. The ability to call 'systemctl
--user user@' makes this approach very easy. Also, it would be very hard to
order the user manager steps and the rpm transaction steps.

Note: 'systemctl --user disable' is only called for a user managers that are
running. I don't see a nice way around this, and it shouldn't matter too much:
we'll just leave a dangling symlink in the case where the user enabled the
service manually.

A follow-up for https://bugzilla.redhat.com/show_bug.cgi?id=1792468 and
fa97d2fcf64e0558054bee673f734f523373b146.

4 years agorpm: call +needs-restart in parallel
Zbigniew Jędrzejewski-Szmek [Thu, 22 Jul 2021 09:28:36 +0000 (11:28 +0200)] 
rpm: call +needs-restart in parallel

Some rpms install a bunch of units… It seems nicer to invoke them all in
parallel. In particular, timeouts in systemctl also run in parallel, so if
there's some communication mishap, we will wait less.

4 years agorpm: use a helper script to actually invoke systemctl commands
Zbigniew Jędrzejewski-Szmek [Thu, 22 Jul 2021 09:22:33 +0000 (11:22 +0200)] 
rpm: use a helper script to actually invoke systemctl commands

Instead of embedding the commands to invoke directly in the macros,
let's use a helper script as indirection. This has a couple of advantages:

- the macro language is awkward, we need to suffix most commands by "|| :"
  and "\", which is easy to get wrong. In the new scheme, the macro becomes
  a single simple command.
- in the script we can use normal syntax highlighting, shellcheck, etc.
- it's also easier to test the invoked commands by invoking the helper
  manually.
- most importantly, the logic is contained in the helper, i.e. we can
  update systemd rpm and everything uses the new helper. Before, we would
  have to rebuild all packages to update the macro definition.

This raises the question whether it makes sense to use the lua scriptlets when
the real work is done in a bash script. I think it's OK: we still have the
efficient lua scripts that do the short scripts, and we use a single shared
implementation in bash to do the more complex stuff.

The meson version is raised to 0.47 because that's needed for install_mode.
We were planning to raise the required version anyway…

4 years agorpm: don't specify the full path for systemctl and other commands
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 12:02:36 +0000 (14:02 +0200)] 
rpm: don't specify the full path for systemctl and other commands

We can make things a bit simpler and more readable by not specifying the path.
Since we didn't specify the full path for all commands (including those invoked
recursively by anythign we invoke), this didn't really privide any security or
robustness benefits. I guess that full paths were used because this style of
rpm packagnig was popular in the past, with macros used for everything
possible, with special macros for common commands like %{__ln} and %{__mkdir}.

4 years agoMerge pull request #20087 from xen0n/loongarch64-gpt
Zbigniew Jędrzejewski-Szmek [Wed, 21 Jul 2021 08:50:08 +0000 (10:50 +0200)] 
Merge pull request #20087 from xen0n/loongarch64-gpt

gpt: support LoongArch 64-bit

4 years agoMerge pull request #20256 from keszybz/one-alloca-too-many
Zbigniew Jędrzejewski-Szmek [Tue, 20 Jul 2021 12:39:23 +0000 (14:39 +0200)] 
Merge pull request #20256 from keszybz/one-alloca-too-many

 basic/unit-name: do not use strdupa() on a path

4 years agogpt: reformat for restoring vertical alignment 20087/head
WANG Xuerui [Wed, 30 Jun 2021 12:33:37 +0000 (20:33 +0800)] 
gpt: reformat for restoring vertical alignment

4 years agogpt: support LoongArch 64-bit
WANG Xuerui [Wed, 16 Jun 2021 08:44:38 +0000 (16:44 +0800)] 
gpt: support LoongArch 64-bit

4 years agohwdb: 60-keyboard::remove hardcoded definition for KEYBOARD_KEY_56 for MSI Prestige...
Aakash Singh [Mon, 19 Jul 2021 18:57:48 +0000 (00:27 +0530)] 
hwdb: 60-keyboard::remove hardcoded definition for  KEYBOARD_KEY_56 for MSI Prestige And  Modern

4 years agoMinor typo (#20254)
rene [Tue, 20 Jul 2021 05:45:04 +0000 (15:45 +1000)] 
Minor typo (#20254)

Correct resoulution with resolution.

4 years agoMerge pull request #20251 from keszybz/test-format-lifetime
Yu Watanabe [Mon, 19 Jul 2021 21:13:50 +0000 (06:13 +0900)] 
Merge pull request #20251 from keszybz/test-format-lifetime

Add test for format_lifetime() and fix prefix

4 years agolog-generator: count arguments as offset from an iterator
monosans [Mon, 19 Jul 2021 12:59:10 +0000 (15:59 +0300)] 
log-generator: count arguments as offset from an iterator

4 years agobasic/time-util: inline one more variable declaration 20251/head
Zbigniew Jędrzejewski-Szmek [Mon, 19 Jul 2021 17:58:13 +0000 (19:58 +0200)] 
basic/time-util: inline one more variable declaration

4 years agoudev-event: drop unused assignments
Zbigniew Jędrzejewski-Szmek [Mon, 19 Jul 2021 13:39:56 +0000 (15:39 +0200)] 
udev-event: drop unused assignments

clang's static analyzer reports:
  Value stored to 'l' is never read

4 years agonetworkd: fix and simplify format_lifetime()
Zbigniew Jędrzejewski-Szmek [Mon, 19 Jul 2021 17:40:41 +0000 (19:40 +0200)] 
networkd: fix and simplify format_lifetime()

We would copy "forever" into the buffer. This is a fairly common case, so let's
do a microoptimization and return a static string. (All callers use the return
pointer, so this works just as well.)

The prefix "for " was not displayed, because the pointer to the part of the
buffer after "for " was returned. (Maybe it's just me, but I find strpcpy()
and associated functions really hard to use… I always have to look up what the
do exactly and what the return value is.)

A simple test is added.

4 years agonetwork: configure address with requested lifetime
Yu Watanabe [Mon, 19 Jul 2021 06:18:37 +0000 (15:18 +0900)] 
network: configure address with requested lifetime

When assigning the same address provided by a dynamic addressing
protocol, the new lifetime is stored on Request::Address, but not
Address object in Link object, which can be obtained by address_get().
So, we need to configure address with Address object in Request.

Fixes #20245.

4 years agoci: add ppc64le Rawhide chroot to the Packit chroot set
Frantisek Sumsal [Thu, 15 Jul 2021 18:56:04 +0000 (20:56 +0200)] 
ci: add ppc64le Rawhide chroot to the Packit chroot set

4 years agoAdd meson option to disable urlify.
James Hilliard [Sun, 11 Jul 2021 10:39:33 +0000 (04:39 -0600)] 
Add meson option to disable urlify.

Useful for systems that don't use a version of less with hyperlink
support.

4 years agogit-contrib: copypaste-friendly output
Luca Boccassi [Sat, 17 Jul 2021 16:49:20 +0000 (17:49 +0100)] 
git-contrib: copypaste-friendly output

Format output in a manner that can be copypasted as-is to NEWS.
That is, with 8 spaces indentation and wrapped at 80 columns.

Before:

$ tools/git-contrib.sh
        Ben Stockett,
        Carl Lei,
        Frantisek Sumsal,
        Gibeom Gwon,
        Hugo Osvaldo Barrera,
        James Hilliard,
        Jan Palus,
        Lennart Poettering,
        Luca Boccassi,
        Luca BRUNO,
        Mike Gilbert,
        nassir90,
        nl6720,
        Raul Tambre,
        Yegor Alexeyev,
        Yu Watanabe,
        Zbigniew Jędrzejewski-Szmek,

After:

        Contributions from: Ben Stockett, Carl Lei, Frantisek Sumsal,
        Gibeom Gwon, Hugo Osvaldo Barrera, James Hilliard, Jan Palus,
        Lennart Poettering, Luca Boccassi, Luca BRUNO, Mike Gilbert,
        nassir90, nl6720, Raul Tambre, Yegor Alexeyev, Yu Watanabe,
        Zbigniew Jędrzejewski-Szmek

4 years agoshell-completion/zsh/_systemd-run: Fix completion of command names and arguments
duament [Sat, 17 Jul 2021 17:17:41 +0000 (01:17 +0800)] 
shell-completion/zsh/_systemd-run: Fix completion of command names and arguments

4 years agoMerge pull request #20225 from mrc0mmand/selinux-nspawn-sanity
Luca Boccassi [Thu, 15 Jul 2021 21:21:11 +0000 (22:21 +0100)] 
Merge pull request #20225 from mrc0mmand/selinux-nspawn-sanity

test: add a sanity test for #19976

4 years agoMerge pull request #20228 from yuwata/follow-ups-20109
Luca Boccassi [Thu, 15 Jul 2021 16:06:20 +0000 (17:06 +0100)] 
Merge pull request #20228 from yuwata/follow-ups-20109

tree-wide: FORMAT_TIMESPAN() or friends must be used as a function argument

4 years agotree-wide: FORMAT_TIMESTAMP() or friends must be used as a function argument 20228/head
Yu Watanabe [Thu, 15 Jul 2021 11:02:27 +0000 (20:02 +0900)] 
tree-wide: FORMAT_TIMESTAMP() or friends must be used as a function argument

Follow-ups for #20109.

4 years agonetwork: slightly simplify log_address_debug()
Yu Watanabe [Thu, 15 Jul 2021 09:56:09 +0000 (18:56 +0900)] 
network: slightly simplify log_address_debug()

4 years agonetwork: introduce FORMAT_LIFETIME()
Yu Watanabe [Thu, 15 Jul 2021 09:48:56 +0000 (18:48 +0900)] 
network: introduce FORMAT_LIFETIME()

Fixes a bug introduced by 5291f26d4a6450d1fbf3656640ef20c5e78aa6a5.

Fixes #20227.

4 years agoMerge pull request #20209 from yuwata/network-dhcp4-semi-static-route-with-use-gateway-no
Yu Watanabe [Thu, 15 Jul 2021 02:57:11 +0000 (11:57 +0900)] 
Merge pull request #20209 from yuwata/network-dhcp4-semi-static-route-with-use-gateway-no

network: dhcp4: support semi-static route with Gateway=_dhcp4 with UseGateway=no

4 years agotest-network: add a testcase for semi-static route with Gateway=_dhcp4 when UseGateway=no 20209/head
Yu Watanabe [Mon, 12 Jul 2021 16:20:53 +0000 (01:20 +0900)] 
test-network: add a testcase for semi-static route with Gateway=_dhcp4 when UseGateway=no

4 years agotest-network: adjust testcases to follow the previous changes
Yu Watanabe [Tue, 13 Jul 2021 04:08:10 +0000 (13:08 +0900)] 
test-network: adjust testcases to follow the previous changes

4 years agonetwork: dhcp4: also support semi-static routes with Gateway=_dhcp4 when UseGateway...
Yu Watanabe [Mon, 12 Jul 2021 16:06:08 +0000 (01:06 +0900)] 
network: dhcp4: also support semi-static routes with Gateway=_dhcp4 when UseGateway=no or UseRoutes=no

This makes the default gateway is read from classless static routes or
router option even if UseGateway=no or UseRoutes=no, and will be used
when configuring semi-static routes such that specified with Gateway=_dhcp4.

This also changes the behavior of RoutesToDNS= or RoutesToNTP=.
Previously, the DNS or NTP servers are not in the same network, then the
routes to the servers were not configured when UseGateway=no or
UseRoutes=no. With this commit, the default gateway in classless static
routes or router option will used to connecting the servers even if
UseGateway=no or UseRoutes=no.

Fixes #20208.

4 years agotest: add a sanity test for systemd/systemd#19976 20225/head
Frantisek Sumsal [Wed, 14 Jul 2021 18:29:37 +0000 (20:29 +0200)] 
test: add a sanity test for systemd/systemd#19976

which should ensure we can use nspawn containers with SELinux context set via
the `--selinux-context=` and `--selinux-apifs-context=` options.

4 years agotest: don't explicitly disable SELinux
Frantisek Sumsal [Wed, 14 Jul 2021 18:27:23 +0000 (20:27 +0200)] 
test: don't explicitly disable SELinux

We don't install any policies by default, so it shouldn't interfere with
anything (and it would save me some headache).

4 years agonetwork: further unification of MUD url parsers
Yu Watanabe [Wed, 14 Jul 2021 06:47:40 +0000 (15:47 +0900)] 
network: further unification of MUD url parsers

Follow-up for 89fa9a6b7b2505aa2ce18febf1e28e79510dfec2.

4 years agoman/systemd.network: Fix duplicate Xfrm description
Raul Tambre [Wed, 14 Jul 2021 11:58:31 +0000 (14:58 +0300)] 
man/systemd.network: Fix duplicate Xfrm description

It's already listed along with others (Tunnel, VLAN, etc.) and its description matches those. The duplication was introduced by commit c3006a485c9c35c0ab947479ff1dd7149fda9750.

4 years agoMerge pull request #20109 from keszybz/timestamp-macros
Yu Watanabe [Wed, 14 Jul 2021 07:14:08 +0000 (16:14 +0900)] 
Merge pull request #20109 from keszybz/timestamp-macros

Add macros that define scratch buffer internally for timestamp/timespan formatting

4 years agonetwork: update interface name stored in various network engines
Yu Watanabe [Tue, 13 Jul 2021 11:02:44 +0000 (20:02 +0900)] 
network: update interface name stored in various network engines

4 years agoMerge pull request #20120 from yuwata/test-oomd-debug
Yu Watanabe [Tue, 13 Jul 2021 14:30:16 +0000 (23:30 +0900)] 
Merge pull request #20120 from yuwata/test-oomd-debug

test: enable debug logging of oomd

4 years agonetwork: check the received interface name is actually new
Yu Watanabe [Mon, 12 Jul 2021 12:23:41 +0000 (21:23 +0900)] 
network: check the received interface name is actually new

For some reasons I do not know, on interface renaming, kernel once send
netlink message with old interface name, and then send with new name.
If eth0 is renamed, and then new interface appears as eth0, then the
message with the old name 'eth0' makes the interface enters failed
state.

To ignore such invalid(?) rename event messages, let's confirm the
received interface name.

Fixes #20203.

4 years agohomed: allow systemd-homed access to FIDO2 devices
Gibeom Gwon [Mon, 12 Jul 2021 17:57:43 +0000 (02:57 +0900)] 
homed: allow systemd-homed access to FIDO2 devices

Add DeviceAllow= option for FIDO2 devices in systemd-homed.service.

4 years agoTODO: note cgroup.kill and memfd_secret
Luca Boccassi [Mon, 12 Jul 2021 21:47:59 +0000 (22:47 +0100)] 
TODO: note cgroup.kill and memfd_secret

4 years agoMerge pull request #20202 from yuwata/network-fix-manage-foreign-routes-no
Luca Boccassi [Mon, 12 Jul 2021 18:11:37 +0000 (19:11 +0100)] 
Merge pull request #20202 from yuwata/network-fix-manage-foreign-routes-no

network: fix ManageForeignRoutes=no

4 years agosystemctl: show error when help for unknown unit is requested
Zbigniew Jędrzejewski-Szmek [Mon, 12 Jul 2021 10:32:39 +0000 (12:32 +0200)] 
systemctl: show error when help for unknown unit is requested

Fixes #20189. We would only log at debug level and return failure, which looks
like a noop for the user.

('help' accepts multiple arguments and will show multiple concatenated man
pages in that case. Actually, it will also show multiple concatenated man pages
if the Documentation= setting lists multiple pages. I don't think it's very
terribly useful, but, meh, I don't think we can do much better. If a user
requests a help for a two services, one known and one unknown, there'll now be
a line in the output. It's not very user friendly, but not exactly wrong too.)

4 years agotest-network: add a testcase for ManageForeignRoutes=no 20202/head
Yu Watanabe [Mon, 12 Jul 2021 07:36:55 +0000 (16:36 +0900)] 
test-network: add a testcase for ManageForeignRoutes=no

4 years agoman/dnssec-trust-anchors: fix an XML syntax typo
Luca BRUNO [Mon, 12 Jul 2021 09:41:30 +0000 (09:41 +0000)] 
man/dnssec-trust-anchors: fix an XML syntax typo

This fixes an XML syntax typo in the 'dnssec-trust-anchors'
documentation.

4 years agonetwork: also check addresses when determine a gateway address is reachable or not
Yu Watanabe [Mon, 12 Jul 2021 06:46:44 +0000 (15:46 +0900)] 
network: also check addresses when determine a gateway address is reachable or not

Fixes #20201.

4 years agoman: fix RFC number
Carl Lei [Mon, 12 Jul 2021 02:06:08 +0000 (10:06 +0800)] 
man: fix RFC number

#19947 didn't fix both.

4 years agolibudev: add "Libs.private: -lrt -pthread" to libudev.pc
Mike Gilbert [Fri, 9 Jul 2021 17:05:23 +0000 (13:05 -0400)] 
libudev: add "Libs.private: -lrt -pthread" to libudev.pc

This resolves a failure when linking cryptsetup.static against libudev.a.

```
libtool: link: x86_64-pc-linux-gnu-gcc -Wall -O2 -pipe -march=amdfam10 -static -O2 -o cryptsetup.static lib/utils_crypt.o lib/utils_loop.o lib/utils_io.o lib/utils_blkid.o src/utils_tools.o src/utils_password.o src/utils_luks2.o src/utils_blockdev.o src/cryptsetup.o -pthread -pthread  -Wl,--as-needed ./.libs/libcryptsetup.a -largon2 -lrt -ljson-c -lpopt -luuid -lblkid -lssl -lcrypto -lz -ldl -ldevmapper -lm -lpthread -ludev -pthread
/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib64/libudev.a(src_libsystemd_sd-daemon_sd-daemon.c.o): in function `sd_is_mq':
(.text.sd_is_mq+0x3a): undefined reference to `mq_getattr'
```

4 years agoDisable non-explicit sbatvars autodetection for cross builds.
James Hilliard [Sat, 10 Jul 2021 10:36:50 +0000 (04:36 -0600)] 
Disable non-explicit sbatvars autodetection for cross builds.

Since autodetection is unlikely to work reliably for cross builds
disable it unless explicitly enabled.

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
4 years agoUpdated manpage for sd_bus_set_property
Ben Stockett [Fri, 9 Jul 2021 20:29:36 +0000 (20:29 +0000)] 
Updated manpage for sd_bus_set_property

Updated manpage for sd_bus_set_property and sd_bus_set_propertyv. In the old manpage, these functions included the parameter sd_bus_message **reply when the actual function had no such argument.

4 years agoFixed typo (#20187)
nassir90 [Fri, 9 Jul 2021 20:16:02 +0000 (21:16 +0100)] 
Fixed typo (#20187)

* Fixed typo

Before, the file claimed that some systemd units are created "from other
configuration". It should have read "from other configuration files".

Co-authored-by: Nozz <nozolo90@gmail.com>
4 years agoMerge pull request #20186 from keszybz/coverity-fixes
Luca Boccassi [Fri, 9 Jul 2021 20:15:08 +0000 (21:15 +0100)] 
Merge pull request #20186 from keszybz/coverity-fixes

Coverity fixes

4 years agotree-wide: coccinelle fixes
Frantisek Sumsal [Fri, 9 Jul 2021 11:15:01 +0000 (13:15 +0200)] 
tree-wide: coccinelle fixes

Yet another batch of Coccinelle fixes.

4 years agoMerge pull request #20185 from mrc0mmand/ci-tweaks
Frantisek Sumsal [Fri, 9 Jul 2021 18:21:59 +0000 (20:21 +0200)] 
Merge pull request #20185 from mrc0mmand/ci-tweaks

test: assorted test tweaks to address flakiness

4 years agoMerge pull request #20157 from keszybz/numerical-uids-in--M
Luca Boccassi [Fri, 9 Jul 2021 15:58:45 +0000 (16:58 +0100)] 
Merge pull request #20157 from keszybz/numerical-uids-in--M

Allow numerical UIDs in systemctl -M uid@ and similar

4 years agocreds: fix leak of arg_tpm2_device 20186/head
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 13:29:47 +0000 (15:29 +0200)] 
creds: fix leak of arg_tpm2_device

IIUC, "auto" is the same as NULL. There is no need to strdup() anything.

Coverity CID#1458113.

4 years agotest: make the strace check a bit more clever 20185/head
Frantisek Sumsal [Fri, 9 Jul 2021 13:22:41 +0000 (15:22 +0200)] 
test: make the strace check a bit more clever

We still sometimes try to grep an empty strace log because strace is not
yet properly initialized. Let's make the check a bit clever and wait
until strace is attached to PID 1 by checking the `TracerPid` field in
`/proc/1/status`.

4 years agonetworkd: add shared parser for mud urls
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 13:01:00 +0000 (15:01 +0200)] 
networkd: add shared parser for mud urls

The same buggy code was triplicated…

4 years agocreds: drop unnecessary initialization
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 12:45:41 +0000 (14:45 +0200)] 
creds: drop unnecessary initialization

Coverity also thinks a leak happens here, CID #1458112.
This seems wrong, but let's add an assert, maybe that'll help.

4 years agocore: drop unnecessary initialization
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 12:38:23 +0000 (14:38 +0200)] 
core: drop unnecessary initialization

cunescape() sets output on success, so initialization is not necessary. There
was no comment, but I think they may have been added because the compiler
wasn't convinced that the return value is non-negative on success. It could
have been confused by the int return type on escape*(), which was changed by
the one of preceeding commits to ssize_t, or by the length calculation, so add
an assert to help the compiler.

For some reason coverity thinks the output can be leaked here (CID #1458111).
I don't see how.

4 years agoxdg-autostart: minor refactoring
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 12:31:04 +0000 (14:31 +0200)] 
xdg-autostart: minor refactoring

We can't say free_and_replace(exec_split[n++], quoted), because the the
argument is evaluated multiple times. But I think that this form is
still easier to read.

4 years agonspawn: inline one iterator variable declaration
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 12:30:15 +0000 (14:30 +0200)] 
nspawn: inline one iterator variable declaration

4 years agotree-wide: make cunescape*() functions return ssize_t
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 11:27:03 +0000 (13:27 +0200)] 
tree-wide: make cunescape*() functions return ssize_t

Strictly speaking, we are returning the size of a memory chunk of
arbitrary size, so ssize_t is more appropriate than int.

4 years agobasic/escape: use _cleanup_ in one more place
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 11:31:00 +0000 (13:31 +0200)] 
basic/escape: use _cleanup_ in one more place

Also, let's not use 'r' for a char*.

4 years agotest: strip binaries by default
Frantisek Sumsal [Fri, 9 Jul 2021 12:59:11 +0000 (14:59 +0200)] 
test: strip binaries by default

Since 23f8e01 we always kept binaries unstripped, since $STRIP_BINARIES
is unset by default.

4 years agotest: bump the test timeout to give ldconfig.service enough time to finish
Frantisek Sumsal [Fri, 9 Jul 2021 12:44:38 +0000 (14:44 +0200)] 
test: bump the test timeout to give ldconfig.service enough time to finish

Sometimes the ldconfig.service might take a bit longer to finish,
causing spurious test timeouts:

```
[ 1025.858923] systemd[24]: ldconfig.service: Executing: /sbin/ldconfig -X
...
[ 1043.883620] systemd[1]: ldconfig.service: Main process exited, code=exited, status=0/SUCCESS (success)
...
Trying to halt container. Send SIGTERM again to trigger immediate
termination.
Container TEST-52-HONORFIRSTSHUTDOWN terminated by signal KILL.
E: Test timed out after 20s
```

4 years agodocs: improve wording when mentioning the acronym "ESP"
nl6720 [Fri, 9 Jul 2021 09:56:54 +0000 (12:56 +0300)] 
docs: improve wording when mentioning the acronym "ESP"

"ESP" is "EFI system partition", so "ESP partition" is redundant.

4 years agoshared/format-table: fix invalid free
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 11:17:16 +0000 (13:17 +0200)] 
shared/format-table: fix invalid free

Coverity CID#1458108.

4 years agosd-bus: allow numerical uids in -M user@.host 20157/head
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 16:02:50 +0000 (18:02 +0200)] 
sd-bus: allow numerical uids in -M user@.host

UIDs don't work well over ssh, but locally or with containers they are OK.
In particular, user@.service uses UIDs as identifiers, and it's nice to be
able to copy&paste that UID for interaction with the user's managers.

4 years agosd-bus: print debugging information if bus_container_connect_socket() fails
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 16:01:03 +0000 (18:01 +0200)] 
sd-bus: print debugging information if bus_container_connect_socket() fails

We would return the errno, but there are many steps, and without some
debugging info it's hard to figure out what exactly failed.

4 years agosd-bus: print quoted commandline when in bus_socket_exec()
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 14:36:49 +0000 (16:36 +0200)] 
sd-bus: print quoted commandline when in bus_socket_exec()

The arguments are where the interesting part is:
src/libsystemd/sd-bus/bus-socket.c:965: sd-bus: starting bus with systemd-run...

src/libsystemd/sd-bus/bus-socket.c:972: sd-bus: starting bus with systemd-run -M.host -PGq --wait -pUser=1000 -pPAMName=login systemd-stdio-bridge "-punix:path=\${XDG_RUNTIME_DIR}/bus"

4 years agocore: use the new quoting helper
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 14:28:19 +0000 (16:28 +0200)] 
core: use the new quoting helper

4 years agobasic/escape: add helper for quoting command lines
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 14:27:51 +0000 (16:27 +0200)] 
basic/escape: add helper for quoting command lines

4 years agonetworkd: minor refactoring 20109/head
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 09:40:16 +0000 (11:40 +0200)] 
networkd: minor refactoring

4 years agonetworkd: replace one trivial asprintf with xsprintf
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 09:40:00 +0000 (11:40 +0200)] 
networkd: replace one trivial asprintf with xsprintf

4 years agoshared/killall: replace one trivial asprintf with xsprintf
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 09:37:44 +0000 (11:37 +0200)] 
shared/killall: replace one trivial asprintf with xsprintf

4 years agotree-wide: do not use (void) asprintf
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 09:37:21 +0000 (11:37 +0200)] 
tree-wide: do not use (void) asprintf

asprintf(3) says that the pointer is "undefined" after a failed call.
In the current glibc implementation it is just NULL. In principle the
call could return a valid pointer with bad contents or something.

We have two styles of error handling: in a majority of cases we would
check the return value, but sometimes we used (void) and relied on the
pointer not being set. In practice both styles should be equivalent,
but gcc doesn't like the second one with -Wunused-result. (Though only
sometimes. E.g. on my F34 box I don't get the same warnings as in CI,
even though the compiler version is very similar and the compilation
options are the same…). It's also nice to be consistent in our code base.
So let's always use the first style of error checking.

4 years agobasic/time-util: indentation
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 13:21:22 +0000 (15:21 +0200)] 
basic/time-util: indentation

4 years agobasic/{time,format}-util: warn when format result is unused
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 13:16:15 +0000 (15:16 +0200)] 
basic/{time,format}-util: warn when format result is unused

Now that anonymous buffers are used in almost all cases, code which
does not use the return value is usually broken.

4 years agomeson: re-enable -Wunused-result with clang
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 13:13:00 +0000 (15:13 +0200)] 
meson: re-enable -Wunused-result with clang

We disabled it in f73fb7b742f294b6d2126afa16001bd2ff6ab461 in response to an
apparent gcc bug. It seems that depending on the combination of optimization
options, gcc still ignores (void). But this seems to work fine with clang, so
let's re-enable the warning conditionally.

4 years agoReplace format_bytes_cgroup_protection with FORMAT_BYTES_CGROUP_PROTECTION
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 08:22:03 +0000 (10:22 +0200)] 
Replace format_bytes_cgroup_protection with FORMAT_BYTES_CGROUP_PROTECTION

4 years agotree-wide: add FORMAT_BYTES_FULL()
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 08:17:16 +0000 (10:17 +0200)] 
tree-wide: add FORMAT_BYTES_FULL()

4 years agocgtop: use anonymous buffers for formatting of bytes and timespans
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 07:51:23 +0000 (09:51 +0200)] 
cgtop: use anonymous buffers for formatting of bytes and timespans

4 years agobasic/macro: make CONST_MAX(DECIMAL_STR_MAX(…), STRLEN(…)) possible
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 07:49:56 +0000 (09:49 +0200)] 
basic/macro: make CONST_MAX(DECIMAL_STR_MAX(…), STRLEN(…)) possible

When those two macros were used together in CONST_MAX(), gcc would complain
about a type mismatch. So either DECIMAL_STR_MAX() should be made size_t like
STRLEN(), or STRLEN() be made unsigned.

Since those macros are only usable on arguments of (small) fixed size, any type
should be fine (even char would work…). For buffer size specifications, both
size_t and unsigned are OK. But unsigned was used for DECIMAL_STR_MAX macros
and FORMAT_foo_MAX macros, making STRLEN the only exception, so let's adjust
STRLEN() to be unsigned too.

Also: I don't think this is currently used anywhere, but if any of those macros
were used as an argument to sprintf, size_t would require a cast. ("%*s"
requires an int/unsigned argument.)

4 years agoimport: use SYNTHETIC_ERRNO in one more place
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 07:14:22 +0000 (09:14 +0200)] 
import: use SYNTHETIC_ERRNO in one more place

4 years agotree-wide: add FORMAT_BYTES()
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 07:14:01 +0000 (09:14 +0200)] 
tree-wide: add FORMAT_BYTES()

4 years agoInline some iterator variables
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 19:56:39 +0000 (21:56 +0200)] 
Inline some iterator variables

4 years agotree-wide: add FORMAT_TIMESTAMP_STYLE()
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 19:41:59 +0000 (21:41 +0200)] 
tree-wide: add FORMAT_TIMESTAMP_STYLE()

4 years agoshared/format-table: allocate buffer of sufficient size
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 19:29:11 +0000 (21:29 +0200)] 
shared/format-table: allocate buffer of sufficient size

4 years agotree-wide: add FORMAT_TIMESTAMP_RELATIVE()
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 12:43:52 +0000 (12:43 +0000)] 
tree-wide: add FORMAT_TIMESTAMP_RELATIVE()

4 years agotree-wide: add FORMAT_TIMESPAN()
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 12:32:46 +0000 (14:32 +0200)] 
tree-wide: add FORMAT_TIMESPAN()

4 years agosd-journal: add FORMAT_TIMESTAMP_SAFE()
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 12:11:49 +0000 (14:11 +0200)] 
sd-journal: add FORMAT_TIMESTAMP_SAFE()

4 years agotree-wide: use FORMAT_TIMESTAMP()
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 12:11:30 +0000 (14:11 +0200)] 
tree-wide: use FORMAT_TIMESTAMP()

4 years agobasic/time-util: add FORMAT_TIMESTAMP
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 10:10:52 +0000 (10:10 +0000)] 
basic/time-util: add FORMAT_TIMESTAMP

This uses the same idea of an anonyous buffer as ETHER_ADDR_TO_STR().

4 years agotest-ether-addr-util: add a simple test that HW_ADDR_TO_STR works with nesting
Zbigniew Jędrzejewski-Szmek [Tue, 29 Jun 2021 13:27:12 +0000 (15:27 +0200)] 
test-ether-addr-util: add a simple test that HW_ADDR_TO_STR works with nesting

It seems to, but I was a bit incredulous… The comment is adjusted to match
the standard.

The trick with a temporary buffer is neat. I wasn't sure if it is valid, but
the standard says so. The test really tests that we are reading the rules right
and that the compiler doesn't do anythign strange or emit an unexpected
warning.

4 years agoMerge pull request #20166 from poettering/fsync-more
Yu Watanabe [Thu, 8 Jul 2021 22:32:01 +0000 (07:32 +0900)] 
Merge pull request #20166 from poettering/fsync-more

various tweaks to existing fsync() helpers, and some new apis

4 years agoMerge pull request #20168 from poettering/signal-util-tweak
Yu Watanabe [Thu, 8 Jul 2021 22:24:43 +0000 (07:24 +0900)] 
Merge pull request #20168 from poettering/signal-util-tweak

generalize SIGINT handling in copy.c

4 years agoMerge pull request #20167 from poettering/format-table-tweaks
Yu Watanabe [Thu, 8 Jul 2021 22:20:49 +0000 (07:20 +0900)] 
Merge pull request #20167 from poettering/format-table-tweaks

format-table: three new features

4 years agodirent-util: no need to bother with fstatat() for "." and ".." to figure out if these...
Lennart Poettering [Fri, 25 Jun 2021 21:47:02 +0000 (23:47 +0200)] 
dirent-util: no need to bother with fstatat() for "." and ".." to figure out if these are dirs

4 years agoblockdev-util: add fd-based APIs for getting backing block device for file
Lennart Poettering [Mon, 8 Mar 2021 22:48:21 +0000 (23:48 +0100)] 
blockdev-util: add fd-based APIs for getting backing block device for file

4 years agopath-util: make path_compare() accept NULL
Lennart Poettering [Thu, 17 Jun 2021 09:05:43 +0000 (11:05 +0200)] 
path-util: make path_compare() accept NULL