core: add %v specifier

This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2013-07-19 02:45:49 -04:00
parent 61ad59b131
commit 6aaa8c2f78
6 changed files with 28 additions and 7 deletions
+3 -1
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);
+12
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);
}
+1
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);