| 1 | use std::os::raw::{c_void, c_char, c_uint, c_int, c_long}; |
| 2 | |
| 3 | pub type DBusConnection = c_void; |
| 4 | pub type DBusMessage = c_void; |
| 5 | pub type DBusWatch = c_void; |
| 6 | pub type DBusPendingCall = c_void; |
| 7 | pub type DBusTimeout = c_void; |
| 8 | |
| 9 | #[repr (C)] |
| 10 | #[derive (Debug, PartialEq, Copy, Clone)] |
| 11 | /// System or Session bus |
| 12 | pub enum DBusBusType { |
| 13 | Session = 0, |
| 14 | System = 1, |
| 15 | Starter = 2, |
| 16 | } |
| 17 | |
| 18 | pub const DBUS_TYPE_ARRAY: c_int = 'a' as c_int; |
| 19 | pub const DBUS_TYPE_VARIANT: c_int = 'v' as c_int; |
| 20 | pub const DBUS_TYPE_BOOLEAN: c_int = 'b' as c_int; |
| 21 | pub const DBUS_TYPE_INVALID: c_int = 0; |
| 22 | pub const DBUS_TYPE_STRING: c_int = 's' as c_int; |
| 23 | pub const DBUS_TYPE_DICT_ENTRY: c_int = 'e' as c_int; |
| 24 | pub const DBUS_TYPE_BYTE: c_int = 'y' as c_int; |
| 25 | pub const DBUS_TYPE_INT16: c_int = 'n' as c_int; |
| 26 | pub const DBUS_TYPE_UINT16: c_int = 'q' as c_int; |
| 27 | pub const DBUS_TYPE_INT32: c_int = 'i' as c_int; |
| 28 | pub const DBUS_TYPE_UINT32: c_int = 'u' as c_int; |
| 29 | pub const DBUS_TYPE_INT64: c_int = 'x' as c_int; |
| 30 | pub const DBUS_TYPE_UINT64: c_int = 't' as c_int; |
| 31 | pub const DBUS_TYPE_DOUBLE: c_int = 'd' as c_int; |
| 32 | pub const DBUS_TYPE_UNIX_FD: c_int = 'h' as c_int; |
| 33 | pub const DBUS_TYPE_STRUCT: c_int = 'r' as c_int; |
| 34 | pub const DBUS_TYPE_OBJECT_PATH: c_int = 'o' as c_int; |
| 35 | pub const DBUS_TYPE_SIGNATURE: c_int = 'g' as c_int; |
| 36 | |
| 37 | pub const DBUS_TIMEOUT_USE_DEFAULT: c_int = -1; |
| 38 | pub const DBUS_TIMEOUT_INFINITE: c_int = 0x7fffffff; |
| 39 | |
| 40 | pub const DBUS_NAME_FLAG_ALLOW_REPLACEMENT: c_int = 1; |
| 41 | pub const DBUS_NAME_FLAG_REPLACE_EXISTING: c_int = 2; |
| 42 | pub const DBUS_NAME_FLAG_DO_NOT_QUEUE: c_int = 4; |
| 43 | |
| 44 | pub const DBUS_WATCH_READABLE: c_int = 1; |
| 45 | pub const DBUS_WATCH_WRITABLE: c_int = 2; |
| 46 | pub const DBUS_WATCH_ERROR: c_int = 4; |
| 47 | pub const DBUS_WATCH_HANGUP: c_int = 8; |
| 48 | |
| 49 | #[repr (C)] |
| 50 | #[derive (Debug, PartialEq, Copy, Clone)] |
| 51 | pub enum DBusRequestNameReply { |
| 52 | PrimaryOwner = 1, |
| 53 | InQueue = 2, |
| 54 | Exists = 3, |
| 55 | AlreadyOwner = 4, |
| 56 | } |
| 57 | |
| 58 | #[repr (C)] |
| 59 | #[derive (Debug, PartialEq, Copy, Clone)] |
| 60 | pub enum DBusReleaseNameReply { |
| 61 | Released = 1, |
| 62 | NonExistent = 2, |
| 63 | NotOwner = 3, |
| 64 | } |
| 65 | |
| 66 | #[repr (C)] |
| 67 | #[derive (Debug, PartialEq, Copy, Clone)] |
| 68 | pub enum DBusHandlerResult { |
| 69 | Handled = 0, |
| 70 | NotYetHandled = 1, |
| 71 | NeedMemory = 2, |
| 72 | } |
| 73 | |
| 74 | #[repr (C)] |
| 75 | #[derive (Debug, PartialEq, Copy, Clone)] |
| 76 | /// One of the four different D-Bus message types. |
| 77 | pub enum DBusMessageType { |
| 78 | /// This is not a valid message type (rarely used) |
| 79 | Invalid = 0, |
| 80 | /// This is a method call D-Bus message |
| 81 | MethodCall = 1, |
| 82 | /// This is a method return Ok D-Bus message, used when the method call message was successfully processed |
| 83 | MethodReturn = 2, |
| 84 | /// This is a method return with error D-Bus message, used when the method call message could not be handled |
| 85 | Error = 3, |
| 86 | /// This is a signal, usually sent to whoever wants to listen |
| 87 | Signal = 4, |
| 88 | } |
| 89 | |
| 90 | #[repr (C)] |
| 91 | #[derive (Debug, PartialEq, Copy, Clone)] |
| 92 | pub enum DBusDispatchStatus { |
| 93 | DataRemains = 0, |
| 94 | Complete = 1, |
| 95 | NeedMemory = 2, |
| 96 | } |
| 97 | |
| 98 | #[repr (C)] |
| 99 | pub struct DBusError { |
| 100 | pub name: *const c_char, |
| 101 | pub message: *const c_char, |
| 102 | pub dummy: c_uint, |
| 103 | pub padding1: *const c_void |
| 104 | } |
| 105 | |
| 106 | #[repr (C)] |
| 107 | #[derive (Copy, Clone)] |
| 108 | pub struct DBusMessageIter { |
| 109 | pub dummy1: *mut c_void, |
| 110 | pub dummy2: *mut c_void, |
| 111 | pub dummy3: u32, |
| 112 | pub dummy4: c_int, |
| 113 | pub dummy5: c_int, |
| 114 | pub dummy6: c_int, |
| 115 | pub dummy7: c_int, |
| 116 | pub dummy8: c_int, |
| 117 | pub dummy9: c_int, |
| 118 | pub dummy10: c_int, |
| 119 | pub dummy11: c_int, |
| 120 | pub pad1: c_int, |
| 121 | pub pad2: c_int, |
| 122 | // Here would have been padding; because pad3 is a 8 byte aligned pointer (on amd64). |
| 123 | // Rust reserves the right not to copy the padding when cloning a struct, |
| 124 | // but the D-Bus library uses this part of the struct too. |
| 125 | // Hence, add a field as big as the padding to ensure Rust copies all data. |
| 126 | pub pad2_added_by_rust: c_int, |
| 127 | pub pad3: *mut c_void, |
| 128 | } |
| 129 | |
| 130 | pub type DBusHandleMessageFunction = Option<extern fn(conn: *mut DBusConnection, msg: *mut DBusMessage, user_data: *mut c_void) -> DBusHandlerResult>; |
| 131 | |
| 132 | pub type DBusAddWatchFunction = Option<extern fn(watch: *mut DBusWatch, user_data: *mut c_void) -> u32>; |
| 133 | pub type DBusRemoveWatchFunction = Option<extern fn(watch: *mut DBusWatch, user_data: *mut c_void)>; |
| 134 | pub type DBusWatchToggledFunction = Option<extern fn(watch: *mut DBusWatch, user_data: *mut c_void)>; |
| 135 | |
| 136 | pub type DBusAddTimeoutFunction = Option<extern fn(timeout: *mut DBusTimeout, user_data: *mut c_void) -> u32>; |
| 137 | pub type DBusTimeoutToggledFunction = Option<extern fn(timeout: *mut DBusTimeout, user_data: *mut c_void)>; |
| 138 | pub type DBusRemoveTimeoutFunction = Option<extern fn(timeout: *mut DBusTimeout, user_data: *mut c_void)>; |
| 139 | |
| 140 | pub type DBusDispatchStatusFunction = Option<extern fn(conn: *mut DBusConnection, new_status: DBusDispatchStatus, user_data: *mut c_void)>; |
| 141 | |
| 142 | pub type DBusWakeupMainFunction = Option<extern fn(conn: *mut DBusConnection, user_data: *mut c_void)>; |
| 143 | |
| 144 | pub type DBusPendingCallNotifyFunction = Option<extern fn(pending: *mut DBusPendingCall, user_data: *mut c_void)>; |
| 145 | |
| 146 | pub type DBusFreeFunction = Option<extern fn(memory: *mut c_void)>; |
| 147 | |
| 148 | #[repr (C)] |
| 149 | pub struct DBusObjectPathVTable { |
| 150 | pub unregister_function: Option<extern fn(conn: *mut DBusConnection, user_data: *mut c_void)>, |
| 151 | pub message_function: DBusHandleMessageFunction, |
| 152 | pub dbus_internal_pad1: Option<extern fn()>, |
| 153 | pub dbus_internal_pad2: Option<extern fn()>, |
| 154 | pub dbus_internal_pad3: Option<extern fn()>, |
| 155 | pub dbus_internal_pad4: Option<extern fn()>, |
| 156 | } |
| 157 | |
| 158 | unsafeextern "C" { |
| 159 | pub unsafefn dbus_bus_get_private(t: DBusBusType, error: *mut DBusError) -> *mut DBusConnection; |
| 160 | pub unsafefn dbus_bus_get_unique_name(conn: *mut DBusConnection) -> *const c_char; |
| 161 | pub unsafefn dbus_bus_request_name(conn: *mut DBusConnection, name: *const c_char, |
| 162 | flags: c_uint, error: *mut DBusError) -> c_int; |
| 163 | pub unsafefn dbus_bus_release_name(conn: *mut DBusConnection, name: *const c_char, |
| 164 | error: *mut DBusError) -> c_int; |
| 165 | pub unsafefn dbus_bus_add_match(conn: *mut DBusConnection, rule: *const c_char, |
| 166 | error: *mut DBusError); |
| 167 | pub unsafefn dbus_bus_remove_match(conn: *mut DBusConnection, rule: *const c_char, |
| 168 | error: *mut DBusError); |
| 169 | pub unsafefn dbus_bus_register(conn: *mut DBusConnection, error: *mut DBusError) -> u32; |
| 170 | |
| 171 | pub unsafefn dbus_connection_close(conn: *mut DBusConnection); |
| 172 | pub unsafefn dbus_connection_dispatch(conn: *mut DBusConnection) -> DBusDispatchStatus; |
| 173 | pub unsafefn dbus_connection_flush(conn: *mut DBusConnection); |
| 174 | pub unsafefn dbus_connection_open_private(address: *const c_char, error: *mut DBusError) -> *mut DBusConnection; |
| 175 | pub unsafefn dbus_connection_unref(conn: *mut DBusConnection); |
| 176 | pub unsafefn dbus_connection_get_is_connected(conn: *mut DBusConnection) -> u32; |
| 177 | pub unsafefn dbus_connection_set_exit_on_disconnect(conn: *mut DBusConnection, enable: u32); |
| 178 | pub unsafefn dbus_connection_send_with_reply_and_block(conn: *mut DBusConnection, |
| 179 | message: *mut DBusMessage, timeout_milliseconds: c_int, error: *mut DBusError) -> *mut DBusMessage; |
| 180 | pub unsafefn dbus_connection_send_with_reply(conn: *mut DBusConnection, |
| 181 | message: *mut DBusMessage, pending_return: *mut *mut DBusPendingCall, timeout_milliseconds: c_int) -> u32; |
| 182 | pub unsafefn dbus_connection_send(conn: *mut DBusConnection, |
| 183 | message: *mut DBusMessage, serial: *mut u32) -> u32; |
| 184 | pub unsafefn dbus_connection_read_write_dispatch(conn: *mut DBusConnection, |
| 185 | timeout_milliseconds: c_int) -> u32; |
| 186 | pub unsafefn dbus_connection_read_write(conn: *mut DBusConnection, timeout_milliseconds: c_int) -> u32; |
| 187 | pub unsafefn dbus_connection_try_register_object_path(conn: *mut DBusConnection, |
| 188 | path: *const c_char, vtable: *const DBusObjectPathVTable, user_data: *mut c_void, |
| 189 | error: *mut DBusError) -> u32; |
| 190 | pub unsafefn dbus_connection_unregister_object_path(conn: *mut DBusConnection, |
| 191 | path: *const c_char) -> u32; |
| 192 | pub unsafefn dbus_connection_list_registered(conn: *mut DBusConnection, |
| 193 | parent_path: *const c_char, child_entries: *mut *mut *mut c_char) -> u32; |
| 194 | pub unsafefn dbus_connection_add_filter(conn: *mut DBusConnection, function: DBusHandleMessageFunction, |
| 195 | user_data: *mut c_void, free_data_function: DBusFreeFunction) -> u32; |
| 196 | pub unsafefn dbus_connection_remove_filter(conn: *mut DBusConnection, function: DBusHandleMessageFunction, |
| 197 | user_data: *mut c_void) -> u32; |
| 198 | pub unsafefn dbus_connection_set_watch_functions(conn: *mut DBusConnection, add_function: DBusAddWatchFunction, |
| 199 | remove_function: DBusRemoveWatchFunction, toggled_function: DBusWatchToggledFunction, |
| 200 | data: *mut c_void, free_data_function: DBusFreeFunction) -> u32; |
| 201 | pub unsafefn dbus_connection_set_timeout_functions(conn: *mut DBusConnection, add_function: DBusAddTimeoutFunction, |
| 202 | remove_function: DBusRemoveTimeoutFunction, toggled_function: DBusTimeoutToggledFunction, |
| 203 | data: *mut c_void, free_data_function: DBusFreeFunction) -> u32; |
| 204 | pub unsafefn dbus_connection_set_dispatch_status_function(conn: *mut DBusConnection, |
| 205 | dispatch_function: DBusDispatchStatusFunction, data: *mut c_void, free_data_function: DBusFreeFunction); |
| 206 | pub unsafefn dbus_connection_set_wakeup_main_function(conn: *mut DBusConnection, |
| 207 | wakeup_function: DBusWakeupMainFunction, data: *mut c_void, free_data_function: DBusFreeFunction); |
| 208 | pub unsafefn dbus_connection_pop_message(conn: *mut DBusConnection) -> *mut DBusMessage; |
| 209 | pub unsafefn dbus_connection_get_dispatch_status(conn: *mut DBusConnection) -> DBusDispatchStatus; |
| 210 | |
| 211 | pub unsafefn dbus_error_init(error: *mut DBusError); |
| 212 | pub unsafefn dbus_error_free(error: *mut DBusError); |
| 213 | pub unsafefn dbus_set_error(error: *mut DBusError, name: *const c_char, message: *const c_char, ...); |
| 214 | pub unsafefn dbus_set_error_from_message(error: *mut DBusError, message: *mut DBusMessage) -> u32; |
| 215 | |
| 216 | pub unsafefn dbus_message_new_method_call(destination: *const c_char, path: *const c_char, |
| 217 | iface: *const c_char, method: *const c_char) -> *mut DBusMessage; |
| 218 | pub unsafefn dbus_message_new_method_return(message: *mut DBusMessage) -> *mut DBusMessage; |
| 219 | pub unsafefn dbus_message_new_error(message: *mut DBusMessage, |
| 220 | error_name: *const c_char, error_message: *const c_char) -> *mut DBusMessage; |
| 221 | pub unsafefn dbus_message_new_signal(path: *const c_char, |
| 222 | iface: *const c_char, name: *const c_char) -> *mut DBusMessage; |
| 223 | pub unsafefn dbus_message_ref(message: *mut DBusMessage) -> *mut DBusMessage; |
| 224 | pub unsafefn dbus_message_unref(message: *mut DBusMessage); |
| 225 | pub unsafefn dbus_message_get_type(message: *mut DBusMessage) -> c_int; |
| 226 | pub unsafefn dbus_message_is_method_call(message: *mut DBusMessage, iface: *const c_char, method: *const c_char) -> u32; |
| 227 | pub unsafefn dbus_message_is_signal(message: *mut DBusMessage, iface: *const c_char, signal_name: *const c_char) -> u32; |
| 228 | pub unsafefn dbus_message_get_reply_serial(message: *mut DBusMessage) -> u32; |
| 229 | pub unsafefn dbus_message_get_serial(message: *mut DBusMessage) -> u32; |
| 230 | pub unsafefn dbus_message_get_path(message: *mut DBusMessage) -> *const c_char; |
| 231 | pub unsafefn dbus_message_get_interface(message: *mut DBusMessage) -> *const c_char; |
| 232 | pub unsafefn dbus_message_get_destination(message: *mut DBusMessage) -> *const c_char; |
| 233 | pub unsafefn dbus_message_get_member(message: *mut DBusMessage) -> *const c_char; |
| 234 | pub unsafefn dbus_message_get_sender(message: *mut DBusMessage) -> *const c_char; |
| 235 | pub unsafefn dbus_message_set_serial(message: *mut DBusMessage, serial: u32); |
| 236 | pub unsafefn dbus_message_set_sender(message: *mut DBusMessage, sender: *const c_char) -> u32; |
| 237 | pub unsafefn dbus_message_set_destination(message: *mut DBusMessage, destination: *const c_char) -> u32; |
| 238 | pub unsafefn dbus_message_get_no_reply(message: *mut DBusMessage) -> u32; |
| 239 | pub unsafefn dbus_message_set_no_reply(message: *mut DBusMessage, no_reply: u32); |
| 240 | pub unsafefn dbus_message_get_auto_start(message: *mut DBusMessage) -> u32; |
| 241 | pub unsafefn dbus_message_set_auto_start(message: *mut DBusMessage, no_reply: u32); |
| 242 | pub unsafefn dbus_message_copy(message: *const DBusMessage) -> *mut DBusMessage; |
| 243 | |
| 244 | pub unsafefn dbus_message_iter_append_basic(iter: *mut DBusMessageIter, t: c_int, value: *const c_void) -> u32; |
| 245 | pub unsafefn dbus_message_iter_append_fixed_array(iter: *mut DBusMessageIter, element_type: c_int, |
| 246 | value: *const c_void, n_elements: c_int) -> u32; |
| 247 | pub unsafefn dbus_message_iter_init(message: *mut DBusMessage, iter: *mut DBusMessageIter) -> u32; |
| 248 | pub unsafefn dbus_message_iter_init_append(message: *mut DBusMessage, iter: *mut DBusMessageIter); |
| 249 | pub unsafefn dbus_message_iter_get_arg_type(iter: *mut DBusMessageIter) -> c_int; |
| 250 | pub unsafefn dbus_message_iter_get_basic(iter: *mut DBusMessageIter, value: *mut c_void); |
| 251 | pub unsafefn dbus_message_iter_get_element_type(iter: *mut DBusMessageIter) -> c_int; |
| 252 | pub unsafefn dbus_message_iter_get_fixed_array(iter: *mut DBusMessageIter, |
| 253 | value: *mut c_void, n_elements: *mut c_int) -> u32; |
| 254 | pub unsafefn dbus_message_iter_get_signature(iter: *mut DBusMessageIter) -> *mut c_char; |
| 255 | pub unsafefn dbus_message_iter_next(iter: *mut DBusMessageIter) -> u32; |
| 256 | pub unsafefn dbus_message_iter_recurse(iter: *mut DBusMessageIter, subiter: *mut DBusMessageIter); |
| 257 | pub unsafefn dbus_message_iter_open_container(iter: *mut DBusMessageIter, _type: c_int, |
| 258 | contained_signature: *const c_char, sub: *mut DBusMessageIter) -> u32; |
| 259 | pub unsafefn dbus_message_iter_close_container(iter: *mut DBusMessageIter, sub: *mut DBusMessageIter) -> u32; |
| 260 | |
| 261 | pub unsafefn dbus_free(memory: *mut c_void); |
| 262 | pub unsafefn dbus_free_string_array(str_array: *mut *mut c_char) -> c_void; |
| 263 | |
| 264 | pub unsafefn dbus_signature_validate_single(signature: *const c_char, error: *mut DBusError) -> u32; |
| 265 | |
| 266 | pub unsafefn dbus_threads_init_default() -> c_int; |
| 267 | |
| 268 | pub unsafefn dbus_validate_bus_name(busname: *const c_char, error: *mut DBusError) -> u32; |
| 269 | pub unsafefn dbus_validate_error_name(errorname: *const c_char, error: *mut DBusError) -> u32; |
| 270 | pub unsafefn dbus_validate_interface(interface: *const c_char, error: *mut DBusError) -> u32; |
| 271 | pub unsafefn dbus_validate_member(member: *const c_char, error: *mut DBusError) -> u32; |
| 272 | pub unsafefn dbus_validate_path(path: *const c_char, error: *mut DBusError) -> u32; |
| 273 | |
| 274 | pub unsafefn dbus_watch_get_enabled(watch: *mut DBusWatch) -> u32; |
| 275 | pub unsafefn dbus_watch_get_flags(watch: *mut DBusWatch) -> c_uint; |
| 276 | pub unsafefn dbus_watch_get_unix_fd(watch: *mut DBusWatch) -> c_int; |
| 277 | pub unsafefn dbus_watch_get_socket(watch: *mut DBusWatch) -> c_int; |
| 278 | pub unsafefn dbus_watch_handle(watch: *mut DBusWatch, flags: c_uint) -> u32; |
| 279 | pub unsafefn dbus_watch_get_data(watch: *mut DBusWatch) -> *mut c_void; |
| 280 | pub unsafefn dbus_watch_set_data(watch: *mut DBusWatch, user_data: *mut c_void, |
| 281 | free_data_function: DBusFreeFunction); |
| 282 | |
| 283 | pub unsafefn dbus_timeout_get_enabled(timeout: *mut DBusTimeout) -> u32; |
| 284 | pub unsafefn dbus_timeout_get_interval(timeout: *mut DBusTimeout) -> c_int; |
| 285 | pub unsafefn dbus_timeout_handle(timeout: *mut DBusTimeout) -> u32; |
| 286 | pub unsafefn dbus_timeout_get_data(timeout: *mut DBusTimeout) -> *mut c_void; |
| 287 | pub unsafefn dbus_timeout_set_data(timeout: *mut DBusTimeout, user_data: *mut c_void, |
| 288 | free_data_function: DBusFreeFunction); |
| 289 | |
| 290 | pub unsafefn dbus_pending_call_ref(pending: *mut DBusPendingCall) -> *mut DBusPendingCall; |
| 291 | pub unsafefn dbus_pending_call_unref(pending: *mut DBusPendingCall); |
| 292 | pub unsafefn dbus_pending_call_set_notify(pending: *mut DBusPendingCall, n: DBusPendingCallNotifyFunction, |
| 293 | user_data: *mut c_void, free_user_data: DBusFreeFunction) -> u32; |
| 294 | pub unsafefn dbus_pending_call_steal_reply(pending: *mut DBusPendingCall) -> *mut DBusMessage; |
| 295 | |
| 296 | pub unsafefn dbus_message_marshal(msg: *mut DBusMessage, marshalled_data_p: *mut *mut c_char, len_p: *mut c_int) -> u32; |
| 297 | pub unsafefn dbus_message_demarshal(s: *const c_char, len: c_int, error: *mut DBusError) -> *mut DBusMessage; |
| 298 | pub unsafefn dbus_message_demarshal_bytes_needed(buf: *const c_char, len: c_int) -> c_int; |
| 299 | |
| 300 | pub unsafefn dbus_connection_set_max_message_size(conn: *mut DBusConnection, size: c_long); |
| 301 | pub unsafefn dbus_connection_get_max_message_size(conn: *mut DBusConnection) -> c_long; |
| 302 | pub unsafefn dbus_connection_set_max_message_unix_fds(conn: *mut DBusConnection, n: c_long); |
| 303 | pub unsafefn dbus_connection_get_max_message_unix_fds(conn: *mut DBusConnection) -> c_long; |
| 304 | |
| 305 | pub unsafefn dbus_connection_set_max_received_size(conn: *mut DBusConnection, size: c_long); |
| 306 | pub unsafefn dbus_connection_get_max_received_size(conn: *mut DBusConnection) -> c_long; |
| 307 | pub unsafefn dbus_connection_set_max_received_unix_fds(conn: *mut DBusConnection, n: c_long); |
| 308 | pub unsafefn dbus_connection_get_max_received_unix_fds(conn: *mut DBusConnection) -> c_long; |
| 309 | |
| 310 | pub unsafefn dbus_connection_get_outgoing_size(conn: *mut DBusConnection) -> c_long; |
| 311 | pub unsafefn dbus_connection_get_outgoing_unix_fds(conn: *mut DBusConnection) -> c_long; |
| 312 | pub unsafefn dbus_connection_has_messages_to_send(conn: *mut DBusConnection) -> u32; |
| 313 | |
| 314 | pub unsafefn dbus_try_get_local_machine_id(error: *mut DBusError) -> *mut c_char; |
| 315 | pub unsafefn dbus_get_local_machine_id() -> *mut c_char; |
| 316 | } |
| 317 | |