1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5use std::ffi::CStr;
6include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
7
8#[repr(C)]
9pub struct builtin {
10 pub name: *const u8,
11 pub function: sh_builtin_func_t,
12 pub flags: ::std::os::raw::c_int,
13 pub long_doc: *const *const u8,
14 pub short_doc: *const u8,
15 pub handle: *const u8,
16}
17
18unsafe impl Sync for builtin {}
19
20pub unsafe fn argv_list<'a>(mut word_list: *mut WORD_LIST) -> Vec<&'a CStr> {
23 let mut argv = Vec::<&CStr>::new();
24 while !word_list.is_null() {
25 argv.push({
26 assert_ne!(std::ptr::null_mut(), (*(*word_list).word).word);
27 CStr::from_ptr((*(*word_list).word).word)
28 });
29 word_list = (*word_list).next;
30 }
31 argv
32}
33
34#[test]
35fn bindgen_test_layout_builtin() {
36 assert_eq!(
37 ::std::mem::size_of::<builtin>(),
38 48usize,
39 concat!("Size of: ", stringify!(builtin))
40 );
41 assert_eq!(
42 ::std::mem::align_of::<builtin>(),
43 8usize,
44 concat!("Alignment of ", stringify!(builtin))
45 );
46 assert_eq!(
47 unsafe { &(*(::std::ptr::null::<builtin>())).name as *const _ as usize },
48 0usize,
49 concat!(
50 "Offset of field: ",
51 stringify!(builtin),
52 "::",
53 stringify!(name)
54 )
55 );
56 assert_eq!(
57 unsafe { &(*(::std::ptr::null::<builtin>())).function as *const _ as usize },
58 8usize,
59 concat!(
60 "Offset of field: ",
61 stringify!(builtin),
62 "::",
63 stringify!(function)
64 )
65 );
66 assert_eq!(
67 unsafe { &(*(::std::ptr::null::<builtin>())).flags as *const _ as usize },
68 16usize,
69 concat!(
70 "Offset of field: ",
71 stringify!(builtin),
72 "::",
73 stringify!(flags)
74 )
75 );
76 assert_eq!(
77 unsafe { &(*(::std::ptr::null::<builtin>())).long_doc as *const _ as usize },
78 24usize,
79 concat!(
80 "Offset of field: ",
81 stringify!(builtin),
82 "::",
83 stringify!(long_doc)
84 )
85 );
86 assert_eq!(
87 unsafe { &(*(::std::ptr::null::<builtin>())).short_doc as *const _ as usize },
88 32usize,
89 concat!(
90 "Offset of field: ",
91 stringify!(builtin),
92 "::",
93 stringify!(short_doc)
94 )
95 );
96 assert_eq!(
97 unsafe { &(*(::std::ptr::null::<builtin>())).handle as *const _ as usize },
98 40usize,
99 concat!(
100 "Offset of field: ",
101 stringify!(builtin),
102 "::",
103 stringify!(handle)
104 )
105 );
106}