]>
Commit | Line | Data |
---|---|---|
87d2c1ff LP |
1 | /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ |
2 | ||
3 | #ifndef foojournalhfoo | |
4 | #define foojournalhfoo | |
5 | ||
6 | /*** | |
7 | This file is part of systemd. | |
8 | ||
9 | Copyright 2011 Lennart Poettering | |
10 | ||
11 | systemd is free software; you can redistribute it and/or modify it | |
12 | under the terms of the GNU General Public License as published by | |
13 | the Free Software Foundation; either version 2 of the License, or | |
14 | (at your option) any later version. | |
15 | ||
16 | systemd is distributed in the hope that it will be useful, but | |
17 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
19 | General Public License for more details. | |
20 | ||
21 | You should have received a copy of the GNU General Public License | |
22 | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |
23 | ***/ | |
24 | ||
25 | #include <inttypes.h> | |
26 | #include <sys/types.h> | |
7f3e6257 LP |
27 | #include <stdarg.h> |
28 | #include <sys/uio.h> | |
87d2c1ff | 29 | |
de190aef LP |
30 | #include "sd-id128.h" |
31 | ||
87d2c1ff LP |
32 | /* TODO: |
33 | * | |
87d2c1ff | 34 | * - check LE/BE conversion for 8bit, 16bit, 32bit values |
cec736d2 | 35 | * - implement inotify usage on client |
87d2c1ff | 36 | * - implement audit gateway |
3fbf9cbb | 37 | * - implement stdout gateway |
de190aef | 38 | * - extend hash tables table as we go |
3fbf9cbb | 39 | * - accelerate looking for "all hostnames" and suchlike. |
1cc101f1 | 40 | * - throttling |
de190aef LP |
41 | * - cryptographic hash |
42 | * - fix space reservation logic | |
43 | * - comm, argv can be manipulated, should it be _COMM=, _CMDLINE= or COMM=, CMDLINE=? | |
87d2c1ff LP |
44 | */ |
45 | ||
7f3e6257 LP |
46 | /* Write to daemon */ |
47 | ||
d0bbc21c LP |
48 | int sd_journal_print(int piority, const char *format, ...) __attribute__ ((format (printf, 2, 3))); |
49 | int sd_journal_printv(int priority, const char *format, va_list ap); | |
7f3e6257 LP |
50 | |
51 | int sd_journal_send(const char *format, ...) __attribute__((sentinel)); | |
52 | int sd_journal_sendv(const struct iovec *iov, int n); | |
53 | ||
54 | /* Browse journal stream */ | |
55 | ||
87d2c1ff LP |
56 | typedef struct sd_journal sd_journal; |
57 | ||
58 | int sd_journal_open(sd_journal **ret); | |
59 | void sd_journal_close(sd_journal *j); | |
60 | ||
61 | int sd_journal_previous(sd_journal *j); | |
62 | int sd_journal_next(sd_journal *j); | |
63 | ||
de190aef LP |
64 | int sd_journal_previous_skip(sd_journal *j, uint64_t skip); |
65 | int sd_journal_next_skip(sd_journal *j, uint64_t skip); | |
66 | ||
cec736d2 | 67 | int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret); |
de190aef | 68 | int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id); |
8725d60a LP |
69 | int sd_journal_get_data(sd_journal *j, const char *field, const void **data, size_t *l); |
70 | int sd_journal_enumerate_data(sd_journal *j, const void **data, size_t *l); | |
de190aef | 71 | void sd_journal_restart_data(sd_journal *j); |
87d2c1ff | 72 | |
1cc101f1 | 73 | int sd_journal_add_match(sd_journal *j, const void *data, size_t size); |
cec736d2 | 74 | void sd_journal_flush_matches(sd_journal *j); |
87d2c1ff LP |
75 | |
76 | int sd_journal_seek_head(sd_journal *j); | |
77 | int sd_journal_seek_tail(sd_journal *j); | |
de190aef LP |
78 | int sd_journal_seek_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint64_t usec); |
79 | int sd_journal_seek_realtime_usec(sd_journal *j, uint64_t usec); | |
80 | int sd_journal_seek_cursor(sd_journal *j, const char *cursor); | |
87d2c1ff | 81 | |
3fbf9cbb | 82 | int sd_journal_get_cursor(sd_journal *j, char **cursor); |
87d2c1ff | 83 | |
de190aef LP |
84 | int sd_journal_query_unique(sd_journal *j, const char *field); /* missing */ |
85 | int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l); /* missing */ | |
86 | void sd_journal_restart_unique(sd_journal *j); /* missing */ | |
87d2c1ff | 87 | |
1cc101f1 LP |
88 | enum { |
89 | SD_JOURNAL_NOP, | |
90 | SD_JOURNAL_APPEND, | |
de190aef LP |
91 | SD_JOURNAL_INVALIDATE_ADD, |
92 | SD_JOURNAL_INVALIDATE_REMOVE | |
1cc101f1 LP |
93 | }; |
94 | ||
de190aef | 95 | int sd_journal_get_fd(sd_journal *j); /* missing */ |
8f9b6cd9 | 96 | int sd_journal_process(sd_journal *j); /* missing */ |
1cc101f1 | 97 | |
de190aef LP |
98 | #define SD_JOURNAL_FOREACH(j) \ |
99 | if (sd_journal_seek_head(j) >= 0) \ | |
100 | while (sd_journal_next(j) > 0) \ | |
8725d60a | 101 | |
de190aef LP |
102 | #define SD_JOURNAL_FOREACH_BACKWARDS(j) \ |
103 | if (sd_journal_seek_tail(j) >= 0) \ | |
104 | while (sd_journal_previous(j) > 0) \ | |
3fbf9cbb | 105 | |
8725d60a | 106 | #define SD_JOURNAL_FOREACH_DATA(j, data, l) \ |
de190aef | 107 | for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; ) |
3fbf9cbb | 108 | |
de190aef LP |
109 | #define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \ |
110 | for (sd_journal_restart_unique(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; ) | |
3fbf9cbb | 111 | |
87d2c1ff | 112 | #endif |