From 34a3ad82e05b02e400f0b00de9123a3fbec2cdbe Mon Sep 17 00:00:00 2001 From: Dmitry Bogatov Date: Sat, 14 Sep 2019 12:44:37 +0000 Subject: [PATCH 1/3] Rename dc_mimefactory_t -> MimeFactory CamelCase naming convention is more natural for Rust. https://rust-lang-nursery.github.io/api-guidelines/naming.html --- src/dc_mimefactory.rs | 19 +++++++++---------- src/job.rs | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/dc_mimefactory.rs b/src/dc_mimefactory.rs index 1f0cdc148..cef0040a5 100644 --- a/src/dc_mimefactory.rs +++ b/src/dc_mimefactory.rs @@ -28,8 +28,7 @@ use crate::stock::StockMessage; use crate::x::*; #[derive(Clone)] -#[allow(non_camel_case_types)] -pub struct dc_mimefactory_t<'a> { +pub struct MimeFactory<'a> { pub from_addr: *mut libc::c_char, pub from_displayname: *mut libc::c_char, pub selfstatus: Option, @@ -52,7 +51,7 @@ pub struct dc_mimefactory_t<'a> { pub context: &'a Context, } -impl<'a> Drop for dc_mimefactory_t<'a> { +impl<'a> Drop for MimeFactory<'a> { fn drop(&mut self) { unsafe { free(self.from_addr as *mut libc::c_void); @@ -85,12 +84,12 @@ pub const DC_MF_NOTHING_LOADED: dc_mimefactory_loaded_t = 0; pub unsafe fn dc_mimefactory_load_msg( context: &Context, msg_id: u32, -) -> Result { +) -> Result { ensure!(msg_id > DC_CHAT_ID_LAST_SPECIAL, "Invalid chat id"); let msg = dc_msg_load_from_db(context, msg_id)?; let chat = Chat::load_from_db(context, msg.chat_id)?; - let mut factory = dc_mimefactory_t { + let mut factory = MimeFactory { from_addr: ptr::null_mut(), from_displayname: ptr::null_mut(), selfstatus: None, @@ -237,7 +236,7 @@ pub unsafe fn dc_mimefactory_load_msg( Ok(factory) } -unsafe fn load_from(factory: &mut dc_mimefactory_t) { +unsafe fn load_from(factory: &mut MimeFactory) { let context = factory.context; factory.from_addr = context .sql @@ -266,7 +265,7 @@ unsafe fn load_from(factory: &mut dc_mimefactory_t) { pub unsafe fn dc_mimefactory_load_mdn<'a>( context: &'a Context, msg_id: u32, -) -> Result { +) -> Result { if 0 == context .sql .get_config_int(context, "mdns_enabled") @@ -280,7 +279,7 @@ pub unsafe fn dc_mimefactory_load_mdn<'a>( let msg = dc_msg_load_from_db(context, msg_id)?; - let mut factory = dc_mimefactory_t { + let mut factory = MimeFactory { from_addr: ptr::null_mut(), from_displayname: ptr::null_mut(), selfstatus: None, @@ -335,7 +334,7 @@ pub unsafe fn dc_mimefactory_load_mdn<'a>( Ok(factory) } -pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefactory_t) -> bool { +pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut MimeFactory) -> bool { let subject: *mut mailimf_subject; let mut ok_to_continue = true; let imf_fields: *mut mailimf_fields; @@ -1074,7 +1073,7 @@ unsafe fn get_subject( ret } -unsafe fn set_error(factory: *mut dc_mimefactory_t, text: *const libc::c_char) { +unsafe fn set_error(factory: *mut MimeFactory, text: *const libc::c_char) { if factory.is_null() { return; } diff --git a/src/job.rs b/src/job.rs index 1cf074fd9..6949145ef 100644 --- a/src/job.rs +++ b/src/job.rs @@ -1003,7 +1003,7 @@ fn send_mdn(context: &Context, msg_id: u32) { } #[allow(non_snake_case)] -fn add_smtp_job(context: &Context, action: Action, mimefactory: &dc_mimefactory_t) -> libc::c_int { +fn add_smtp_job(context: &Context, action: Action, mimefactory: &MimeFactory) -> libc::c_int { let mut success: libc::c_int = 0i32; let mut recipients: *mut libc::c_char = ptr::null_mut(); let mut param = Params::new(); From fa7bb71f3f2c23038ae3238e8f711e6605edcc64 Mon Sep 17 00:00:00 2001 From: Dmitry Bogatov Date: Sat, 14 Sep 2019 12:59:33 +0000 Subject: [PATCH 2/3] Change type of MimeFactory.out_{gossip,encrypted} to bool --- src/dc_mimefactory.rs | 16 ++++++++-------- src/job.rs | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/dc_mimefactory.rs b/src/dc_mimefactory.rs index cef0040a5..bca91324a 100644 --- a/src/dc_mimefactory.rs +++ b/src/dc_mimefactory.rs @@ -44,8 +44,8 @@ pub struct MimeFactory<'a> { pub references: *mut libc::c_char, pub req_mdn: libc::c_int, pub out: *mut MMAPString, - pub out_encrypted: libc::c_int, - pub out_gossiped: libc::c_int, + pub out_encrypted: bool, + pub out_gossiped: bool, pub out_last_added_location_id: u32, pub error: *mut libc::c_char, pub context: &'a Context, @@ -105,8 +105,8 @@ pub unsafe fn dc_mimefactory_load_msg( references: ptr::null_mut(), req_mdn: 0, out: ptr::null_mut(), - out_encrypted: 0, - out_gossiped: 0, + out_encrypted: false, + out_gossiped: false, out_last_added_location_id: 0, error: ptr::null_mut(), context, @@ -295,8 +295,8 @@ pub unsafe fn dc_mimefactory_load_mdn<'a>( references: ptr::null_mut(), req_mdn: 0, out: ptr::null_mut(), - out_encrypted: 0, - out_gossiped: 0, + out_encrypted: false, + out_gossiped: false, out_last_added_location_id: 0, error: ptr::null_mut(), context, @@ -1024,9 +1024,9 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut MimeFactory ); } if e2ee_helper.encryption_successfull { - factory.out_encrypted = 1; + factory.out_encrypted = true; if 0 != do_gossip { - factory.out_gossiped = 1 + factory.out_gossiped = true; } } factory.out = mmap_string_new(b"\x00" as *const u8 as *const libc::c_char); diff --git a/src/job.rs b/src/job.rs index 6949145ef..abafc3bea 100644 --- a/src/job.rs +++ b/src/job.rs @@ -686,7 +686,7 @@ pub unsafe fn job_send_msg(context: &Context, msg_id: u32) -> libc::c_int { .param .get_int(Param::GuranteeE2ee) .unwrap_or_default() - && 0 == mimefactory.out_encrypted + && !mimefactory.out_encrypted { warn!( context, @@ -713,7 +713,7 @@ pub unsafe fn job_send_msg(context: &Context, msg_id: u32) -> libc::c_int { dc_strdup(mimefactory.from_addr) as *mut libc::c_void, ); } - if 0 != mimefactory.out_gossiped { + if mimefactory.out_gossiped { chat::set_gossiped_timestamp(context, mimefactory.msg.chat_id, time()); } if 0 != mimefactory.out_last_added_location_id { @@ -732,7 +732,7 @@ pub unsafe fn job_send_msg(context: &Context, msg_id: u32) -> libc::c_int { } } } - if 0 != mimefactory.out_encrypted + if mimefactory.out_encrypted && mimefactory .msg .param From e9c9a3e1ce98cccd8c62b7bb6753642e8e558fcb Mon Sep 17 00:00:00 2001 From: Dmitry Bogatov Date: Fri, 13 Sep 2019 17:54:46 +0000 Subject: [PATCH 3/3] Change type of MimeFactory.loaded to enum * src/dc_mimefactory.rs(MimeFactory): change type of `loaded` field * src/dc_mimefactory.rs(Loaded): new enum, describing possible values of `loaded` field of `MimeFactory` structure * src/dc_mimefactory.rs(dc_mimefactory_loaded_t): remove unused type alias * src/job.rs(add_smtp_job): adjust call site by removing multiple casts * src/dc_mimefactory.rs(dc_mimefactory_render): ditto --- src/dc_mimefactory.rs | 35 ++++++++++++++++------------------- src/job.rs | 4 +--- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/dc_mimefactory.rs b/src/dc_mimefactory.rs index bca91324a..3b922bf80 100644 --- a/src/dc_mimefactory.rs +++ b/src/dc_mimefactory.rs @@ -27,6 +27,13 @@ use crate::param::*; use crate::stock::StockMessage; use crate::x::*; +#[derive(Clone, Copy, Eq, PartialEq)] +pub enum Loaded { + Nothing, + Message, + MDN, // TODO: invent more descriptive name +} + #[derive(Clone)] pub struct MimeFactory<'a> { pub from_addr: *mut libc::c_char, @@ -36,7 +43,7 @@ pub struct MimeFactory<'a> { pub recipients_addr: *mut clist, pub timestamp: i64, pub rfc724_mid: String, - pub loaded: dc_mimefactory_loaded_t, + pub loaded: Loaded, pub msg: Message, pub chat: Option, pub increation: bool, @@ -75,12 +82,6 @@ impl<'a> Drop for MimeFactory<'a> { } } -#[allow(non_camel_case_types)] -type dc_mimefactory_loaded_t = libc::c_uint; -const DC_MF_MDN_LOADED: dc_mimefactory_loaded_t = 2; -pub const DC_MF_MSG_LOADED: dc_mimefactory_loaded_t = 1; -pub const DC_MF_NOTHING_LOADED: dc_mimefactory_loaded_t = 0; - pub unsafe fn dc_mimefactory_load_msg( context: &Context, msg_id: u32, @@ -97,7 +98,7 @@ pub unsafe fn dc_mimefactory_load_msg( recipients_addr: clist_new(), timestamp: 0, rfc724_mid: String::default(), - loaded: DC_MF_NOTHING_LOADED, + loaded: Loaded::Nothing, msg, chat: Some(chat), increation: false, @@ -228,7 +229,7 @@ pub unsafe fn dc_mimefactory_load_msg( } } - factory.loaded = DC_MF_MSG_LOADED; + factory.loaded = Loaded::Message; factory.timestamp = factory.msg.timestamp_sort; factory.rfc724_mid = factory.msg.rfc724_mid.clone(); factory.increation = dc_msg_is_increation(&factory.msg); @@ -287,7 +288,7 @@ pub unsafe fn dc_mimefactory_load_mdn<'a>( recipients_addr: clist_new(), timestamp: 0, rfc724_mid: String::default(), - loaded: DC_MF_NOTHING_LOADED, + loaded: Loaded::Nothing, msg, chat: None, increation: false, @@ -329,7 +330,7 @@ pub unsafe fn dc_mimefactory_load_mdn<'a>( load_from(&mut factory); factory.timestamp = dc_create_smeared_timestamp(factory.context); factory.rfc724_mid = dc_create_outgoing_rfc724_mid(None, as_str(factory.from_addr)); - factory.loaded = DC_MF_MDN_LOADED; + factory.loaded = Loaded::MDN; Ok(factory) } @@ -353,9 +354,7 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut MimeFactory let mut grpimage = None; let mut e2ee_helper = E2eeHelper::default(); - if factory.loaded as libc::c_uint == DC_MF_NOTHING_LOADED as libc::c_int as libc::c_uint - || !factory.out.is_null() - { + if factory.loaded == Loaded::Nothing || !factory.out.is_null() { /*call empty() before*/ set_error( factory, @@ -485,7 +484,7 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut MimeFactory } message = mailmime_new_message_data(0 as *mut mailmime); mailmime_set_imf_fields(message, imf_fields); - if factory.loaded as libc::c_uint == DC_MF_MSG_LOADED as libc::c_int as libc::c_uint { + if factory.loaded == Loaded::Message { /* Render a normal message *********************************************************************/ let chat = factory.chat.as_ref().unwrap(); @@ -908,8 +907,7 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut MimeFactory } } } - } else if factory.loaded as libc::c_uint == DC_MF_MDN_LOADED as libc::c_int as libc::c_uint - { + } else if factory.loaded == Loaded::MDN { let multipart: *mut mailmime = mailmime_multiple_new(b"multipart/report\x00" as *const u8 as *const libc::c_char); let content: *mut mailmime_content = (*multipart).mm_content_type; @@ -970,8 +968,7 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut MimeFactory } if ok_to_continue { - let subject_str = if factory.loaded as libc::c_uint == DC_MF_MDN_LOADED as libc::c_uint - { + let subject_str = if factory.loaded == Loaded::MDN { let e = factory.context.stock_str(StockMessage::ReadRcpt); format!("Chat: {}", e) } else { diff --git a/src/job.rs b/src/job.rs index abafc3bea..b2d15c01a 100644 --- a/src/job.rs +++ b/src/job.rs @@ -1033,9 +1033,7 @@ fn add_smtp_job(context: &Context, action: Action, mimefactory: &MimeFactory) -> job_add( context, action, - (if mimefactory.loaded as libc::c_uint - == DC_MF_MSG_LOADED as libc::c_int as libc::c_uint - { + (if mimefactory.loaded == Loaded::Message { mimefactory.msg.id } else { 0