Make stock strings rusty

This converts the stock strings API to be more safe-rust style.  The
API is kept roughly the same for now but moved to methods on the
context.
This commit is contained in:
Floris Bruynooghe
2019-07-13 14:34:50 +02:00
committed by Floris Bruynooghe
parent 44b8629811
commit 4902310138
16 changed files with 711 additions and 592 deletions

View File

@@ -19,11 +19,11 @@ use crate::dc_move::*;
use crate::dc_msg::*;
use crate::dc_param::*;
use crate::dc_securejoin::*;
use crate::dc_stock::*;
use crate::dc_strencode::*;
use crate::dc_tools::*;
use crate::peerstate::*;
use crate::sql;
use crate::stock::StockMessage;
use crate::types::*;
use crate::x::*;
@@ -944,18 +944,13 @@ unsafe fn create_or_lookup_group(
let mut X_MrAddToGrp: *mut libc::c_char = 0 as *mut libc::c_char;
let mut X_MrGrpNameChanged: libc::c_int = 0;
let mut X_MrGrpImageChanged: *const libc::c_char = 0 as *const libc::c_char;
let mut better_msg: *mut libc::c_char = 0 as *mut libc::c_char;
let mut better_msg: String = From::from("");
let mut failure_reason: *mut libc::c_char = 0 as *mut libc::c_char;
if mime_parser.is_system_message == 8 {
better_msg = dc_stock_system_msg(
context,
64,
0 as *const libc::c_char,
0 as *const libc::c_char,
from_id as uint32_t,
)
if mime_parser.is_system_message == 8i32 {
better_msg =
context.stock_system_msg(StockMessage::MsgLocationEnabled, "", "", from_id as u32)
}
set_better_msg(mime_parser, &mut better_msg);
set_better_msg(mime_parser, &better_msg);
/* search the grpid in the header */
let mut field: *mut mailimf_field;
let mut optional_field: *mut mailimf_optional_field;
@@ -1034,12 +1029,15 @@ unsafe fn create_or_lookup_group(
let left_group: libc::c_int =
(dc_lookup_contact_id_by_addr(context, X_MrRemoveFromGrp)
== from_id as libc::c_uint) as libc::c_int;
better_msg = dc_stock_system_msg(
context,
if 0 != left_group { 19 } else { 18 },
X_MrRemoveFromGrp,
0 as *const libc::c_char,
from_id as uint32_t,
better_msg = context.stock_system_msg(
if 0 != left_group {
StockMessage::MsgGroupLeft
} else {
StockMessage::MsgDelMember
},
as_str(X_MrRemoveFromGrp),
"",
from_id as u32,
)
} else {
optional_field = dc_mimeparser_lookup_optional_field(
@@ -1056,12 +1054,11 @@ unsafe fn create_or_lookup_group(
if !optional_field.is_null() {
X_MrGrpImageChanged = (*optional_field).fld_value
}
better_msg = dc_stock_system_msg(
context,
17,
X_MrAddToGrp,
0 as *const libc::c_char,
from_id as uint32_t,
better_msg = context.stock_system_msg(
StockMessage::MsgAddMember,
as_str(X_MrAddToGrp),
"",
from_id as u32,
)
} else {
optional_field = dc_mimeparser_lookup_optional_field(
@@ -1069,14 +1066,13 @@ unsafe fn create_or_lookup_group(
b"Chat-Group-Name-Changed\x00" as *const u8 as *const libc::c_char,
);
if !optional_field.is_null() {
X_MrGrpNameChanged = 1;
mime_parser.is_system_message = 2;
better_msg = dc_stock_system_msg(
context,
15,
(*optional_field).fld_value,
grpname,
from_id as uint32_t,
X_MrGrpNameChanged = 1i32;
mime_parser.is_system_message = 2i32;
better_msg = context.stock_system_msg(
StockMessage::MsgGrpName,
as_str((*optional_field).fld_value),
as_str(grpname),
from_id as u32,
)
} else {
optional_field = dc_mimeparser_lookup_optional_field(
@@ -1086,26 +1082,25 @@ unsafe fn create_or_lookup_group(
if !optional_field.is_null() {
X_MrGrpImageChanged = (*optional_field).fld_value;
mime_parser.is_system_message = 3;
better_msg = dc_stock_system_msg(
context,
better_msg = context.stock_system_msg(
if strcmp(
X_MrGrpImageChanged,
b"0\x00" as *const u8 as *const libc::c_char,
) == 0
{
33
StockMessage::MsgGrpImgDeleted
} else {
16
StockMessage::MsgGrpImgChanged
},
0 as *const libc::c_char,
0 as *const libc::c_char,
from_id as uint32_t,
"",
"",
from_id as u32,
)
}
}
}
}
set_better_msg(mime_parser, &mut better_msg);
set_better_msg(mime_parser, &better_msg);
chat_id = dc_get_chat_id_by_grpid(
context,
grpid,
@@ -1345,8 +1340,6 @@ unsafe fn create_or_lookup_group(
}
free(grpid as *mut libc::c_void);
free(grpname as *mut libc::c_void);
free(better_msg as *mut libc::c_void);
free(failure_reason as *mut libc::c_void);
if !ret_chat_id.is_null() {
*ret_chat_id = chat_id
@@ -1432,11 +1425,10 @@ unsafe fn create_or_lookup_adhoc_group(
{
grpname = dc_strdup(mime_parser.subject)
} else {
grpname = dc_stock_str_repl_int(
context,
4,
grpname = to_cstring(context.stock_string_repl_int(
StockMessage::Member,
dc_array_get_cnt(member_ids) as libc::c_int,
)
));
}
chat_id =
create_group_record(context, grpid, grpname, create_blocked, 0);
@@ -1732,14 +1724,14 @@ unsafe fn check_verified_properties(
1
}
unsafe fn set_better_msg(mime_parser: &dc_mimeparser_t, better_msg: *mut *mut libc::c_char) {
if !(*better_msg).is_null() && carray_count((*mime_parser).parts) > 0 as libc::c_uint {
unsafe fn set_better_msg<T: AsRef<str>>(mime_parser: &dc_mimeparser_t, better_msg: T) {
let msg = better_msg.as_ref();
if !(msg.len() > 0) && carray_count((*mime_parser).parts) > 0 {
let mut part: *mut dc_mimepart_t =
carray_get(mime_parser.parts, 0 as libc::c_uint) as *mut dc_mimepart_t;
if (*part).type_0 == 10 {
free((*part).msg as *mut libc::c_void);
(*part).msg = *better_msg;
*better_msg = 0 as *mut libc::c_char
(*part).msg = to_cstring(msg);
}
};
}