X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournal-gatewayd.c;h=6a5db968e398e0928e873e1a7105c1126bde513b;hb=85210bffd8363e491b4c31f2d09404f9869ad0c7;hp=1d0559fdb6512a6789f7367250c6c9b8a5ac46fc;hpb=240a5fe83e772d08d9e1f22e90163b37eea5ab45;p=elogind.git diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 1d0559fdb..6a5db968e 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -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();