mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
it compiles
This commit is contained in:
587
src/dc_msg.rs
587
src/dc_msg.rs
@@ -67,225 +67,224 @@ pub unsafe fn dc_get_msg_info(
|
||||
eos: 0 as *mut libc::c_char,
|
||||
};
|
||||
dc_strbuilder_init(&mut ret, 0i32);
|
||||
if !(context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint) {
|
||||
dc_msg_load_from_db(msg, context, msg_id);
|
||||
dc_contact_load_from_db(contact_from, (*context).sql, (*msg).from_id);
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
b"SELECT txt_raw FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
|
||||
dc_msg_load_from_db(msg, context, msg_id);
|
||||
dc_contact_load_from_db(
|
||||
contact_from,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
(*msg).from_id,
|
||||
);
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT txt_raw FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
|
||||
if sqlite3_step(stmt) != 100i32 {
|
||||
p = dc_mprintf(
|
||||
b"Cannot load message #%i.\x00" as *const u8 as *const libc::c_char,
|
||||
msg_id as libc::c_int,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
|
||||
if sqlite3_step(stmt) != 100i32 {
|
||||
p = dc_mprintf(
|
||||
b"Cannot load message #%i.\x00" as *const u8 as *const libc::c_char,
|
||||
msg_id as libc::c_int,
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
} else {
|
||||
rawtxt = dc_strdup(sqlite3_column_text(stmt, 0i32) as *mut libc::c_char);
|
||||
sqlite3_finalize(stmt);
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
dc_trim(rawtxt);
|
||||
dc_truncate_str(rawtxt, 100000i32);
|
||||
dc_strbuilder_cat(&mut ret, b"Sent: \x00" as *const u8 as *const libc::c_char);
|
||||
p = dc_timestamp_to_str(dc_msg_get_timestamp(msg));
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
p = dc_contact_get_name_n_addr(contact_from);
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b" by %s\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
if (*msg).from_id != 1i32 as libc::c_uint {
|
||||
dc_strbuilder_cat(
|
||||
&mut ret,
|
||||
b"Received: \x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
p = dc_timestamp_to_str(if 0 != (*msg).timestamp_rcvd {
|
||||
(*msg).timestamp_rcvd
|
||||
} else {
|
||||
(*msg).timestamp_sort
|
||||
});
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
} else {
|
||||
rawtxt = dc_strdup(sqlite3_column_text(stmt, 0i32) as *mut libc::c_char);
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
}
|
||||
if !((*msg).from_id == 2i32 as libc::c_uint || (*msg).to_id == 2i32 as libc::c_uint) {
|
||||
// device-internal message, no further details needed
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT contact_id, timestamp_sent FROM msgs_mdns WHERE msg_id=?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
|
||||
while sqlite3_step(stmt) == 100i32 {
|
||||
dc_strbuilder_cat(&mut ret, b"Read: \x00" as *const u8 as *const libc::c_char);
|
||||
p = dc_timestamp_to_str(sqlite3_column_int64(stmt, 1i32) as time_t);
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
dc_strbuilder_cat(&mut ret, b" by \x00" as *const u8 as *const libc::c_char);
|
||||
let mut contact: *mut dc_contact_t = dc_contact_new(context);
|
||||
dc_contact_load_from_db(
|
||||
contact,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
sqlite3_column_int64(stmt, 0i32) as uint32_t,
|
||||
);
|
||||
p = dc_contact_get_name_n_addr(contact);
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
dc_contact_unref(contact);
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
}
|
||||
sqlite3_finalize(stmt);
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
dc_trim(rawtxt);
|
||||
dc_truncate_str(rawtxt, 100000i32);
|
||||
dc_strbuilder_cat(&mut ret, b"Sent: \x00" as *const u8 as *const libc::c_char);
|
||||
p = dc_timestamp_to_str(dc_msg_get_timestamp(msg));
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
p = dc_contact_get_name_n_addr(contact_from);
|
||||
p = 0 as *mut libc::c_char;
|
||||
match (*msg).state {
|
||||
10 => p = dc_strdup(b"Fresh\x00" as *const u8 as *const libc::c_char),
|
||||
13 => p = dc_strdup(b"Noticed\x00" as *const u8 as *const libc::c_char),
|
||||
16 => p = dc_strdup(b"Seen\x00" as *const u8 as *const libc::c_char),
|
||||
26 => p = dc_strdup(b"Delivered\x00" as *const u8 as *const libc::c_char),
|
||||
24 => p = dc_strdup(b"Failed\x00" as *const u8 as *const libc::c_char),
|
||||
28 => p = dc_strdup(b"Read\x00" as *const u8 as *const libc::c_char),
|
||||
20 => p = dc_strdup(b"Pending\x00" as *const u8 as *const libc::c_char),
|
||||
18 => p = dc_strdup(b"Preparing\x00" as *const u8 as *const libc::c_char),
|
||||
_ => p = dc_mprintf(b"%i\x00" as *const u8 as *const libc::c_char, (*msg).state),
|
||||
}
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b" by %s\x00" as *const u8 as *const libc::c_char,
|
||||
b"State: %s\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
if (*msg).from_id != 1i32 as libc::c_uint {
|
||||
if 0 != dc_msg_has_location(msg) {
|
||||
dc_strbuilder_cat(
|
||||
&mut ret,
|
||||
b"Received: \x00" as *const u8 as *const libc::c_char,
|
||||
b", Location sent\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
p = dc_timestamp_to_str(if 0 != (*msg).timestamp_rcvd {
|
||||
(*msg).timestamp_rcvd
|
||||
} else {
|
||||
(*msg).timestamp_sort
|
||||
});
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
}
|
||||
if !((*msg).from_id == 2i32 as libc::c_uint || (*msg).to_id == 2i32 as libc::c_uint) {
|
||||
// device-internal message, no further details needed
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
b"SELECT contact_id, timestamp_sent FROM msgs_mdns WHERE msg_id=?;\x00"
|
||||
as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
|
||||
while sqlite3_step(stmt) == 100i32 {
|
||||
dc_strbuilder_cat(&mut ret, b"Read: \x00" as *const u8 as *const libc::c_char);
|
||||
p = dc_timestamp_to_str(sqlite3_column_int64(stmt, 1i32) as time_t);
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
dc_strbuilder_cat(&mut ret, b" by \x00" as *const u8 as *const libc::c_char);
|
||||
let mut contact: *mut dc_contact_t = dc_contact_new(context);
|
||||
dc_contact_load_from_db(
|
||||
contact,
|
||||
(*context).sql,
|
||||
sqlite3_column_int64(stmt, 0i32) as uint32_t,
|
||||
);
|
||||
p = dc_contact_get_name_n_addr(contact);
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
dc_contact_unref(contact);
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
p = 0 as *mut libc::c_char;
|
||||
e2ee_errors = 0;
|
||||
e2ee_errors = dc_param_get_int((*msg).param, 'e' as i32, 0i32);
|
||||
if 0 != e2ee_errors {
|
||||
if 0 != e2ee_errors & 0x2i32 {
|
||||
p = dc_strdup(
|
||||
b"Encrypted, no valid signature\x00" as *const u8 as *const libc::c_char,
|
||||
)
|
||||
}
|
||||
sqlite3_finalize(stmt);
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
} else if 0 != dc_param_get_int((*msg).param, 'c' as i32, 0i32) {
|
||||
p = dc_strdup(b"Encrypted\x00" as *const u8 as *const libc::c_char)
|
||||
}
|
||||
if !p.is_null() {
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b", %s\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
p = dc_param_get((*msg).param, 'L' as i32, 0 as *const libc::c_char);
|
||||
if !p.is_null() {
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"Error: %s\n\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
p = dc_msg_get_file(msg);
|
||||
if !p.is_null() && 0 != *p.offset(0isize) as libc::c_int {
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"\nFile: %s, %i bytes\n\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
dc_get_filebytes(context, p) as libc::c_int,
|
||||
);
|
||||
}
|
||||
free(p as *mut libc::c_void);
|
||||
if (*msg).type_0 != 10i32 {
|
||||
p = 0 as *mut libc::c_char;
|
||||
match (*msg).state {
|
||||
10 => p = dc_strdup(b"Fresh\x00" as *const u8 as *const libc::c_char),
|
||||
13 => p = dc_strdup(b"Noticed\x00" as *const u8 as *const libc::c_char),
|
||||
16 => p = dc_strdup(b"Seen\x00" as *const u8 as *const libc::c_char),
|
||||
26 => p = dc_strdup(b"Delivered\x00" as *const u8 as *const libc::c_char),
|
||||
24 => p = dc_strdup(b"Failed\x00" as *const u8 as *const libc::c_char),
|
||||
28 => p = dc_strdup(b"Read\x00" as *const u8 as *const libc::c_char),
|
||||
20 => p = dc_strdup(b"Pending\x00" as *const u8 as *const libc::c_char),
|
||||
18 => p = dc_strdup(b"Preparing\x00" as *const u8 as *const libc::c_char),
|
||||
match (*msg).type_0 {
|
||||
40 => p = dc_strdup(b"Audio\x00" as *const u8 as *const libc::c_char),
|
||||
60 => p = dc_strdup(b"File\x00" as *const u8 as *const libc::c_char),
|
||||
21 => p = dc_strdup(b"GIF\x00" as *const u8 as *const libc::c_char),
|
||||
20 => p = dc_strdup(b"Image\x00" as *const u8 as *const libc::c_char),
|
||||
50 => p = dc_strdup(b"Video\x00" as *const u8 as *const libc::c_char),
|
||||
41 => p = dc_strdup(b"Voice\x00" as *const u8 as *const libc::c_char),
|
||||
_ => {
|
||||
p = dc_mprintf(b"%i\x00" as *const u8 as *const libc::c_char, (*msg).state)
|
||||
p = dc_mprintf(b"%i\x00" as *const u8 as *const libc::c_char, (*msg).type_0)
|
||||
}
|
||||
}
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"State: %s\x00" as *const u8 as *const libc::c_char,
|
||||
b"Type: %s\n\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
if 0 != dc_msg_has_location(msg) {
|
||||
dc_strbuilder_cat(
|
||||
&mut ret,
|
||||
b", Location sent\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
}
|
||||
p = 0 as *mut libc::c_char;
|
||||
e2ee_errors = 0;
|
||||
e2ee_errors = dc_param_get_int((*msg).param, 'e' as i32, 0i32);
|
||||
if 0 != e2ee_errors {
|
||||
if 0 != e2ee_errors & 0x2i32 {
|
||||
p = dc_strdup(
|
||||
b"Encrypted, no valid signature\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
)
|
||||
}
|
||||
} else if 0 != dc_param_get_int((*msg).param, 'c' as i32, 0i32) {
|
||||
p = dc_strdup(b"Encrypted\x00" as *const u8 as *const libc::c_char)
|
||||
}
|
||||
if !p.is_null() {
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b", %s\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
p = dc_param_get((*msg).param, 'L' as i32, 0 as *const libc::c_char);
|
||||
if !p.is_null() {
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"Error: %s\n\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
p = dc_msg_get_file(msg);
|
||||
if !p.is_null() && 0 != *p.offset(0isize) as libc::c_int {
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"\nFile: %s, %i bytes\n\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
dc_get_filebytes(context, p) as libc::c_int,
|
||||
);
|
||||
}
|
||||
p = dc_msg_get_filemime(msg);
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"Mimetype: %s\n\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
if (*msg).type_0 != 10i32 {
|
||||
p = 0 as *mut libc::c_char;
|
||||
match (*msg).type_0 {
|
||||
40 => p = dc_strdup(b"Audio\x00" as *const u8 as *const libc::c_char),
|
||||
60 => p = dc_strdup(b"File\x00" as *const u8 as *const libc::c_char),
|
||||
21 => p = dc_strdup(b"GIF\x00" as *const u8 as *const libc::c_char),
|
||||
20 => p = dc_strdup(b"Image\x00" as *const u8 as *const libc::c_char),
|
||||
50 => p = dc_strdup(b"Video\x00" as *const u8 as *const libc::c_char),
|
||||
41 => p = dc_strdup(b"Voice\x00" as *const u8 as *const libc::c_char),
|
||||
_ => {
|
||||
p = dc_mprintf(
|
||||
b"%i\x00" as *const u8 as *const libc::c_char,
|
||||
(*msg).type_0,
|
||||
)
|
||||
}
|
||||
}
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"Type: %s\n\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
p = dc_msg_get_filemime(msg);
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"Mimetype: %s\n\x00" as *const u8 as *const libc::c_char,
|
||||
p,
|
||||
);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
w = dc_param_get_int((*msg).param, 'w' as i32, 0i32);
|
||||
h = dc_param_get_int((*msg).param, 'h' as i32, 0i32);
|
||||
if w != 0i32 || h != 0i32 {
|
||||
p = dc_mprintf(
|
||||
b"Dimension: %i x %i\n\x00" as *const u8 as *const libc::c_char,
|
||||
w,
|
||||
h,
|
||||
);
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
duration = dc_param_get_int((*msg).param, 'd' as i32, 0i32);
|
||||
if duration != 0i32 {
|
||||
p = dc_mprintf(
|
||||
b"Duration: %i ms\n\x00" as *const u8 as *const libc::c_char,
|
||||
duration,
|
||||
);
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
if !rawtxt.is_null() && 0 != *rawtxt.offset(0isize) as libc::c_int {
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
dc_strbuilder_cat(&mut ret, rawtxt);
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
}
|
||||
if !(*msg).rfc724_mid.is_null()
|
||||
&& 0 != *(*msg).rfc724_mid.offset(0isize) as libc::c_int
|
||||
{
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"\nMessage-ID: %s\x00" as *const u8 as *const libc::c_char,
|
||||
(*msg).rfc724_mid,
|
||||
);
|
||||
}
|
||||
if !(*msg).server_folder.is_null()
|
||||
&& 0 != *(*msg).server_folder.offset(0isize) as libc::c_int
|
||||
{
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"\nLast seen as: %s/%i\x00" as *const u8 as *const libc::c_char,
|
||||
(*msg).server_folder,
|
||||
(*msg).server_uid as libc::c_int,
|
||||
);
|
||||
}
|
||||
}
|
||||
w = dc_param_get_int((*msg).param, 'w' as i32, 0i32);
|
||||
h = dc_param_get_int((*msg).param, 'h' as i32, 0i32);
|
||||
if w != 0i32 || h != 0i32 {
|
||||
p = dc_mprintf(
|
||||
b"Dimension: %i x %i\n\x00" as *const u8 as *const libc::c_char,
|
||||
w,
|
||||
h,
|
||||
);
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
duration = dc_param_get_int((*msg).param, 'd' as i32, 0i32);
|
||||
if duration != 0i32 {
|
||||
p = dc_mprintf(
|
||||
b"Duration: %i ms\n\x00" as *const u8 as *const libc::c_char,
|
||||
duration,
|
||||
);
|
||||
dc_strbuilder_cat(&mut ret, p);
|
||||
free(p as *mut libc::c_void);
|
||||
}
|
||||
if !rawtxt.is_null() && 0 != *rawtxt.offset(0isize) as libc::c_int {
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
dc_strbuilder_cat(&mut ret, rawtxt);
|
||||
dc_strbuilder_cat(&mut ret, b"\n\x00" as *const u8 as *const libc::c_char);
|
||||
}
|
||||
if !(*msg).rfc724_mid.is_null() && 0 != *(*msg).rfc724_mid.offset(0isize) as libc::c_int
|
||||
{
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"\nMessage-ID: %s\x00" as *const u8 as *const libc::c_char,
|
||||
(*msg).rfc724_mid,
|
||||
);
|
||||
}
|
||||
if !(*msg).server_folder.is_null()
|
||||
&& 0 != *(*msg).server_folder.offset(0isize) as libc::c_int
|
||||
{
|
||||
dc_strbuilder_catf(
|
||||
&mut ret as *mut dc_strbuilder_t,
|
||||
b"\nLast seen as: %s/%i\x00" as *const u8 as *const libc::c_char,
|
||||
(*msg).server_folder,
|
||||
(*msg).server_uid as libc::c_int,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sqlite3_finalize(stmt);
|
||||
dc_msg_unref(msg);
|
||||
dc_contact_unref(contact_from);
|
||||
@@ -503,21 +502,19 @@ pub unsafe fn dc_msg_get_timestamp(mut msg: *const dc_msg_t) -> time_t {
|
||||
(*msg).timestamp_sort
|
||||
};
|
||||
}
|
||||
pub unsafe fn dc_msg_load_from_db(
|
||||
mut msg: *mut dc_msg_t,
|
||||
mut context: &dc_context_t,
|
||||
mut id: uint32_t,
|
||||
pub unsafe fn dc_msg_load_from_db<'a>(
|
||||
msg: *mut dc_msg_t<'a>,
|
||||
context: &'a dc_context_t,
|
||||
id: uint32_t,
|
||||
) -> libc::c_int {
|
||||
let mut success: libc::c_int = 0i32;
|
||||
let mut stmt: &sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(msg.is_null()
|
||||
|| (*msg).magic != 0x11561156i32 as libc::c_uint
|
||||
|| context.is_null()
|
||||
|| (*context).sql.is_null())
|
||||
{
|
||||
let mut stmt = 0 as *mut sqlite3_stmt;
|
||||
if !msg.is_null() {
|
||||
stmt =
|
||||
dc_sqlite3_prepare((*context).sql,
|
||||
b"SELECT m.id,rfc724_mid,m.mime_in_reply_to,m.server_folder,m.server_uid,m.move_state,m.chat_id, m.from_id,m.to_id,m.timestamp,m.timestamp_sent,m.timestamp_rcvd, m.type,m.state,m.msgrmsg,m.txt, m.param,m.starred,m.hidden,m.location_id, c.blocked FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id=?;\x00"
|
||||
dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT m.id,rfc724_mid,m.mime_in_reply_to,m.server_folder,m.server_uid,m.move_state,m.chat_id, m.from_id,m.to_id,m.timestamp,m.timestamp_sent,m.timestamp_rcvd, m.type,m.state,m.msgrmsg,m.txt, m.param,m.starred,m.hidden,m.location_id, c.blocked FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id=?;\x00"
|
||||
as *const u8 as *const libc::c_char);
|
||||
sqlite3_bind_int(stmt, 1i32, id as libc::c_int);
|
||||
if !(sqlite3_step(stmt) != 100i32) {
|
||||
@@ -612,18 +609,19 @@ pub unsafe fn dc_get_mime_headers(
|
||||
mut context: &dc_context_t,
|
||||
mut msg_id: uint32_t,
|
||||
) -> *mut libc::c_char {
|
||||
let mut eml: &libc::c_char = 0 as *mut libc::c_char;
|
||||
let mut eml = 0 as *mut libc::c_char;
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint) {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
b"SELECT mime_headers FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
|
||||
if sqlite3_step(stmt) == 100i32 {
|
||||
eml = dc_strdup_keep_null(sqlite3_column_text(stmt, 0i32) as *const libc::c_char)
|
||||
}
|
||||
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT mime_headers FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
|
||||
if sqlite3_step(stmt) == 100i32 {
|
||||
eml = dc_strdup_keep_null(sqlite3_column_text(stmt, 0i32) as *const libc::c_char)
|
||||
}
|
||||
|
||||
sqlite3_finalize(stmt);
|
||||
return eml;
|
||||
}
|
||||
@@ -632,11 +630,7 @@ pub unsafe fn dc_delete_msgs(
|
||||
mut msg_ids: *const uint32_t,
|
||||
mut msg_cnt: libc::c_int,
|
||||
) {
|
||||
if context.is_null()
|
||||
|| (*context).magic != 0x11a11807i32 as libc::c_uint
|
||||
|| msg_ids.is_null()
|
||||
|| msg_cnt <= 0i32
|
||||
{
|
||||
if msg_ids.is_null() || msg_cnt <= 0i32 {
|
||||
return;
|
||||
}
|
||||
let mut i: libc::c_int = 0i32;
|
||||
@@ -668,8 +662,9 @@ pub unsafe fn dc_update_msg_chat_id(
|
||||
mut msg_id: uint32_t,
|
||||
mut chat_id: uint32_t,
|
||||
) {
|
||||
let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
let stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"UPDATE msgs SET chat_id=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
|
||||
@@ -682,20 +677,14 @@ pub unsafe fn dc_markseen_msgs(
|
||||
mut msg_ids: *const uint32_t,
|
||||
mut msg_cnt: libc::c_int,
|
||||
) {
|
||||
let mut transaction_pending: libc::c_int = 0i32;
|
||||
let mut i: libc::c_int = 0i32;
|
||||
let mut send_event: libc::c_int = 0i32;
|
||||
let mut curr_state: libc::c_int = 0i32;
|
||||
let mut curr_blocked: libc::c_int = 0i32;
|
||||
let mut stmt: &sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(context.is_null()
|
||||
|| (*context).magic != 0x11a11807i32 as libc::c_uint
|
||||
|| msg_ids.is_null()
|
||||
|| msg_cnt <= 0i32)
|
||||
{
|
||||
transaction_pending = 1i32;
|
||||
let mut stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(msg_ids.is_null() || msg_cnt <= 0i32) {
|
||||
stmt =
|
||||
dc_sqlite3_prepare((*context).sql,
|
||||
dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT m.state, c.blocked FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id=? AND m.chat_id>9\x00"
|
||||
as *const u8 as *const libc::c_char);
|
||||
i = 0i32;
|
||||
@@ -730,7 +719,7 @@ pub unsafe fn dc_markseen_msgs(
|
||||
}
|
||||
i += 1
|
||||
}
|
||||
transaction_pending = 0i32;
|
||||
|
||||
if 0 != send_event {
|
||||
((*context).cb)(
|
||||
context,
|
||||
@@ -747,7 +736,8 @@ pub unsafe fn dc_update_msg_state(
|
||||
mut msg_id: uint32_t,
|
||||
mut state: libc::c_int,
|
||||
) {
|
||||
let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare(
|
||||
let mut stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.lock().unwrap(),
|
||||
b"UPDATE msgs SET state=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -762,16 +752,12 @@ pub unsafe fn dc_star_msgs(
|
||||
mut msg_cnt: libc::c_int,
|
||||
mut star: libc::c_int,
|
||||
) {
|
||||
if context.is_null()
|
||||
|| (*context).magic != 0x11a11807i32 as libc::c_uint
|
||||
|| msg_ids.is_null()
|
||||
|| msg_cnt <= 0i32
|
||||
|| star != 0i32 && star != 1i32
|
||||
{
|
||||
if msg_ids.is_null() || msg_cnt <= 0i32 || star != 0i32 && star != 1i32 {
|
||||
return;
|
||||
}
|
||||
let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
let mut stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"UPDATE msgs SET starred=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
let mut i: libc::c_int = 0i32;
|
||||
@@ -794,7 +780,7 @@ pub unsafe fn dc_get_msg<'a>(context: &'a dc_context_t, msg_id: uint32_t) -> *mu
|
||||
obj
|
||||
} else {
|
||||
dc_msg_unref(obj);
|
||||
0 as &dc_msg_t
|
||||
0 as *mut dc_msg_t
|
||||
}
|
||||
}
|
||||
|
||||
@@ -900,7 +886,7 @@ pub unsafe fn dc_msg_get_duration(mut msg: *const dc_msg_t) -> libc::c_int {
|
||||
return dc_param_get_int((*msg).param, 'd' as i32, 0i32);
|
||||
}
|
||||
pub unsafe fn dc_msg_get_showpadlock(mut msg: *const dc_msg_t) -> libc::c_int {
|
||||
if msg.is_null() || (*msg).magic != 0x11561156i32 as libc::c_uint || (*msg).context.is_null() {
|
||||
if msg.is_null() || (*msg).magic != 0x11561156i32 as libc::c_uint {
|
||||
return 0i32;
|
||||
}
|
||||
if dc_param_get_int((*msg).param, 'c' as i32, 0i32) != 0i32 {
|
||||
@@ -908,9 +894,9 @@ pub unsafe fn dc_msg_get_showpadlock(mut msg: *const dc_msg_t) -> libc::c_int {
|
||||
}
|
||||
return 0i32;
|
||||
}
|
||||
pub unsafe fn dc_msg_get_summary(
|
||||
mut msg: *const dc_msg_t,
|
||||
mut chat: *const dc_chat_t,
|
||||
pub unsafe fn dc_msg_get_summary<'a>(
|
||||
msg: *const dc_msg_t<'a>,
|
||||
mut chat: *const dc_chat_t<'a>,
|
||||
) -> *mut dc_lot_t {
|
||||
let mut current_block: u64;
|
||||
let mut ret: *mut dc_lot_t = dc_lot_new();
|
||||
@@ -968,7 +954,7 @@ pub unsafe fn dc_msg_get_summarytext_by_raw(
|
||||
mut context: &dc_context_t,
|
||||
) -> *mut libc::c_char {
|
||||
/* get a summary text, result must be free()'d, never returns NULL. */
|
||||
let mut ret: &libc::c_char = 0 as *mut libc::c_char;
|
||||
let mut ret = 0 as *mut libc::c_char;
|
||||
let mut prefix: *mut libc::c_char = 0 as *mut libc::c_char;
|
||||
let mut pathNfilename: *mut libc::c_char = 0 as *mut libc::c_char;
|
||||
let mut label: *mut libc::c_char = 0 as *mut libc::c_char;
|
||||
@@ -1075,7 +1061,7 @@ pub unsafe fn dc_msg_is_info(mut msg: *const dc_msg_t) -> libc::c_int {
|
||||
return 0i32;
|
||||
}
|
||||
pub unsafe fn dc_msg_is_increation(mut msg: *const dc_msg_t) -> libc::c_int {
|
||||
if msg.is_null() || (*msg).magic != 0x11561156i32 as libc::c_uint || (*msg).context.is_null() {
|
||||
if msg.is_null() || (*msg).magic != 0x11561156i32 as libc::c_uint {
|
||||
return 0i32;
|
||||
}
|
||||
return (((*msg).type_0 == 20i32
|
||||
@@ -1198,15 +1184,12 @@ pub unsafe fn dc_msg_latefiling_mediasize(
|
||||
};
|
||||
}
|
||||
pub unsafe fn dc_msg_save_param_to_disk(mut msg: *mut dc_msg_t) {
|
||||
if msg.is_null()
|
||||
|| (*msg).magic != 0x11561156i32 as libc::c_uint
|
||||
|| (*msg).context.is_null()
|
||||
|| (*(*msg).context).sql.is_null()
|
||||
{
|
||||
if msg.is_null() || (*msg).magic != 0x11561156i32 as libc::c_uint {
|
||||
return;
|
||||
}
|
||||
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
|
||||
(*(*msg).context).sql,
|
||||
(*msg).context,
|
||||
&mut (*msg).context.sql.clone().lock().unwrap(),
|
||||
b"UPDATE msgs SET param=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_text(stmt, 1i32, (*(*msg).param).packed, -1i32, None);
|
||||
@@ -1218,7 +1201,7 @@ pub unsafe fn dc_msg_new_load<'a>(
|
||||
context: &'a dc_context_t,
|
||||
msg_id: uint32_t,
|
||||
) -> *mut dc_msg_t<'a> {
|
||||
let mut msg: &dc_msg_t = dc_msg_new_untyped(context);
|
||||
let mut msg = dc_msg_new_untyped(context);
|
||||
dc_msg_load_from_db(msg, context, msg_id);
|
||||
msg
|
||||
}
|
||||
@@ -1228,15 +1211,17 @@ pub unsafe fn dc_delete_msg_from_db(context: &dc_context_t, mut msg_id: uint32_t
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(0 == dc_msg_load_from_db(msg, context, msg_id)) {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"DELETE FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, (*msg).id as libc::c_int);
|
||||
sqlite3_step(stmt);
|
||||
sqlite3_finalize(stmt);
|
||||
stmt = 0 as &sqlite3_stmt;
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"DELETE FROM msgs_mdns WHERE msg_id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, (*msg).id as libc::c_int);
|
||||
@@ -1255,12 +1240,10 @@ The value is also used for CC:-summaries */
|
||||
pub unsafe fn dc_msg_exists(mut context: &dc_context_t, mut msg_id: uint32_t) -> libc::c_int {
|
||||
let mut msg_exists: libc::c_int = 0i32;
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(context.is_null()
|
||||
|| (*context).magic != 0x11a11807i32 as libc::c_uint
|
||||
|| msg_id <= 9i32 as libc::c_uint)
|
||||
{
|
||||
if !msg_id <= 9i32 as libc::c_uint {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT chat_id FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
|
||||
@@ -1281,8 +1264,9 @@ pub unsafe fn dc_update_msg_move_state(
|
||||
) {
|
||||
// we update the move_state for all messages belonging to a given Message-ID
|
||||
// so that the state stay intact when parts are deleted
|
||||
let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
let mut stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"UPDATE msgs SET move_state=? WHERE rfc724_mid=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, state as libc::c_int);
|
||||
@@ -1295,7 +1279,7 @@ pub unsafe fn dc_set_msg_failed(
|
||||
mut msg_id: uint32_t,
|
||||
mut error: *const libc::c_char,
|
||||
) {
|
||||
let mut msg: &dc_msg_t = dc_msg_new_untyped(context);
|
||||
let mut msg = dc_msg_new_untyped(context);
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(0 == dc_msg_load_from_db(msg, context, msg_id)) {
|
||||
if 18i32 == (*msg).state || 20i32 == (*msg).state || 26i32 == (*msg).state {
|
||||
@@ -1311,7 +1295,8 @@ pub unsafe fn dc_set_msg_failed(
|
||||
);
|
||||
}
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"UPDATE msgs SET state=?, param=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, (*msg).state);
|
||||
@@ -1334,7 +1319,7 @@ pub unsafe fn dc_mdn_from_ext(
|
||||
mut from_id: uint32_t,
|
||||
mut rfc724_mid: *const libc::c_char,
|
||||
mut timestamp_sent: time_t,
|
||||
mut ret_chat_id: &uint32_t,
|
||||
mut ret_chat_id: *mut uint32_t,
|
||||
mut ret_msg_id: *mut uint32_t,
|
||||
) -> libc::c_int {
|
||||
let mut chat_type: libc::c_int = 0;
|
||||
@@ -1344,9 +1329,7 @@ pub unsafe fn dc_mdn_from_ext(
|
||||
let mut soll_cnt: libc::c_int = 0;
|
||||
let mut read_by_all: libc::c_int = 0i32;
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(context.is_null()
|
||||
|| (*context).magic != 0x11a11807i32 as libc::c_uint
|
||||
|| from_id <= 9i32 as libc::c_uint
|
||||
if !(from_id <= 9i32 as libc::c_uint
|
||||
|| rfc724_mid.is_null()
|
||||
|| ret_chat_id.is_null()
|
||||
|| ret_msg_id.is_null()
|
||||
@@ -1354,9 +1337,12 @@ pub unsafe fn dc_mdn_from_ext(
|
||||
|| *ret_msg_id != 0i32 as libc::c_uint)
|
||||
{
|
||||
stmt =
|
||||
dc_sqlite3_prepare((*context).sql,
|
||||
b"SELECT m.id, c.id, c.type, m.state FROM msgs m LEFT JOIN chats c ON m.chat_id=c.id WHERE rfc724_mid=? AND from_id=1 ORDER BY m.id;\x00"
|
||||
as *const u8 as *const libc::c_char);
|
||||
dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT m.id, c.id, c.type, m.state FROM msgs m LEFT JOIN chats c ON m.chat_id=c.id WHERE rfc724_mid=? AND from_id=1 ORDER BY m.id;\x00"
|
||||
as *const u8 as *const libc::c_char
|
||||
);
|
||||
sqlite3_bind_text(stmt, 1i32, rfc724_mid, -1i32, None);
|
||||
if !(sqlite3_step(stmt) != 100i32) {
|
||||
*ret_msg_id = sqlite3_column_int(stmt, 0i32) as uint32_t;
|
||||
@@ -1368,7 +1354,8 @@ pub unsafe fn dc_mdn_from_ext(
|
||||
if !(msg_state != 18i32 && msg_state != 20i32 && msg_state != 26i32) {
|
||||
/* eg. already marked as MDNS_RCVD. however, it is importent, that the message ID is set above as this will allow the caller eg. to move the message away */
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT contact_id FROM msgs_mdns WHERE msg_id=? AND contact_id=?;\x00"
|
||||
as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -1383,10 +1370,12 @@ pub unsafe fn dc_mdn_from_ext(
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
if 0 == mdn_already_in_table {
|
||||
stmt =
|
||||
dc_sqlite3_prepare((*context).sql,
|
||||
b"INSERT INTO msgs_mdns (msg_id, contact_id, timestamp_sent) VALUES (?, ?, ?);\x00"
|
||||
as *const u8 as
|
||||
*const libc::c_char);
|
||||
dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"INSERT INTO msgs_mdns (msg_id, contact_id, timestamp_sent) VALUES (?, ?, ?);\x00"
|
||||
as *const u8 as
|
||||
*const libc::c_char);
|
||||
sqlite3_bind_int(stmt, 1i32, *ret_msg_id as libc::c_int);
|
||||
sqlite3_bind_int(stmt, 2i32, from_id as libc::c_int);
|
||||
sqlite3_bind_int64(stmt, 3i32, timestamp_sent as sqlite3_int64);
|
||||
@@ -1401,7 +1390,8 @@ pub unsafe fn dc_mdn_from_ext(
|
||||
} else {
|
||||
/* send event about new state */
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT COUNT(*) FROM msgs_mdns WHERE msg_id=?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -1442,14 +1432,17 @@ pub unsafe fn dc_mdn_from_ext(
|
||||
pub unsafe fn dc_get_real_msg_cnt(mut context: &dc_context_t) -> size_t {
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
let mut ret: size_t = 0i32 as size_t;
|
||||
if !(*(*context).sql).cobj.is_null() {
|
||||
if !(*&mut context.sql.clone().lock().unwrap()).cobj.is_null() {
|
||||
stmt =
|
||||
dc_sqlite3_prepare((*context).sql,
|
||||
b"SELECT COUNT(*) FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id>9 AND m.chat_id>9 AND c.blocked=0;\x00"
|
||||
dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT COUNT(*) FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id>9 AND m.chat_id>9 AND c.blocked=0;\x00"
|
||||
as *const u8 as *const libc::c_char);
|
||||
if sqlite3_step(stmt) != 100i32 {
|
||||
dc_sqlite3_log_error(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"dc_get_real_msg_cnt() failed.\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
} else {
|
||||
@@ -1462,12 +1455,9 @@ pub unsafe fn dc_get_real_msg_cnt(mut context: &dc_context_t) -> size_t {
|
||||
pub unsafe fn dc_get_deaddrop_msg_cnt(mut context: &dc_context_t) -> size_t {
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
let mut ret: size_t = 0i32 as size_t;
|
||||
if !(context.is_null()
|
||||
|| (*context).magic != 0x11a11807i32 as libc::c_uint
|
||||
|| (*(*context).sql).cobj.is_null())
|
||||
{
|
||||
if !context.sql.clone().lock().unwrap().cobj.is_null() {
|
||||
stmt =
|
||||
dc_sqlite3_prepare((*context).sql,
|
||||
dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT COUNT(*) FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE c.blocked=2;\x00"
|
||||
as *const u8 as *const libc::c_char);
|
||||
if !(sqlite3_step(stmt) != 100i32) {
|
||||
@@ -1483,13 +1473,11 @@ pub unsafe fn dc_rfc724_mid_cnt(
|
||||
) -> libc::c_int {
|
||||
/* check the number of messages with the same rfc724_mid */
|
||||
let mut ret: libc::c_int = 0i32;
|
||||
let mut stmt: &sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(context.is_null()
|
||||
|| (*context).magic != 0x11a11807i32 as libc::c_uint
|
||||
|| (*(*context).sql).cobj.is_null())
|
||||
{
|
||||
let mut stmt = 0 as *mut sqlite3_stmt;
|
||||
if !context.sql.clone().lock().unwrap().cobj.is_null() {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT COUNT(*) FROM msgs WHERE rfc724_mid=?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -1505,16 +1493,14 @@ pub unsafe fn dc_rfc724_mid_exists(
|
||||
mut context: &dc_context_t,
|
||||
mut rfc724_mid: *const libc::c_char,
|
||||
mut ret_server_folder: *mut *mut libc::c_char,
|
||||
mut ret_server_uid: &uint32_t,
|
||||
mut ret_server_uid: *mut uint32_t,
|
||||
) -> uint32_t {
|
||||
let mut ret: uint32_t = 0i32 as uint32_t;
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(context.is_null()
|
||||
|| rfc724_mid.is_null()
|
||||
|| *rfc724_mid.offset(0isize) as libc::c_int == 0i32)
|
||||
{
|
||||
if !(rfc724_mid.is_null() || *rfc724_mid.offset(0isize) as libc::c_int == 0i32) {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"SELECT server_folder, server_uid, id FROM msgs WHERE rfc724_mid=?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -1545,8 +1531,9 @@ pub unsafe fn dc_update_server_uid(
|
||||
mut server_folder: *const libc::c_char,
|
||||
mut server_uid: uint32_t,
|
||||
) {
|
||||
let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare(
|
||||
(*context).sql,
|
||||
let mut stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
b"UPDATE msgs SET server_folder=?, server_uid=? WHERE rfc724_mid=?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user