summaryrefslogtreecommitdiff
path: root/src/grp-journal/libjournal-core
diff options
context:
space:
mode:
Diffstat (limited to 'src/grp-journal/libjournal-core')
-rw-r--r--src/grp-journal/libjournal-core/Makefile2
-rw-r--r--src/grp-journal/libjournal-core/cat.c161
-rw-r--r--src/grp-journal/libjournal-core/journal-qrcode.c135
-rw-r--r--src/grp-journal/libjournal-core/journal-qrcode.h27
-rw-r--r--src/grp-journal/libjournal-core/journald-audit.c2
-rw-r--r--src/grp-journal/libjournal-core/journald-gperf.c173
-rw-r--r--src/grp-journal/libjournal-core/journald-server.c31
7 files changed, 192 insertions, 339 deletions
diff --git a/src/grp-journal/libjournal-core/Makefile b/src/grp-journal/libjournal-core/Makefile
index d55aebfb49..bcbfd0f8cb 100644
--- a/src/grp-journal/libjournal-core/Makefile
+++ b/src/grp-journal/libjournal-core/Makefile
@@ -53,4 +53,6 @@ libjournal_core_la_LIBADD = \
noinst_LTLIBRARIES += \
libjournal-core.la
+systemd.CPPFLAGS += -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\"
+
include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/grp-journal/libjournal-core/cat.c b/src/grp-journal/libjournal-core/cat.c
deleted file mode 100644
index 8ab4febd53..0000000000
--- a/src/grp-journal/libjournal-core/cat.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/***
- This file is part of systemd.
-
- Copyright 2012 Lennart Poettering
-
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- systemd is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include <errno.h>
-#include <fcntl.h>
-#include <getopt.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <systemd/sd-journal.h>
-
-#include "basic/fd-util.h"
-#include "basic/parse-util.h"
-#include "basic/string-util.h"
-#include "basic/syslog-util.h"
-#include "basic/util.h"
-
-static const char *arg_identifier = NULL;
-static int arg_priority = LOG_INFO;
-static bool arg_level_prefix = true;
-
-static void help(void) {
- printf("%s [OPTIONS...] {COMMAND} ...\n\n"
- "Execute process with stdout/stderr connected to the journal.\n\n"
- " -h --help Show this help\n"
- " --version Show package version\n"
- " -t --identifier=STRING Set syslog identifier\n"
- " -p --priority=PRIORITY Set priority value (0..7)\n"
- " --level-prefix=BOOL Control whether level prefix shall be parsed\n"
- , program_invocation_short_name);
-}
-
-static int parse_argv(int argc, char *argv[]) {
-
- enum {
- ARG_VERSION = 0x100,
- ARG_LEVEL_PREFIX
- };
-
- static const struct option options[] = {
- { "help", no_argument, NULL, 'h' },
- { "version", no_argument, NULL, ARG_VERSION },
- { "identifier", required_argument, NULL, 't' },
- { "priority", required_argument, NULL, 'p' },
- { "level-prefix", required_argument, NULL, ARG_LEVEL_PREFIX },
- {}
- };
-
- int c;
-
- assert(argc >= 0);
- assert(argv);
-
- while ((c = getopt_long(argc, argv, "+ht:p:", options, NULL)) >= 0)
-
- switch (c) {
-
- case 'h':
- help();
- return 0;
-
- case ARG_VERSION:
- return version();
-
- case 't':
- if (isempty(optarg))
- arg_identifier = NULL;
- else
- arg_identifier = optarg;
- break;
-
- case 'p':
- arg_priority = log_level_from_string(optarg);
- if (arg_priority < 0) {
- log_error("Failed to parse priority value.");
- return -EINVAL;
- }
- break;
-
- case ARG_LEVEL_PREFIX: {
- int k;
-
- k = parse_boolean(optarg);
- if (k < 0)
- return log_error_errno(k, "Failed to parse level prefix value.");
-
- arg_level_prefix = k;
- break;
- }
-
- case '?':
- return -EINVAL;
-
- default:
- assert_not_reached("Unhandled option");
- }
-
- return 1;
-}
-
-int main(int argc, char *argv[]) {
- _cleanup_close_ int fd = -1, saved_stderr = -1;
- int r;
-
- log_parse_environment();
- log_open();
-
- r = parse_argv(argc, argv);
- if (r <= 0)
- goto finish;
-
- fd = sd_journal_stream_fd(arg_identifier, arg_priority, arg_level_prefix);
- if (fd < 0) {
- r = log_error_errno(fd, "Failed to create stream fd: %m");
- goto finish;
- }
-
- saved_stderr = fcntl(STDERR_FILENO, F_DUPFD_CLOEXEC, 3);
-
- if (dup3(fd, STDOUT_FILENO, 0) < 0 ||
- dup3(fd, STDERR_FILENO, 0) < 0) {
- r = log_error_errno(errno, "Failed to duplicate fd: %m");
- goto finish;
- }
-
- if (fd >= 3)
- safe_close(fd);
- fd = -1;
-
- if (argc <= optind)
- (void) execl("/bin/cat", "/bin/cat", NULL);
- else
- (void) execvp(argv[optind], argv + optind);
- r = -errno;
-
- /* Let's try to restore a working stderr, so we can print the error message */
- if (saved_stderr >= 0)
- (void) dup3(saved_stderr, STDERR_FILENO, 0);
-
- log_error_errno(r, "Failed to execute process: %m");
-
-finish:
- return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
-}
diff --git a/src/grp-journal/libjournal-core/journal-qrcode.c b/src/grp-journal/libjournal-core/journal-qrcode.c
deleted file mode 100644
index e38730d65c..0000000000
--- a/src/grp-journal/libjournal-core/journal-qrcode.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/***
- This file is part of systemd.
-
- Copyright 2012 Lennart Poettering
-
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- systemd is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include <assert.h>
-#include <errno.h>
-#include <qrencode.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "journal-qrcode.h"
-
-#define WHITE_ON_BLACK "\033[40;37;1m"
-#define NORMAL "\033[0m"
-
-static void print_border(FILE *output, unsigned width) {
- unsigned x, y;
-
- /* Four rows of border */
- for (y = 0; y < 4; y += 2) {
- fputs(WHITE_ON_BLACK, output);
-
- for (x = 0; x < 4 + width + 4; x++)
- fputs("\342\226\210", output);
-
- fputs(NORMAL "\n", output);
- }
-}
-
-int print_qr_code(
- FILE *output,
- const void *seed,
- size_t seed_size,
- uint64_t start,
- uint64_t interval,
- const char *hn,
- sd_id128_t machine) {
-
- FILE *f;
- char *url = NULL;
- size_t url_size = 0, i;
- QRcode* qr;
- unsigned x, y;
-
- assert(seed);
- assert(seed_size > 0);
-
- f = open_memstream(&url, &url_size);
- if (!f)
- return -ENOMEM;
-
- fputs("fss://", f);
-
- for (i = 0; i < seed_size; i++) {
- if (i > 0 && i % 3 == 0)
- fputc('-', f);
- fprintf(f, "%02x", ((uint8_t*) seed)[i]);
- }
-
- fprintf(f, "/%"PRIx64"-%"PRIx64"?machine=" SD_ID128_FORMAT_STR,
- start,
- interval,
- SD_ID128_FORMAT_VAL(machine));
-
- if (hn)
- fprintf(f, ";hostname=%s", hn);
-
- if (ferror(f)) {
- fclose(f);
- free(url);
- return -ENOMEM;
- }
-
- fclose(f);
-
- qr = QRcode_encodeString(url, 0, QR_ECLEVEL_L, QR_MODE_8, 1);
- free(url);
-
- if (!qr)
- return -ENOMEM;
-
- print_border(output, qr->width);
-
- for (y = 0; y < (unsigned) qr->width; y += 2) {
- const uint8_t *row1, *row2;
-
- row1 = qr->data + qr->width * y;
- row2 = row1 + qr->width;
-
- fputs(WHITE_ON_BLACK, output);
- for (x = 0; x < 4; x++)
- fputs("\342\226\210", output);
-
- for (x = 0; x < (unsigned) qr->width; x ++) {
- bool a, b;
-
- a = row1[x] & 1;
- b = (y+1) < (unsigned) qr->width ? (row2[x] & 1) : false;
-
- if (a && b)
- fputc(' ', output);
- else if (a)
- fputs("\342\226\204", output);
- else if (b)
- fputs("\342\226\200", output);
- else
- fputs("\342\226\210", output);
- }
-
- for (x = 0; x < 4; x++)
- fputs("\342\226\210", output);
- fputs(NORMAL "\n", output);
- }
-
- print_border(output, qr->width);
-
- QRcode_free(qr);
- return 0;
-}
diff --git a/src/grp-journal/libjournal-core/journal-qrcode.h b/src/grp-journal/libjournal-core/journal-qrcode.h
deleted file mode 100644
index 34a779d5be..0000000000
--- a/src/grp-journal/libjournal-core/journal-qrcode.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-
-/***
- This file is part of systemd.
-
- Copyright 2012 Lennart Poettering
-
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- systemd is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include <inttypes.h>
-#include <stdio.h>
-
-#include <systemd/sd-id128.h>
-
-int print_qr_code(FILE *f, const void *seed, size_t seed_size, uint64_t start, uint64_t interval, const char *hn, sd_id128_t machine);
diff --git a/src/grp-journal/libjournal-core/journald-audit.c b/src/grp-journal/libjournal-core/journald-audit.c
index 7abd2f819e..d76a460257 100644
--- a/src/grp-journal/libjournal-core/journald-audit.c
+++ b/src/grp-journal/libjournal-core/journald-audit.c
@@ -18,7 +18,7 @@
***/
#include "basic/alloc-util.h"
-#include "audit-type.h"
+#include "sd-journal/audit-type.h"
#include "basic/fd-util.h"
#include "basic/hexdecoct.h"
#include "basic/io-util.h"
diff --git a/src/grp-journal/libjournal-core/journald-gperf.c b/src/grp-journal/libjournal-core/journald-gperf.c
new file mode 100644
index 0000000000..d8483a3303
--- /dev/null
+++ b/src/grp-journal/libjournal-core/journald-gperf.c
@@ -0,0 +1,173 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf */
+/* Computed positions: -k'9,18' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+
+#include <stddef.h>
+#include <sys/socket.h>
+#include "shared/conf-parser.h"
+#include "journald-server.h"
+#include <string.h>
+
+#define TOTAL_KEYWORDS 28
+#define MIN_WORD_LENGTH 12
+#define MAX_WORD_LENGTH 28
+#define MIN_HASH_VALUE 12
+#define MAX_HASH_VALUE 53
+/* maximum key range = 42, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+journald_gperf_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 10, 0, 54, 54,
+ 0, 54, 54, 0, 54, 20, 54, 0, 54, 54,
+ 54, 54, 5, 0, 30, 20, 54, 15, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 15, 54, 0,
+ 54, 25, 54, 54, 54, 25, 54, 54, 54, 54,
+ 54, 20, 10, 54, 54, 54, 0, 54, 15, 54,
+ 0, 5, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54
+ };
+ register int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[17]];
+ /*FALLTHROUGH*/
+ case 17:
+ case 16:
+ case 15:
+ case 14:
+ case 13:
+ case 12:
+ case 11:
+ case 10:
+ case 9:
+ hval += asso_values[(unsigned char)str[8]];
+ break;
+ }
+ return hval;
+}
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct ConfigPerfItem *
+journald_gperf_lookup (register const char *str, register unsigned int len)
+{
+ static const struct ConfigPerfItem wordlist[] =
+ {
+ {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+ {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+ {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+ {"Journal.Seal", config_parse_bool, 0, offsetof(Server, seal)},
+ {(char*)0}, {(char*)0},
+ {"Journal.Storage", config_parse_storage, 0, offsetof(Server, storage)},
+ {"Journal.Compress", config_parse_bool, 0, offsetof(Server, compress)},
+ {"Journal.SplitMode", config_parse_split_mode, 0, offsetof(Server, split_mode)},
+ {"Journal.MaxFileSec", config_parse_sec, 0, offsetof(Server, max_file_usec)},
+ {(char*)0},
+ {"Journal.MaxLevelKMsg", config_parse_log_level, 0, offsetof(Server, max_level_kmsg)},
+ {"Journal.MaxLevelStore", config_parse_log_level, 0, offsetof(Server, max_level_store)},
+ {"Journal.SystemMaxFiles", config_parse_uint64, 0, offsetof(Server, system_metrics.n_max_files)},
+ {"Journal.ForwardToSyslog", config_parse_bool, 0, offsetof(Server, forward_to_syslog)},
+ {"Journal.ForwardToConsole", config_parse_bool, 0, offsetof(Server, forward_to_console)},
+ {"Journal.SystemMaxFileSize", config_parse_iec_uint64, 0, offsetof(Server, system_metrics.max_size)},
+ {"Journal.RuntimeMaxUse", config_parse_iec_uint64, 0, offsetof(Server, runtime_metrics.max_use)},
+ {"Journal.MaxLevelSyslog", config_parse_log_level, 0, offsetof(Server, max_level_syslog)},
+ {"Journal.RuntimeMaxFiles", config_parse_uint64, 0, offsetof(Server, runtime_metrics.n_max_files)},
+ {(char*)0},
+ {"Journal.RateLimitInterval", config_parse_sec, 0, offsetof(Server, rate_limit_interval)},
+ {"Journal.RuntimeMaxFileSize", config_parse_iec_uint64, 0, offsetof(Server, runtime_metrics.max_size)},
+ {"Journal.SystemKeepFree", config_parse_iec_uint64, 0, offsetof(Server, system_metrics.keep_free)},
+ {"Journal.RateLimitIntervalSec",config_parse_sec, 0, offsetof(Server, rate_limit_interval)},
+ {(char*)0},
+ {"Journal.MaxLevelWall", config_parse_log_level, 0, offsetof(Server, max_level_wall)},
+ {"Journal.ForwardToWall", config_parse_bool, 0, offsetof(Server, forward_to_wall)},
+ {"Journal.RateLimitBurst", config_parse_unsigned, 0, offsetof(Server, rate_limit_burst)},
+ {"Journal.SyncIntervalSec", config_parse_sec, 0, offsetof(Server, sync_interval_usec)},
+ {(char*)0},
+ {"Journal.SystemMaxUse", config_parse_iec_uint64, 0, offsetof(Server, system_metrics.max_use)},
+ {"Journal.ForwardToKMsg", config_parse_bool, 0, offsetof(Server, forward_to_kmsg)},
+ {(char*)0},
+ {"Journal.MaxLevelConsole", config_parse_log_level, 0, offsetof(Server, max_level_console)},
+ {(char*)0},
+ {"Journal.TTYPath", config_parse_path, 0, offsetof(Server, tty_path)},
+ {(char*)0}, {(char*)0},
+ {"Journal.MaxRetentionSec", config_parse_sec, 0, offsetof(Server, max_retention_usec)},
+ {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+ {"Journal.RuntimeKeepFree", config_parse_iec_uint64, 0, offsetof(Server, runtime_metrics.keep_free)}
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = journald_gperf_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register const char *s = wordlist[key].section_and_lvalue;
+
+ if (s && *str == *s && !strcmp (str + 1, s + 1))
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
diff --git a/src/grp-journal/libjournal-core/journald-server.c b/src/grp-journal/libjournal-core/journald-server.c
index 24b873abeb..4dca4b02b3 100644
--- a/src/grp-journal/libjournal-core/journald-server.c
+++ b/src/grp-journal/libjournal-core/journald-server.c
@@ -26,16 +26,14 @@
#include <sys/statvfs.h>
#include <linux/sockios.h>
-#include "libudev.h"
+#include <libudev.h>
#include <systemd/sd-daemon.h>
#include <systemd/sd-journal.h>
#include <systemd/sd-messages.h>
-#include "shared/acl-util.h"
#include "basic/alloc-util.h"
#include "basic/audit-util.h"
#include "basic/cgroup-util.h"
-#include "shared/conf-parser.h"
#include "basic/dirent-util.h"
#include "basic/extract-word.h"
#include "basic/fd-util.h"
@@ -45,17 +43,7 @@
#include "basic/hashmap.h"
#include "basic/hostname-util.h"
#include "basic/io-util.h"
-#include "journal-authenticate.h"
-#include "journal-file.h"
-#include "journal-internal.h"
-#include "journal-vacuum.h"
-#include "journald-audit.h"
-#include "journald-kmsg.h"
-#include "journald-native.h"
-#include "journald-rate-limit.h"
-#include "journald-server.h"
-#include "journald-stream.h"
-#include "journald-syslog.h"
+#include "basic/log.h"
#include "basic/missing.h"
#include "basic/mkdir.h"
#include "basic/parse-util.h"
@@ -69,7 +57,20 @@
#include "basic/string-table.h"
#include "basic/string-util.h"
#include "basic/user-util.h"
-#include "basic/log.h"
+#include "sd-journal/journal-authenticate.h"
+#include "sd-journal/journal-file.h"
+#include "sd-journal/journal-internal.h"
+#include "sd-journal/journal-vacuum.h"
+#include "shared/acl-util.h"
+#include "shared/conf-parser.h"
+
+#include "journald-audit.h"
+#include "journald-kmsg.h"
+#include "journald-native.h"
+#include "journald-rate-limit.h"
+#include "journald-server.h"
+#include "journald-stream.h"
+#include "journald-syslog.h"
#define USER_JOURNALS_MAX 1024