1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use libc::c_int;
use ffi::array_to_iovecs;
use ffi::journal as ffi;
use super::{Result, JournalEntry};

pub fn submit(entry: &JournalEntry) -> Result<()> {
	let mut fields = Vec::<String>::new();

	for (k, v) in entry.get_fields() {
		fields.push(format!("{}={}", k, v));
	}

	let fields_iovec = array_to_iovecs(
			&fields
					.iter()
					.map(|v| v.as_str())
					.collect::<Vec<&str>>());

	sd_try!(ffi::sd_journal_sendv(fields_iovec.as_ptr(), fields_iovec.len() as c_int));

	return Ok(());
}