1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#![allow(non_camel_case_types)]

use super::size_t;
use super::{c_char, c_int, c_void};
use super::const_iovec;

pub const SD_JOURNAL_LOCAL_ONLY: c_int = 1;
pub const SD_JOURNAL_RUNTIME_ONLY: c_int = 2;
pub const SD_JOURNAL_SYSTEM: c_int = 4;
pub const SD_JOURNAL_CURRENT_USER: c_int = 8;

use id128::sd_id128_t;
pub enum sd_journal {}

extern "C" {
    // sd-journal
    pub fn sd_journal_sendv(iv: *const const_iovec, n: c_int) -> c_int;
    // There are a bunch of other send methods, but for rust it doesn't make sense to call them
    // (we don't need to do c-style format strings)

    pub fn sd_journal_open(ret: *mut *mut sd_journal, flags: c_int) -> c_int;
    pub fn sd_journal_close(j: *mut sd_journal) -> ();

    pub fn sd_journal_previous(j: *mut sd_journal) -> c_int;
    pub fn sd_journal_next(j: *mut sd_journal) -> c_int;

    pub fn sd_journal_previous_skip(j: *mut sd_journal, skip: u64) -> c_int;
    pub fn sd_journal_next_skip(j: *mut sd_journal, skip: u64) -> c_int;

    pub fn sd_journal_get_realtime_usec(j: *mut sd_journal, ret: *const u64) -> c_int;
    pub fn sd_journal_get_monotonic_usec(j: *mut sd_journal,
                                         ret: *const u64,
                                         ret_boot_id: *const sd_id128_t)
                                         -> c_int;

    pub fn sd_journal_set_data_threshold(j: *mut sd_journal, sz: size_t) -> c_int;
    pub fn sd_journal_get_data_threshold(j: *mut sd_journal, sz: *mut size_t) -> c_int;

    pub fn sd_journal_get_data(j: *mut sd_journal,
                               field: *const c_char,
                               data: *const *mut u8,
                               l: *mut size_t)
                               -> c_int;
    pub fn sd_journal_enumerate_data(j: *mut sd_journal,
                                     data: *const *mut u8,
                                     l: *mut size_t)
                                     -> c_int;
    pub fn sd_journal_restart_data(j: *mut sd_journal) -> ();

    pub fn sd_journal_add_match(j: *mut sd_journal, data: *const c_void, size: size_t) -> c_int;
    pub fn sd_journal_add_disjunction(j: *mut sd_journal) -> c_int;
    pub fn sd_journal_add_conjunction(j: *mut sd_journal) -> c_int;
    pub fn sd_journal_flush_matches(j: *mut sd_journal) -> ();

    pub fn sd_journal_seek_head(j: *mut sd_journal) -> c_int;
    pub fn sd_journal_seek_tail(j: *mut sd_journal) -> c_int;
    pub fn sd_journal_seek_monotonic_usec(j: *mut sd_journal,
                                          boot_id: sd_id128_t,
                                          usec: u64)
                                          -> c_int;
    pub fn sd_journal_seek_realtime_usec(j: *mut sd_journal, usec: u64) -> c_int;
    pub fn sd_journal_seek_cursor(j: *mut sd_journal, cursor: *const c_char) -> c_int;

    pub fn sd_journal_get_cursor(j: *mut sd_journal, cursor: *const *mut c_char) -> c_int;
    pub fn sd_journal_test_cursor(j: *mut sd_journal, cursor: *const c_char) -> c_int;

    pub fn sd_journal_get_cutoff_realtime_usec(j: *mut sd_journal,
                                               from: *mut u64,
                                               to: *mut u64)
                                               -> c_int;
    pub fn sd_journal_get_cutoff_monotonic_usec(j: *mut sd_journal,
                                                boot_id: sd_id128_t,
                                                from: *mut u64,
                                                to: *mut u64)
                                                -> c_int;

    pub fn sd_journal_get_usage(j: *mut sd_journal, bytes: *mut u64) -> c_int;

    pub fn sd_journal_query_unique(j: *mut sd_journal, field: *const c_char) -> c_int;
    pub fn sd_journal_enumerate_unique(j: *mut sd_journal,
                                       data: *const *mut c_void,
                                       l: *mut size_t)
                                       -> c_int;
    pub fn sd_journal_restart_unique(j: *mut sd_journal) -> ();

    pub fn sd_journal_get_fd(j: *mut sd_journal) -> c_int;
    pub fn sd_journal_get_events(j: *mut sd_journal) -> c_int;
    pub fn sd_journal_get_timeout(j: *mut sd_journal, timeout_usec: *mut u64) -> c_int;
    pub fn sd_journal_process(j: *mut sd_journal) -> c_int;
    pub fn sd_journal_wait(j: *mut sd_journal, timeout_usec: u64) -> c_int;
    pub fn sd_journal_reliable_fd(j: *mut sd_journal) -> c_int;

    pub fn sd_journal_get_catalog(j: *mut sd_journal, text: *const *mut c_char) -> c_int;
    pub fn sd_journal_get_catalog_for_message_id(id: sd_id128_t, ret: *const *mut c_char) -> c_int;
}