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
//! `.sources` file parsing types.
//!
//! Chrony uses `.sources` files (typically in `/var/lib/chrony`) to persist known NTP sources.
//! This module provides lenient parsing that silently skips erroneous lines.
use crate;
/// A single source entry in a `.sources` file.
///
/// Each entry is one of `server`, `pool`, or `peer` with its full configuration.
/// A single node in a `.sources` file.
///
/// Analogous to [`ConfigNode`](crate::ConfigNode) but limited to server/pool/peer entries.
/// A parsed `.sources` file.
///
/// Chrony writes `.sources` files to persist known NTP sources. Unlike the main
/// configuration parser, this parser is always lenient: unparseable lines and
/// unknown directives are silently skipped.
///
/// # Examples
///
/// ## Parsing via `parse()`
///
/// ```rust
/// use chrony_confile::SourceFile;
///
/// let sources = SourceFile::parse("\
/// server ntp1.example.com iburst
/// pool pool.ntp.org maxsources 6
/// ");
///
/// assert_eq!(sources.nodes.len(), 2);
/// ```
///
/// ## Parsing via `FromStr`
///
/// ```rust
/// use chrony_confile::SourceFile;
///
/// let sources: SourceFile = "\
/// server ntp1.example.com
/// peer 192.168.1.1
/// ".parse().unwrap();
///
/// assert_eq!(sources.nodes.len(), 2);
/// ```