core: add %v specifier

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-07-19 02:45:27 -04:00
parent 61ad59b131
commit 6aaa8c2f78
6 changed files with 28 additions and 7 deletions

4
TODO
View File

@ -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()?

View File

@ -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>
@ -1293,6 +1293,11 @@
<entry>Host name</entry>
<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>
@ -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>

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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);