diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 170870881..96889fe45 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -1,4 +1,5 @@ use std::ffi::CString; +use std::ptr; use std::str::FromStr; use deltachat::chat::{self, Chat}; @@ -94,7 +95,7 @@ pub unsafe fn dc_reset_tables(context: &Context, bits: i32) -> i32 { unsafe fn dc_poke_eml_file(context: &Context, filename: *const libc::c_char) -> libc::c_int { /* mainly for testing, may be called by dc_import_spec() */ let mut success: libc::c_int = 0i32; - let mut data: *mut libc::c_char = 0 as *mut libc::c_char; + let mut data: *mut libc::c_char = ptr::null_mut(); let mut data_bytes: size_t = 0; if !(dc_read_file( context, @@ -128,7 +129,7 @@ unsafe fn poke_spec(context: &Context, spec: *const libc::c_char) -> libc::c_int let ok_to_continue; let mut success: libc::c_int = 0; let real_spec: *mut libc::c_char; - let mut suffix: *mut libc::c_char = 0 as *mut libc::c_char; + let mut suffix: *mut libc::c_char = ptr::null_mut(); let mut read_cnt: libc::c_int = 0; /* if `spec` is given, remember it for later usage; if it is not given, try to use the last one */ @@ -526,17 +527,17 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E } } "export-backup" => { - dc_imex(context, 11, context.get_blobdir(), 0 as *const libc::c_char); + dc_imex(context, 11, context.get_blobdir(), ptr::null()); } "import-backup" => { ensure!(!arg1.is_empty(), "Argument missing."); - dc_imex(context, 12, arg1_c, 0 as *const libc::c_char); + dc_imex(context, 12, arg1_c, ptr::null()); } "export-keys" => { - dc_imex(context, 1, context.get_blobdir(), 0 as *const libc::c_char); + dc_imex(context, 1, context.get_blobdir(), ptr::null()); } "import-keys" => { - dc_imex(context, 2, context.get_blobdir(), 0 as *const libc::c_char); + dc_imex(context, 2, context.get_blobdir(), ptr::null()); } "export-setup" => { let setup_code = dc_create_setup_code(context); @@ -871,7 +872,7 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E Viewtype::File }, ); - dc_msg_set_file(&mut msg, arg1_c, 0 as *const libc::c_char); + dc_msg_set_file(&mut msg, arg1_c, ptr::null()); dc_msg_set_text(&mut msg, arg2_c); chat::send_msg(context, sel_chat.as_ref().unwrap().get_id(), &mut msg)?; } diff --git a/examples/repl/main.rs b/examples/repl/main.rs index 5b5409dd8..f6a19f0e7 100644 --- a/examples/repl/main.rs +++ b/examples/repl/main.rs @@ -14,6 +14,7 @@ extern crate lazy_static; extern crate rusqlite; use std::borrow::Cow::{self, Borrowed, Owned}; +use std::ptr; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::{Arc, Mutex, RwLock}; @@ -384,11 +385,7 @@ impl Highlighter for DcHelper { impl Helper for DcHelper {} fn main_0(args: Vec) -> Result<(), failure::Error> { - let mut context = dc_context_new( - Some(receive_event), - 0 as *mut libc::c_void, - Some("CLI".into()), - ); + let mut context = dc_context_new(Some(receive_event), ptr::null_mut(), Some("CLI".into())); unsafe { dc_cmdline_skip_auth() }; diff --git a/src/chat.rs b/src/chat.rs index 105a215e7..3e0b0958a 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -303,11 +303,8 @@ impl<'a> Chat<'a> { "Cannot send message; self not in group.", ); } else { - let from = context.sql.get_config(context, "configured_addr"); - if from.is_none() { - error!(context, 0, "Cannot send message, not configured.",); - } else { - let from_c = CString::yolo(from.unwrap()); + if let Some(from) = context.sql.get_config(context, "configured_addr") { + let from_c = CString::yolo(from); new_rfc724_mid = dc_create_outgoing_rfc724_mid( if self.typ == Chattype::Group || self.typ == Chattype::VerifiedGroup { self.grpid.strdup() @@ -529,6 +526,8 @@ impl<'a> Chat<'a> { ); } } + } else { + error!(context, 0, "Cannot send message, not configured.",); } } @@ -1415,83 +1414,82 @@ pub unsafe fn add_contact_to_chat_ex( let contact = contact.unwrap(); /*this also makes sure, not contacts are added to special or normal chats*/ - let chat = Chat::load_from_db(context, chat_id); + if let Ok(mut chat) = Chat::load_from_db(context, chat_id) { + if !(!real_group_exists(context, chat_id) + || !Contact::real_exists_by_id(context, contact_id) + && contact_id != DC_CONTACT_ID_SELF as u32) + { + if !(is_contact_in_chat(context, chat_id, 1 as u32) == 1) { + log_event!( + context, + Event::ERROR_SELF_NOT_IN_GROUP, + 0, + "Cannot add contact to group; self not in group.", + ); + } else { + /* we should respect this - whatever we send to the group, it gets discarded anyway! */ + if 0 != flags & 0x1 + && chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 1 + { + chat.param.remove(Param::Unpromoted); + chat.update_param().unwrap(); + } + let self_addr = context + .sql + .get_config(context, "configured_addr") + .unwrap_or_default(); + if contact.get_addr() != &self_addr { + // ourself is added using DC_CONTACT_ID_SELF, do not add it explicitly. + // if SELF is not in the group, members cannot be added at all. - if !(!real_group_exists(context, chat_id) - || !Contact::real_exists_by_id(context, contact_id) - && contact_id != DC_CONTACT_ID_SELF as u32 - || chat.is_err()) - { - let mut chat = chat.unwrap(); - - if !(is_contact_in_chat(context, chat_id, 1 as u32) == 1) { - log_event!( - context, - Event::ERROR_SELF_NOT_IN_GROUP, - 0, - "Cannot add contact to group; self not in group.", - ); - } else { - /* we should respect this - whatever we send to the group, it gets discarded anyway! */ - if 0 != flags & 0x1 && chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 1 { - chat.param.remove(Param::Unpromoted); - chat.update_param().unwrap(); - } - let self_addr = context - .sql - .get_config(context, "configured_addr") - .unwrap_or_default(); - if contact.get_addr() != &self_addr { - // ourself is added using DC_CONTACT_ID_SELF, do not add it explicitly. - // if SELF is not in the group, members cannot be added at all. - - if 0 != is_contact_in_chat(context, chat_id, contact_id) { - if 0 == flags & 0x1 { - success = 1; - OK_TO_CONTINUE = false; - } - } else { - // else continue and send status mail - if chat.typ == Chattype::VerifiedGroup { - if contact.is_verified() != VerifiedStatus::BidirectVerified { - error!( + if 0 != is_contact_in_chat(context, chat_id, contact_id) { + if 0 == flags & 0x1 { + success = 1; + OK_TO_CONTINUE = false; + } + } else { + // else continue and send status mail + if chat.typ == Chattype::VerifiedGroup { + if contact.is_verified() != VerifiedStatus::BidirectVerified { + error!( context, 0, "Only bidirectional verified contacts can be added to verified groups." ); - OK_TO_CONTINUE = false; + OK_TO_CONTINUE = false; + } + } + if OK_TO_CONTINUE { + if 0 == add_to_chat_contacts_table(context, chat_id, contact_id) { + OK_TO_CONTINUE = false; + } } } if OK_TO_CONTINUE { - if 0 == add_to_chat_contacts_table(context, chat_id, contact_id) { - OK_TO_CONTINUE = false; + if chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 0 { + msg.type_0 = Viewtype::Text; + msg.text = Some(context.stock_system_msg( + StockMessage::MsgAddMember, + contact.get_addr(), + "", + DC_CONTACT_ID_SELF as u32, + )); + msg.param.set_int(Param::Cmd, 4); + msg.param.set(Param::Arg, contact.get_addr()); + msg.param.set_int(Param::Arg2, flags); + msg.id = send_msg(context, chat_id, &mut msg).unwrap_or_default(); + context.call_cb( + Event::MSGS_CHANGED, + chat_id as uintptr_t, + msg.id as uintptr_t, + ); } + context.call_cb(Event::MSGS_CHANGED, chat_id as uintptr_t, 0 as uintptr_t); + success = 1; } } - if OK_TO_CONTINUE { - if chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 0 { - msg.type_0 = Viewtype::Text; - msg.text = Some(context.stock_system_msg( - StockMessage::MsgAddMember, - contact.get_addr(), - "", - DC_CONTACT_ID_SELF as u32, - )); - msg.param.set_int(Param::Cmd, 4); - msg.param.set(Param::Arg, contact.get_addr()); - msg.param.set_int(Param::Arg2, flags); - msg.id = send_msg(context, chat_id, &mut msg).unwrap_or_default(); - context.call_cb( - Event::MSGS_CHANGED, - chat_id as uintptr_t, - msg.id as uintptr_t, - ); - } - context.call_cb(Event::MSGS_CHANGED, chat_id as uintptr_t, 0 as uintptr_t); - success = 1; - } } } - } + }; success } @@ -1565,58 +1563,57 @@ pub unsafe fn remove_contact_from_chat( /* we do not check if "contact_id" exists but just delete all records with the id from chats_contacts */ /* this allows to delete pending references to deleted contacts. Of course, this should _not_ happen. */ - let chat = Chat::load_from_db(context, chat_id); - - if !(!real_group_exists(context, chat_id) || chat.is_err()) { - let chat = chat.unwrap(); - if !(is_contact_in_chat(context, chat_id, 1 as u32) == 1) { - log_event!( - context, - Event::ERROR_SELF_NOT_IN_GROUP, - 0, - "Cannot remove contact from chat; self not in group.", - ); - } else { - /* we should respect this - whatever we send to the group, it gets discarded anyway! */ - if let Ok(contact) = Contact::get_by_id(context, contact_id) { - if chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 0 { - msg.type_0 = Viewtype::Text; - if contact.id == DC_CONTACT_ID_SELF as u32 { - set_group_explicitly_left(context, chat.grpid).unwrap(); - msg.text = Some(context.stock_system_msg( - StockMessage::MsgGroupLeft, - "", - "", - DC_CONTACT_ID_SELF as u32, - )); - } else { - msg.text = Some(context.stock_system_msg( - StockMessage::MsgDelMember, - contact.get_addr(), - "", - DC_CONTACT_ID_SELF as u32, - )); + if let Ok(chat) = Chat::load_from_db(context, chat_id) { + if real_group_exists(context, chat_id) { + if !(is_contact_in_chat(context, chat_id, 1 as u32) == 1) { + log_event!( + context, + Event::ERROR_SELF_NOT_IN_GROUP, + 0, + "Cannot remove contact from chat; self not in group.", + ); + } else { + /* we should respect this - whatever we send to the group, it gets discarded anyway! */ + if let Ok(contact) = Contact::get_by_id(context, contact_id) { + if chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 0 { + msg.type_0 = Viewtype::Text; + if contact.id == DC_CONTACT_ID_SELF as u32 { + set_group_explicitly_left(context, chat.grpid).unwrap(); + msg.text = Some(context.stock_system_msg( + StockMessage::MsgGroupLeft, + "", + "", + DC_CONTACT_ID_SELF as u32, + )); + } else { + msg.text = Some(context.stock_system_msg( + StockMessage::MsgDelMember, + contact.get_addr(), + "", + DC_CONTACT_ID_SELF as u32, + )); + } + msg.param.set_int(Param::Cmd, 5); + msg.param.set(Param::Arg, contact.get_addr()); + msg.id = send_msg(context, chat_id, &mut msg).unwrap_or_default(); + context.call_cb( + Event::MSGS_CHANGED, + chat_id as uintptr_t, + msg.id as uintptr_t, + ); } - msg.param.set_int(Param::Cmd, 5); - msg.param.set(Param::Arg, contact.get_addr()); - msg.id = send_msg(context, chat_id, &mut msg).unwrap_or_default(); - context.call_cb( - Event::MSGS_CHANGED, - chat_id as uintptr_t, - msg.id as uintptr_t, - ); } - } - if sql::execute( - context, - &context.sql, - "DELETE FROM chats_contacts WHERE chat_id=? AND contact_id=?;", - params![chat_id as i32, contact_id as i32], - ) - .is_ok() - { - context.call_cb(Event::CHAT_MODIFIED, chat_id as uintptr_t, 0 as uintptr_t); - success = true; + if sql::execute( + context, + &context.sql, + "DELETE FROM chats_contacts WHERE chat_id=? AND contact_id=?;", + params![chat_id as i32, contact_id as i32], + ) + .is_ok() + { + context.call_cb(Event::CHAT_MODIFIED, chat_id as uintptr_t, 0 as uintptr_t); + success = true; + } } } } diff --git a/src/configure/auto_outlook.rs b/src/configure/auto_outlook.rs index c476b09dc..52f7e0d4b 100644 --- a/src/configure/auto_outlook.rs +++ b/src/configure/auto_outlook.rs @@ -126,7 +126,7 @@ pub unsafe fn outlk_autodiscover( unsafe fn outlk_clean_config(mut outlk_ad: *mut outlk_autodiscover_t) { for i in 0..6 { free((*outlk_ad).config[i] as *mut libc::c_void); - (*outlk_ad).config[i] = 0 as *mut libc::c_char; + (*outlk_ad).config[i] = ptr::null_mut(); } } diff --git a/src/configure/mod.rs b/src/configure/mod.rs index a347dac30..aa0ceedcf 100644 --- a/src/configure/mod.rs +++ b/src/configure/mod.rs @@ -149,12 +149,9 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &Context, _job: &Job) { ok_to_continue0 = true; } if ok_to_continue0 { - let parsed: Result = param.addr.parse(); let mut ok_to_continue7 = false; - if parsed.is_err() { - error!(context, 0, "Bad email-address."); - } else { - let parsed = parsed.unwrap(); + if let Ok(parsed) = param.addr.parse() { + let parsed: EmailAddress = parsed; let param_domain = parsed.domain; let param_addr_urlencoded = utf8_percent_encode(¶m.addr, NON_ALPHANUMERIC).to_string(); @@ -609,6 +606,8 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &Context, _job: &Job) { } } } + } else { + error!(context, 0, "Bad email-address."); } } } diff --git a/src/context.rs b/src/context.rs index 45f3c5de4..e1a0725e8 100644 --- a/src/context.rs +++ b/src/context.rs @@ -300,9 +300,11 @@ pub unsafe fn dc_open(context: &Context, dbfile: &str, blobdir: Option<&str>) -> if 0 != dc_is_open(context) { return false; } + *context.dbfile.write().unwrap() = Some(PathBuf::from(dbfile)); - if blobdir.is_some() && !blobdir.unwrap().is_empty() { - let dir = dc_ensure_no_slash_safe(blobdir.unwrap()).strdup(); + let blobdir = blobdir.unwrap_or_default(); + if !blobdir.is_empty() { + let dir = dc_ensure_no_slash_safe(blobdir).strdup(); *context.blobdir.write().unwrap() = dir; } else { let dir = dbfile.to_string() + "-blobs"; diff --git a/src/dc_e2ee.rs b/src/dc_e2ee.rs index 90176df2a..374d3f357 100644 --- a/src/dc_e2ee.rs +++ b/src/dc_e2ee.rs @@ -255,7 +255,7 @@ pub unsafe fn dc_e2ee_encrypt( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -738,7 +738,7 @@ unsafe fn decrypt_recursive( (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime, private_keyring, public_keyring_for_validate, @@ -766,7 +766,7 @@ unsafe fn decrypt_recursive( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } *ret_has_unencrypted_parts = 1i32 @@ -1019,7 +1019,7 @@ unsafe fn contains_report(mime: *mut mailmime) -> libc::c_int { cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } else if (*mime).mm_type == MAILMIME_MESSAGE as libc::c_int { @@ -1111,9 +1111,9 @@ Sent with my Delta Chat Messenger: https://delta.chat"; }; unsafe { let msg1 = (*decrypted_mime).mm_data.mm_message.mm_msg_mime; - let mut decoded_data = 0 as *const libc::c_char; + let mut decoded_data = ptr::null(); let mut decoded_data_bytes = 0; - let mut transfer_decoding_buffer: *mut libc::c_char = 0 as *mut libc::c_char; + let mut transfer_decoding_buffer: *mut libc::c_char = ptr::null_mut(); assert_eq!( mailmime_transfer_decode( diff --git a/src/dc_imex.rs b/src/dc_imex.rs index f1f440f69..7810fcfe8 100644 --- a/src/dc_imex.rs +++ b/src/dc_imex.rs @@ -780,32 +780,13 @@ unsafe fn export_backup(context: &Context, dir: *const libc::c_char) -> libc::c_ _ => { let mut total_files_cnt = 0; let dir = std::path::Path::new(as_str(context.get_blobdir())); - let dir_handle = std::fs::read_dir(dir); - if dir_handle.is_err() { - error!( - context, - 0, - "Backup: Cannot get info for blob-directory \"{}\".", - as_str(context.get_blobdir()), - ); - } else { - let dir_handle = dir_handle.unwrap(); + if let Ok(dir_handle) = std::fs::read_dir(dir) { total_files_cnt += dir_handle.filter(|r| r.is_ok()).count(); info!(context, 0, "EXPORT: total_files_cnt={}", total_files_cnt); if total_files_cnt > 0 { // scan directory, pass 2: copy files - let dir_handle = std::fs::read_dir(dir); - if dir_handle.is_err() { - error!( - context, - 0, - "Backup: Cannot copy from blob-directory \"{}\".", - as_str(context.get_blobdir()), - ); - } else { - let dir_handle = dir_handle.unwrap(); - + if let Ok(dir_handle) = std::fs::read_dir(dir) { sql.prepare( "INSERT INTO backup_blobs (file_name, file_content) VALUES (?, ?);", move |mut stmt, _| { @@ -881,6 +862,13 @@ unsafe fn export_backup(context: &Context, dir: *const libc::c_char) -> libc::c_ Ok(()) } ).unwrap(); + } else { + error!( + context, + 0, + "Backup: Cannot copy from blob-directory \"{}\".", + as_str(context.get_blobdir()), + ); } } else { info!(context, 0, "Backup: No files to copy.",); @@ -902,7 +890,14 @@ unsafe fn export_backup(context: &Context, dir: *const libc::c_char) -> libc::c_ } } } - } + } else { + error!( + context, + 0, + "Backup: Cannot get info for blob-directory \"{}\".", + as_str(context.get_blobdir()) + ); + }; } } } @@ -943,16 +938,7 @@ unsafe fn import_self_keys(context: &Context, dir_name: *const libc::c_char) -> let mut buf2_headerline: *const libc::c_char = ptr::null_mut(); if !dir_name.is_null() { let dir = std::path::Path::new(as_str(dir_name)); - let dir_handle = std::fs::read_dir(dir); - if dir_handle.is_err() { - error!( - context, - 0, - "Import: Cannot open directory \"{}\".", - as_str(dir_name), - ); - } else { - let dir_handle = dir_handle.unwrap(); + if let Ok(dir_handle) = std::fs::read_dir(dir) { for entry in dir_handle { if entry.is_err() { break; @@ -991,9 +977,9 @@ unsafe fn import_self_keys(context: &Context, dir_name: *const libc::c_char) -> if dc_split_armored_data( buf2, &mut buf2_headerline, - 0 as *mut *const libc::c_char, - 0 as *mut *const libc::c_char, - 0 as *mut *const libc::c_char, + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), ) && strcmp( buf2_headerline, b"-----BEGIN PGP PUBLIC KEY BLOCK-----\x00" as *const u8 as *const libc::c_char, @@ -1036,6 +1022,13 @@ unsafe fn import_self_keys(context: &Context, dir_name: *const libc::c_char) -> as_str(dir_name), ); } + } else { + error!( + context, + 0, + "Import: Cannot open directory \"{}\".", + as_str(dir_name), + ); } } diff --git a/src/dc_mimefactory.rs b/src/dc_mimefactory.rs index 0b5622548..a55a8cb1a 100644 --- a/src/dc_mimefactory.rs +++ b/src/dc_mimefactory.rs @@ -187,7 +187,7 @@ pub unsafe fn dc_mimefactory_load_msg( clist_insert_after( factory.recipients_names, (*factory.recipients_names).last, - 0 as *mut libc::c_void, + ptr::null_mut(), ); clist_insert_after( factory.recipients_addr, @@ -318,7 +318,7 @@ pub unsafe fn dc_mimefactory_load_mdn<'a>( (if !contact.get_authname().is_empty() { contact.get_authname().strdup() } else { - 0 as *mut libc::c_char + ptr::null_mut() }) as *mut libc::c_void, ); clist_insert_after( @@ -339,10 +339,10 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i let subject: *mut mailimf_subject; let mut ok_to_continue = true; let imf_fields: *mut mailimf_fields; - let mut message: *mut mailmime = 0 as *mut mailmime; - let mut message_text: *mut libc::c_char = 0 as *mut libc::c_char; - let mut message_text2: *mut libc::c_char = 0 as *mut libc::c_char; - let mut subject_str: *mut libc::c_char = 0 as *mut libc::c_char; + let mut message: *mut mailmime = ptr::null_mut(); + let mut message_text: *mut libc::c_char = ptr::null_mut(); + let mut message_text2: *mut libc::c_char = ptr::null_mut(); + let mut subject_str: *mut libc::c_char = ptr::null_mut(); let mut afwd_email: libc::c_int = 0; let mut col: libc::c_int = 0; let mut success: libc::c_int = 0; @@ -355,7 +355,7 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i let mut grpimage = None; let mut e2ee_helper = dc_e2ee_helper_t { encryption_successfull: 0, - cdata_to_free: 0 as *mut libc::c_void, + cdata_to_free: ptr::null_mut(), encrypted: 0, signatures: Default::default(), gossipped_addr: Default::default(), @@ -377,12 +377,12 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i if !factory.from_displayname.is_null() { dc_encode_header_words(factory.from_displayname) } else { - 0 as *mut libc::c_char + ptr::null_mut() }, dc_strdup(factory.from_addr), ), ); - let mut to: *mut mailimf_address_list = 0 as *mut mailimf_address_list; + let mut to: *mut mailimf_address_list = ptr::null_mut(); if !factory.recipients_names.is_null() && !factory.recipients_addr.is_null() && (*factory.recipients_addr).count > 0 @@ -396,12 +396,12 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i let name: *const libc::c_char = (if !iter1.is_null() { (*iter1).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *const libc::c_char; let addr: *const libc::c_char = (if !iter2.is_null() { (*iter2).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *const libc::c_char; mailimf_address_list_add( to, @@ -411,33 +411,33 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i if !name.is_null() { dc_encode_header_words(name) } else { - 0 as *mut libc::c_char + ptr::null_mut() }, dc_strdup(addr), ), - 0 as *mut mailimf_group, + ptr::null_mut(), ), ); iter1 = if !iter1.is_null() { (*iter1).next } else { - 0 as *mut clistcell + ptr::null_mut() }; iter2 = if !iter2.is_null() { (*iter2).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } - let mut references_list: *mut clist = 0 as *mut clist; + let mut references_list: *mut clist = ptr::null_mut(); if !factory.references.is_null() && 0 != *factory.references.offset(0isize) as libc::c_int { references_list = dc_str_to_clist( factory.references, b" \x00" as *const u8 as *const libc::c_char, ) } - let mut in_reply_to_list: *mut clist = 0 as *mut clist; + let mut in_reply_to_list: *mut clist = ptr::null_mut(); if !factory.in_reply_to.is_null() && 0 != *factory.in_reply_to.offset(0isize) as libc::c_int { in_reply_to_list = dc_str_to_clist( @@ -448,15 +448,15 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i imf_fields = mailimf_fields_new_with_data_all( mailimf_get_date(factory.timestamp as i64), from, - 0 as *mut mailimf_mailbox, - 0 as *mut mailimf_address_list, + ptr::null_mut(), + ptr::null_mut(), to, - 0 as *mut mailimf_address_list, - 0 as *mut mailimf_address_list, + ptr::null_mut(), + ptr::null_mut(), dc_strdup(factory.rfc724_mid), in_reply_to_list, references_list, - 0 as *mut libc::c_char, + ptr::null_mut(), ); let os_name = &factory.context.os_name; @@ -503,8 +503,8 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i /* Render a normal message *********************************************************************/ let chat = factory.chat.as_ref().unwrap(); - let mut meta_part: *mut mailmime = 0 as *mut mailmime; - let mut placeholdertext: *mut libc::c_char = 0 as *mut libc::c_char; + let mut meta_part: *mut mailmime = ptr::null_mut(); + let mut placeholdertext: *mut libc::c_char = ptr::null_mut(); if chat.typ == Chattype::VerifiedGroup { mailimf_fields_add( imf_fields, @@ -736,7 +736,7 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i meta.type_0 = Viewtype::Image; meta.param.set(Param::File, grpimage); - let mut filename_as_sent = 0 as *mut libc::c_char; + let mut filename_as_sent = ptr::null_mut(); meta_part = build_body_file( &meta, b"group-image\x00" as *const u8 as *const libc::c_char, @@ -785,7 +785,7 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i } } afwd_email = factory.msg.param.exists(Param::Forwarded) as libc::c_int; - let mut fwdhint = 0 as *mut libc::c_char; + let mut fwdhint = ptr::null_mut(); if 0 != afwd_email { fwdhint = dc_strdup( b"---------- Forwarded message ----------\r\nFrom: Delta Chat\r\n\r\n\x00" @@ -850,11 +850,8 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i free(error as *mut libc::c_void); ok_to_continue = false; } else { - let file_part: *mut mailmime = build_body_file( - &factory.msg, - 0 as *const libc::c_char, - 0 as *mut *mut libc::c_char, - ); + let file_part: *mut mailmime = + build_body_file(&factory.msg, ptr::null(), ptr::null_mut()); if !file_part.is_null() { mailmime_smart_add_part(message, file_part); parts += 1 @@ -1011,28 +1008,28 @@ pub unsafe fn dc_mimefactory_render(factory: &mut dc_mimefactory_t) -> libc::c_i imf_fields, mailimf_field_new( MAILIMF_FIELD_SUBJECT as libc::c_int, - 0 as *mut mailimf_return, - 0 as *mut mailimf_orig_date, - 0 as *mut mailimf_from, - 0 as *mut mailimf_sender, - 0 as *mut mailimf_to, - 0 as *mut mailimf_cc, - 0 as *mut mailimf_bcc, - 0 as *mut mailimf_message_id, - 0 as *mut mailimf_orig_date, - 0 as *mut mailimf_from, - 0 as *mut mailimf_sender, - 0 as *mut mailimf_reply_to, - 0 as *mut mailimf_to, - 0 as *mut mailimf_cc, - 0 as *mut mailimf_bcc, - 0 as *mut mailimf_message_id, - 0 as *mut mailimf_in_reply_to, - 0 as *mut mailimf_references, + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), subject, - 0 as *mut mailimf_comments, - 0 as *mut mailimf_keywords, - 0 as *mut mailimf_optional_field, + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), ), ); if force_plaintext != 2 { @@ -1151,7 +1148,7 @@ unsafe fn build_body_file( ) -> *mut mailmime { let needs_ext: bool; let mime_fields: *mut mailmime_fields; - let mut mime_sub: *mut mailmime = 0 as *mut mailmime; + let mut mime_sub: *mut mailmime = ptr::null_mut(); let content: *mut mailmime_content; let path_filename = msg.param.get(Param::File); @@ -1161,8 +1158,8 @@ unsafe fn build_body_file( .map(|s| s.strdup()) .unwrap_or_else(|| std::ptr::null_mut()); - let mut filename_to_send = 0 as *mut libc::c_char; - let mut filename_encoded = 0 as *mut libc::c_char; + let mut filename_to_send = ptr::null_mut(); + let mut filename_encoded = ptr::null_mut(); if let Some(ref path_filename) = path_filename { let suffix = dc_get_filesuffix_lc(path_filename); @@ -1232,7 +1229,7 @@ unsafe fn build_body_file( mime_fields = mailmime_fields_new_filename( MAILMIME_DISPOSITION_TYPE_ATTACHMENT as libc::c_int, if needs_ext { - 0 as *mut libc::c_char + ptr::null_mut() } else { dc_strdup(filename_to_send) }, @@ -1244,7 +1241,7 @@ unsafe fn build_body_file( let field: *mut mailmime_field = (if !cur1.is_null() { (*cur1).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime_field; if !field.is_null() && (*field).fld_type == MAILMIME_FIELD_DISPOSITION as libc::c_int @@ -1256,10 +1253,10 @@ unsafe fn build_body_file( let parm: *mut mailmime_disposition_parm = mailmime_disposition_parm_new( MAILMIME_DISPOSITION_PARM_PARAMETER as libc::c_int, - 0 as *mut libc::c_char, - 0 as *mut libc::c_char, - 0 as *mut libc::c_char, - 0 as *mut libc::c_char, + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), 0 as size_t, mailmime_parameter_new( strdup( @@ -1281,7 +1278,7 @@ unsafe fn build_body_file( cur1 = if !cur1.is_null() { (*cur1).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } diff --git a/src/dc_mimeparser.rs b/src/dc_mimeparser.rs index 9d5bc0813..806d619bf 100644 --- a/src/dc_mimeparser.rs +++ b/src/dc_mimeparser.rs @@ -1,5 +1,6 @@ use std::collections::{HashMap, HashSet}; use std::ffi::{CStr, CString}; +use std::ptr; use charset::Charset; use mmime::mailimf::*; @@ -23,7 +24,6 @@ use crate::param::*; use crate::stock::StockMessage; use crate::types::*; use crate::x::*; -use std::ptr; /* Parse MIME body; this is the text part of an IMF, see https://tools.ietf.org/html/rfc5322 dc_mimeparser_t has no deep dependencies to Context or to the database @@ -92,19 +92,19 @@ unsafe fn dc_mimeparser_empty(mimeparser: &mut dc_mimeparser_t) { dc_mimepart_unref(part); } assert!(mimeparser.parts.is_empty()); - mimeparser.header_root = 0 as *mut mailimf_fields; + mimeparser.header_root = ptr::null_mut(); mimeparser.header.clear(); if !mimeparser.header_protected.is_null() { mailimf_fields_free(mimeparser.header_protected); - mimeparser.header_protected = 0 as *mut mailimf_fields + mimeparser.header_protected = ptr::null_mut() } mimeparser.is_send_by_messenger = false; mimeparser.is_system_message = 0i32; free(mimeparser.subject as *mut libc::c_void); - mimeparser.subject = 0 as *mut libc::c_char; + mimeparser.subject = ptr::null_mut(); if !mimeparser.mimeroot.is_null() { mailmime_free(mimeparser.mimeroot); - mimeparser.mimeroot = 0 as *mut mailmime + mimeparser.mimeroot = ptr::null_mut() } mimeparser.is_forwarded = 0i32; mimeparser.reports.clear(); @@ -118,7 +118,7 @@ unsafe fn dc_mimeparser_empty(mimeparser: &mut dc_mimeparser_t) { unsafe fn dc_mimepart_unref(mut mimepart: dc_mimepart_t) { mimepart.msg = None; free(mimepart.msg_raw as *mut libc::c_void); - mimepart.msg_raw = 0 as *mut libc::c_char; + mimepart.msg_raw = ptr::null_mut(); } const DC_MIMETYPE_AC_SETUP_FILE: i32 = 111; @@ -310,7 +310,7 @@ pub unsafe fn dc_mimeparser_parse<'a>(context: &'a Context, body: &[u8]) -> dc_m "Chat-Disposition-Notification-To", ); if !dn_field.is_null() && dc_mimeparser_get_last_nonmeta(&mut mimeparser).is_some() { - let mut mb_list: *mut mailimf_mailbox_list = 0 as *mut mailimf_mailbox_list; + let mut mb_list: *mut mailimf_mailbox_list = ptr::null_mut(); let mut index_0: size_t = 0i32 as size_t; if mailimf_mailbox_list_parse( (*dn_field).fld_value, @@ -391,14 +391,14 @@ pub fn dc_mimeparser_get_last_nonmeta<'a>( /*the result must be freed*/ pub unsafe fn mailimf_find_first_addr(mb_list: *const mailimf_mailbox_list) -> *mut libc::c_char { if mb_list.is_null() { - return 0 as *mut libc::c_char; + return ptr::null_mut(); } let mut cur: *mut clistiter = (*(*mb_list).mb_list).first; while !cur.is_null() { let mb: *mut mailimf_mailbox = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_mailbox; if !mb.is_null() && !(*mb).mb_addr_spec.is_null() { return addr_normalize(as_str((*mb).mb_addr_spec)).strdup(); @@ -406,11 +406,11 @@ pub unsafe fn mailimf_find_first_addr(mb_list: *const mailimf_mailbox_list) -> * cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } - 0 as *mut libc::c_char + ptr::null_mut() } /* the following functions can be used only after a call to dc_mimeparser_parse() */ @@ -439,7 +439,7 @@ pub unsafe fn dc_mimeparser_lookup_optional_field( return (*field).fld_data.fld_optional_field; } - 0 as *mut mailimf_optional_field + ptr::null_mut() } unsafe fn dc_mimeparser_parse_mime_recursive( @@ -507,20 +507,17 @@ unsafe fn dc_mimeparser_parse_mime_recursive( // TODO match on enums /rtn 1 => any_part_added = dc_mimeparser_add_single_part_if_known(mimeparser, mime), 2 => { - match mailmime_get_mime_type(mime, ptr::null_mut(), 0 as *mut *mut libc::c_char) { + match mailmime_get_mime_type(mime, ptr::null_mut(), ptr::null_mut()) { 10 => { cur = (*(*mime).mm_data.mm_multipart.mm_mp_list).first; while !cur.is_null() { let childmime: *mut mailmime = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime; - if mailmime_get_mime_type( - childmime, - ptr::null_mut(), - 0 as *mut *mut libc::c_char, - ) == 30i32 + if mailmime_get_mime_type(childmime, ptr::null_mut(), ptr::null_mut()) + == 30i32 { any_part_added = dc_mimeparser_parse_mime_recursive(mimeparser, childmime); @@ -529,7 +526,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -539,14 +536,11 @@ unsafe fn dc_mimeparser_parse_mime_recursive( let childmime_0: *mut mailmime = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime; - if mailmime_get_mime_type( - childmime_0, - ptr::null_mut(), - 0 as *mut *mut libc::c_char, - ) == 60i32 + if mailmime_get_mime_type(childmime_0, ptr::null_mut(), ptr::null_mut()) + == 60i32 { any_part_added = dc_mimeparser_parse_mime_recursive(mimeparser, childmime_0); @@ -555,7 +549,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -568,7 +562,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime, ) { any_part_added = 1i32; @@ -578,7 +572,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -592,7 +586,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime, ) } @@ -620,7 +614,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime, ) } @@ -645,15 +639,15 @@ unsafe fn dc_mimeparser_parse_mime_recursive( (if !(*(*mime).mm_data.mm_multipart.mm_mp_list).first.is_null() { (*(*(*mime).mm_data.mm_multipart.mm_mp_list).first).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime, ) } } } _ => { - let mut skip_part: *mut mailmime = 0 as *mut mailmime; - let mut html_part: *mut mailmime = 0 as *mut mailmime; + let mut skip_part: *mut mailmime = ptr::null_mut(); + let mut html_part: *mut mailmime = ptr::null_mut(); let mut plain_cnt: libc::c_int = 0i32; let mut html_cnt: libc::c_int = 0i32; cur = (*(*mime).mm_data.mm_multipart.mm_mp_list).first; @@ -661,20 +655,17 @@ unsafe fn dc_mimeparser_parse_mime_recursive( let childmime_1: *mut mailmime = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime; - if mailmime_get_mime_type( - childmime_1, - ptr::null_mut(), - 0 as *mut *mut libc::c_char, - ) == 60i32 + if mailmime_get_mime_type(childmime_1, ptr::null_mut(), ptr::null_mut()) + == 60i32 { plain_cnt += 1 } else if mailmime_get_mime_type( childmime_1, ptr::null_mut(), - 0 as *mut *mut libc::c_char, + ptr::null_mut(), ) == 70i32 { html_part = childmime_1; @@ -683,7 +674,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } if plain_cnt == 1i32 && html_cnt == 1i32 { @@ -699,7 +690,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( let childmime_2: *mut mailmime = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime; if childmime_2 != skip_part { @@ -710,7 +701,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -751,9 +742,9 @@ unsafe fn hash_header( let field: *mut mailimf_field = (if !cur1.is_null() { (*cur1).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_field; - let mut key: *const libc::c_char = 0 as *const libc::c_char; + let mut key: *const libc::c_char = ptr::null(); // TODO match on enums /rtn match (*field).fld_type { 1 => key = b"Return-Path\x00" as *const u8 as *const libc::c_char, @@ -794,7 +785,7 @@ unsafe fn hash_header( cur1 = if !cur1.is_null() { (*cur1).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -962,7 +953,7 @@ unsafe fn mailmime_is_attachment_disposition(mime: *mut mailmime) -> libc::c_int let field: *mut mailmime_field = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime_field; if !field.is_null() && (*field).fld_type == MAILMIME_FIELD_DISPOSITION as libc::c_int @@ -978,7 +969,7 @@ unsafe fn mailmime_is_attachment_disposition(mime: *mut mailmime) -> libc::c_int cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -996,7 +987,7 @@ pub unsafe fn mailmime_find_ct_parameter( || (*mime).mm_content_type.is_null() || (*(*mime).mm_content_type).ct_parameters.is_null() { - return 0 as *mut mailmime_parameter; + return ptr::null_mut(); } let mut cur: *mut clistiter; cur = (*(*(*mime).mm_content_type).ct_parameters).first; @@ -1004,7 +995,7 @@ pub unsafe fn mailmime_find_ct_parameter( let param: *mut mailmime_parameter = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime_parameter; if !param.is_null() && !(*param).pa_name.is_null() { if strcmp((*param).pa_name, name) == 0i32 { @@ -1014,11 +1005,11 @@ pub unsafe fn mailmime_find_ct_parameter( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } - 0 as *mut mailmime_parameter + ptr::null_mut() } unsafe fn dc_mimeparser_add_single_part_if_known( @@ -1029,14 +1020,14 @@ unsafe fn dc_mimeparser_add_single_part_if_known( let old_part_count = mimeparser.parts.len(); let mime_type: libc::c_int; let mime_data: *mut mailmime_data; - let file_suffix: *mut libc::c_char = 0 as *mut libc::c_char; - let mut desired_filename: *mut libc::c_char = 0 as *mut libc::c_char; + let file_suffix: *mut libc::c_char = ptr::null_mut(); + let mut desired_filename: *mut libc::c_char = ptr::null_mut(); let mut msg_type = Viewtype::Unknown; - let mut raw_mime: *mut libc::c_char = 0 as *mut libc::c_char; + let mut raw_mime: *mut libc::c_char = ptr::null_mut(); /* mmap_string_unref()'d if set */ - let mut transfer_decoding_buffer: *mut libc::c_char = 0 as *mut libc::c_char; + let mut transfer_decoding_buffer: *mut libc::c_char = ptr::null_mut(); /* must not be free()'d */ - let mut decoded_data: *const libc::c_char = 0 as *const libc::c_char; + let mut decoded_data: *const libc::c_char = ptr::null(); let mut decoded_data_bytes = 0; let mut simplifier: Option = None; if !(mime.is_null() || (*mime).mm_data.mm_single.is_null()) { @@ -1142,7 +1133,7 @@ unsafe fn dc_mimeparser_add_single_part_if_known( let field: *mut mailmime_field = (if !cur1.is_null() { (*cur1).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime_field; if !field.is_null() @@ -1159,7 +1150,7 @@ unsafe fn dc_mimeparser_add_single_part_if_known( (if !cur2.is_null() { (*cur2).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime_disposition_parm; if !dsp_param.is_null() { @@ -1191,7 +1182,7 @@ unsafe fn dc_mimeparser_add_single_part_if_known( cur2 = if !cur2.is_null() { (*cur2).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -1200,7 +1191,7 @@ unsafe fn dc_mimeparser_add_single_part_if_known( cur1 = if !cur1.is_null() { (*cur1).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -1376,7 +1367,7 @@ pub unsafe fn mailmime_transfer_decode( let decoded_data: *const libc::c_char; let mut decoded_data_bytes: size_t = 0i32 as size_t; /* mmap_string_unref()'d if set */ - let mut transfer_decoding_buffer: *mut libc::c_char = 0 as *mut libc::c_char; + let mut transfer_decoding_buffer: *mut libc::c_char = ptr::null_mut(); if mime.is_null() || ret_decoded_data.is_null() || ret_decoded_data_bytes.is_null() @@ -1395,7 +1386,7 @@ pub unsafe fn mailmime_transfer_decode( let field: *mut mailmime_field = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime_field; if !field.is_null() && (*field).fld_type == MAILMIME_FIELD_TRANSFER_ENCODING as libc::c_int @@ -1407,7 +1398,7 @@ pub unsafe fn mailmime_transfer_decode( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -1473,7 +1464,7 @@ pub unsafe fn dc_mimeparser_is_mailinglist_message(mimeparser: &dc_mimeparser_t) pub unsafe fn dc_mimeparser_sender_equals_recipient(mimeparser: &dc_mimeparser_t) -> libc::c_int { let mut sender_equals_recipient: libc::c_int = 0i32; let fld: *const mailimf_field; - let mut fld_from: *const mailimf_from = 0 as *const mailimf_from; + let mut fld_from: *const mailimf_from = ptr::null(); let mb: *mut mailimf_mailbox; if !mimeparser.header_root.is_null() { @@ -1491,7 +1482,7 @@ pub unsafe fn dc_mimeparser_sender_equals_recipient(mimeparser: &dc_mimeparser_t mb = (if !(*(*(*fld_from).frm_mb_list).mb_list).first.is_null() { (*(*(*(*fld_from).frm_mb_list).mb_list).first).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_mailbox; if !mb.is_null() { let from_addr_norm = addr_normalize(as_str((*mb).mb_addr_spec)); @@ -1517,11 +1508,11 @@ pub unsafe fn mailimf_get_recipients(imffields: *mut mailimf_fields) -> HashSet< let fld: *mut mailimf_field = (if !cur1.is_null() { (*cur1).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_field; let fld_to: *mut mailimf_to; let fld_cc: *mut mailimf_cc; - let mut addr_list: *mut mailimf_address_list = 0 as *mut mailimf_address_list; + let mut addr_list: *mut mailimf_address_list = ptr::null_mut(); // TODO match on enums /rtn match (*fld).fld_type { 13 => { @@ -1545,7 +1536,7 @@ pub unsafe fn mailimf_get_recipients(imffields: *mut mailimf_fields) -> HashSet< let adr: *mut mailimf_address = (if !cur2.is_null() { (*cur2).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_address; if !adr.is_null() { if (*adr).ad_type == MAILIMF_ADDRESS_MAILBOX as libc::c_int { @@ -1564,13 +1555,13 @@ pub unsafe fn mailimf_get_recipients(imffields: *mut mailimf_fields) -> HashSet< (if !cur3.is_null() { (*cur3).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_mailbox, ); cur3 = if !cur3.is_null() { (*cur3).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -1579,14 +1570,14 @@ pub unsafe fn mailimf_get_recipients(imffields: *mut mailimf_fields) -> HashSet< cur2 = if !cur2.is_null() { (*cur2).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } cur1 = if !cur1.is_null() { (*cur1).next } else { - 0 as *mut clistcell + ptr::null_mut() } } @@ -1618,14 +1609,14 @@ pub unsafe fn mailimf_find_field( wanted_fld_type: libc::c_int, ) -> *mut mailimf_field { if header.is_null() || (*header).fld_list.is_null() { - return 0 as *mut mailimf_field; + return ptr::null_mut(); } let mut cur1: *mut clistiter = (*(*header).fld_list).first; while !cur1.is_null() { let field: *mut mailimf_field = (if !cur1.is_null() { (*cur1).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_field; if !field.is_null() { if (*field).fld_type == wanted_fld_type { @@ -1635,11 +1626,11 @@ pub unsafe fn mailimf_find_field( cur1 = if !cur1.is_null() { (*cur1).next } else { - 0 as *mut clistcell + ptr::null_mut() } } - 0 as *mut mailimf_field + ptr::null_mut() } pub unsafe fn dc_mimeparser_repl_msg_by_error( @@ -1661,7 +1652,7 @@ pub unsafe fn dc_mimeparser_repl_msg_by_error( /*the result is a pointer to mime, must not be freed*/ pub unsafe fn mailmime_find_mailimf_fields(mime: *mut mailmime) -> *mut mailimf_fields { if mime.is_null() { - return 0 as *mut mailimf_fields; + return ptr::null_mut(); } match (*mime).mm_type as _ { @@ -1672,7 +1663,7 @@ pub unsafe fn mailmime_find_mailimf_fields(mime: *mut mailmime) -> *mut mailimf_ (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime, ); if !header.is_null() { @@ -1681,7 +1672,7 @@ pub unsafe fn mailmime_find_mailimf_fields(mime: *mut mailmime) -> *mut mailimf_ cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -1689,7 +1680,7 @@ pub unsafe fn mailmime_find_mailimf_fields(mime: *mut mailmime) -> *mut mailimf_ _ => {} } - 0 as *mut mailimf_fields + ptr::null_mut() } pub unsafe fn mailimf_find_optional_field( @@ -1697,14 +1688,14 @@ pub unsafe fn mailimf_find_optional_field( wanted_fld_name: *const libc::c_char, ) -> *mut mailimf_optional_field { if header.is_null() || (*header).fld_list.is_null() { - return 0 as *mut mailimf_optional_field; + return ptr::null_mut(); } let mut cur1: *mut clistiter = (*(*header).fld_list).first; while !cur1.is_null() { let field: *mut mailimf_field = (if !cur1.is_null() { (*cur1).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_field; if !field.is_null() && (*field).fld_type == MAILIMF_FIELD_OPTIONAL_FIELD as libc::c_int { let optional_field: *mut mailimf_optional_field = (*field).fld_data.fld_optional_field; @@ -1719,11 +1710,11 @@ pub unsafe fn mailimf_find_optional_field( cur1 = if !cur1.is_null() { (*cur1).next } else { - 0 as *mut clistcell + ptr::null_mut() } } - 0 as *mut mailimf_optional_field + ptr::null_mut() } #[cfg(test)] @@ -1737,7 +1728,7 @@ mod tests { unsafe { let txt: *const libc::c_char = b"FieldA: ValueA\nFieldB: ValueB\n\x00" as *const u8 as *const libc::c_char; - let mut mime: *mut mailmime = 0 as *mut mailmime; + let mut mime: *mut mailmime = ptr::null_mut(); let mut dummy: size_t = 0i32 as size_t; let res = mailmime_parse(txt, strlen(txt), &mut dummy, &mut mime); diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index 445b7b0f7..96056699e 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -696,7 +696,7 @@ unsafe fn add_parts( ])?; free(txt_raw as *mut libc::c_void); - txt_raw = 0 as *mut libc::c_char; + txt_raw = ptr::null_mut(); *insert_msg_id = sql::get_rowid_with_conn( context, conn, @@ -797,7 +797,7 @@ unsafe fn handle_reports( { (*(*(*report_root).mm_data.mm_multipart.mm_mp_list).first).next } else { - 0 as *mut clistcell + ptr::null_mut() } .is_null() { @@ -807,11 +807,11 @@ unsafe fn handle_reports( { (*(*(*report_root).mm_data.mm_multipart.mm_mp_list).first).next } else { - 0 as *mut clistcell + ptr::null_mut() }) .data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailmime; if !report_data.is_null() @@ -1334,7 +1334,7 @@ unsafe fn create_or_lookup_group( } if !X_MrGrpImageChanged.is_null() { let mut ok = 0; - let mut grpimage = 0 as *mut libc::c_char; + let mut grpimage = ptr::null_mut(); if strcmp( X_MrGrpImageChanged, b"0\x00" as *const u8 as *const libc::c_char, @@ -1388,7 +1388,7 @@ unsafe fn create_or_lookup_group( let skip = if !X_MrRemoveFromGrp.is_null() { X_MrRemoveFromGrp } else { - 0 as *mut libc::c_char + ptr::null_mut() }; sql::execute( context, @@ -1470,7 +1470,7 @@ unsafe fn create_or_lookup_adhoc_group( // group matching the to-list or if we can create one let mut chat_id = 0; let mut chat_id_blocked = Blocked::Not; - let mut grpname = 0 as *mut libc::c_char; + let mut grpname = ptr::null_mut(); let cleanup = |grpname: *mut libc::c_char, ret_chat_id: *mut uint32_t, @@ -1908,7 +1908,7 @@ unsafe fn is_known_rfc724_mid_in_list(context: &Context, mid_list: *const clist) (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *const libc::c_char, ) { return 1; @@ -1985,7 +1985,7 @@ unsafe fn is_msgrmsg_rfc724_mid_in_list(context: &Context, mid_list: *const clis (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *const libc::c_char, ) { return 1; @@ -2029,7 +2029,7 @@ unsafe fn dc_add_or_lookup_contacts_by_address_list( let adr: *mut mailimf_address = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_address; if !adr.is_null() { if (*adr).ad_type == MAILIMF_ADDRESS_MAILBOX as libc::c_int { @@ -2060,7 +2060,7 @@ unsafe fn dc_add_or_lookup_contacts_by_address_list( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } @@ -2080,7 +2080,7 @@ unsafe fn dc_add_or_lookup_contacts_by_mailbox_list( let mb: *mut mailimf_mailbox = (if !cur.is_null() { (*cur).data } else { - 0 as *mut libc::c_void + ptr::null_mut() }) as *mut mailimf_mailbox; if !mb.is_null() { add_or_lookup_contact_by_addr( @@ -2095,7 +2095,7 @@ unsafe fn dc_add_or_lookup_contacts_by_mailbox_list( cur = if !cur.is_null() { (*cur).next } else { - 0 as *mut clistcell + ptr::null_mut() } } } diff --git a/src/dc_securejoin.rs b/src/dc_securejoin.rs index 216821c66..c481a8b23 100644 --- a/src/dc_securejoin.rs +++ b/src/dc_securejoin.rs @@ -1,5 +1,6 @@ use mmime::mailimf_types::*; use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC}; +use std::ptr; use crate::aheader::EncryptPreference; use crate::chat::{self, Chat}; @@ -30,7 +31,7 @@ pub unsafe fn dc_get_securejoin_qr( ==== Step 1 in "Setup verified contact" protocol ==== ========================================================= */ - let mut fingerprint = 0 as *mut libc::c_char; + let mut fingerprint = ptr::null_mut(); let mut invitenumber: *mut libc::c_char; let mut auth: *mut libc::c_char; let mut qr: Option = None; @@ -244,7 +245,7 @@ pub unsafe fn dc_join_securejoin(context: &Context, qr: *const libc::c_char) -> .invitenumber .as_ref() .unwrap(), - 0 as *const libc::c_char, + ptr::null(), "", ); } @@ -270,7 +271,7 @@ pub unsafe fn dc_join_securejoin(context: &Context, qr: *const libc::c_char) -> context, bob.qr_scan.as_ref().unwrap().text2.as_ref().unwrap(), None, - 0 as *mut libc::c_int, + ptr::null_mut(), ) as libc::c_int } else { ret_chat_id = contact_chat_id as libc::c_int @@ -371,7 +372,7 @@ pub unsafe fn dc_handle_securejoin_handshake( let mut current_block: u64; let step: *const libc::c_char; let join_vg: libc::c_int; - let mut own_fingerprint: *mut libc::c_char = 0 as *mut libc::c_char; + let mut own_fingerprint: *mut libc::c_char = ptr::null_mut(); let contact_chat_id: u32; let contact_chat_id_blocked: Blocked; let mut grpid = "".to_string(); @@ -433,7 +434,7 @@ pub unsafe fn dc_handle_securejoin_handshake( b"vc-auth-required\x00" as *const u8 as *const libc::c_char }, "", - 0 as *const libc::c_char, + ptr::null(), "", ); current_block = 10256747982273457880; @@ -636,12 +637,8 @@ pub unsafe fn dc_handle_securejoin_handshake( ); if 0 != join_vg { grpid = to_string(lookup_field(mimeparser, "Secure-Join-Group")); - let group_chat_id: uint32_t = chat::get_chat_id_by_grpid( - context, - &grpid, - None, - 0 as *mut libc::c_int, - ); + let group_chat_id: uint32_t = + chat::get_chat_id_by_grpid(context, &grpid, None, ptr::null_mut()); if group_chat_id == 0i32 as libc::c_uint { error!(context, 0, "Chat {} not found.", &grpid); current_block = 4378276786830486580; @@ -660,7 +657,7 @@ pub unsafe fn dc_handle_securejoin_handshake( contact_chat_id, b"vc-contact-confirm\x00" as *const u8 as *const libc::c_char, "", - 0 as *const libc::c_char, + ptr::null(), "", ); context.call_cb( @@ -813,7 +810,7 @@ pub unsafe fn dc_handle_securejoin_handshake( b"vg-member-added-received\x00" as *const u8 as *const libc::c_char, "", - 0 as *const libc::c_char, + ptr::null(), "", ); } @@ -898,7 +895,7 @@ unsafe fn secure_connection_established(context: &Context, contact_chat_id: uint } unsafe fn lookup_field(mimeparser: &dc_mimeparser_t, key: &str) -> *const libc::c_char { - let mut value: *const libc::c_char = 0 as *const libc::c_char; + let mut value: *const libc::c_char = ptr::null(); let field: *mut mailimf_field = dc_mimeparser_lookup_field(mimeparser, key); if field.is_null() || (*field).fld_type != MAILIMF_FIELD_OPTIONAL_FIELD as libc::c_int @@ -908,7 +905,7 @@ unsafe fn lookup_field(mimeparser: &dc_mimeparser_t, key: &str) -> *const libc:: value.is_null() } { - return 0 as *const libc::c_char; + return ptr::null(); } value diff --git a/src/dc_simplify.rs b/src/dc_simplify.rs index 8d8fe4ed7..c32ccbb19 100644 --- a/src/dc_simplify.rs +++ b/src/dc_simplify.rs @@ -100,8 +100,8 @@ impl Simplify { break; } } - if l_lastQuotedLine.is_some() { - l_last = l_lastQuotedLine.unwrap(); + if let Some(last_quoted_line) = l_lastQuotedLine { + l_last = last_quoted_line; is_cut_at_end = true; if l_last > 1 { if is_empty_line(lines[l_last - 1]) { @@ -135,8 +135,8 @@ impl Simplify { } } } - if l_lastQuotedLine_0.is_some() { - l_first = l_lastQuotedLine_0.unwrap() + 1; + if let Some(last_quoted_line) = l_lastQuotedLine_0 { + l_first = last_quoted_line + 1; is_cut_at_begin = true } } diff --git a/src/dc_strencode.rs b/src/dc_strencode.rs index 41b8bc553..8e0ffcf39 100644 --- a/src/dc_strencode.rs +++ b/src/dc_strencode.rs @@ -1,4 +1,5 @@ use std::ffi::{CStr, CString}; +use std::ptr; use charset::Charset; use mmime::mailmime_decode::*; @@ -79,7 +80,7 @@ fn hex_2_int(ch: libc::c_char) -> libc::c_char { pub unsafe fn dc_encode_header_words(to_encode: *const libc::c_char) -> *mut libc::c_char { let mut ok_to_continue = true; - let mut ret_str: *mut libc::c_char = 0 as *mut libc::c_char; + let mut ret_str: *mut libc::c_char = ptr::null_mut(); let mut cur: *const libc::c_char = to_encode; let mmapstr: *mut MMAPString = mmap_string_new(b"\x00" as *const u8 as *const libc::c_char); if to_encode.is_null() || mmapstr.is_null() { @@ -270,9 +271,9 @@ unsafe fn to_be_quoted(word: *const libc::c_char, size: size_t) -> bool { pub unsafe fn dc_decode_header_words(in_0: *const libc::c_char) -> *mut libc::c_char { if in_0.is_null() { - return 0 as *mut libc::c_char; + return ptr::null_mut(); } - let mut out: *mut libc::c_char = 0 as *mut libc::c_char; + let mut out: *mut libc::c_char = ptr::null_mut(); let mut cur_token: size_t = 0i32 as size_t; let r: libc::c_int = mailmime_encoded_phrase_parse( b"iso-8859-1\x00" as *const u8 as *const libc::c_char, @@ -616,8 +617,8 @@ pub unsafe fn dc_encode_ext_header(to_encode: *const libc::c_char) -> *mut libc: } pub unsafe fn dc_decode_ext_header(to_decode: *const libc::c_char) -> *mut libc::c_char { - let mut decoded: *mut libc::c_char = 0 as *mut libc::c_char; - let mut charset: *mut libc::c_char = 0 as *mut libc::c_char; + let mut decoded: *mut libc::c_char = ptr::null_mut(); + let mut charset: *mut libc::c_char = ptr::null_mut(); let mut p2: *const libc::c_char; if !to_decode.is_null() { // get char set diff --git a/src/dc_tools.rs b/src/dc_tools.rs index 0ef03eb20..bb8db8eb4 100644 --- a/src/dc_tools.rs +++ b/src/dc_tools.rs @@ -1424,7 +1424,7 @@ mod tests { ); assert_ne!(str_a, str_a_copy); - let str_a = 0 as *const u8 as *const libc::c_char; + let str_a = ptr::null(); let str_a_copy = dc_strdup_keep_null(str_a); assert_eq!(str_a.is_null(), true); assert_eq!(str_a_copy.is_null(), true); diff --git a/src/imap.rs b/src/imap.rs index a9d814787..72a3cb4ef 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -479,25 +479,19 @@ impl Imap { 0, "IMAP unsetup_handle step 1 (closing down stream)." ); let stream = self.stream.write().unwrap().take(); - if stream.is_some() { - match stream.unwrap().shutdown(net::Shutdown::Both) { - Ok(_) => {} - Err(err) => { - eprintln!("failed to shutdown connection: {:?}", err); - } + if let Some(stream) = stream { + if let Err(err) = stream.shutdown(net::Shutdown::Both) { + eprintln!("failed to shutdown connection: {:?}", err); } } + info!( context, 0, "IMAP unsetup_handle step 2 (acquiring session.lock)" ); - let session = self.session.lock().unwrap().take(); - if session.is_some() { - match session.unwrap().close() { - Ok(_) => {} - Err(err) => { - eprintln!("failed to close connection: {:?}", err); - } + if let Some(mut session) = self.session.lock().unwrap().take() { + if let Err(err) = session.close() { + eprintln!("failed to close connection: {:?}", err); } } diff --git a/src/job.rs b/src/job.rs index 0b42c5945..2bdcfb7ef 100644 --- a/src/job.rs +++ b/src/job.rs @@ -136,12 +136,8 @@ impl Job { if unsafe { strlen(filename) } == 0 { warn!(context, 0, "Missing file name for job {}", self.job_id,); } else if 0 != unsafe { dc_read_file(context, filename, &mut buf, &mut buf_bytes) } { - let recipients = self.param.get(Param::Recipients); - if recipients.is_none() { - warn!(context, 0, "Missing recipients for job {}", self.job_id,); - } else { + if let Some(recipients) = self.param.get(Param::Recipients) { let recipients_list = recipients - .unwrap() .split("\x1e") .filter_map(|addr| match lettre::EmailAddress::new(addr.to_string()) { Ok(addr) => Some(addr), @@ -210,6 +206,8 @@ impl Job { } } } + } else { + warn!(context, 0, "Missing recipients for job {}", self.job_id,); } } } @@ -727,7 +725,7 @@ pub unsafe fn job_send_msg(context: &Context, msg_id: uint32_t) -> libc::c_int { clist_insert_after( mimefactory.recipients_names, (*mimefactory.recipients_names).last, - 0 as *mut libc::c_void, + ptr::null_mut(), ); clist_insert_after( mimefactory.recipients_addr, @@ -1020,7 +1018,7 @@ fn send_mdn(context: &Context, msg_id: uint32_t) { fn add_smtp_job(context: &Context, action: Action, mimefactory: &dc_mimefactory_t) -> libc::c_int { let pathNfilename: *mut libc::c_char; let mut success: libc::c_int = 0i32; - let mut recipients: *mut libc::c_char = 0 as *mut libc::c_char; + let mut recipients: *mut libc::c_char = ptr::null_mut(); let mut param = Params::new(); pathNfilename = unsafe { dc_get_fine_pathNfilename( diff --git a/src/message.rs b/src/message.rs index acd642880..18005fd99 100644 --- a/src/message.rs +++ b/src/message.rs @@ -378,7 +378,7 @@ pub fn dc_msg_guess_msgtype_from_suffix(path: &Path) -> Option<(Viewtype, &str)> } pub unsafe fn dc_msg_get_file(msg: &Message) -> *mut libc::c_char { - let mut file_abs = 0 as *mut libc::c_char; + let mut file_abs = ptr::null_mut(); if let Some(file_rel) = msg.param.get(Param::File) { file_abs = dc_get_abs_path(msg.context, file_rel); @@ -687,7 +687,7 @@ pub unsafe fn dc_msg_get_text(msg: &Message) -> *mut libc::c_char { #[allow(non_snake_case)] pub unsafe fn dc_msg_get_filename(msg: &Message) -> *mut libc::c_char { - let mut ret = 0 as *mut libc::c_char; + let mut ret = ptr::null_mut(); if let Some(file) = msg.param.get(Param::File) { ret = dc_get_filename(file); @@ -819,19 +819,21 @@ pub fn dc_msg_get_summarytext_by_raw( } } }; - let ret = if append_text && text.is_some() { - let text = text.unwrap(); - if !prefix.is_empty() { + + if !append_text { + return prefix; + } + + if let Some(text) = text { + if prefix.is_empty() { + dc_truncate(text.as_ref(), approx_characters, true).to_string() + } else { let tmp = format!("{} – {}", prefix, text.as_ref()); dc_truncate(&tmp, approx_characters, true).to_string() - } else { - dc_truncate(text.as_ref(), approx_characters, true).to_string() } } else { prefix - }; - - ret + } } pub unsafe fn dc_msg_has_deviating_timestamp(msg: &Message) -> libc::c_int { @@ -895,14 +897,14 @@ pub fn dc_msg_is_setupmessage(msg: &Message) -> bool { } pub unsafe fn dc_msg_get_setupcodebegin(msg: &Message) -> *mut libc::c_char { - let mut filename: *mut libc::c_char = 0 as *mut libc::c_char; - let mut buf: *mut libc::c_char = 0 as *mut libc::c_char; + let mut filename: *mut libc::c_char = ptr::null_mut(); + let mut buf: *mut libc::c_char = ptr::null_mut(); let mut buf_bytes: size_t = 0i32 as size_t; // just a pointer inside buf, MUST NOT be free()'d - let mut buf_headerline: *const libc::c_char = 0 as *const libc::c_char; + let mut buf_headerline: *const libc::c_char = ptr::null(); // just a pointer inside buf, MUST NOT be free()'d - let mut buf_setupcodebegin: *const libc::c_char = 0 as *const libc::c_char; - let mut ret: *mut libc::c_char = 0 as *mut libc::c_char; + let mut buf_setupcodebegin: *const libc::c_char = ptr::null(); + let mut ret: *mut libc::c_char = ptr::null_mut(); if dc_msg_is_setupmessage(msg) { filename = dc_msg_get_file(msg); if !(filename.is_null() || *filename.offset(0isize) as libc::c_int == 0i32) { @@ -920,8 +922,8 @@ pub unsafe fn dc_msg_get_setupcodebegin(msg: &Message) -> *mut libc::c_char { buf, &mut buf_headerline, &mut buf_setupcodebegin, - 0 as *mut *const libc::c_char, - 0 as *mut *const libc::c_char, + ptr::null_mut(), + ptr::null_mut(), ) && strcmp( buf_headerline, b"-----BEGIN PGP MESSAGE-----\x00" as *const u8 as *const libc::c_char, @@ -1263,7 +1265,7 @@ pub fn dc_rfc724_mid_exists( Ok(res) => res, Err(_err) => { if !ret_server_folder.is_null() { - unsafe { *ret_server_folder = 0 as *mut libc::c_char }; + unsafe { *ret_server_folder = ptr::null_mut() }; } if !ret_server_uid.is_null() { unsafe { *ret_server_uid = 0 }; diff --git a/src/pgp.rs b/src/pgp.rs index eb36d95e1..4ed43edea 100644 --- a/src/pgp.rs +++ b/src/pgp.rs @@ -33,7 +33,7 @@ pub unsafe fn dc_split_armored_data( let mut headerline: *mut libc::c_char = ptr::null_mut(); let mut base64: *mut libc::c_char = ptr::null_mut(); if !ret_headerline.is_null() { - *ret_headerline = 0 as *const libc::c_char + *ret_headerline = ptr::null() } if !ret_setupcodebegin.is_null() { *ret_setupcodebegin = ptr::null_mut(); diff --git a/tests/stress.rs b/tests/stress.rs index b825a8aa5..3795f98d7 100644 --- a/tests/stress.rs +++ b/tests/stress.rs @@ -2,6 +2,7 @@ use std::collections::HashSet; use std::ffi::CString; +use std::ptr; use tempfile::{tempdir, TempDir}; @@ -68,7 +69,7 @@ unsafe fn stress_functions(context: &Context) { assert!(dc_copy_file(context, "$BLOBDIR/foobar", "$BLOBDIR/dada",)); assert_eq!(dc_get_filebytes(context, "$BLOBDIR/dada",), 7); - let mut buf: *mut libc::c_void = 0 as *mut libc::c_void; + let mut buf: *mut libc::c_void = ptr::null_mut(); let mut buf_bytes: size_t = 0; assert_eq!( @@ -161,10 +162,10 @@ unsafe fn stress_functions(context: &Context) { assert!(res.contains(" configured_server_flags ")); let mut buf_0: *mut libc::c_char; - let mut headerline: *const libc::c_char = 0 as *const libc::c_char; - let mut setupcodebegin: *const libc::c_char = 0 as *const libc::c_char; - let mut preferencrypt: *const libc::c_char = 0 as *const libc::c_char; - let mut base64: *const libc::c_char = 0 as *const libc::c_char; + let mut headerline: *const libc::c_char = ptr::null(); + let mut setupcodebegin: *const libc::c_char = ptr::null(); + let mut preferencrypt: *const libc::c_char = ptr::null(); + let mut base64: *const libc::c_char = ptr::null(); buf_0 = strdup( b"-----BEGIN PGP MESSAGE-----\nNoVal:\n\ndata\n-----END PGP MESSAGE-----\x00" as *const u8 as *const libc::c_char, @@ -173,7 +174,7 @@ unsafe fn stress_functions(context: &Context) { buf_0, &mut headerline, &mut setupcodebegin, - 0 as *mut *const libc::c_char, + ptr::null_mut(), &mut base64, ); assert!(ok); @@ -198,7 +199,7 @@ unsafe fn stress_functions(context: &Context) { buf_0, &mut headerline, &mut setupcodebegin, - 0 as *mut *const libc::c_char, + ptr::null_mut(), &mut base64, ); @@ -225,7 +226,7 @@ unsafe fn stress_functions(context: &Context) { buf_0, &mut headerline, &mut setupcodebegin, - 0 as *mut *const libc::c_char, + ptr::null_mut(), &mut base64, ); @@ -250,7 +251,7 @@ unsafe fn stress_functions(context: &Context) { buf_0, &mut headerline, &mut setupcodebegin, - 0 as *mut *const libc::c_char, + ptr::null_mut(), &mut base64, ); @@ -263,7 +264,7 @@ unsafe fn stress_functions(context: &Context) { buf_0, &mut headerline, &mut setupcodebegin, - 0 as *mut *const libc::c_char, + ptr::null_mut(), &mut base64, ); assert!(ok); @@ -296,7 +297,7 @@ unsafe fn stress_functions(context: &Context) { let ok = dc_split_armored_data( buf_0, &mut headerline, - 0 as *mut *const libc::c_char, + ptr::null_mut(), &mut preferencrypt, &mut base64, ); @@ -352,16 +353,16 @@ unsafe fn stress_functions(context: &Context) { ); free(norm as *mut libc::c_void); let mut buf_1: *mut libc::c_char; - let mut headerline_0: *const libc::c_char = 0 as *const libc::c_char; - let mut setupcodebegin_0: *const libc::c_char = 0 as *const libc::c_char; - let mut preferencrypt_0: *const libc::c_char = 0 as *const libc::c_char; + let mut headerline_0: *const libc::c_char = ptr::null(); + let mut setupcodebegin_0: *const libc::c_char = ptr::null(); + let mut preferencrypt_0: *const libc::c_char = ptr::null(); buf_1 = strdup(S_EM_SETUPFILE); assert!(dc_split_armored_data( buf_1, &mut headerline_0, &mut setupcodebegin_0, &mut preferencrypt_0, - 0 as *mut *const libc::c_char, + ptr::null_mut(), )); assert!(!headerline_0.is_null()); assert_eq!( @@ -387,7 +388,7 @@ unsafe fn stress_functions(context: &Context) { &mut headerline_0, &mut setupcodebegin_0, &mut preferencrypt_0, - 0 as *mut *const libc::c_char, + ptr::null_mut(), )); assert!(!headerline_0.is_null()); assert_eq!( @@ -415,16 +416,16 @@ unsafe fn stress_functions(context: &Context) { // let setupcode_c = CString::yolo(setupcode.clone()); // let setupfile = dc_render_setup_file(context, &setupcode).unwrap(); // let setupfile_c = CString::yolo(setupfile); - // let mut headerline_2: *const libc::c_char = 0 as *const libc::c_char; + // let mut headerline_2: *const libc::c_char = ptr::null(); // let payload = dc_decrypt_setup_file(context, setupcode_c.as_ptr(), setupfile_c.as_ptr()); // assert!(payload.is_null()); // assert!(!dc_split_armored_data( // payload, // &mut headerline_2, - // 0 as *mut *const libc::c_char, - // 0 as *mut *const libc::c_char, - // 0 as *mut *const libc::c_char, + // ptr::null_mut(), + // ptr::null_mut(), + // ptr::null_mut(), // )); // assert!(!headerline_2.is_null()); // assert_eq!(