chiark / gitweb /
journal: add high-level match option to filter by current boot id
authorLennart Poettering <lennart@poettering.net>
Thu, 18 Oct 2012 20:31:58 +0000 (22:31 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 18 Oct 2012 20:34:42 +0000 (22:34 +0200)
src/journal/journal-gatewayd.c

index 1d0559fdb6512a6789f7367250c6c9b8a5ac46fc..6a5db968e398e0928e873e1a7105c1126bde513b 100644 (file)
@@ -416,6 +416,38 @@ static int request_parse_arguments_iterator(
                 return MHD_YES;
         }
 
+        if (streq(key, "boot")) {
+                if (isempty(value))
+                        r = true;
+                else {
+                        r = parse_boolean(value);
+                        if (r < 0) {
+                                m->argument_parse_error = r;
+                                return MHD_NO;
+                        }
+                }
+
+                if (r) {
+                        char match[9 + 32 + 1] = "_BOOT_ID=";
+                        sd_id128_t bid;
+
+                        r = sd_id128_get_boot(&bid);
+                        if (r < 0) {
+                                log_error("Failed to get boot ID: %s", strerror(-r));
+                                return MHD_NO;
+                        }
+
+                        sd_id128_to_string(bid, match + 9);
+                        r = sd_journal_add_match(m->journal, match, sizeof(match)-1);
+                        if (r < 0) {
+                                m->argument_parse_error = r;
+                                return MHD_NO;
+                        }
+                }
+
+                return MHD_YES;
+        }
+
         p = strjoin(key, "=", strempty(value), NULL);
         if (!p) {
                 m->argument_parse_error = log_oom();