diff --git a/docs/CODING_STYLE.md b/docs/CODING_STYLE.md index b8337fd097..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 @@ -431,12 +435,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 +454,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 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..abd54db8cc 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') @@ -315,7 +269,6 @@ libbasic = static_library( include_directories : includes, dependencies : [threads, libcap, - libblkid, libmount, libselinux, libm], 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 { 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