From 768202d3223813e71848758ecafcfeab276d9101 Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Sat, 12 Mar 2016 17:52:02 +0200 Subject: [PATCH] Cast correctly c_char raw pointers for ARM Fix the build of crate dbus-rs (version 0.1.2) for ARM with correct casts of c_char raw pointers. Signed-off-by: Leon Anavi --- src/lib.rs | 18 +++++++++--------- src/message.rs | 10 +++++----- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index aac9c0f..8134dc4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -60,7 +60,7 @@ unsafe impl Send for Error {} fn c_str_to_slice(c: & *const libc::c_char) -> Option<&str> { if *c == ptr::null() { None } - else { std::str::from_utf8( unsafe { CStr::from_ptr(*c).to_bytes() }).ok() } + else { std::str::from_utf8( unsafe { CStr::from_ptr(*c as *const _).to_bytes() }).ok() } } fn to_c_str(n: &str) -> CString { CString::new(n.as_bytes()).unwrap() } @@ -72,7 +72,7 @@ impl Error { let m = to_c_str(&message.replace("%","%%")); let mut e = Error::empty(); - unsafe { ffi::dbus_set_error(e.get_mut(), n.as_ptr(), m.as_ptr()) }; + unsafe { ffi::dbus_set_error(e.get_mut(), n.as_ptr() as *const _, m.as_ptr() as *const _) }; e } @@ -272,21 +272,21 @@ impl Connection { }; let r = unsafe { let user_data: *mut libc::c_void = std::mem::transmute(&*self.i); - ffi::dbus_connection_try_register_object_path(self.conn(), p.as_ptr(), &vtable, user_data, e.get_mut()) + ffi::dbus_connection_try_register_object_path(self.conn(), p.as_ptr() as *const _, &vtable, user_data, e.get_mut()) }; if r == 0 { Err(e) } else { Ok(()) } } pub fn unregister_object_path(&self, path: &str) { let p = to_c_str(path); - let r = unsafe { ffi::dbus_connection_unregister_object_path(self.conn(), p.as_ptr()) }; + let r = unsafe { ffi::dbus_connection_unregister_object_path(self.conn(), p.as_ptr() as *const _) }; if r == 0 { panic!("Out of memory"); } } pub fn list_registered_object_paths(&self, path: &str) -> Vec { let p = to_c_str(path); let mut clist: *mut *mut libc::c_char = ptr::null_mut(); - let r = unsafe { ffi::dbus_connection_list_registered(self.conn(), p.as_ptr(), &mut clist) }; + let r = unsafe { ffi::dbus_connection_list_registered(self.conn(), p.as_ptr() as *const _, &mut clist) }; if r == 0 { panic!("Out of memory"); } let mut v = Vec::new(); let mut i = 0; @@ -306,28 +306,28 @@ impl Connection { pub fn register_name(&self, name: &str, flags: u32) -> Result { let mut e = Error::empty(); let n = to_c_str(name); - let r = unsafe { ffi::dbus_bus_request_name(self.conn(), n.as_ptr(), flags, e.get_mut()) }; + let r = unsafe { ffi::dbus_bus_request_name(self.conn(), n.as_ptr() as *const _, flags, e.get_mut()) }; if r == -1 { Err(e) } else { Ok(unsafe { std::mem::transmute(r) }) } } pub fn release_name(&self, name: &str) -> Result { let mut e = Error::empty(); let n = to_c_str(name); - let r = unsafe { ffi::dbus_bus_release_name(self.conn(), n.as_ptr(), e.get_mut()) }; + let r = unsafe { ffi::dbus_bus_release_name(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; if r == -1 { Err(e) } else { Ok(unsafe { std::mem::transmute(r) }) } } pub fn add_match(&self, rule: &str) -> Result<(), Error> { let mut e = Error::empty(); let n = to_c_str(rule); - unsafe { ffi::dbus_bus_add_match(self.conn(), n.as_ptr(), e.get_mut()) }; + unsafe { ffi::dbus_bus_add_match(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; if e.name().is_some() { Err(e) } else { Ok(()) } } pub fn remove_match(&self, rule: &str) -> Result<(), Error> { let mut e = Error::empty(); let n = to_c_str(rule); - unsafe { ffi::dbus_bus_remove_match(self.conn(), n.as_ptr(), e.get_mut()) }; + unsafe { ffi::dbus_bus_remove_match(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; if e.name().is_some() { Err(e) } else { Ok(()) } } diff --git a/src/message.rs b/src/message.rs index 23871f8..e3dd021 100644 --- a/src/message.rs +++ b/src/message.rs @@ -126,7 +126,7 @@ fn iter_append_array(i: &mut ffi::DBusMessageIter, a: &[MessageItem], t: TypeSig let mut subiter = new_dbus_message_iter(); let atype = to_c_str(&t); - assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_ARRAY, atype.as_ptr(), &mut subiter) } != 0); + assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_ARRAY, atype.as_ptr() as *const _, &mut subiter) } != 0); for item in a.iter() { // assert!(item.type_sig() == t); item.iter_append(&mut subiter); @@ -148,7 +148,7 @@ fn iter_append_struct(i: &mut ffi::DBusMessageIter, a: &[MessageItem]) { fn iter_append_variant(i: &mut ffi::DBusMessageIter, a: &MessageItem) { let mut subiter = new_dbus_message_iter(); let atype = to_c_str(&format!("{}", a.array_type() as u8 as char)); - assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_VARIANT, atype.as_ptr(), &mut subiter) } != 0); + assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_VARIANT, atype.as_ptr() as *const _, &mut subiter) } != 0); a.iter_append(&mut subiter); assert!(unsafe { ffi::dbus_message_iter_close_container(i, &mut subiter) } != 0); } @@ -481,7 +481,7 @@ impl Message { init_dbus(); let (d, p, i, m) = (to_c_str(destination), to_c_str(path), to_c_str(iface), to_c_str(method)); let ptr = unsafe { - ffi::dbus_message_new_method_call(d.as_ptr(), p.as_ptr(), i.as_ptr(), m.as_ptr()) + ffi::dbus_message_new_method_call(d.as_ptr() as *const _, p.as_ptr() as *const _, i.as_ptr() as *const _, m.as_ptr() as *const _) }; if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } } @@ -490,7 +490,7 @@ impl Message { init_dbus(); let (p, i, m) = (to_c_str(path), to_c_str(iface), to_c_str(method)); let ptr = unsafe { - ffi::dbus_message_new_signal(p.as_ptr(), i.as_ptr(), m.as_ptr()) + ffi::dbus_message_new_signal(p.as_ptr() as *const _, i.as_ptr() as *const _, m.as_ptr() as *const _) }; if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } } @@ -502,7 +502,7 @@ impl Message { pub fn new_error(m: &Message, error_name: &str, error_message: &str) -> Option { let (en, em) = (to_c_str(error_name), to_c_str(error_message)); - let ptr = unsafe { ffi::dbus_message_new_error(m.msg, en.as_ptr(), em.as_ptr()) }; + let ptr = unsafe { ffi::dbus_message_new_error(m.msg, en.as_ptr() as *const _, em.as_ptr() as *const _) }; if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } } -- 2.1.4