From d284b82b3edcfa610c72e66444ff969396be1e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 19 Nov 2018 11:12:28 +0100 Subject: [PATCH 1/5] Move various files that don't need to be in basic/ to shared/ This doesn't have much effect on the final build, because we link libbasic.a into libsystemd-shared.so, so in the end, all the object built from basic/ end up in libsystemd-shared. And when the static library is linked into binaries, any objects that are included in it but are not used are trimmed. Hence, the size of output artifacts doesn't change: $ du -sb /var/tmp/inst* 54181861 /var/tmp/inst1 (old) 54207441 /var/tmp/inst1s (old split-usr) 54182477 /var/tmp/inst2 (new) 54208041 /var/tmp/inst2s (new split-usr) (The negligible change in size is because libsystemd-shared.so is bigger by a few hundred bytes. I guess it's because symbols are named differently or something like that.) The effect is on the build process, in particular partial builds. This change effectively moves the requirements on some build steps toward the leaves of the dependency tree. Two effects: - when building items that do not depend on libsystemd-shared, we build less stuff for libbasic.a (which wouldn't be used anyway, so it's a net win). - when building items that do depend on libshared, we reduce libbasic.a as a synchronization point, possibly allowing better parallelism. Method: 1. copy list of .h files from src/basic/meson.build to /tmp/basic 2. $ for i in $(grep '.h$' /tmp/basic); do echo $i; git --no-pager grep "include \"$i\"" src/basic/ 'src/lib*' 'src/nss-*' 'src/journal/sd-journal.c' |grep -v "${i%.h}.c";echo ;done | less --- meson.build | 2 +- src/basic/meson.build | 46 -------------------- src/{basic => shared}/barrier.c | 0 src/{basic => shared}/barrier.h | 0 src/{basic => shared}/bitmap.c | 0 src/{basic => shared}/bitmap.h | 0 src/{basic => shared}/blkid-util.h | 0 src/{basic => shared}/bpf-program.c | 0 src/{basic => shared}/bpf-program.h | 0 src/{basic => shared}/calendarspec.c | 0 src/{basic => shared}/calendarspec.h | 0 src/{basic => shared}/clock-util.c | 0 src/{basic => shared}/clock-util.h | 0 src/{basic => shared}/cpu-set-util.c | 0 src/{basic => shared}/cpu-set-util.h | 0 src/{basic => shared}/crypt-util.c | 0 src/{basic => shared}/crypt-util.h | 0 src/{basic => shared}/exec-util.c | 0 src/{basic => shared}/exec-util.h | 0 src/{basic => shared}/exit-status.c | 0 src/{basic => shared}/exit-status.h | 0 src/{basic => shared}/fileio-label.c | 0 src/{basic => shared}/fileio-label.h | 0 src/{basic => shared}/format-table.c | 0 src/{basic => shared}/format-table.h | 0 src/{basic => shared}/journal-importer.c | 0 src/{basic => shared}/journal-importer.h | 0 src/{basic => shared}/json-internal.h | 0 src/{basic => shared}/json.c | 0 src/{basic => shared}/json.h | 0 src/{basic => shared}/lockfile-util.c | 0 src/{basic => shared}/lockfile-util.h | 0 src/shared/meson.build | 46 ++++++++++++++++++++ src/{basic => shared}/os-util.c | 0 src/{basic => shared}/os-util.h | 0 src/{basic => shared}/reboot-util.c | 0 src/{basic => shared}/reboot-util.h | 0 src/{basic => shared}/rlimit-util.c | 0 src/{basic => shared}/rlimit-util.h | 0 src/{basic => shared}/securebits-util.c | 0 src/{basic => shared}/securebits-util.h | 0 src/{basic => shared}/socket-protocol-list.c | 0 src/{basic => shared}/socket-protocol-list.h | 0 src/{basic => shared}/verbs.c | 0 src/{basic => shared}/verbs.h | 0 src/{basic => shared}/web-util.c | 0 src/{basic => shared}/web-util.h | 0 src/{basic => shared}/xml.c | 0 src/{basic => shared}/xml.h | 0 49 files changed, 47 insertions(+), 47 deletions(-) rename src/{basic => shared}/barrier.c (100%) rename src/{basic => shared}/barrier.h (100%) rename src/{basic => shared}/bitmap.c (100%) rename src/{basic => shared}/bitmap.h (100%) rename src/{basic => shared}/blkid-util.h (100%) rename src/{basic => shared}/bpf-program.c (100%) rename src/{basic => shared}/bpf-program.h (100%) rename src/{basic => shared}/calendarspec.c (100%) rename src/{basic => shared}/calendarspec.h (100%) rename src/{basic => shared}/clock-util.c (100%) rename src/{basic => shared}/clock-util.h (100%) rename src/{basic => shared}/cpu-set-util.c (100%) rename src/{basic => shared}/cpu-set-util.h (100%) rename src/{basic => shared}/crypt-util.c (100%) rename src/{basic => shared}/crypt-util.h (100%) rename src/{basic => shared}/exec-util.c (100%) rename src/{basic => shared}/exec-util.h (100%) rename src/{basic => shared}/exit-status.c (100%) rename src/{basic => shared}/exit-status.h (100%) rename src/{basic => shared}/fileio-label.c (100%) rename src/{basic => shared}/fileio-label.h (100%) rename src/{basic => shared}/format-table.c (100%) rename src/{basic => shared}/format-table.h (100%) rename src/{basic => shared}/journal-importer.c (100%) rename src/{basic => shared}/journal-importer.h (100%) rename src/{basic => shared}/json-internal.h (100%) rename src/{basic => shared}/json.c (100%) rename src/{basic => shared}/json.h (100%) rename src/{basic => shared}/lockfile-util.c (100%) rename src/{basic => shared}/lockfile-util.h (100%) rename src/{basic => shared}/os-util.c (100%) rename src/{basic => shared}/os-util.h (100%) rename src/{basic => shared}/reboot-util.c (100%) rename src/{basic => shared}/reboot-util.h (100%) rename src/{basic => shared}/rlimit-util.c (100%) rename src/{basic => shared}/rlimit-util.h (100%) rename src/{basic => shared}/securebits-util.c (100%) rename src/{basic => shared}/securebits-util.h (100%) rename src/{basic => shared}/socket-protocol-list.c (100%) rename src/{basic => shared}/socket-protocol-list.h (100%) rename src/{basic => shared}/verbs.c (100%) rename src/{basic => shared}/verbs.h (100%) rename src/{basic => shared}/web-util.c (100%) rename src/{basic => shared}/web-util.h (100%) rename src/{basic => shared}/xml.c (100%) rename src/{basic => shared}/xml.h (100%) diff --git a/meson.build b/meson.build index 906960fb71..b989c664b1 100644 --- a/meson.build +++ b/meson.build @@ -1666,7 +1666,7 @@ endif if conf.get('HAVE_BLKID') == 1 executable('systemd-gpt-auto-generator', 'src/gpt-auto-generator/gpt-auto-generator.c', - 'src/basic/blkid-util.h', + 'src/shared/blkid-util.h', include_directories : includes, link_with : [libshared], dependencies : libblkid, diff --git a/src/basic/meson.build b/src/basic/meson.build index 3e2325f41f..3b3187de83 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -15,23 +15,14 @@ basic_sources = files(''' async.h audit-util.c audit-util.h - barrier.c - barrier.h - bitmap.c - bitmap.h - blkid-util.h blockdev-util.c blockdev-util.h - bpf-program.c - bpf-program.h btrfs-ctree.h btrfs-util.c btrfs-util.h build.h bus-label.c bus-label.h - calendarspec.c - calendarspec.h cap-list.c cap-list.h capability-util.c @@ -40,16 +31,10 @@ basic_sources = files(''' cgroup-util.h chattr-util.c chattr-util.h - clock-util.c - clock-util.h conf-files.c conf-files.h copy.c copy.h - cpu-set-util.c - cpu-set-util.h - crypt-util.c - crypt-util.h def.h device-nodes.c device-nodes.h @@ -63,20 +48,12 @@ basic_sources = files(''' escape.h ether-addr-util.c ether-addr-util.h - exec-util.c - exec-util.h - exit-status.c - exit-status.h extract-word.c extract-word.h fd-util.c fd-util.h - fileio-label.c - fileio-label.h fileio.c fileio.h - format-table.c - format-table.h format-util.h fs-util.c fs-util.h @@ -97,11 +74,6 @@ basic_sources = files(''' io-util.c io-util.h ioprio.h - journal-importer.c - journal-importer.h - json-internal.h - json.c - json.h khash.c khash.h label.c @@ -109,8 +81,6 @@ basic_sources = files(''' list.h locale-util.c locale-util.h - lockfile-util.c - lockfile-util.h log.c log.h login-util.c @@ -129,8 +99,6 @@ basic_sources = files(''' nss-util.h ordered-set.c ordered-set.h - os-util.c - os-util.h pager.c pager.h parse-util.c @@ -151,17 +119,11 @@ basic_sources = files(''' ratelimit.h raw-clone.h raw-reboot.h - reboot-util.c - reboot-util.h refcnt.h replace-var.c replace-var.h - rlimit-util.c - rlimit-util.h rm-rf.c rm-rf.h - securebits-util.c - securebits-util.h securebits.h selinux-util.c selinux-util.h @@ -175,8 +137,6 @@ basic_sources = files(''' smack-util.c smack-util.h socket-label.c - socket-protocol-list.c - socket-protocol-list.h socket-util.c socket-util.h sparse-endian.h @@ -213,16 +173,10 @@ basic_sources = files(''' utf8.h util.c util.h - verbs.c - verbs.h virt.c virt.h - web-util.c - web-util.h xattr-util.c xattr-util.h - xml.c - xml.h '''.split()) missing_h = files('missing.h') diff --git a/src/basic/barrier.c b/src/shared/barrier.c similarity index 100% rename from src/basic/barrier.c rename to src/shared/barrier.c diff --git a/src/basic/barrier.h b/src/shared/barrier.h similarity index 100% rename from src/basic/barrier.h rename to src/shared/barrier.h diff --git a/src/basic/bitmap.c b/src/shared/bitmap.c similarity index 100% rename from src/basic/bitmap.c rename to src/shared/bitmap.c diff --git a/src/basic/bitmap.h b/src/shared/bitmap.h similarity index 100% rename from src/basic/bitmap.h rename to src/shared/bitmap.h diff --git a/src/basic/blkid-util.h b/src/shared/blkid-util.h similarity index 100% rename from src/basic/blkid-util.h rename to src/shared/blkid-util.h diff --git a/src/basic/bpf-program.c b/src/shared/bpf-program.c similarity index 100% rename from src/basic/bpf-program.c rename to src/shared/bpf-program.c diff --git a/src/basic/bpf-program.h b/src/shared/bpf-program.h similarity index 100% rename from src/basic/bpf-program.h rename to src/shared/bpf-program.h diff --git a/src/basic/calendarspec.c b/src/shared/calendarspec.c similarity index 100% rename from src/basic/calendarspec.c rename to src/shared/calendarspec.c diff --git a/src/basic/calendarspec.h b/src/shared/calendarspec.h similarity index 100% rename from src/basic/calendarspec.h rename to src/shared/calendarspec.h diff --git a/src/basic/clock-util.c b/src/shared/clock-util.c similarity index 100% rename from src/basic/clock-util.c rename to src/shared/clock-util.c diff --git a/src/basic/clock-util.h b/src/shared/clock-util.h similarity index 100% rename from src/basic/clock-util.h rename to src/shared/clock-util.h diff --git a/src/basic/cpu-set-util.c b/src/shared/cpu-set-util.c similarity index 100% rename from src/basic/cpu-set-util.c rename to src/shared/cpu-set-util.c diff --git a/src/basic/cpu-set-util.h b/src/shared/cpu-set-util.h similarity index 100% rename from src/basic/cpu-set-util.h rename to src/shared/cpu-set-util.h diff --git a/src/basic/crypt-util.c b/src/shared/crypt-util.c similarity index 100% rename from src/basic/crypt-util.c rename to src/shared/crypt-util.c diff --git a/src/basic/crypt-util.h b/src/shared/crypt-util.h similarity index 100% rename from src/basic/crypt-util.h rename to src/shared/crypt-util.h diff --git a/src/basic/exec-util.c b/src/shared/exec-util.c similarity index 100% rename from src/basic/exec-util.c rename to src/shared/exec-util.c diff --git a/src/basic/exec-util.h b/src/shared/exec-util.h similarity index 100% rename from src/basic/exec-util.h rename to src/shared/exec-util.h diff --git a/src/basic/exit-status.c b/src/shared/exit-status.c similarity index 100% rename from src/basic/exit-status.c rename to src/shared/exit-status.c diff --git a/src/basic/exit-status.h b/src/shared/exit-status.h similarity index 100% rename from src/basic/exit-status.h rename to src/shared/exit-status.h diff --git a/src/basic/fileio-label.c b/src/shared/fileio-label.c similarity index 100% rename from src/basic/fileio-label.c rename to src/shared/fileio-label.c diff --git a/src/basic/fileio-label.h b/src/shared/fileio-label.h similarity index 100% rename from src/basic/fileio-label.h rename to src/shared/fileio-label.h diff --git a/src/basic/format-table.c b/src/shared/format-table.c similarity index 100% rename from src/basic/format-table.c rename to src/shared/format-table.c diff --git a/src/basic/format-table.h b/src/shared/format-table.h similarity index 100% rename from src/basic/format-table.h rename to src/shared/format-table.h diff --git a/src/basic/journal-importer.c b/src/shared/journal-importer.c similarity index 100% rename from src/basic/journal-importer.c rename to src/shared/journal-importer.c diff --git a/src/basic/journal-importer.h b/src/shared/journal-importer.h similarity index 100% rename from src/basic/journal-importer.h rename to src/shared/journal-importer.h diff --git a/src/basic/json-internal.h b/src/shared/json-internal.h similarity index 100% rename from src/basic/json-internal.h rename to src/shared/json-internal.h diff --git a/src/basic/json.c b/src/shared/json.c similarity index 100% rename from src/basic/json.c rename to src/shared/json.c diff --git a/src/basic/json.h b/src/shared/json.h similarity index 100% rename from src/basic/json.h rename to src/shared/json.h diff --git a/src/basic/lockfile-util.c b/src/shared/lockfile-util.c similarity index 100% rename from src/basic/lockfile-util.c rename to src/shared/lockfile-util.c diff --git a/src/basic/lockfile-util.h b/src/shared/lockfile-util.h similarity index 100% rename from src/basic/lockfile-util.h rename to src/shared/lockfile-util.h diff --git a/src/shared/meson.build b/src/shared/meson.build index c692f012b1..f7f63a5404 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -8,24 +8,39 @@ shared_sources = files(''' apparmor-util.h ask-password-api.c ask-password-api.h + barrier.c + barrier.h base-filesystem.c base-filesystem.h + bitmap.c + bitmap.h + blkid-util.h boot-timestamps.c boot-timestamps.h bootspec.c bootspec.h + bpf-program.c + bpf-program.h bus-unit-util.c bus-unit-util.h bus-util.c bus-util.h + calendarspec.c + calendarspec.h cgroup-show.c cgroup-show.h clean-ipc.c clean-ipc.h + clock-util.c + clock-util.h condition.c condition.h conf-parser.c conf-parser.h + cpu-set-util.c + cpu-set-util.h + crypt-util.c + crypt-util.h dev-setup.c dev-setup.h dissect-image.c @@ -37,9 +52,17 @@ shared_sources = files(''' efivars.c efivars.h enable-mempool.c + exec-util.c + exec-util.h + exit-status.c + exit-status.h fdset.c fdset.h + fileio-label.c + fileio-label.h firewall-util.h + format-table.c + format-table.h fstab-util.c fstab-util.h generator.c @@ -56,8 +79,15 @@ shared_sources = files(''' install-printf.h install.c install.h + journal-importer.c + journal-importer.h journal-util.c journal-util.h + json-internal.h + json.c + json.h + lockfile-util.c + lockfile-util.h logs-show.c logs-show.h loop-util.c @@ -69,19 +99,29 @@ shared_sources = files(''' module-util.h nsflags.c nsflags.h + os-util.c + os-util.h output-mode.c output-mode.h path-lookup.c path-lookup.h ptyfwd.c ptyfwd.h + reboot-util.c + reboot-util.h resolve-util.c resolve-util.h + rlimit-util.c + rlimit-util.h seccomp-util.h + securebits-util.c + securebits-util.h serialize.c serialize.h sleep-config.c sleep-config.h + socket-protocol-list.c + socket-protocol-list.h spawn-ask-password-agent.c spawn-ask-password-agent.h spawn-polkit-agent.c @@ -99,13 +139,19 @@ shared_sources = files(''' uid-range.c uid-range.h utmp-wtmp.h + verbs.c + verbs.h vlan-util.c vlan-util.h volatile-util.c volatile-util.h watchdog.c watchdog.h + web-util.c + web-util.h wireguard-netlink.h + xml.c + xml.h '''.split()) if get_option('tests') != 'false' diff --git a/src/basic/os-util.c b/src/shared/os-util.c similarity index 100% rename from src/basic/os-util.c rename to src/shared/os-util.c diff --git a/src/basic/os-util.h b/src/shared/os-util.h similarity index 100% rename from src/basic/os-util.h rename to src/shared/os-util.h diff --git a/src/basic/reboot-util.c b/src/shared/reboot-util.c similarity index 100% rename from src/basic/reboot-util.c rename to src/shared/reboot-util.c diff --git a/src/basic/reboot-util.h b/src/shared/reboot-util.h similarity index 100% rename from src/basic/reboot-util.h rename to src/shared/reboot-util.h diff --git a/src/basic/rlimit-util.c b/src/shared/rlimit-util.c similarity index 100% rename from src/basic/rlimit-util.c rename to src/shared/rlimit-util.c diff --git a/src/basic/rlimit-util.h b/src/shared/rlimit-util.h similarity index 100% rename from src/basic/rlimit-util.h rename to src/shared/rlimit-util.h diff --git a/src/basic/securebits-util.c b/src/shared/securebits-util.c similarity index 100% rename from src/basic/securebits-util.c rename to src/shared/securebits-util.c diff --git a/src/basic/securebits-util.h b/src/shared/securebits-util.h similarity index 100% rename from src/basic/securebits-util.h rename to src/shared/securebits-util.h diff --git a/src/basic/socket-protocol-list.c b/src/shared/socket-protocol-list.c similarity index 100% rename from src/basic/socket-protocol-list.c rename to src/shared/socket-protocol-list.c diff --git a/src/basic/socket-protocol-list.h b/src/shared/socket-protocol-list.h similarity index 100% rename from src/basic/socket-protocol-list.h rename to src/shared/socket-protocol-list.h diff --git a/src/basic/verbs.c b/src/shared/verbs.c similarity index 100% rename from src/basic/verbs.c rename to src/shared/verbs.c diff --git a/src/basic/verbs.h b/src/shared/verbs.h similarity index 100% rename from src/basic/verbs.h rename to src/shared/verbs.h diff --git a/src/basic/web-util.c b/src/shared/web-util.c similarity index 100% rename from src/basic/web-util.c rename to src/shared/web-util.c diff --git a/src/basic/web-util.h b/src/shared/web-util.h similarity index 100% rename from src/basic/web-util.h rename to src/shared/web-util.h diff --git a/src/basic/xml.c b/src/shared/xml.c similarity index 100% rename from src/basic/xml.c rename to src/shared/xml.c diff --git a/src/basic/xml.h b/src/shared/xml.h similarity index 100% rename from src/basic/xml.h rename to src/shared/xml.h From 4de8d971f0ccad872c3576636e1ae5a972334d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 19 Nov 2018 11:35:33 +0100 Subject: [PATCH 2/5] meson: drop libblkid from libbasic This doesn't seem to change anything, because libmount links to libblkid anyway. But we don't need to include this dep directly in libbasic. --- src/basic/meson.build | 1 - 1 file changed, 1 deletion(-) diff --git a/src/basic/meson.build b/src/basic/meson.build index 3b3187de83..abd54db8cc 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -269,7 +269,6 @@ libbasic = static_library( include_directories : includes, dependencies : [threads, libcap, - libblkid, libmount, libselinux, libm], From a527f70a41d96a754ab02915a69b4e4bdea18cc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 19 Nov 2018 13:14:21 +0100 Subject: [PATCH 3/5] CODING_STYLE: clarify the rules for the src/basic & src/shared split The rule is changed from "put in basic unless there's a reason not to" to "put in shared unless there's a reason not to", to match the change done in previous commit. This minimizes libbasic. See previous commit for the reasons why this is useful. Previously, the guideline was based on whether the files in question use "publicly exported APIs". This distinction is not particularly relevant. Let's consider all other programs we compile: most of them use "publicly exported APIs", usually linking to libsystemd-shared.so for the actual code. But those programs are not forced to be in src/basic, and the distinction whether they happen to use 'sd-*.h' or not is of no importance. The same is true for files in src/shared/. If we didn't have publicly exported shared objects, we'd put everything in libsystemd-shared.so. So let's only move things out of it that we need to. Previous guideline was not "wrong", in the sense that it created *a* split that was functional (no code in src/shared was required in the publicly exported shared objects), but it put more files in basic/ then necessary. Not much changes in practice, because (as previous commit shows), moving files between libbasic.a and libsystemd-shared.so mostly just changes compilation order. The list of components which cannot use libsystemd-shared.so is adjusted. --- docs/CODING_STYLE.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/CODING_STYLE.md b/docs/CODING_STYLE.md index b8337fd097..abcdaab4ac 100644 --- a/docs/CODING_STYLE.md +++ b/docs/CODING_STYLE.md @@ -431,12 +431,13 @@ want to call it "big endian" right-away. - You might wonder what kind of common code belongs in `src/shared/` and what - belongs in `src/basic/`. The split is like this: anything that uses public APIs - we expose (i.e. any of the sd-bus, sd-login, sd-id128, ... APIs) must be - located in `src/shared/`. All stuff that only uses external libraries from - other projects (such as glibc's APIs), or APIs from `src/basic/` itself should - be placed in `src/basic/`. Conversely, `src/libsystemd/` may only use symbols - from `src/basic`, but not from `src/shared/`. + belongs in `src/basic/`. The split is like this: anything that is used to + implement the public shared object we provide (sd-bus, sd-login, sd-id128, + nss-systemd, nss-mymachines, nss-resolve, nss-myhostname, pam_systemd), must + be located in `src/basic` (those objects are not allowed to link to + libsystemd-shared.so). Conversly, anything which is shared between multiple + components and does not need to be in `src/basic/`, should be in + `src/shared/`. To summarize: @@ -449,7 +450,9 @@ - may not use any code outside of `src/basic/`, `src/libsystemd/` `src/shared/` - - may be used by all code in the tree, except for code in `src/basic/`, `src/libsystemd/` + - may be used by all code in the tree, except for code in `src/basic/`, + `src/libsystemd/`, `src/nss-*`, `src/login/pam_systemd.*`, and files under + `src/journal/` that end up in `libjournal-client.a` convenience library. - may not use any code outside of `src/basic/`, `src/libsystemd/`, `src/shared/` - Our focus is on the GNU libc (glibc), not any other libcs. If other libcs are From a98dc693e417bc1a813d5fe1eac663dbbf5ee91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 19 Nov 2018 13:24:34 +0100 Subject: [PATCH 4/5] CODING_STYLE: fix rules for STRLEN and recommend strjoina more strongly Again, this mostly matches what is happening in the codebase already. --- docs/CODING_STYLE.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/CODING_STYLE.md b/docs/CODING_STYLE.md index abcdaab4ac..e70c56b766 100644 --- a/docs/CODING_STYLE.md +++ b/docs/CODING_STYLE.md @@ -373,12 +373,16 @@ something some time", or so is a lazy excuse. Always wait for the proper event, instead of doing time-based poll loops. -- To determine the length of a constant string `"foo"`, don't bother - with `sizeof("foo")-1`, please use `STRLEN()` instead. +- To determine the length of a constant string `"foo"`, don't bother with + `sizeof("foo")-1`, please use `strlen()` instead (both gcc and clang optimize + the call away for fixed strings). The only exception is when declaring an + array. In that case use STRLEN, which evalutates to a static constant and + doesn't force the compiler to create a VLA. -- If you want to concatenate two or more strings, consider using - `strjoin()` rather than `asprintf()`, as the latter is a lot - slower. This matters particularly in inner loops. +- If you want to concatenate two or more strings, consider using `strjoina()` + or `strjoin()` rather than `asprintf()`, as the latter is a lot slower. This + matters particularly in inner loops (but note that `strjoina()` cannot be + used there). - Please avoid using global variables as much as you can. And if you do use them make sure they are static at least, instead of From a03d43593c1b39fa82000dd4d1df55b2bfec0828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 19 Nov 2018 13:29:16 +0100 Subject: [PATCH 5/5] journal: fix sort order of header includes --- src/journal/journal-file.c | 3 ++- src/journal/journal-file.h | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 390996a815..1174a52a66 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -10,6 +10,8 @@ #include #include +#include "sd-event.h" + #include "alloc-util.h" #include "btrfs-util.h" #include "chattr-util.h" @@ -23,7 +25,6 @@ #include "parse-util.h" #include "path-util.h" #include "random-util.h" -#include "sd-event.h" #include "set.h" #include "stat-util.h" #include "string-util.h" diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h index 09b7ba090d..29e324d8cf 100644 --- a/src/journal/journal-file.h +++ b/src/journal/journal-file.h @@ -4,16 +4,16 @@ #include #if HAVE_GCRYPT -#include +# include #endif +#include "sd-event.h" #include "sd-id128.h" #include "hashmap.h" #include "journal-def.h" #include "macro.h" #include "mmap-cache.h" -#include "sd-event.h" #include "sparse-endian.h" typedef struct JournalMetrics {