diff options
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | man/systemd.unit.xml | 10 | ||||
-rw-r--r-- | src/core/unit-printf.c | 4 | ||||
-rw-r--r-- | src/shared/install-printf.c | 4 | ||||
-rw-r--r-- | src/shared/specifier.c | 12 | ||||
-rw-r--r-- | src/shared/specifier.h | 1 |
6 files changed, 28 insertions, 7 deletions
@@ -60,7 +60,7 @@ Features: * given that logind/machined now let PID 1 do all nasty work we can probably reduce the capability set they retain substantially. -* btfs raid assembly: some .device jobs stay stuck in the queue +* btrfs raid assembly: some .device jobs stay stuck in the queue * Fedora: add an rpmlint check that verifies that all unit files in the RPM are listed in %systemd_post macros. @@ -80,8 +80,6 @@ Features: * journald: optionally, when messages with a high log priority are logged, sync() immediately. -* introduce %v resolving to the string returned by "uname -r" - * systemctl list-unit-files should list generated files (and probably with a new state "generated" for them, or so) * do we really need both hasprefix() and startswith()? diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index f45632a0e3..65ba545037 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1175,7 +1175,7 @@ </variablelist> <para>The following specifiers are interpreted in the - Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b. + Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b, %v. For their meaning see the next section. </para> </refsect1> @@ -1294,6 +1294,11 @@ <entry>The hostname of the running system.</entry> </row> <row> + <entry><literal>%v</literal></entry> + <entry>Kernel release</entry> + <entry>Identical to <command>uname -r</command> output.</entry> + </row> + <row> <entry><literal>%%</literal></entry> <entry>Escaped %</entry> <entry>Single percent sign.</entry> @@ -1321,7 +1326,8 @@ <citerefentry><refentrytitle>systemd.snapshot</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>, <citerefentry><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>, - <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry> + <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>, + <citerefentry><refentrytitle>uname</refentrytitle><manvolnum>1</manvolnum></citerefentry> </para> </refsect1> diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index caf51259d2..ffc203dd92 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -268,6 +268,7 @@ char *unit_full_printf(Unit *u, const char *format) { * %m the machine ID of the running system * %H the host name of the running system * %b the boot ID of the running system + * %v `uname -r` of the running system */ const Specifier table[] = { @@ -291,7 +292,8 @@ char *unit_full_printf(Unit *u, const char *format) { { 'm', specifier_machine_id, NULL }, { 'H', specifier_host_name, NULL }, { 'b', specifier_boot_id, NULL }, - { 0, NULL, NULL } + { 'v', specifier_kernel_release, NULL }, + {} }; assert(format); diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c index c44459b4e0..1157ea989b 100644 --- a/src/shared/install-printf.c +++ b/src/shared/install-printf.c @@ -108,6 +108,7 @@ char *install_full_printf(InstallInfo *i, const char *format) { * %m the machine ID of the running system * %H the host name of the running system * %b the boot ID of the running system + * %v `uname -r` of the running system */ const Specifier table[] = { @@ -122,7 +123,8 @@ char *install_full_printf(InstallInfo *i, const char *format) { { 'm', specifier_machine_id, NULL }, { 'H', specifier_host_name, NULL }, { 'b', specifier_boot_id, NULL }, - { 0, NULL, NULL } + { 'v', specifier_kernel_release, NULL }, + {} }; assert(i); diff --git a/src/shared/specifier.c b/src/shared/specifier.c index 7577c91052..bb8859fdfd 100644 --- a/src/shared/specifier.c +++ b/src/shared/specifier.c @@ -20,6 +20,7 @@ ***/ #include <string.h> +#include <sys/utsname.h> #include "macro.h" #include "util.h" @@ -145,3 +146,14 @@ char *specifier_boot_id(char specifier, void *data, void *userdata) { char *specifier_host_name(char specifier, void *data, void *userdata) { return gethostname_malloc(); } + +char *specifier_kernel_release(char specifier, void *data, void *userdata) { + struct utsname uts; + int r; + + r = uname(&uts); + if (r < 0) + return NULL; + + return strdup(uts.release); +} diff --git a/src/shared/specifier.h b/src/shared/specifier.h index 0440dcac48..d13e6406b6 100644 --- a/src/shared/specifier.h +++ b/src/shared/specifier.h @@ -36,3 +36,4 @@ char *specifier_string(char specifier, void *data, void *userdata); char *specifier_machine_id(char specifier, void *data, void *userdata); char *specifier_boot_id(char specifier, void *data, void *userdata); char *specifier_host_name(char specifier, void *data, void *userdata); +char *specifier_kernel_release(char specifier, void *data, void *userdata); |