Luca Boccassi [Wed, 25 Oct 2023 08:53:19 +0000 (09:53 +0100)]
Merge pull request #29553 from keszybz/analyze-cat-config-tldr
analyze/cat-config: add switch to print only "interesting" parts of conffiles
Lennart Poettering [Tue, 24 Oct 2023 21:14:23 +0000 (23:14 +0200)]
tpm2-util: add line breaks in compound struct init, like we usually do
Frantisek Sumsal [Wed, 25 Oct 2023 08:29:58 +0000 (08:29 +0000)]
Merge pull request #29687 from yuwata/network-state-file-sync
network: several fixlets for state file
Lennart Poettering [Tue, 24 Oct 2023 14:45:32 +0000 (16:45 +0200)]
execute: log about failures when opening a terminal to reset
Lennart Poettering [Tue, 24 Oct 2023 16:18:18 +0000 (18:18 +0200)]
mount-util: add one more const
Lennart Poettering [Tue, 24 Oct 2023 14:45:06 +0000 (16:45 +0200)]
update TODO
Luca Boccassi [Tue, 24 Oct 2023 19:39:34 +0000 (20:39 +0100)]
Merge pull request #29689 from mrc0mmand/test-shutdown
test: shorten service stop/abort timeouts for TEST-69-SHUTDOWN
Luca Boccassi [Tue, 24 Oct 2023 18:41:02 +0000 (19:41 +0100)]
Merge pull request #29677 from keszybz/rewinddir-alternative-fix
Rewind dir fd before using it for cleanup
Mike Yuan [Tue, 24 Oct 2023 10:10:21 +0000 (18:10 +0800)]
sleep-config: make hybrid sleep always use 'suspend' disk mode
If user requests hybrid sleep, we should always use 'suspend'
disk mode. If that's not supported, let's correctly report it
so they can choose plain hibernation instead. HybridSleepMode=
serves no purpose in this case and should be removed.
Addresses https://github.com/systemd/systemd/pull/29681#discussion_r1369812785
Zbigniew Jędrzejewski-Szmek [Tue, 17 Oct 2023 17:11:44 +0000 (19:11 +0200)]
shared/pretty-print: skip redundant section headers with --tldr
If the same section appears consecutively in a given file, subsequent
occurenced are not printed.
[Slice]
Foo=bar
[Slice] # this is not printed
Bar=bar
Requested in
https://github.com/systemd/systemd/pull/29553#pullrequestreview-
1677310352.
Zbigniew Jędrzejewski-Szmek [Sun, 15 Oct 2023 16:34:54 +0000 (18:34 +0200)]
binfmt: add --tldr
Zbigniew Jędrzejewski-Szmek [Sun, 15 Oct 2023 16:34:38 +0000 (18:34 +0200)]
sysctl: add --tldr
Zbigniew Jędrzejewski-Szmek [Sun, 15 Oct 2023 16:34:05 +0000 (18:34 +0200)]
sysusers: add --tldr
Zbigniew Jędrzejewski-Szmek [Sun, 15 Oct 2023 16:33:10 +0000 (18:33 +0200)]
tmpfiles: add --tldr
This is like --cat-config, but omits the comments and empty lines.
The name is incoungrous with --cat-config, but I don't see a nice way to
call it that wouldn't be annoyingly long.
pager_open() is moved to cat_config() to remove some lines from run().
Zbigniew Jędrzejewski-Szmek [Sat, 14 Oct 2023 16:49:35 +0000 (18:49 +0200)]
shared/pretty-print: add highlighting
Yu Watanabe [Tue, 24 Oct 2023 09:38:30 +0000 (18:38 +0900)]
test-network: wait for the state file being updated
Also, sync state files before read.
Addresses the first issue in #29678.
Zbigniew Jędrzejewski-Szmek [Thu, 12 Oct 2023 14:33:01 +0000 (16:33 +0200)]
analyze/cat-config: add switch to print only "interesting" parts of config files
When looking at configuration, often a user wants to suppress the comments and
just look at the parts that actually configure something, roughly equivalent to
systemd-analyze cat-config … | rg -v '^(#|;|$)
This switch implements this natively, skipping lines that start with a comment
character or only contain whitespace.
For formats that have section headers, section headers are skipped, if only
followed by stuff that would be skipped. (The last section header is printed
when we're about to print some actual output.)
Note that the caller doesn't know if the format has headers or not. We do format
type detection in pretty-print.c. So the caller only specifies tldr=true|false, and
conf_files_cat() figures out if the format has headers and whether those should
be handled specially.
The comments that show the file name are always printed, even if all of the file
is suppressed.
This is a partial answer to the discussions in
https://github.com/systemd/systemd/pull/28919,
https://github.com/systemd/systemd/pull/29248. If the default config is shown in
config files, the user can conveniently use '--tldr' to show the relevant parts.
Zbigniew Jędrzejewski-Szmek [Mon, 23 Oct 2023 12:06:32 +0000 (14:06 +0200)]
shared/copy: rewind dir fd before using it for cleanup
This seems to be the only place where rm_rf_children() is called with a
possibly used fd, which is then passed through to rm_rf_children_impl().
This also fixes #29606.
(Tested on Fedora rawhide with kernel 6.5.6-300.fc39.x86_64.)
Luca Boccassi [Tue, 24 Oct 2023 11:20:04 +0000 (12:20 +0100)]
Merge pull request #29601 from yuwata/mmap-check-overflow
mmap: check offset and size more carefully
Frantisek Sumsal [Tue, 24 Oct 2023 10:41:54 +0000 (12:41 +0200)]
test: shorten service stop/abort timeouts for TEST-69-SHUTDOWN
In several Ubuntu CI jobs I noticed timeouts in TEST-69, which are
apparently caused by a very stubborn bash/login process:
$ journalctl -o short-monotonic --no-hostname --file artifacts/TEST-69-SHUTDOWN.journal
[ 2011.698430] systemd[1]: shutdown.target: starting held back, waiting for: veritysetup.target
[ 2011.698473] systemd[1]: sysinit.target: stopping held back, waiting for: user@0.service
[ 2045.884982] systemd[1]: systemd-oomd.service: Got notification message from PID 54 (WATCHDOG=1)
[ 2071.576424] systemd[1]: Received SIGCHLD from PID 65 (bash).
[ 2071.576941] systemd[1]: Child 65 (bash) died (code=killed, status=1/HUP)
[ 2071.577026] systemd[1]: session-13.scope: Child 65 belongs to session-13.scope.
[ 2071.577100] systemd[1]: session-13.scope: cgroup is empty
[ 2071.577249] systemd[1]: session-13.scope: Deactivated successfully.
$ journalctl -o short-monotonic --no-hostname --file artifacts/TEST-69-SHUTDOWN.journal _PID=65
[ 3038.661488] login[65]: ROOT LOGIN on '/dev/pts/0'
Since, in this case, we really care only about the actual shutdown,
let's shorten the service stop/abort timeouts to let systemd SIGKILL all
remaining processes in the 60s `expect` window.
Frantisek Sumsal [Tue, 24 Oct 2023 10:35:03 +0000 (12:35 +0200)]
test: introduce $TEST_SKIP_SHUTDOWN
To get rid of some boilerplate.
Luca Boccassi [Tue, 24 Oct 2023 09:49:37 +0000 (10:49 +0100)]
Merge pull request #29685 from poettering/cryptenroll-reduce-scope
cryptenroll: two minor simplifications
Yu Watanabe [Tue, 24 Oct 2023 09:33:45 +0000 (18:33 +0900)]
network: also synchronously update manager state file
Yu Watanabe [Tue, 24 Oct 2023 09:25:47 +0000 (18:25 +0900)]
network: make link_save() static
Yu Watanabe [Tue, 24 Oct 2023 09:13:08 +0000 (18:13 +0900)]
network: do not try to save link state file twice on boot
On enumeration, (that is, before manager_start() is called), enumerated
links may already have the dirty flag. In that case, saving the state
file in manager_start() should clear the flag.
Mike Yuan [Tue, 24 Oct 2023 09:03:54 +0000 (17:03 +0800)]
Merge pull request #29681 from YHNdnzj/sleep-round-three
sleep-config: cleanup round three
Yu Watanabe [Tue, 24 Oct 2023 08:05:45 +0000 (17:05 +0900)]
Merge pull request #29679 from keszybz/drop-iovec-null
Drop IOVEC_NULL
Zbigniew Jędrzejewski-Szmek [Mon, 23 Oct 2023 20:30:28 +0000 (22:30 +0200)]
basic/iovec-util: use FOREACH_ARRAY in one more place
Zbigniew Jędrzejewski-Szmek [Mon, 23 Oct 2023 20:23:07 +0000 (22:23 +0200)]
basic/iovec-util: drop TAKE_IOVEC
As suggested in
https://github.com/systemd/systemd/pull/29679#discussion_r1368678932.
Lennart Poettering [Mon, 23 Oct 2023 20:17:46 +0000 (22:17 +0200)]
cryptenroll: merge two if checks with same condition
This removes a duplicate condition check by adding a common surrounding
if block.
This also change a confusing if check: "(X && Y) && Z" to simply "X && Y && Z"
Lennart Poettering [Mon, 23 Oct 2023 20:12:46 +0000 (22:12 +0200)]
cryptenroll: reduce scope of two global variables
No change in behaviour
Luca Boccassi [Mon, 23 Oct 2023 15:43:33 +0000 (16:43 +0100)]
systemctl: fallback if logind doesn't support new flag
Follow-up for
665a3d6d15c09428
Luca Boccassi [Mon, 23 Oct 2023 17:39:10 +0000 (18:39 +0100)]
Merge pull request #29633 from yuwata/dhcp-ipv6-only-mode-follow-ups
dhcp: several follow-ups for IPv6 only mode
Mike Yuan [Mon, 23 Oct 2023 13:19:29 +0000 (21:19 +0800)]
sleep-config: check sleep mode only when hibernation
With the previous change, this should only be used when
doing hibernation.
Mike Yuan [Fri, 20 Oct 2023 16:21:20 +0000 (00:21 +0800)]
sleep-config: remove HibernateState= & HybridSleepState=, restrict
SuspendState= not to include "disk"
I don't know why these existed in the first place, but as I
justified in the comments, it's simply not sensible to allow
HibernateState= or HybridSleepState= to take values other than
'disk'. So let's just remove those options. Also, SuspendState=
should not contain 'disk'.
Mike Yuan [Sat, 21 Oct 2023 11:53:04 +0000 (19:53 +0800)]
hibernate-util: add missing assertion
Mike Yuan [Mon, 23 Oct 2023 13:02:25 +0000 (21:02 +0800)]
hibernate-resume: add missing static for arg_info
Antonio Alvarez Feijoo [Mon, 23 Oct 2023 13:29:40 +0000 (15:29 +0200)]
timedatectl: add missing commands to the help output
Follow up to
159a855b34c35484c28cf4b0178f93bc16447fac
Zbigniew Jędrzejewski-Szmek [Mon, 23 Oct 2023 12:59:17 +0000 (14:59 +0200)]
basic/iovec-util: drop IOVEC_NULL
The macro isn't very useful, we can just use the direct setting to increase
readability.
Zbigniew Jędrzejewski-Szmek [Mon, 23 Oct 2023 12:51:43 +0000 (14:51 +0200)]
basic/iovec-util: always call the iovec "iovec"
We were using "i", "iov", and "iovec" in variuos places. Let's be
consistent.
Zbigniew Jędrzejewski-Szmek [Mon, 23 Oct 2023 11:56:38 +0000 (13:56 +0200)]
Revert "rm-rf: Make sure we rewinddir() before readdir()"
This reverts commit
6bbb893b90e2dcb05fb310ba4608f9c9dc587845.
Let's try a different approach where we make sure that all callers only pass in
a fd that is "clean", i.e. at offset 0. The majority of callers of this function
(both direct and indirect) pass a freshly-opened fd, so the rewind call is not
needed.
Luca Boccassi [Mon, 23 Oct 2023 10:43:15 +0000 (11:43 +0100)]
Merge pull request #29674 from poettering/unexport-marshal-blob
tpm2-util: make tpm2_marshal_blob()/tpm2_unmarshal_blob() static
Lennart Poettering [Wed, 12 Jul 2023 20:28:12 +0000 (22:28 +0200)]
glyph-util: add 'full block' glyph
Lennart Poettering [Sun, 16 Jul 2023 09:09:30 +0000 (11:09 +0200)]
pcrextend: split out word to measure code into shared helper file
Let's split out the logic that actually generates the word to measure to
PCRs into a new helper file pcrextend-util.[ch].
This we can later reuse to calculate PCR measurement predictions ahead
of time.
Lennart Poettering [Mon, 14 Aug 2023 11:29:07 +0000 (13:29 +0200)]
efi-api: export UUID converter calls
(while exporting, do some minor simplifications)
Lennart Poettering [Sat, 21 Oct 2023 14:33:41 +0000 (16:33 +0200)]
tpm2-util: make tpm2_read_public() static, as we use it only internally in tpm2-util.c
Lennart Poettering [Mon, 23 Oct 2023 08:18:41 +0000 (10:18 +0200)]
tpm2-util: make tpm2_marshal_blob()/tpm2_unmarshal_blob() static
These are not used outside of tpm2-util.[ch], and the way they merge
public/private key pair into one blob is kinda specific to our
implementation, hence better should be hidden away, and not used for new
code anyway.
Julien Malka [Mon, 23 Oct 2023 00:37:40 +0000 (00:37 +0000)]
creds-utils: fix read_full_file_full call in read_credential_with_decryption
data was passed as a null pointer when an address was expected.
As a result, the assert was always tripped.
NAHO [Sun, 22 Oct 2023 16:34:24 +0000 (18:34 +0200)]
docs: correct parenthesis placement in 'man/tmpfiles.d.xml'
Correct the parenthesis placement in 'man/tmpfiles.d.xml' to prevent the
following formatting:
> lock ( shared or exclusive) is
Lennart Poettering [Sat, 21 Oct 2023 14:17:39 +0000 (16:17 +0200)]
tpm2-util: rename tpm2_calculate_name() → tpm2_calculate_pubkey_name()
We'll soon have a function for determining the name of an NV index,
hence let's rename the existing function for the same of a public key to
make clear it's about public keys only.
Luca Boccassi [Sat, 21 Oct 2023 10:51:09 +0000 (11:51 +0100)]
Merge pull request #29382 from YHNdnzj/sleep-round-two
shared/sleep-config,hibernate-util: cleanup round two
Martin Wilck [Fri, 20 Oct 2023 14:25:15 +0000 (16:25 +0200)]
units: modprobe@.service: don't unescape instance name
modprobe treats "-" and "_" interchangeably, thereby avoiding frequent
errors because some module names contain dashes and others underscores.
Because modprobe@.service unescapes the instance name, an attempt to
start "modprobe@dm-crypt.service" will run "modprobe -abq dm/crypt",
which is doomed to fail. "modprobe@dm_crypt.service" will work as
expected. Thus unescaping the instance name has surprising side effects.
Use "%i" instead.
Franck Bui [Fri, 20 Oct 2023 17:54:53 +0000 (19:54 +0200)]
test: install af_packet kernel module on openSUSE
Currently needed by test-dhcp-server unit test, af_packet is not built-in on
openSUSE distributions.
Luca Boccassi [Sat, 21 Oct 2023 10:38:23 +0000 (11:38 +0100)]
Merge pull request #29652 from yuwata/dhcp-cleanup-headers
dhcp: cleanup headers
Luca Boccassi [Sat, 21 Oct 2023 10:37:38 +0000 (11:37 +0100)]
Merge pull request #29650 from YHNdnzj/more-followup
Some more follow-ups for recent PRs
Mike Yuan [Fri, 20 Oct 2023 04:09:06 +0000 (12:09 +0800)]
shared/mount-util: log correct errno
Follow-up for
5f48198af82e5a6f40adf887291fdd47bcecf64c
Mike Yuan [Fri, 20 Oct 2023 14:52:12 +0000 (22:52 +0800)]
man,docs: suffix directories with /
Mike Yuan [Fri, 20 Oct 2023 06:54:49 +0000 (14:54 +0800)]
core/execute: use FOREACH_ARRAY and free_many more
Yu Watanabe [Thu, 19 Oct 2023 16:35:03 +0000 (01:35 +0900)]
network,dhcp: restart client with 'networkctl renew' when delayed by IPv6 only mode
This is convenient when the server supports IPv6 only mode.
Otherwise, we cannot request a new address during the client is waiting an
IPv6 connectivity. Note, the minimal timespan is 5min, and a server may
send a quite large value.
Yu Watanabe [Fri, 20 Oct 2023 16:27:52 +0000 (01:27 +0900)]
dhcp: split dhcp-internal.h into two
Yu Watanabe [Thu, 19 Oct 2023 16:21:42 +0000 (01:21 +0900)]
sd-dhcp-client: always use sd_dhcp_client.timeout_ipv6_only_mode for delaying subsequent task
Otherwise, sd_dhcp_client_set_ipv6_connectivity() may not work, as it
checks if the timer event source is enabled or not.
Yu Watanabe [Fri, 20 Oct 2023 16:03:00 +0000 (01:03 +0900)]
dhcp: move DHCP client specific definitions to dhcp-client-internal.h
Yu Watanabe [Thu, 19 Oct 2023 15:16:39 +0000 (00:16 +0900)]
sd-dhcp-client: add a short comment about IPv6 only mode
Yu Watanabe [Thu, 19 Oct 2023 15:01:15 +0000 (00:01 +0900)]
sd-dhcp-client: only send RENEW message when the client is in bound state
Fixes an issue reported at
https://github.com/systemd/systemd/pull/29544#issuecomment-
1762742561.
Yu Watanabe [Thu, 19 Oct 2023 14:57:44 +0000 (23:57 +0900)]
sd-dhcp-client: simplify the condition in sd_dhcp_client_get_lease()
The condition was outdated, e.g. SELECTING state does not have a lease.
See client_handle_offer() and client_enter_requesting().
The condition based on the state may become much complex in the future.
Let's use simpler condition.
Yu Watanabe [Fri, 20 Oct 2023 15:26:38 +0000 (00:26 +0900)]
dhcp: split out dhcp-network.h from dhcp-internal.h
Yu Watanabe [Fri, 20 Oct 2023 15:46:39 +0000 (00:46 +0900)]
dhcp: move DHCPState to dhcp-client-internal.h
All other definitions in dhcp-protocol.h are common for client and
server. Let's move DHCP client specific definitions.
Yu Watanabe [Fri, 20 Oct 2023 15:28:57 +0000 (00:28 +0900)]
fuzz: include library headers first
Mike Yuan [Mon, 16 Oct 2023 05:10:01 +0000 (13:10 +0800)]
hibernate-util: introduce hibernation_is_safe
After
7470b80763ac0f598ca1ef73d44763967119c18d, we refuse
to hibernate if we fail to write HibernateLocation EFI
variable and resume= is not set. Let's teach sleep_supported
to follow the practice too.
Mike Yuan [Thu, 28 Sep 2023 01:05:41 +0000 (09:05 +0800)]
hibernate-util: rework find_hibernate_location
* "HibernateLocation" struct is renamed to HibernationDevice
to avoid ambiguity with the EFI variable. Also, it no longer
takes the reference to a SwapEntry object, since it's really
unnecessary (only SwapEntry.path is used), but increases complexity.
* SwapEntry is no longer used externally.
* find_hibernate_location is split into read_swap_entries and
find_suitable_hibernation_device. The former reads all swap entries
into SwapEntries object for later use.
* Make use of btrfs_get_file_physical_offset_fd
Closes #25130
Mike Yuan [Sat, 30 Sep 2023 15:32:08 +0000 (23:32 +0800)]
hibernate-util: read_fiemap: add missing asserts
Mike Yuan [Mon, 16 Oct 2023 12:34:29 +0000 (20:34 +0800)]
sleep-config: introduce sleep_supported_full that returns a reason
Preparation for later commits.
Also some other cleanups:
* Add assertions
* Use FOREACH_ARRAY
Mike Yuan [Wed, 27 Sep 2023 22:43:06 +0000 (06:43 +0800)]
sleep-config: minor cleanup for can_sleep_{state,disk}
* Rename to sleep_{state,mode}_supported
* Treat unreadable/unwriable sysfs files as error
Mike Yuan [Sat, 30 Sep 2023 08:40:22 +0000 (16:40 +0800)]
test-btrfs-physical-offset: log correct errno
Valentin David [Thu, 19 Oct 2023 21:13:45 +0000 (23:13 +0200)]
stub: Ignore the boot counter when looking for .extra.d directory
If `foo+3-0.efi` is booted when there are some files in `foo.efi.extra.d`,
those files are ignored. But after the boot is blessed and the system rebooted,
those file are taken into account, and the boot is different from first
boot. This behavior is a bit puzzling.
Instead we now ignore the counter and always look for the extra files in
`foo.efi.extra.d` and always boot the same way.
Malte Poll [Fri, 20 Oct 2023 12:59:41 +0000 (12:59 +0000)]
mkfs-util: set timezone to UTC when copying files into fat partition
mcopy will set the modification time of created directories to the mtime
of the source directories but converts it to the timezone of the host.
This behavior is identical to Windows / DOS:
> The FAT file system stores time values based on the local time of the computer.
-- https://learn.microsoft.com/en-us/windows/win32/sysinfo/file-times
To achieve reproducible builds, mcopy should be invoked with TZ=UTC.
Co-authored-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
Lennart Poettering [Thu, 12 Oct 2023 14:28:38 +0000 (16:28 +0200)]
tpm2: move event tag sd-boot/sd-stub to make measurements with into src/fundamental/
Ultimately we want to be able to recognize these in userspace, hence
make them available in both UEFI mode and userspace.
While we are at it, let's rename the fields a bit, reflecting more what
they measure, not what the metadata is that we store about them.
Lennart Poettering [Sun, 16 Jul 2023 09:06:49 +0000 (11:06 +0200)]
sort-utils: add generic uint16_t comparison call
Lennart Poettering [Wed, 12 Jul 2023 20:50:25 +0000 (22:50 +0200)]
format-table: add new table_get_current_column() helper
Lennart Poettering [Fri, 7 Jul 2023 15:26:33 +0000 (17:26 +0200)]
format-table: add new uint32_t hex field type
Luca Boccassi [Fri, 20 Oct 2023 14:54:29 +0000 (15:54 +0100)]
Merge pull request #29644 from poettering/json-iovec
add iovec/base64 json helpers and other iovec tweaks
Daan De Meyer [Fri, 20 Oct 2023 14:42:12 +0000 (16:42 +0200)]
Merge pull request #29630 from DaanDeMeyer/manager-json
Various refactoring in preparation for adding JSON dump to pid 1
Luca Boccassi [Fri, 20 Oct 2023 12:46:46 +0000 (13:46 +0100)]
Merge pull request #29626 from bluca/auto_soft_reboot
systemctl: automatically softreboot/kexec if set up on reboot
Lennart Poettering [Fri, 20 Oct 2023 12:16:01 +0000 (14:16 +0200)]
repart: port to new "struct iovec" JSON + primitive helpers
Lennart Poettering [Thu, 19 Oct 2023 15:41:01 +0000 (17:41 +0200)]
json: add helpers for dispatching/building JSON with base64 struct iovecs
Lennart Poettering [Thu, 19 Oct 2023 15:04:04 +0000 (17:04 +0200)]
iovec-util: add some useful helpers for dealing with iovecs that refer to dynamic memory
Lennart Poettering [Thu, 19 Oct 2023 15:55:09 +0000 (17:55 +0200)]
tpm2-util: add line break where appropriate
Lennart Poettering [Thu, 19 Oct 2023 15:45:48 +0000 (17:45 +0200)]
tpm2-util: add a bunch of line breaks for an overly long bitmask
Daan De Meyer [Fri, 20 Oct 2023 10:31:56 +0000 (12:31 +0200)]
json: Introduce JSON_BUILD_CALLBACK
Daan De Meyer [Thu, 19 Oct 2023 14:51:08 +0000 (16:51 +0200)]
json: Introduce JSON_BUILD_STRING_SET
Daan De Meyer [Fri, 20 Oct 2023 10:07:32 +0000 (12:07 +0200)]
hashmap: Add extra uncounted entry to returned array from hashmap_dump_sorted()
This allows using the returned array as a strv.
Daan De Meyer [Thu, 19 Oct 2023 14:49:08 +0000 (16:49 +0200)]
manager: Introduce manager_get_progress() helper
Daan De Meyer [Thu, 19 Oct 2023 14:45:23 +0000 (16:45 +0200)]
unit: Move three helpers to unit.h
Daan De Meyer [Thu, 19 Oct 2023 14:42:38 +0000 (16:42 +0200)]
timer: Add two more helper functions
Daan De Meyer [Thu, 19 Oct 2023 14:41:52 +0000 (16:41 +0200)]
swap: Move two functions to swap.h
Daan De Meyer [Thu, 19 Oct 2023 14:41:04 +0000 (16:41 +0200)]
socket: Add one more helper
Daan De Meyer [Thu, 19 Oct 2023 14:38:47 +0000 (16:38 +0200)]
mount: Add more helpers
Daan De Meyer [Thu, 19 Oct 2023 14:37:35 +0000 (16:37 +0200)]
execute: Add more helper functions
Daan De Meyer [Thu, 19 Oct 2023 14:35:52 +0000 (16:35 +0200)]
core: Add two more to_string() functions
Daan De Meyer [Thu, 19 Oct 2023 14:34:19 +0000 (16:34 +0200)]
Add unit_type_to_capitalized_string()