Return bool from mailmime_transfer_decode

This commit is contained in:
Alexander Krotov
2019-09-12 12:58:31 +03:00
parent 27a4adb9c6
commit 50a812ea5e
3 changed files with 18 additions and 24 deletions

View File

@@ -1033,14 +1033,12 @@ unsafe fn dc_mimeparser_add_single_part_if_known(
|| (*mime_data).dt_data.dt_text.dt_length <= 0) || (*mime_data).dt_data.dt_text.dt_length <= 0)
{ {
/* regard `Content-Transfer-Encoding:` */ /* regard `Content-Transfer-Encoding:` */
if !(0 if mailmime_transfer_decode(
== mailmime_transfer_decode( mime,
mime, &mut decoded_data,
&mut decoded_data, &mut decoded_data_bytes,
&mut decoded_data_bytes, &mut transfer_decoding_buffer,
&mut transfer_decoding_buffer, ) {
))
{
/* no always error - but no data */ /* no always error - but no data */
match mime_type { match mime_type {
60 | 70 => { 60 | 70 => {
@@ -1352,13 +1350,12 @@ unsafe fn do_add_single_part(parser: &mut dc_mimeparser_t, mut part: dc_mimepart
parser.parts.push(part); parser.parts.push(part);
} }
// TODO should return bool /rtn
pub unsafe fn mailmime_transfer_decode( pub unsafe fn mailmime_transfer_decode(
mime: *mut mailmime, mime: *mut mailmime,
ret_decoded_data: *mut *const libc::c_char, ret_decoded_data: *mut *const libc::c_char,
ret_decoded_data_bytes: *mut size_t, ret_decoded_data_bytes: *mut size_t,
ret_to_mmap_string_unref: *mut *mut libc::c_char, ret_to_mmap_string_unref: *mut *mut libc::c_char,
) -> libc::c_int { ) -> bool {
let mut mime_transfer_encoding: libc::c_int = MAILMIME_MECHANISM_BINARY as libc::c_int; let mut mime_transfer_encoding: libc::c_int = MAILMIME_MECHANISM_BINARY as libc::c_int;
let mime_data: *mut mailmime_data; let mime_data: *mut mailmime_data;
/* must not be free()'d */ /* must not be free()'d */
@@ -1374,7 +1371,7 @@ pub unsafe fn mailmime_transfer_decode(
|| *ret_decoded_data_bytes != 0 || *ret_decoded_data_bytes != 0
|| !(*ret_to_mmap_string_unref).is_null() || !(*ret_to_mmap_string_unref).is_null()
{ {
return 0i32; return false;
} }
mime_data = (*mime).mm_data.mm_single; mime_data = (*mime).mm_data.mm_single;
if !(*mime).mm_mime_fields.is_null() { if !(*mime).mm_mime_fields.is_null() {
@@ -1408,7 +1405,7 @@ pub unsafe fn mailmime_transfer_decode(
decoded_data = (*mime_data).dt_data.dt_text.dt_data; decoded_data = (*mime_data).dt_data.dt_text.dt_data;
decoded_data_bytes = (*mime_data).dt_data.dt_text.dt_length; decoded_data_bytes = (*mime_data).dt_data.dt_text.dt_length;
if decoded_data.is_null() || decoded_data_bytes <= 0 { if decoded_data.is_null() || decoded_data_bytes <= 0 {
return 0i32; return false;
} }
} else { } else {
let r: libc::c_int; let r: libc::c_int;
@@ -1425,7 +1422,7 @@ pub unsafe fn mailmime_transfer_decode(
|| transfer_decoding_buffer.is_null() || transfer_decoding_buffer.is_null()
|| decoded_data_bytes <= 0 || decoded_data_bytes <= 0
{ {
return 0i32; return false;
} }
decoded_data = transfer_decoding_buffer decoded_data = transfer_decoding_buffer
} }
@@ -1433,7 +1430,7 @@ pub unsafe fn mailmime_transfer_decode(
*ret_decoded_data_bytes = decoded_data_bytes; *ret_decoded_data_bytes = decoded_data_bytes;
*ret_to_mmap_string_unref = transfer_decoding_buffer; *ret_to_mmap_string_unref = transfer_decoding_buffer;
1 true
} }
pub unsafe fn dc_mimeparser_is_mailinglist_message(mimeparser: &dc_mimeparser_t) -> bool { pub unsafe fn dc_mimeparser_is_mailinglist_message(mimeparser: &dc_mimeparser_t) -> bool {

View File

@@ -831,7 +831,7 @@ unsafe fn handle_reports(
let mut report_body_bytes = 0; let mut report_body_bytes = 0;
let mut to_mmap_string_unref = std::ptr::null_mut(); let mut to_mmap_string_unref = std::ptr::null_mut();
if 0 != mailmime_transfer_decode( if mailmime_transfer_decode(
report_data, report_data,
&mut report_body, &mut report_body,
&mut report_body_bytes, &mut report_body_bytes,

View File

@@ -1093,15 +1093,12 @@ Sent with my Delta Chat Messenger: https://delta.chat";
let mut decoded_data_bytes = 0; let mut decoded_data_bytes = 0;
let mut transfer_decoding_buffer: *mut libc::c_char = ptr::null_mut(); let mut transfer_decoding_buffer: *mut libc::c_char = ptr::null_mut();
assert_eq!( assert!(mailmime_transfer_decode(
mailmime_transfer_decode( msg1,
msg1, &mut decoded_data,
&mut decoded_data, &mut decoded_data_bytes,
&mut decoded_data_bytes, &mut transfer_decoding_buffer,
&mut transfer_decoding_buffer, ));
),
1
);
println!( println!(
"{:?}", "{:?}",
String::from_utf8_lossy(std::slice::from_raw_parts( String::from_utf8_lossy(std::slice::from_raw_parts(