From 6aaa8c2f783cd1b3ac27c5ce40625d032e7e3d71 Mon Sep 17 00:00:00 2001 From: Zbigniew Jędrzejewski-Szmek Date: Fri, 19 Jul 2013 02:45:27 -0400 Subject: core: add %v specifier --- src/core/unit-printf.c | 4 +++- src/shared/install-printf.c | 4 +++- src/shared/specifier.c | 12 ++++++++++++ src/shared/specifier.h | 1 + 4 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src') 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 +#include #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); -- cgit v1.2.3-54-g00ecf