mirror of
https://github.com/chatmail/core.git
synced 2026-05-22 08:16:32 +03:00
refactor(mmime): rustify mailimf_group
This commit is contained in:
@@ -260,9 +260,9 @@ unsafe fn display_group(mut group: *mut mailimf_group) {
|
|||||||
let mut cur: *mut clistiter = 0 as *mut clistiter;
|
let mut cur: *mut clistiter = 0 as *mut clistiter;
|
||||||
print!(
|
print!(
|
||||||
"{}: ",
|
"{}: ",
|
||||||
CStr::from_ptr((*group).grp_display_name).to_str().unwrap()
|
CStr::from_ptr((*group).display_name).to_str().unwrap()
|
||||||
);
|
);
|
||||||
cur = (*(*(*group).grp_mb_list).mb_list).first;
|
cur = (*(*(*group).mb_list).mb_list).first;
|
||||||
while !cur.is_null() {
|
while !cur.is_null() {
|
||||||
let mut mb: *mut mailimf_mailbox = 0 as *mut mailimf_mailbox;
|
let mut mb: *mut mailimf_mailbox = 0 as *mut mailimf_mailbox;
|
||||||
mb = (if !cur.is_null() {
|
mb = (if !cur.is_null() {
|
||||||
|
|||||||
@@ -41,22 +41,28 @@ pub enum mailimf_address {
|
|||||||
Group(*mut mailimf_group),
|
Group(*mut mailimf_group),
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/// Represents a group.
|
||||||
mailimf_group is a group
|
/// - display_name is the name that will be displayed for this group,
|
||||||
|
/// for example 'group_name' in
|
||||||
- display_name is the name that will be displayed for this group,
|
/// 'group_name: address1@domain1, address2@domain2;',
|
||||||
for example 'group_name' in
|
/// - mb_list is a list of mailboxes
|
||||||
'group_name: address1@domain1, address2@domain2;', should be allocated
|
#[derive(Clone)]
|
||||||
with malloc()
|
|
||||||
|
|
||||||
- mb_list is a list of mailboxes
|
|
||||||
*/
|
|
||||||
#[derive(Copy, Clone)]
|
|
||||||
#[repr(C)]
|
|
||||||
pub struct mailimf_group {
|
pub struct mailimf_group {
|
||||||
pub grp_display_name: *mut libc::c_char,
|
pub display_name: *mut libc::c_char,
|
||||||
pub grp_mb_list: *mut mailimf_mailbox_list,
|
pub mb_list: *mut mailimf_mailbox_list,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Drop for mailimf_group {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
unsafe {
|
||||||
|
if !self.mb_list.is_null() {
|
||||||
|
mailimf_mailbox_list_free(self.mb_list);
|
||||||
|
}
|
||||||
|
mailimf_display_name_free(self.display_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
mailimf_mailbox_list is a list of mailboxes
|
mailimf_mailbox_list is a list of mailboxes
|
||||||
|
|
||||||
@@ -485,14 +491,14 @@ pub unsafe fn mailimf_address_free(address: *mut mailimf_address) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
pub unsafe fn mailimf_group_free(group: *mut mailimf_group) {
|
||||||
pub unsafe fn mailimf_group_free(mut group: *mut mailimf_group) {
|
if group.is_null() {
|
||||||
if !(*group).grp_mb_list.is_null() {
|
return;
|
||||||
mailimf_mailbox_list_free((*group).grp_mb_list);
|
|
||||||
}
|
}
|
||||||
mailimf_display_name_free((*group).grp_display_name);
|
|
||||||
free(group as *mut libc::c_void);
|
let group = &Box::from_raw(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe fn mailimf_display_name_free(mut display_name: *mut libc::c_char) {
|
pub unsafe fn mailimf_display_name_free(mut display_name: *mut libc::c_char) {
|
||||||
mailimf_phrase_free(display_name);
|
mailimf_phrase_free(display_name);
|
||||||
@@ -539,20 +545,19 @@ pub unsafe fn mailimf_mailbox_new(
|
|||||||
(*mb).mb_addr_spec = mb_addr_spec;
|
(*mb).mb_addr_spec = mb_addr_spec;
|
||||||
return mb;
|
return mb;
|
||||||
}
|
}
|
||||||
#[no_mangle]
|
|
||||||
pub unsafe fn mailimf_group_new(
|
pub fn mailimf_group_new(
|
||||||
mut grp_display_name: *mut libc::c_char,
|
display_name: *mut libc::c_char,
|
||||||
mut grp_mb_list: *mut mailimf_mailbox_list,
|
mb_list: *mut mailimf_mailbox_list,
|
||||||
) -> *mut mailimf_group {
|
) -> *mut mailimf_group {
|
||||||
let mut group: *mut mailimf_group = 0 as *mut mailimf_group;
|
let group = mailimf_group {
|
||||||
group = malloc(::std::mem::size_of::<mailimf_group>() as libc::size_t) as *mut mailimf_group;
|
display_name,
|
||||||
if group.is_null() {
|
mb_list,
|
||||||
return 0 as *mut mailimf_group;
|
};
|
||||||
}
|
|
||||||
(*group).grp_display_name = grp_display_name;
|
Box::into_raw(Box::new(group))
|
||||||
(*group).grp_mb_list = grp_mb_list;
|
|
||||||
return group;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe fn mailimf_mailbox_list_new(mut mb_list: *mut clist) -> *mut mailimf_mailbox_list {
|
pub unsafe fn mailimf_mailbox_list_new(mut mb_list: *mut clist) -> *mut mailimf_mailbox_list {
|
||||||
let mut mbl: *mut mailimf_mailbox_list = 0 as *mut mailimf_mailbox_list;
|
let mut mbl: *mut mailimf_mailbox_list = 0 as *mut mailimf_mailbox_list;
|
||||||
|
|||||||
@@ -1003,8 +1003,8 @@ unsafe fn mailimf_group_write_driver(
|
|||||||
do_write,
|
do_write,
|
||||||
data,
|
data,
|
||||||
col,
|
col,
|
||||||
(*group).grp_display_name,
|
(*group).display_name,
|
||||||
strlen((*group).grp_display_name),
|
strlen((*group).display_name),
|
||||||
);
|
);
|
||||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||||
return r;
|
return r;
|
||||||
@@ -1019,8 +1019,8 @@ unsafe fn mailimf_group_write_driver(
|
|||||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
if !(*group).grp_mb_list.is_null() {
|
if !(*group).mb_list.is_null() {
|
||||||
r = mailimf_mailbox_list_write_driver(do_write, data, col, (*group).grp_mb_list);
|
r = mailimf_mailbox_list_write_driver(do_write, data, col, (*group).mb_list);
|
||||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1258,8 +1258,8 @@ pub fn mailimf_get_recipients(imffields: *mut mailimf_fields) -> HashSet<String>
|
|||||||
mailimf_get_recipients_add_addr(&mut recipients, mailbox);
|
mailimf_get_recipients_add_addr(&mut recipients, mailbox);
|
||||||
}
|
}
|
||||||
mailimf_address::Group(group) => {
|
mailimf_address::Group(group) => {
|
||||||
if !group.is_null() && unsafe { !(*group).grp_mb_list.is_null() } {
|
if !group.is_null() && unsafe { !(*group).mb_list.is_null() } {
|
||||||
for cur3 in unsafe { &(*(*(*group).grp_mb_list).mb_list) } {
|
for cur3 in unsafe { &(*(*(*group).mb_list).mb_list) } {
|
||||||
mailimf_get_recipients_add_addr(
|
mailimf_get_recipients_add_addr(
|
||||||
&mut recipients,
|
&mut recipients,
|
||||||
cur3 as *mut mailimf_mailbox,
|
cur3 as *mut mailimf_mailbox,
|
||||||
|
|||||||
@@ -1877,10 +1877,10 @@ unsafe fn dc_add_or_lookup_contacts_by_address_list(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
mailimf_address::Group(group) => {
|
mailimf_address::Group(group) => {
|
||||||
if !group.is_null() && !(*group).grp_mb_list.is_null() {
|
if !group.is_null() && !(*group).mb_list.is_null() {
|
||||||
dc_add_or_lookup_contacts_by_mailbox_list(
|
dc_add_or_lookup_contacts_by_mailbox_list(
|
||||||
context,
|
context,
|
||||||
(*group).grp_mb_list,
|
(*group).mb_list,
|
||||||
origin,
|
origin,
|
||||||
ids,
|
ids,
|
||||||
check_self,
|
check_self,
|
||||||
|
|||||||
Reference in New Issue
Block a user