chiark / gitweb /
journal: fix iteration when we go backwards from the beginning of an array chain...
[elogind.git] / src / journal / journal-gatewayd.c
index 10224a1ac12dbe405e9d27ff44e37dd589acf203..384137b2bd614f573e6227a7c90918a955c1cf23 100644 (file)
@@ -32,8 +32,7 @@
 #include "sd-journal.h"
 #include "sd-daemon.h"
 #include "sd-bus.h"
-#include "bus-message.h"
-#include "bus-internal.h"
+#include "bus-util.h"
 #include "logs-show.h"
 #include "microhttpd-util.h"
 #include "build.h"
@@ -248,7 +247,7 @@ static ssize_t request_reader_entries(
                         }
                 }
 
-                r = output_journal(m->tmp, m->journal, m->mode, 0, OUTPUT_FULL_WIDTH);
+                r = output_journal(m->tmp, m->journal, m->mode, 0, OUTPUT_FULL_WIDTH, NULL);
                 if (r < 0) {
                         log_error("Failed to serialize item: %s", strerror(-r));
                         return MHD_CONTENT_READER_END_WITH_ERROR;
@@ -743,43 +742,31 @@ static int request_handler_file(
 }
 
 static int get_virtualization(char **v) {
-        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
         _cleanup_bus_unref_ sd_bus *bus = NULL;
-        const char *t;
         char *b;
         int r;
 
-        r = sd_bus_open_system(&bus);
+        r = sd_bus_default_system(&bus);
         if (r < 0)
                 return r;
 
-        r = sd_bus_call_method(
+        r = sd_bus_get_property_string(
                         bus,
                         "org.freedesktop.systemd1",
                         "/org/freedesktop/systemd1",
-                        "org.freedesktop.DBus.Properties",
-                        "Get",
-                        NULL,
-                        &reply,
-                        "ss",
                         "org.freedesktop.systemd1.Manager",
-                        "Virtualization");
-        if (r < 0)
-                return r;
-
-        r = sd_bus_message_read(reply, "v", "s", &t);
+                        "Virtualization",
+                        NULL,
+                        &b);
         if (r < 0)
                 return r;
 
-        if (isempty(t)) {
+        if (isempty(b)) {
+                free(b);
                 *v = NULL;
                 return 0;
         }
 
-        b = strdup(t);
-        if (!b)
-                return -ENOMEM;
-
         *v = b;
         return 1;
 }
@@ -936,22 +923,24 @@ static int parse_argv(int argc, char *argv[]) {
                 { "version", no_argument,       NULL, ARG_VERSION },
                 { "key",     required_argument, NULL, ARG_KEY     },
                 { "cert",    required_argument, NULL, ARG_CERT    },
-                { NULL,      0,                 NULL, 0           }
+                {}
         };
 
         assert(argc >= 0);
         assert(argv);
 
         while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0)
+
                 switch(c) {
+
+                case 'h':
+                        return help();
+
                 case ARG_VERSION:
                         puts(PACKAGE_STRING);
                         puts(SYSTEMD_FEATURES);
                         return 0;
 
-                case 'h':
-                        return help();
-
                 case ARG_KEY:
                         if (key_pem) {
                                 log_error("Key file specified twice");
@@ -982,8 +971,7 @@ static int parse_argv(int argc, char *argv[]) {
                         return -EINVAL;
 
                 default:
-                        log_error("Unknown option code %c", c);
-                        return -EINVAL;
+                        assert_not_reached("Unhandled option");
                 }
 
         if (optind < argc) {