summaryrefslogtreecommitdiff
path: root/src/journal/journalctl.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-07-01 18:47:40 +0200
committerLennart Poettering <lennart@poettering.net>2012-07-02 10:43:56 +0200
commit59cea26a349cfa8db906b520dac72563dd773ff2 (patch)
treee8632faebbc458cd3554267896449a086455c784 /src/journal/journalctl.c
parentac7019f33f1618f5b69ed44a8623e2596f1e3856 (diff)
journalctl: add new switch -b to show data from current boot only
Diffstat (limited to 'src/journal/journalctl.c')
-rw-r--r--src/journal/journalctl.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index e9d918a733..6929b76018 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -49,6 +49,7 @@ static bool arg_no_tail = false;
static bool arg_new_id128 = false;
static bool arg_quiet = false;
static bool arg_local = false;
+static bool arg_this_boot = false;
static int help(void) {
@@ -64,8 +65,9 @@ static int help(void) {
" -o --output=STRING Change journal output mode (short, short-monotonic,\n"
" verbose, export, json, cat)\n"
" -q --quiet Don't show privilege warning\n"
- " --new-id128 Generate a new 128 Bit id\n"
- " -l --local Only local entries\n",
+ " -l --local Only local entries\n"
+ " -b --this-boot Show data only from current boot\n"
+ " --new-id128 Generate a new 128 Bit id\n",
program_invocation_short_name);
return 0;
@@ -92,6 +94,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "new-id128", no_argument, NULL, ARG_NEW_ID128 },
{ "quiet", no_argument, NULL, 'q' },
{ "local", no_argument, NULL, 'l' },
+ { "this-boot", no_argument, NULL, 'b' },
{ NULL, 0, NULL, 0 }
};
@@ -100,7 +103,7 @@ static int parse_argv(int argc, char *argv[]) {
assert(argc >= 0);
assert(argv);
- while ((c = getopt_long(argc, argv, "hfo:an:ql", options, NULL)) >= 0) {
+ while ((c = getopt_long(argc, argv, "hfo:an:qlb", options, NULL)) >= 0) {
switch (c) {
@@ -159,6 +162,10 @@ static int parse_argv(int argc, char *argv[]) {
arg_local = true;
break;
+ case 'b':
+ arg_this_boot = true;
+ break;
+
case '?':
return -EINVAL;
@@ -232,6 +239,25 @@ int main(int argc, char *argv[]) {
goto finish;
}
+ if (arg_this_boot) {
+ char match[9+32+1] = "_BOOT_ID=";
+ sd_id128_t boot_id;
+
+ r = sd_id128_get_boot(&boot_id);
+ if (r < 0) {
+ log_error("Failed to get boot id: %s", strerror(-r));
+ goto finish;
+ }
+
+ sd_id128_to_string(boot_id, match + 9);
+
+ r = sd_journal_add_match(j, match, strlen(match));
+ if (r < 0) {
+ log_error("Failed to add match: %s", strerror(-r));
+ goto finish;
+ }
+ }
+
for (i = optind; i < argc; i++) {
if (path_is_absolute(argv[i])) {
char *p = NULL;