Skip to content

Commit f7ebd87

Browse files
committed
fix: use type inference in pointer casting
this handles small differences in types generated by bindgen on different targets
1 parent 0e36cae commit f7ebd87

5 files changed

Lines changed: 13 additions & 19 deletions

File tree

src/codes_handle/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use crate::{
88
};
99
use eccodes_sys::{codes_handle, ProductKind_PRODUCT_GRIB};
1010
use errno::errno;
11-
use libc::{c_char, c_void, size_t, FILE};
11+
use libc::{c_void, size_t, FILE};
1212
use std::{
1313
fmt::Debug,
1414
fs::{File, OpenOptions},
@@ -294,7 +294,7 @@ impl CodesHandle<CodesIndex> {
294294
}
295295

296296
fn open_with_fdopen(file: &File) -> Result<*mut FILE, CodesError> {
297-
let file_ptr = unsafe { libc::fdopen(file.as_raw_fd(), "r".as_ptr().cast::<c_char>()) };
297+
let file_ptr = unsafe { libc::fdopen(file.as_raw_fd(), "r".as_ptr().cast::<_>()) };
298298

299299
if file_ptr.is_null() {
300300
let error_val = errno();
@@ -314,7 +314,7 @@ fn open_with_fmemopen(file_data: &[u8]) -> Result<*mut FILE, CodesError> {
314314
file_ptr = libc::fmemopen(
315315
file_data_ptr,
316316
file_data.len() as size_t,
317-
"r".as_ptr().cast::<c_char>(),
317+
"r".as_ptr().cast::<_>(),
318318
);
319319
}
320320

src/intermediate_bindings/codes_get.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ pub unsafe fn codes_get_double_array(
9595
let error_code = eccodes_sys::codes_get_double_array(
9696
handle,
9797
key.as_ptr(),
98-
key_values.as_mut_ptr().cast::<f64>(),
98+
key_values.as_mut_ptr().cast::<_>(),
9999
&mut key_size,
100100
);
101101

@@ -121,7 +121,7 @@ pub unsafe fn codes_get_long_array(
121121
let error_code = eccodes_sys::codes_get_long_array(
122122
handle,
123123
key.as_ptr(),
124-
key_values.as_mut_ptr().cast::<i64>(),
124+
key_values.as_mut_ptr().cast::<_>(),
125125
&mut key_size,
126126
);
127127

@@ -166,7 +166,7 @@ pub unsafe fn codes_get_string(
166166
let error_code = eccodes_sys::codes_get_string(
167167
handle,
168168
key.as_ptr(),
169-
key_message.as_mut_ptr().cast::<i8>(),
169+
key_message.as_mut_ptr().cast::<_>(),
170170
&mut key_length,
171171
);
172172

@@ -204,7 +204,7 @@ pub unsafe fn codes_get_bytes(
204204
let error_code = eccodes_sys::codes_get_bytes(
205205
handle,
206206
key.as_ptr(),
207-
buffer.as_mut_ptr().cast::<u8>(),
207+
buffer.as_mut_ptr().cast::<_>(),
208208
&mut key_size,
209209
);
210210

@@ -239,7 +239,7 @@ pub unsafe fn codes_get_message(
239239
let buffer_size = codes_get_message_size(handle)?;
240240

241241
let buffer: Vec<u8> = vec![0; buffer_size];
242-
let mut buffer_ptr = buffer.as_ptr().cast::<libc::c_void>();
242+
let mut buffer_ptr = buffer.as_ptr().cast::<_>();
243243

244244
let mut message_size: usize = 0;
245245

src/intermediate_bindings/codes_handle.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,6 @@ use crate::{
1515
pointer_guard,
1616
};
1717

18-
#[cfg(target_os = "macos")]
19-
type _SYS_IO_FILE = eccodes_sys::__sFILE;
20-
21-
#[cfg(not(target_os = "macos"))]
22-
type _SYS_IO_FILE = eccodes_sys::_IO_FILE;
23-
2418
pub unsafe fn codes_handle_new_from_file(
2519
file_pointer: *mut FILE,
2620
product_kind: ProductKind,
@@ -33,7 +27,7 @@ pub unsafe fn codes_handle_new_from_file(
3327

3428
let file_handle = eccodes_sys::codes_handle_new_from_file(
3529
context,
36-
file_pointer.cast::<_SYS_IO_FILE>(),
30+
file_pointer.cast::<_>(),
3731
product_kind as u32,
3832
&mut error_code,
3933
);

src/intermediate_bindings/codes_set.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ pub unsafe fn codes_set_long_array(
6464
let error_code = eccodes_sys::codes_set_long_array(
6565
handle,
6666
key.as_ptr(),
67-
values.as_ptr().cast::<i64>(),
67+
values.as_ptr().cast::<_>(),
6868
length,
6969
);
7070

@@ -90,7 +90,7 @@ pub unsafe fn codes_set_double_array(
9090
let error_code = eccodes_sys::codes_set_double_array(
9191
handle,
9292
key.as_ptr(),
93-
values.as_ptr().cast::<f64>(),
93+
values.as_ptr().cast::<_>(),
9494
length,
9595
);
9696

@@ -138,7 +138,7 @@ pub unsafe fn codes_set_bytes(
138138
let error_code = eccodes_sys::codes_set_bytes(
139139
handle,
140140
key.as_ptr(),
141-
values.as_ptr().cast::<u8>(),
141+
values.as_ptr().cast::<_>(),
142142
&mut length,
143143
);
144144

src/keyed_message/write.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ impl KeyedMessage {
116116
append: bool,
117117
) -> Result<(), CodesError> {
118118
let msg = unsafe { codes_get_message(self.message_handle)? };
119-
let buf = unsafe { slice::from_raw_parts(msg.0.cast::<u8>(), msg.1) };
119+
let buf = unsafe { slice::from_raw_parts(msg.0.cast::<_>(), msg.1) };
120120
let mut file = OpenOptions::new()
121121
.write(true)
122122
.create(true)

0 commit comments

Comments
 (0)