osqp_rust_sys/src64/lin_sys/
lib_handler.rs

1extern "C" {
2    fn dlsym(
3        __handle: *mut ::std::os::raw::c_void,
4        __symbol: *const ::std::os::raw::c_char,
5    ) -> *mut ::std::os::raw::c_void;
6    fn dlopen(__path: *const ::std::os::raw::c_char, __mode: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void;
7    fn dlerror() -> *mut ::std::os::raw::c_char;
8    fn dlclose(__handle: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int;
9    fn printf(_: *const ::std::os::raw::c_char, _: ...) -> ::std::os::raw::c_int;
10    fn __toupper(_: __darwin_ct_rune_t) -> __darwin_ct_rune_t;
11    fn __tolower(_: __darwin_ct_rune_t) -> __darwin_ct_rune_t;
12    fn c_strcpy(dest: *mut ::std::os::raw::c_char, source: *const ::std::os::raw::c_char);
13}
14pub type __darwin_ct_rune_t = ::std::os::raw::c_int;
15pub type __darwin_size_t = ::std::os::raw::c_ulong;
16pub type size_t = __darwin_size_t;
17pub type c_int = ::std::os::raw::c_longlong;
18pub type soHandle_t = *mut ::std::os::raw::c_void;
19pub type symtype = *mut ::std::os::raw::c_void;
20pub const RTLD_LAZY: ::std::os::raw::c_int = 0x1 as ::std::os::raw::c_int;
21pub const c_print: unsafe extern "C" fn(*const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int = printf;
22#[no_mangle]
23#[inline]
24#[linkage = "external"]
25pub unsafe extern "C" fn tolower(mut _c: ::std::os::raw::c_int) -> ::std::os::raw::c_int {
26    return __tolower(_c);
27}
28#[no_mangle]
29#[inline]
30#[linkage = "external"]
31pub unsafe extern "C" fn toupper(mut _c: ::std::os::raw::c_int) -> ::std::os::raw::c_int {
32    return __toupper(_c);
33}
34pub const OSQP_NULL: ::std::os::raw::c_int = 0 as ::std::os::raw::c_int;
35#[no_mangle]
36pub unsafe extern "C" fn lh_load_lib(mut libName: *const ::std::os::raw::c_char) -> soHandle_t {
37    let mut h: soHandle_t = OSQP_NULL as soHandle_t;
38    if libName.is_null() {
39        printf(
40            b"ERROR in %s: \0" as *const u8 as *const ::std::os::raw::c_char,
41            (*::std::mem::transmute::<&[u8; 12], &[::std::os::raw::c_char; 12]>(b"lh_load_lib\0"))
42                .as_ptr(),
43        );
44        printf(b"no library name given\0" as *const u8 as *const ::std::os::raw::c_char);
45        printf(b"\n\0" as *const u8 as *const ::std::os::raw::c_char);
46        return OSQP_NULL as soHandle_t;
47    }
48    h = dlopen(libName, RTLD_LAZY);
49    if h.is_null() {
50        printf(
51            b"ERROR in %s: \0" as *const u8 as *const ::std::os::raw::c_char,
52            (*::std::mem::transmute::<&[u8; 12], &[::std::os::raw::c_char; 12]>(b"lh_load_lib\0"))
53                .as_ptr(),
54        );
55        printf(
56            b"Error while loading dynamic library %s: %s\0" as *const u8
57                as *const ::std::os::raw::c_char,
58            libName,
59            dlerror(),
60        );
61        printf(b"\n\0" as *const u8 as *const ::std::os::raw::c_char);
62    }
63    return h;
64}
65#[no_mangle]
66pub unsafe extern "C" fn lh_unload_lib(mut h: soHandle_t) -> c_int {
67    let mut rc: c_int = 1 as ::std::os::raw::c_int as c_int;
68    rc = dlclose(h) as c_int;
69    return rc;
70}
71#[no_mangle]
72pub unsafe extern "C" fn lh_load_sym(
73    mut h: soHandle_t,
74    mut symName: *const ::std::os::raw::c_char,
75) -> symtype {
76    let mut s: symtype = 0 as *mut ::std::os::raw::c_void;
77    let mut from: *const ::std::os::raw::c_char = 0 as *const ::std::os::raw::c_char;
78    let mut to: *mut ::std::os::raw::c_char = 0 as *mut ::std::os::raw::c_char;
79    let mut tripSym: *const ::std::os::raw::c_char = 0 as *const ::std::os::raw::c_char;
80    let mut err: *mut ::std::os::raw::c_char = 0 as *mut ::std::os::raw::c_char;
81    let mut lcbuf: [::std::os::raw::c_char; 257] = [0; 257];
82    let mut ucbuf: [::std::os::raw::c_char; 257] = [0; 257];
83    let mut ocbuf: [::std::os::raw::c_char; 257] = [0; 257];
84    let mut symLen: size_t = 0;
85    let mut trip: ::std::os::raw::c_int = 0;
86    s = OSQP_NULL as symtype;
87    err = OSQP_NULL as *mut ::std::os::raw::c_char;
88    symLen = 0 as ::std::os::raw::c_int as size_t;
89    trip = 1 as ::std::os::raw::c_int;
90    while trip <= 6 as ::std::os::raw::c_int {
91        match trip {
92            1 => {
93                tripSym = symName;
94            }
95            2 => {
96                from = symName;
97                to = lcbuf.as_mut_ptr();
98                while *from != 0 {
99                    *to = tolower(*from as ::std::os::raw::c_int) as ::std::os::raw::c_char;
100                    from = from.offset(1);
101                    to = to.offset(1);
102                }
103                symLen = from.offset_from(symName) as ::std::os::raw::c_long as size_t;
104                let fresh0 = to;
105                to = to.offset(1);
106                *fresh0 = '_' as i32 as ::std::os::raw::c_char;
107                *to = '\u{0}' as i32 as ::std::os::raw::c_char;
108                tripSym = lcbuf.as_mut_ptr();
109            }
110            3 => {
111                from = symName;
112                to = ucbuf.as_mut_ptr();
113                while *from != 0 {
114                    *to = toupper(*from as ::std::os::raw::c_int) as ::std::os::raw::c_char;
115                    from = from.offset(1);
116                    to = to.offset(1);
117                }
118                let fresh1 = to;
119                to = to.offset(1);
120                *fresh1 = '_' as i32 as ::std::os::raw::c_char;
121                *to = '\u{0}' as i32 as ::std::os::raw::c_char;
122                tripSym = ucbuf.as_mut_ptr();
123            }
124            4 => {
125                c_strcpy(ocbuf.as_mut_ptr(), symName);
126                ocbuf[symLen as usize] = '_' as i32 as ::std::os::raw::c_char;
127                ocbuf[symLen.wrapping_add(1 as ::std::os::raw::c_int as ::std::os::raw::c_ulong)
128                    as usize] = '\u{0}' as i32 as ::std::os::raw::c_char;
129                tripSym = ocbuf.as_mut_ptr();
130            }
131            5 => {
132                lcbuf[symLen as usize] = '\u{0}' as i32 as ::std::os::raw::c_char;
133                tripSym = lcbuf.as_mut_ptr();
134            }
135            6 => {
136                ucbuf[symLen as usize] = '\u{0}' as i32 as ::std::os::raw::c_char;
137                tripSym = ucbuf.as_mut_ptr();
138            }
139            _ => {
140                tripSym = symName;
141            }
142        }
143        s = dlsym(h, tripSym);
144        err = dlerror();
145        if !err.is_null() {
146            printf(
147                b"ERROR in %s: \0" as *const u8 as *const ::std::os::raw::c_char,
148                (*::std::mem::transmute::<
149                    &[u8; 12],
150                    &[::std::os::raw::c_char; 12],
151                >(b"lh_load_sym\0"))
152                    .as_ptr(),
153            );
154            printf(
155                b"Cannot find symbol %s in dynamic library, error = %s\0" as *const u8
156                    as *const ::std::os::raw::c_char,
157                symName,
158                err,
159            );
160            printf(b"\n\0" as *const u8 as *const ::std::os::raw::c_char);
161        } else {
162            return s
163        }
164        trip += 1;
165    }
166    return OSQP_NULL as symtype;
167}