]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #14046 from poettering/id128-uuid
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 18 Nov 2019 14:19:43 +0000 (15:19 +0100)
committerGitHub <noreply@github.com>
Mon, 18 Nov 2019 14:19:43 +0000 (15:19 +0100)
add "-u" switch to systemd-uuid for outputting ids in UUID format

src/id128/id128.c
src/journal/journalctl.c
src/shared/id128-print.c
src/shared/id128-print.h

index d3874dbb002429aa78530658078e045408b3359d..4c5d696c32aebace223fea7165d1557559a60b84 100644 (file)
@@ -7,14 +7,15 @@
 #include "id128-print.h"
 #include "main-func.h"
 #include "pretty-print.h"
+#include "terminal-util.h"
 #include "util.h"
 #include "verbs.h"
 
-static bool arg_pretty = false;
-static sd_id128_t arg_app = {};
+static Id128PrettyPrintMode arg_mode = ID128_PRINT_ID128;
+static sd_id128_t arg_app = SD_ID128_NULL;
 
 static int verb_new(int argc, char **argv, void *userdata) {
-        return id128_print_new(arg_pretty);
+        return id128_print_new(arg_mode);
 }
 
 static int verb_machine_id(int argc, char **argv, void *userdata) {
@@ -29,7 +30,7 @@ static int verb_machine_id(int argc, char **argv, void *userdata) {
                 return log_error_errno(r, "Failed to get %smachine-ID: %m",
                                        sd_id128_is_null(arg_app) ? "" : "app-specific ");
 
-        return id128_pretty_print(id, arg_pretty);
+        return id128_pretty_print(id, arg_mode);
 }
 
 static int verb_boot_id(int argc, char **argv, void *userdata) {
@@ -44,7 +45,7 @@ static int verb_boot_id(int argc, char **argv, void *userdata) {
                 return log_error_errno(r, "Failed to get %sboot-ID: %m",
                                        sd_id128_is_null(arg_app) ? "" : "app-specific ");
 
-        return id128_pretty_print(id, arg_pretty);
+        return id128_pretty_print(id, arg_mode);
 }
 
 static int verb_invocation_id(int argc, char **argv, void *userdata) {
@@ -59,7 +60,7 @@ static int verb_invocation_id(int argc, char **argv, void *userdata) {
         if (r < 0)
                 return log_error_errno(r, "Failed to get invocation-ID: %m");
 
-        return id128_pretty_print(id, arg_pretty);
+        return id128_pretty_print(id, arg_mode);
 }
 
 static int help(void) {
@@ -70,19 +71,22 @@ static int help(void) {
         if (r < 0)
                 return log_oom();
 
-        printf("%s [OPTIONS...] {COMMAND}\n\n"
-               "Generate and print id128 strings.\n\n"
-               "  -h --help               Show this help\n"
-               "  -p --pretty             Generate samples of program code\n"
-               "  -a --app-specific=ID    Generate app-specific IDs\n"
+        printf("%s [OPTIONS...] COMMAND\n\n"
+               "%sGenerate and print 128bit identifiers.%s\n"
                "\nCommands:\n"
                "  new                     Generate a new id128 string\n"
                "  machine-id              Print the ID of current machine\n"
                "  boot-id                 Print the ID of current boot\n"
                "  invocation-id           Print the ID of current invocation\n"
                "  help                    Show this help\n"
+               "\nOptions:\n"
+               "  -h --help               Show this help\n"
+               "  -p --pretty             Generate samples of program code\n"
+               "  -a --app-specific=ID    Generate app-specific IDs\n"
+               "  -u --uuid               Output in UUID format\n"
                "\nSee the %s for details.\n"
                , program_invocation_short_name
+               , ansi_highlight(), ansi_normal()
                , link
         );
 
@@ -103,6 +107,7 @@ static int parse_argv(int argc, char *argv[]) {
                 { "version",      no_argument,       NULL, ARG_VERSION      },
                 { "pretty",       no_argument,       NULL, 'p'              },
                 { "app-specific", required_argument, NULL, 'a'              },
+                { "uuid",         no_argument,       NULL, 'u'              },
                 {},
         };
 
@@ -111,7 +116,7 @@ static int parse_argv(int argc, char *argv[]) {
         assert(argc >= 0);
         assert(argv);
 
-        while ((c = getopt_long(argc, argv, "hpa:", options, NULL)) >= 0)
+        while ((c = getopt_long(argc, argv, "hpa:u", options, NULL)) >= 0)
                 switch (c) {
 
                 case 'h':
@@ -121,7 +126,7 @@ static int parse_argv(int argc, char *argv[]) {
                         return version();
 
                 case 'p':
-                        arg_pretty = true;
+                        arg_mode = ID128_PRINT_PRETTY;
                         break;
 
                 case 'a':
@@ -130,6 +135,10 @@ static int parse_argv(int argc, char *argv[]) {
                                 return log_error_errno(r, "Failed to parse \"%s\" as application-ID: %m", optarg);
                         break;
 
+                case 'u':
+                        arg_mode = ID128_PRINT_UUID;
+                        break;
+
                 case '?':
                         return -EINVAL;
 
index aca046d99fc6ecd51df996c1eae4a4b27c45fe1a..6c31a8954007fc1bbfbf39a236a053dceb06f8b8 100644 (file)
@@ -2048,7 +2048,7 @@ int main(int argc, char *argv[]) {
         switch (arg_action) {
 
         case ACTION_NEW_ID128:
-                r = id128_print_new(true);
+                r = id128_print_new(ID128_PRINT_PRETTY);
                 goto finish;
 
         case ACTION_SETUP_KEYS:
index febe3635baf55c991351d12e3ab782752471c260..356f41050786ce67558db18e618039287f50f8d4 100644 (file)
 #include "pretty-print.h"
 #include "terminal-util.h"
 
-int id128_pretty_print(sd_id128_t id, bool pretty) {
-        unsigned i;
+int id128_pretty_print(sd_id128_t id, Id128PrettyPrintMode mode) {
         _cleanup_free_ char *man_link = NULL, *mod_link = NULL;
         const char *on, *off;
+        unsigned i;
+
+        assert(mode >= 0);
+        assert(mode < _ID128_PRETTY_PRINT_MODE_MAX);
 
-        if (!pretty) {
+        if (mode == ID128_PRINT_ID128) {
                 printf(SD_ID128_FORMAT_STR "\n",
                        SD_ID128_FORMAT_VAL(id));
                 return 0;
+        } else if (mode == ID128_PRINT_UUID) {
+                printf(SD_ID128_UUID_FORMAT_STR "\n",
+                       SD_ID128_FORMAT_VAL(id));
+                return 0;
         }
 
         on = ansi_highlight();
@@ -35,7 +42,7 @@ int id128_pretty_print(sd_id128_t id, bool pretty) {
                "As UUID:\n"
                "%s" SD_ID128_UUID_FORMAT_STR "%s\n\n"
                "As %s macro:\n"
-               "%s#define MESSAGE_XYZ SD_ID128_MAKE(",
+               "%s#define XYZ SD_ID128_MAKE(",
                on, SD_ID128_FORMAT_VAL(id), off,
                on, SD_ID128_FORMAT_VAL(id), off,
                man_link,
@@ -46,14 +53,14 @@ int id128_pretty_print(sd_id128_t id, bool pretty) {
 
         printf("As Python constant:\n"
                ">>> import %s\n"
-               ">>> %sMESSAGE_XYZ = uuid.UUID('" SD_ID128_FORMAT_STR "')%s\n",
+               ">>> %sXYZ = uuid.UUID('" SD_ID128_FORMAT_STR "')%s\n",
                mod_link,
                on, SD_ID128_FORMAT_VAL(id), off);
 
         return 0;
 }
 
-int id128_print_new(bool pretty) {
+int id128_print_new(Id128PrettyPrintMode mode) {
         sd_id128_t id;
         int r;
 
@@ -61,5 +68,5 @@ int id128_print_new(bool pretty) {
         if (r < 0)
                 return log_error_errno(r, "Failed to generate ID: %m");
 
-        return id128_pretty_print(id, pretty);
+        return id128_pretty_print(id, mode);
 }
index 5d50de0fc89abeb7f7cbeecafc72ffba12f6b091..1dc5b6aae57b00b7d6b91ce3bc15fa425e718822 100644 (file)
@@ -6,5 +6,13 @@
 
 #include "sd-id128.h"
 
-int id128_pretty_print(sd_id128_t id, bool pretty);
-int id128_print_new(bool pretty);
+typedef enum Id128PrettyPrintMode {
+        ID128_PRINT_ID128,
+        ID128_PRINT_UUID,
+        ID128_PRINT_PRETTY,
+        _ID128_PRETTY_PRINT_MODE_MAX,
+        _ID128_PRETTY_PRINT_MODE_INVALID = -1
+} Id128PrettyPrintMode;
+
+int id128_pretty_print(sd_id128_t id, Id128PrettyPrintMode mode);
+int id128_print_new(Id128PrettyPrintMode mode);