rrd_sys/pregen/
bindings.rs

1/* automatically generated by rust-bindgen 0.69.1 */
2
3pub type __time64_t = ::core::ffi::c_longlong;
4pub type time_t = __time64_t;
5pub type mode_t = ::core::ffi::c_int;
6#[repr(C)]
7#[derive(Debug, Copy, Clone)]
8pub struct tm {
9    pub tm_sec: ::core::ffi::c_int,
10    pub tm_min: ::core::ffi::c_int,
11    pub tm_hour: ::core::ffi::c_int,
12    pub tm_mday: ::core::ffi::c_int,
13    pub tm_mon: ::core::ffi::c_int,
14    pub tm_year: ::core::ffi::c_int,
15    pub tm_wday: ::core::ffi::c_int,
16    pub tm_yday: ::core::ffi::c_int,
17    pub tm_isdst: ::core::ffi::c_int,
18}
19#[test]
20fn bindgen_test_layout_tm() {
21    const UNINIT: ::core::mem::MaybeUninit<tm> = ::core::mem::MaybeUninit::uninit();
22    let ptr = UNINIT.as_ptr();
23    assert_eq!(
24        ::core::mem::size_of::<tm>(),
25        36usize,
26        concat!("Size of: ", stringify!(tm))
27    );
28    assert_eq!(
29        ::core::mem::align_of::<tm>(),
30        4usize,
31        concat!("Alignment of ", stringify!(tm))
32    );
33    assert_eq!(
34        unsafe { ::core::ptr::addr_of!((*ptr).tm_sec) as usize - ptr as usize },
35        0usize,
36        concat!(
37            "Offset of field: ",
38            stringify!(tm),
39            "::",
40            stringify!(tm_sec)
41        )
42    );
43    assert_eq!(
44        unsafe { ::core::ptr::addr_of!((*ptr).tm_min) as usize - ptr as usize },
45        4usize,
46        concat!(
47            "Offset of field: ",
48            stringify!(tm),
49            "::",
50            stringify!(tm_min)
51        )
52    );
53    assert_eq!(
54        unsafe { ::core::ptr::addr_of!((*ptr).tm_hour) as usize - ptr as usize },
55        8usize,
56        concat!(
57            "Offset of field: ",
58            stringify!(tm),
59            "::",
60            stringify!(tm_hour)
61        )
62    );
63    assert_eq!(
64        unsafe { ::core::ptr::addr_of!((*ptr).tm_mday) as usize - ptr as usize },
65        12usize,
66        concat!(
67            "Offset of field: ",
68            stringify!(tm),
69            "::",
70            stringify!(tm_mday)
71        )
72    );
73    assert_eq!(
74        unsafe { ::core::ptr::addr_of!((*ptr).tm_mon) as usize - ptr as usize },
75        16usize,
76        concat!(
77            "Offset of field: ",
78            stringify!(tm),
79            "::",
80            stringify!(tm_mon)
81        )
82    );
83    assert_eq!(
84        unsafe { ::core::ptr::addr_of!((*ptr).tm_year) as usize - ptr as usize },
85        20usize,
86        concat!(
87            "Offset of field: ",
88            stringify!(tm),
89            "::",
90            stringify!(tm_year)
91        )
92    );
93    assert_eq!(
94        unsafe { ::core::ptr::addr_of!((*ptr).tm_wday) as usize - ptr as usize },
95        24usize,
96        concat!(
97            "Offset of field: ",
98            stringify!(tm),
99            "::",
100            stringify!(tm_wday)
101        )
102    );
103    assert_eq!(
104        unsafe { ::core::ptr::addr_of!((*ptr).tm_yday) as usize - ptr as usize },
105        28usize,
106        concat!(
107            "Offset of field: ",
108            stringify!(tm),
109            "::",
110            stringify!(tm_yday)
111        )
112    );
113    assert_eq!(
114        unsafe { ::core::ptr::addr_of!((*ptr).tm_isdst) as usize - ptr as usize },
115        32usize,
116        concat!(
117            "Offset of field: ",
118            stringify!(tm),
119            "::",
120            stringify!(tm_isdst)
121        )
122    );
123}
124#[repr(C)]
125#[derive(Debug, Copy, Clone)]
126pub struct _iobuf {
127    pub _Placeholder: *mut ::core::ffi::c_void,
128}
129#[test]
130fn bindgen_test_layout__iobuf() {
131    const UNINIT: ::core::mem::MaybeUninit<_iobuf> = ::core::mem::MaybeUninit::uninit();
132    let ptr = UNINIT.as_ptr();
133    assert_eq!(
134        ::core::mem::size_of::<_iobuf>(),
135        8usize,
136        concat!("Size of: ", stringify!(_iobuf))
137    );
138    assert_eq!(
139        ::core::mem::align_of::<_iobuf>(),
140        8usize,
141        concat!("Alignment of ", stringify!(_iobuf))
142    );
143    assert_eq!(
144        unsafe { ::core::ptr::addr_of!((*ptr)._Placeholder) as usize - ptr as usize },
145        0usize,
146        concat!(
147            "Offset of field: ",
148            stringify!(_iobuf),
149            "::",
150            stringify!(_Placeholder)
151        )
152    );
153}
154pub type FILE = _iobuf;
155#[repr(C)]
156#[derive(Debug, Copy, Clone)]
157pub struct rrd_t {
158    _unused: [u8; 0],
159}
160extern "C" {
161    pub fn rrd_set_to_DNAN() -> f64;
162}
163extern "C" {
164    pub fn rrd_set_to_DINF() -> f64;
165}
166pub type rrd_value_t = f64;
167#[repr(C)]
168#[derive(Debug, Copy, Clone)]
169pub struct rrd_file_t {
170    pub header_len: usize,
171    pub file_len: usize,
172    pub pos: usize,
173    pub pvt: *mut ::core::ffi::c_void,
174    pub rrd: *mut rrd_t,
175}
176#[test]
177fn bindgen_test_layout_rrd_file_t() {
178    const UNINIT: ::core::mem::MaybeUninit<rrd_file_t> = ::core::mem::MaybeUninit::uninit();
179    let ptr = UNINIT.as_ptr();
180    assert_eq!(
181        ::core::mem::size_of::<rrd_file_t>(),
182        40usize,
183        concat!("Size of: ", stringify!(rrd_file_t))
184    );
185    assert_eq!(
186        ::core::mem::align_of::<rrd_file_t>(),
187        8usize,
188        concat!("Alignment of ", stringify!(rrd_file_t))
189    );
190    assert_eq!(
191        unsafe { ::core::ptr::addr_of!((*ptr).header_len) as usize - ptr as usize },
192        0usize,
193        concat!(
194            "Offset of field: ",
195            stringify!(rrd_file_t),
196            "::",
197            stringify!(header_len)
198        )
199    );
200    assert_eq!(
201        unsafe { ::core::ptr::addr_of!((*ptr).file_len) as usize - ptr as usize },
202        8usize,
203        concat!(
204            "Offset of field: ",
205            stringify!(rrd_file_t),
206            "::",
207            stringify!(file_len)
208        )
209    );
210    assert_eq!(
211        unsafe { ::core::ptr::addr_of!((*ptr).pos) as usize - ptr as usize },
212        16usize,
213        concat!(
214            "Offset of field: ",
215            stringify!(rrd_file_t),
216            "::",
217            stringify!(pos)
218        )
219    );
220    assert_eq!(
221        unsafe { ::core::ptr::addr_of!((*ptr).pvt) as usize - ptr as usize },
222        24usize,
223        concat!(
224            "Offset of field: ",
225            stringify!(rrd_file_t),
226            "::",
227            stringify!(pvt)
228        )
229    );
230    assert_eq!(
231        unsafe { ::core::ptr::addr_of!((*ptr).rrd) as usize - ptr as usize },
232        32usize,
233        concat!(
234            "Offset of field: ",
235            stringify!(rrd_file_t),
236            "::",
237            stringify!(rrd)
238        )
239    );
240}
241#[repr(C)]
242#[derive(Debug, Copy, Clone)]
243pub struct rrd_simple_file_t {
244    pub fd: ::core::ffi::c_int,
245}
246#[test]
247fn bindgen_test_layout_rrd_simple_file_t() {
248    const UNINIT: ::core::mem::MaybeUninit<rrd_simple_file_t> = ::core::mem::MaybeUninit::uninit();
249    let ptr = UNINIT.as_ptr();
250    assert_eq!(
251        ::core::mem::size_of::<rrd_simple_file_t>(),
252        4usize,
253        concat!("Size of: ", stringify!(rrd_simple_file_t))
254    );
255    assert_eq!(
256        ::core::mem::align_of::<rrd_simple_file_t>(),
257        4usize,
258        concat!("Alignment of ", stringify!(rrd_simple_file_t))
259    );
260    assert_eq!(
261        unsafe { ::core::ptr::addr_of!((*ptr).fd) as usize - ptr as usize },
262        0usize,
263        concat!(
264            "Offset of field: ",
265            stringify!(rrd_simple_file_t),
266            "::",
267            stringify!(fd)
268        )
269    );
270}
271#[repr(C)]
272#[derive(Debug, Copy, Clone)]
273pub struct rrd_blob_t {
274    pub size: ::core::ffi::c_ulong,
275    pub ptr: *mut ::core::ffi::c_uchar,
276}
277#[test]
278fn bindgen_test_layout_rrd_blob_t() {
279    const UNINIT: ::core::mem::MaybeUninit<rrd_blob_t> = ::core::mem::MaybeUninit::uninit();
280    let ptr = UNINIT.as_ptr();
281    assert_eq!(
282        ::core::mem::size_of::<rrd_blob_t>(),
283        16usize,
284        concat!("Size of: ", stringify!(rrd_blob_t))
285    );
286    assert_eq!(
287        ::core::mem::align_of::<rrd_blob_t>(),
288        8usize,
289        concat!("Alignment of ", stringify!(rrd_blob_t))
290    );
291    assert_eq!(
292        unsafe { ::core::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
293        0usize,
294        concat!(
295            "Offset of field: ",
296            stringify!(rrd_blob_t),
297            "::",
298            stringify!(size)
299        )
300    );
301    assert_eq!(
302        unsafe { ::core::ptr::addr_of!((*ptr).ptr) as usize - ptr as usize },
303        8usize,
304        concat!(
305            "Offset of field: ",
306            stringify!(rrd_blob_t),
307            "::",
308            stringify!(ptr)
309        )
310    );
311}
312pub const rrd_info_type_RD_I_VAL: rrd_info_type = 0;
313pub const rrd_info_type_RD_I_CNT: rrd_info_type = 1;
314pub const rrd_info_type_RD_I_STR: rrd_info_type = 2;
315pub const rrd_info_type_RD_I_INT: rrd_info_type = 3;
316pub const rrd_info_type_RD_I_BLO: rrd_info_type = 4;
317pub type rrd_info_type = ::core::ffi::c_int;
318pub use self::rrd_info_type as rrd_info_type_t;
319#[repr(C)]
320#[derive(Copy, Clone)]
321pub union rrd_infoval {
322    pub u_cnt: ::core::ffi::c_ulong,
323    pub u_val: rrd_value_t,
324    pub u_str: *mut ::core::ffi::c_char,
325    pub u_int: ::core::ffi::c_int,
326    pub u_blo: rrd_blob_t,
327}
328#[test]
329fn bindgen_test_layout_rrd_infoval() {
330    const UNINIT: ::core::mem::MaybeUninit<rrd_infoval> = ::core::mem::MaybeUninit::uninit();
331    let ptr = UNINIT.as_ptr();
332    assert_eq!(
333        ::core::mem::size_of::<rrd_infoval>(),
334        16usize,
335        concat!("Size of: ", stringify!(rrd_infoval))
336    );
337    assert_eq!(
338        ::core::mem::align_of::<rrd_infoval>(),
339        8usize,
340        concat!("Alignment of ", stringify!(rrd_infoval))
341    );
342    assert_eq!(
343        unsafe { ::core::ptr::addr_of!((*ptr).u_cnt) as usize - ptr as usize },
344        0usize,
345        concat!(
346            "Offset of field: ",
347            stringify!(rrd_infoval),
348            "::",
349            stringify!(u_cnt)
350        )
351    );
352    assert_eq!(
353        unsafe { ::core::ptr::addr_of!((*ptr).u_val) as usize - ptr as usize },
354        0usize,
355        concat!(
356            "Offset of field: ",
357            stringify!(rrd_infoval),
358            "::",
359            stringify!(u_val)
360        )
361    );
362    assert_eq!(
363        unsafe { ::core::ptr::addr_of!((*ptr).u_str) as usize - ptr as usize },
364        0usize,
365        concat!(
366            "Offset of field: ",
367            stringify!(rrd_infoval),
368            "::",
369            stringify!(u_str)
370        )
371    );
372    assert_eq!(
373        unsafe { ::core::ptr::addr_of!((*ptr).u_int) as usize - ptr as usize },
374        0usize,
375        concat!(
376            "Offset of field: ",
377            stringify!(rrd_infoval),
378            "::",
379            stringify!(u_int)
380        )
381    );
382    assert_eq!(
383        unsafe { ::core::ptr::addr_of!((*ptr).u_blo) as usize - ptr as usize },
384        0usize,
385        concat!(
386            "Offset of field: ",
387            stringify!(rrd_infoval),
388            "::",
389            stringify!(u_blo)
390        )
391    );
392}
393pub type rrd_infoval_t = rrd_infoval;
394#[repr(C)]
395#[derive(Copy, Clone)]
396pub struct rrd_info_t {
397    pub key: *mut ::core::ffi::c_char,
398    pub type_: rrd_info_type_t,
399    pub value: rrd_infoval_t,
400    pub next: *mut rrd_info_t,
401}
402#[test]
403fn bindgen_test_layout_rrd_info_t() {
404    const UNINIT: ::core::mem::MaybeUninit<rrd_info_t> = ::core::mem::MaybeUninit::uninit();
405    let ptr = UNINIT.as_ptr();
406    assert_eq!(
407        ::core::mem::size_of::<rrd_info_t>(),
408        40usize,
409        concat!("Size of: ", stringify!(rrd_info_t))
410    );
411    assert_eq!(
412        ::core::mem::align_of::<rrd_info_t>(),
413        8usize,
414        concat!("Alignment of ", stringify!(rrd_info_t))
415    );
416    assert_eq!(
417        unsafe { ::core::ptr::addr_of!((*ptr).key) as usize - ptr as usize },
418        0usize,
419        concat!(
420            "Offset of field: ",
421            stringify!(rrd_info_t),
422            "::",
423            stringify!(key)
424        )
425    );
426    assert_eq!(
427        unsafe { ::core::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
428        8usize,
429        concat!(
430            "Offset of field: ",
431            stringify!(rrd_info_t),
432            "::",
433            stringify!(type_)
434        )
435    );
436    assert_eq!(
437        unsafe { ::core::ptr::addr_of!((*ptr).value) as usize - ptr as usize },
438        16usize,
439        concat!(
440            "Offset of field: ",
441            stringify!(rrd_info_t),
442            "::",
443            stringify!(value)
444        )
445    );
446    assert_eq!(
447        unsafe { ::core::ptr::addr_of!((*ptr).next) as usize - ptr as usize },
448        32usize,
449        concat!(
450            "Offset of field: ",
451            stringify!(rrd_info_t),
452            "::",
453            stringify!(next)
454        )
455    );
456}
457pub type rrd_output_callback_t = ::core::option::Option<
458    unsafe extern "C" fn(
459        arg1: *const ::core::ffi::c_void,
460        arg2: usize,
461        arg3: *mut ::core::ffi::c_void,
462    ) -> usize,
463>;
464extern "C" {
465    pub fn rrd_create(
466        arg1: ::core::ffi::c_int,
467        arg2: *mut *mut ::core::ffi::c_char,
468    ) -> ::core::ffi::c_int;
469}
470extern "C" {
471    pub fn rrd_info(
472        arg1: ::core::ffi::c_int,
473        arg2: *mut *mut ::core::ffi::c_char,
474    ) -> *mut rrd_info_t;
475}
476extern "C" {
477    pub fn rrd_info_push(
478        arg1: *mut rrd_info_t,
479        arg2: *mut ::core::ffi::c_char,
480        arg3: rrd_info_type_t,
481        arg4: rrd_infoval_t,
482    ) -> *mut rrd_info_t;
483}
484extern "C" {
485    pub fn rrd_info_print(data: *mut rrd_info_t);
486}
487extern "C" {
488    pub fn rrd_info_free(arg1: *mut rrd_info_t);
489}
490extern "C" {
491    pub fn rrd_list(
492        arg1: ::core::ffi::c_int,
493        arg2: *mut *mut ::core::ffi::c_char,
494    ) -> *mut ::core::ffi::c_char;
495}
496extern "C" {
497    pub fn rrd_list_r(
498        arg1: ::core::ffi::c_int,
499        dirname: *mut ::core::ffi::c_char,
500    ) -> *mut ::core::ffi::c_char;
501}
502extern "C" {
503    pub fn rrd_update(
504        arg1: ::core::ffi::c_int,
505        arg2: *mut *mut ::core::ffi::c_char,
506    ) -> ::core::ffi::c_int;
507}
508extern "C" {
509    pub fn rrd_update_v(
510        arg1: ::core::ffi::c_int,
511        arg2: *mut *mut ::core::ffi::c_char,
512    ) -> *mut rrd_info_t;
513}
514extern "C" {
515    pub fn rrd_graph(
516        argc: ::core::ffi::c_int,
517        argv: *mut *mut ::core::ffi::c_char,
518        prdata: *mut *mut *mut ::core::ffi::c_char,
519        xsize: *mut ::core::ffi::c_int,
520        ysize: *mut ::core::ffi::c_int,
521        stream: *mut FILE,
522        ymin: *mut f64,
523        ymax: *mut f64
524    ) -> ::core::ffi::c_int;
525}
526extern "C" {
527    pub fn rrd_graph_v(
528        arg1: ::core::ffi::c_int,
529        arg2: *mut *mut ::core::ffi::c_char,
530    ) -> *mut rrd_info_t;
531}
532extern "C" {
533    pub fn rrd_fetch(
534        arg1: ::core::ffi::c_int,
535        arg2: *mut *mut ::core::ffi::c_char,
536        arg3: *mut time_t,
537        arg4: *mut time_t,
538        arg5: *mut ::core::ffi::c_ulong,
539        arg6: *mut ::core::ffi::c_ulong,
540        arg7: *mut *mut *mut ::core::ffi::c_char,
541        arg8: *mut *mut rrd_value_t,
542    ) -> ::core::ffi::c_int;
543}
544extern "C" {
545    pub fn rrd_restore(
546        arg1: ::core::ffi::c_int,
547        arg2: *mut *mut ::core::ffi::c_char,
548    ) -> ::core::ffi::c_int;
549}
550extern "C" {
551    pub fn rrd_dump(
552        arg1: ::core::ffi::c_int,
553        arg2: *mut *mut ::core::ffi::c_char,
554    ) -> ::core::ffi::c_int;
555}
556extern "C" {
557    pub fn rrd_tune(
558        arg1: ::core::ffi::c_int,
559        arg2: *mut *mut ::core::ffi::c_char,
560    ) -> ::core::ffi::c_int;
561}
562extern "C" {
563    pub fn rrd_last(arg1: ::core::ffi::c_int, arg2: *mut *mut ::core::ffi::c_char) -> time_t;
564}
565extern "C" {
566    pub fn rrd_lastupdate(
567        argc: ::core::ffi::c_int,
568        argv: *mut *mut ::core::ffi::c_char,
569    ) -> ::core::ffi::c_int;
570}
571extern "C" {
572    pub fn rrd_first(arg1: ::core::ffi::c_int, arg2: *mut *mut ::core::ffi::c_char) -> time_t;
573}
574extern "C" {
575    pub fn rrd_resize(
576        arg1: ::core::ffi::c_int,
577        arg2: *mut *mut ::core::ffi::c_char,
578    ) -> ::core::ffi::c_int;
579}
580extern "C" {
581    pub fn rrd_strversion() -> *mut ::core::ffi::c_char;
582}
583extern "C" {
584    pub fn rrd_version() -> f64;
585}
586extern "C" {
587    pub fn rrd_xport(
588        arg1: ::core::ffi::c_int,
589        arg2: *mut *mut ::core::ffi::c_char,
590        arg3: *mut ::core::ffi::c_int,
591        arg4: *mut time_t,
592        arg5: *mut time_t,
593        arg6: *mut ::core::ffi::c_ulong,
594        arg7: *mut ::core::ffi::c_ulong,
595        arg8: *mut *mut *mut ::core::ffi::c_char,
596        arg9: *mut *mut rrd_value_t,
597    ) -> ::core::ffi::c_int;
598}
599extern "C" {
600    pub fn rrd_flushcached(
601        argc: ::core::ffi::c_int,
602        argv: *mut *mut ::core::ffi::c_char,
603    ) -> ::core::ffi::c_int;
604}
605extern "C" {
606    pub fn rrd_freemem(mem: *mut ::core::ffi::c_void);
607}
608extern "C" {
609    pub fn rrd_create_r(
610        filename: *const ::core::ffi::c_char,
611        pdp_step: ::core::ffi::c_ulong,
612        last_up: time_t,
613        argc: ::core::ffi::c_int,
614        argv: *mut *const ::core::ffi::c_char,
615    ) -> ::core::ffi::c_int;
616}
617extern "C" {
618    pub fn rrd_create_r2(
619        filename: *const ::core::ffi::c_char,
620        pdp_step: ::core::ffi::c_ulong,
621        last_up: time_t,
622        no_overwrite: ::core::ffi::c_int,
623        sources: *mut *const ::core::ffi::c_char,
624        _template: *const ::core::ffi::c_char,
625        argc: ::core::ffi::c_int,
626        argv: *mut *const ::core::ffi::c_char,
627    ) -> ::core::ffi::c_int;
628}
629extern "C" {
630    pub fn rrd_info_r(filename: *const ::core::ffi::c_char) -> *mut rrd_info_t;
631}
632extern "C" {
633    pub fn rrd_update_r(
634        filename: *const ::core::ffi::c_char,
635        _template: *const ::core::ffi::c_char,
636        argc: ::core::ffi::c_int,
637        argv: *mut *const ::core::ffi::c_char,
638    ) -> ::core::ffi::c_int;
639}
640extern "C" {
641    pub fn rrd_update_v_r(
642        filename: *const ::core::ffi::c_char,
643        _template: *const ::core::ffi::c_char,
644        argc: ::core::ffi::c_int,
645        argv: *mut *const ::core::ffi::c_char,
646        pcdp_summary: *mut rrd_info_t,
647    ) -> ::core::ffi::c_int;
648}
649extern "C" {
650    pub fn rrd_updatex_r(
651        filename: *const ::core::ffi::c_char,
652        _template: *const ::core::ffi::c_char,
653        extra_flags: ::core::ffi::c_int,
654        argc: ::core::ffi::c_int,
655        argv: *mut *const ::core::ffi::c_char,
656    ) -> ::core::ffi::c_int;
657}
658extern "C" {
659    pub fn rrd_updatex_v_r(
660        filename: *const ::core::ffi::c_char,
661        _template: *const ::core::ffi::c_char,
662        extra_flags: ::core::ffi::c_int,
663        argc: ::core::ffi::c_int,
664        argv: *mut *const ::core::ffi::c_char,
665        pcdp_summary: *mut rrd_info_t,
666    ) -> ::core::ffi::c_int;
667}
668extern "C" {
669    pub fn rrd_fetch_r(
670        filename: *const ::core::ffi::c_char,
671        cf: *const ::core::ffi::c_char,
672        start: *mut time_t,
673        end: *mut time_t,
674        step: *mut ::core::ffi::c_ulong,
675        ds_cnt: *mut ::core::ffi::c_ulong,
676        ds_namv: *mut *mut *mut ::core::ffi::c_char,
677        data: *mut *mut rrd_value_t,
678    ) -> ::core::ffi::c_int;
679}
680extern "C" {
681    pub fn rrd_tune_r(
682        filename: *const ::core::ffi::c_char,
683        argc: ::core::ffi::c_int,
684        argv: *mut *const ::core::ffi::c_char,
685    ) -> ::core::ffi::c_int;
686}
687extern "C" {
688    pub fn rrd_dump_opt_r(
689        filename: *const ::core::ffi::c_char,
690        outname: *mut ::core::ffi::c_char,
691        opt_noheader: ::core::ffi::c_int,
692    ) -> ::core::ffi::c_int;
693}
694extern "C" {
695    pub fn rrd_dump_r(
696        filename: *const ::core::ffi::c_char,
697        outname: *mut ::core::ffi::c_char,
698    ) -> ::core::ffi::c_int;
699}
700extern "C" {
701    pub fn rrd_last_r(filename: *const ::core::ffi::c_char) -> time_t;
702}
703extern "C" {
704    pub fn rrd_lastupdate_r(
705        filename: *const ::core::ffi::c_char,
706        ret_last_update: *mut time_t,
707        ret_ds_count: *mut ::core::ffi::c_ulong,
708        ret_ds_names: *mut *mut *mut ::core::ffi::c_char,
709        ret_last_ds: *mut *mut *mut ::core::ffi::c_char,
710    ) -> ::core::ffi::c_int;
711}
712extern "C" {
713    pub fn rrd_first_r(
714        filename: *const ::core::ffi::c_char,
715        rraindex: ::core::ffi::c_int,
716    ) -> time_t;
717}
718extern "C" {
719    pub fn rrd_dump_cb_r(
720        filename: *const ::core::ffi::c_char,
721        opt_header: ::core::ffi::c_int,
722        cb: rrd_output_callback_t,
723        user: *mut ::core::ffi::c_void,
724    ) -> ::core::ffi::c_int;
725}
726pub const rrd_timetype_t_ABSOLUTE_TIME: rrd_timetype_t = 0;
727pub const rrd_timetype_t_RELATIVE_TO_START_TIME: rrd_timetype_t = 1;
728pub const rrd_timetype_t_RELATIVE_TO_END_TIME: rrd_timetype_t = 2;
729pub const rrd_timetype_t_RELATIVE_TO_EPOCH: rrd_timetype_t = 3;
730pub type rrd_timetype_t = ::core::ffi::c_int;
731#[repr(C)]
732#[derive(Debug, Copy, Clone)]
733pub struct rrd_time_value {
734    pub type_: rrd_timetype_t,
735    pub offset: ::core::ffi::c_long,
736    pub tm: tm,
737}
738#[test]
739fn bindgen_test_layout_rrd_time_value() {
740    const UNINIT: ::core::mem::MaybeUninit<rrd_time_value> = ::core::mem::MaybeUninit::uninit();
741    let ptr = UNINIT.as_ptr();
742    assert_eq!(
743        ::core::mem::size_of::<rrd_time_value>(),
744        44usize,
745        concat!("Size of: ", stringify!(rrd_time_value))
746    );
747    assert_eq!(
748        ::core::mem::align_of::<rrd_time_value>(),
749        4usize,
750        concat!("Alignment of ", stringify!(rrd_time_value))
751    );
752    assert_eq!(
753        unsafe { ::core::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
754        0usize,
755        concat!(
756            "Offset of field: ",
757            stringify!(rrd_time_value),
758            "::",
759            stringify!(type_)
760        )
761    );
762    assert_eq!(
763        unsafe { ::core::ptr::addr_of!((*ptr).offset) as usize - ptr as usize },
764        4usize,
765        concat!(
766            "Offset of field: ",
767            stringify!(rrd_time_value),
768            "::",
769            stringify!(offset)
770        )
771    );
772    assert_eq!(
773        unsafe { ::core::ptr::addr_of!((*ptr).tm) as usize - ptr as usize },
774        8usize,
775        concat!(
776            "Offset of field: ",
777            stringify!(rrd_time_value),
778            "::",
779            stringify!(tm)
780        )
781    );
782}
783pub type rrd_time_value_t = rrd_time_value;
784extern "C" {
785    pub fn rrd_parsetime(
786        spec: *const ::core::ffi::c_char,
787        ptv: *mut rrd_time_value_t,
788    ) -> *mut ::core::ffi::c_char;
789}
790#[repr(C)]
791#[derive(Debug, Copy, Clone)]
792pub struct rrd_context {
793    pub lib_errstr: [::core::ffi::c_char; 256usize],
794    pub rrd_error: [::core::ffi::c_char; 4096usize],
795}
796#[test]
797fn bindgen_test_layout_rrd_context() {
798    const UNINIT: ::core::mem::MaybeUninit<rrd_context> = ::core::mem::MaybeUninit::uninit();
799    let ptr = UNINIT.as_ptr();
800    assert_eq!(
801        ::core::mem::size_of::<rrd_context>(),
802        4352usize,
803        concat!("Size of: ", stringify!(rrd_context))
804    );
805    assert_eq!(
806        ::core::mem::align_of::<rrd_context>(),
807        1usize,
808        concat!("Alignment of ", stringify!(rrd_context))
809    );
810    assert_eq!(
811        unsafe { ::core::ptr::addr_of!((*ptr).lib_errstr) as usize - ptr as usize },
812        0usize,
813        concat!(
814            "Offset of field: ",
815            stringify!(rrd_context),
816            "::",
817            stringify!(lib_errstr)
818        )
819    );
820    assert_eq!(
821        unsafe { ::core::ptr::addr_of!((*ptr).rrd_error) as usize - ptr as usize },
822        256usize,
823        concat!(
824            "Offset of field: ",
825            stringify!(rrd_context),
826            "::",
827            stringify!(rrd_error)
828        )
829    );
830}
831pub type rrd_context_t = rrd_context;
832extern "C" {
833    pub fn rrd_get_context() -> *mut rrd_context_t;
834}
835extern "C" {
836    pub fn rrd_force_new_context() -> *mut rrd_context_t;
837}
838extern "C" {
839    pub fn rrd_proc_start_end(
840        arg1: *mut rrd_time_value_t,
841        arg2: *mut rrd_time_value_t,
842        arg3: *mut time_t,
843        arg4: *mut time_t,
844    ) -> ::core::ffi::c_int;
845}
846extern "C" {
847    pub fn rrd_set_error(arg1: *mut ::core::ffi::c_char, ...);
848}
849extern "C" {
850    pub fn rrd_clear_error();
851}
852extern "C" {
853    pub fn rrd_test_error() -> ::core::ffi::c_int;
854}
855extern "C" {
856    pub fn rrd_get_error() -> *mut ::core::ffi::c_char;
857}
858extern "C" {
859    pub fn rrd_strerror(err: ::core::ffi::c_int) -> *const ::core::ffi::c_char;
860}
861extern "C" {
862    #[doc = " MULTITHREADED HELPER FUNCTIONS"]
863    pub fn rrd_new_context() -> *mut rrd_context_t;
864}
865extern "C" {
866    pub fn rrd_free_context(buf: *mut rrd_context_t);
867}
868extern "C" {
869    #[doc = " UTILITY FUNCTIONS"]
870    pub fn rrd_random() -> ::core::ffi::c_long;
871}
872extern "C" {
873    pub fn rrd_add_ptr_chunk(
874        dest: *mut *mut *mut ::core::ffi::c_void,
875        dest_size: *mut usize,
876        src: *mut ::core::ffi::c_void,
877        alloc: *mut usize,
878        chunk: usize,
879    ) -> ::core::ffi::c_int;
880}
881extern "C" {
882    pub fn rrd_add_ptr(
883        dest: *mut *mut *mut ::core::ffi::c_void,
884        dest_size: *mut usize,
885        src: *mut ::core::ffi::c_void,
886    ) -> ::core::ffi::c_int;
887}
888extern "C" {
889    pub fn rrd_add_strdup(
890        dest: *mut *mut *mut ::core::ffi::c_char,
891        dest_size: *mut usize,
892        src: *mut ::core::ffi::c_char,
893    ) -> ::core::ffi::c_int;
894}
895extern "C" {
896    pub fn rrd_add_strdup_chunk(
897        dest: *mut *mut *mut ::core::ffi::c_char,
898        dest_size: *mut usize,
899        src: *mut ::core::ffi::c_char,
900        alloc: *mut usize,
901        chunk: usize,
902    ) -> ::core::ffi::c_int;
903}
904extern "C" {
905    pub fn rrd_free_ptrs(src: *mut *mut *mut ::core::ffi::c_void, cnt: *mut usize);
906}
907extern "C" {
908    pub fn rrd_mkdir_p(pathname: *const ::core::ffi::c_char, mode: mode_t) -> ::core::ffi::c_int;
909}
910extern "C" {
911    pub fn rrd_scaled_duration(
912        token: *const ::core::ffi::c_char,
913        divisor: ::core::ffi::c_ulong,
914        valuep: *mut ::core::ffi::c_ulong,
915    ) -> *const ::core::ffi::c_char;
916}
917extern "C" {
918    pub fn rrd_thread_init();
919}