***/
#include <string.h>
+#include <sys/utsname.h>
#include "macro.h"
#include "util.h"
char* specifier_string(char specifier, void *data, void *userdata) {
return strdup(strempty(data));
}
+
+char *specifier_machine_id(char specifier, void *data, void *userdata) {
+ sd_id128_t id;
+ char *buf;
+ int r;
+
+ r = sd_id128_get_machine(&id);
+ if (r < 0)
+ return NULL;
+
+ buf = new(char, 33);
+ if (!buf)
+ return NULL;
+
+ return sd_id128_to_string(id, buf);
+}
+
+char *specifier_boot_id(char specifier, void *data, void *userdata) {
+ sd_id128_t id;
+ char *buf;
+ int r;
+
+ r = sd_id128_get_boot(&id);
+ if (r < 0)
+ return NULL;
+
+ buf = new(char, 33);
+ if (!buf)
+ return NULL;
+
+ return sd_id128_to_string(id, buf);
+}
+
+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);
+}