chiark / gitweb /
journal: implement seek to head/tail
[elogind.git] / src / journal / journalctl.c
index a6b6e0fbd6a3a150b13ecf75d3beb1fc0ca30206..3e5ee1af967dd1244ef4747bb9bd0b253cf2b77a 100644 (file)
@@ -31,7 +31,7 @@
 #include "log.h"
 
 int main(int argc, char *argv[]) {
 #include "log.h"
 
 int main(int argc, char *argv[]) {
-        int r;
+        int r, i;
         sd_journal *j = NULL;
 
         log_set_max_level(LOG_DEBUG);
         sd_journal *j = NULL;
 
         log_set_max_level(LOG_DEBUG);
@@ -46,7 +46,16 @@ int main(int argc, char *argv[]) {
                 goto finish;
         }
 
                 goto finish;
         }
 
-        SD_JOURNAL_FOREACH(j) {
+        for (i = 1; i < argc; i++) {
+                r = sd_journal_add_match(j, argv[i], strlen(argv[i]));
+                if (r < 0) {
+                        log_error("Failed to add match: %s", strerror(-r));
+                        goto finish;
+                }
+        }
+
+        SD_JOURNAL_FOREACH_BEGIN(j) {
+
                 const void *data;
                 size_t length;
                 char *cursor;
                 const void *data;
                 size_t length;
                 char *cursor;
@@ -68,9 +77,10 @@ int main(int argc, char *argv[]) {
                        (unsigned long long) realtime,
                        (unsigned long long) monotonic);
 
                        (unsigned long long) realtime,
                        (unsigned long long) monotonic);
 
-                SD_JOURNAL_FOREACH_FIELD(j, data, length)
+                SD_JOURNAL_FOREACH_DATA(j, data, length)
                         printf("\t%.*s\n", (int) length, (const char*) data);
                         printf("\t%.*s\n", (int) length, (const char*) data);
-        }
+
+        } SD_JOURNAL_FOREACH_END(j);
 
 finish:
         if (j)
 
 finish:
         if (j)