mirror of
https://github.com/chatmail/core.git
synced 2026-05-20 23:36:30 +03:00
things compile
This commit is contained in:
@@ -3833,26 +3833,21 @@ pub unsafe fn mailimf_references_parse(
|
||||
} else {
|
||||
r = mailimf_unstrict_crlf_parse(message, length, &mut cur_token);
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
res = r
|
||||
} else {
|
||||
// references = mailimf_references_new(msg_id_list);
|
||||
panic!("implement me correctly");
|
||||
if references.is_null() {
|
||||
res = MAILIMF_ERROR_MEMORY as libc::c_int
|
||||
} else {
|
||||
*result = references;
|
||||
*indx = cur_token;
|
||||
return MAILIMF_NO_ERROR as libc::c_int;
|
||||
}
|
||||
}
|
||||
res = r;
|
||||
|
||||
for el in &msg_id_list {
|
||||
mailimf_msg_id_free(*el);
|
||||
for el in &msg_id_list {
|
||||
mailimf_msg_id_free(*el);
|
||||
}
|
||||
} else {
|
||||
references = mailimf_references_new(msg_id_list);
|
||||
*result = references;
|
||||
*indx = cur_token;
|
||||
return MAILIMF_NO_ERROR as libc::c_int;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
res
|
||||
}
|
||||
|
||||
pub unsafe fn mailimf_msg_id_list_parse(
|
||||
@@ -4233,15 +4228,9 @@ unsafe fn mailimf_in_reply_to_parse(
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
res = r
|
||||
} else {
|
||||
// in_reply_to = mailimf_in_reply_to_new(msg_id_list);
|
||||
panic!("implement me correctly");
|
||||
if in_reply_to.is_null() {
|
||||
res = MAILIMF_ERROR_MEMORY as libc::c_int
|
||||
} else {
|
||||
*result = in_reply_to;
|
||||
*indx = cur_token;
|
||||
return MAILIMF_NO_ERROR as libc::c_int;
|
||||
}
|
||||
*result = mailimf_in_reply_to_new(msg_id_list);
|
||||
*indx = cur_token;
|
||||
return MAILIMF_NO_ERROR as libc::c_int;
|
||||
}
|
||||
for el in &msg_id_list {
|
||||
mailimf_msg_id_free(*el);
|
||||
@@ -4883,18 +4872,16 @@ pub unsafe fn mailimf_envelope_fields_parse(
|
||||
current_block = 894413572976700158;
|
||||
break;
|
||||
}
|
||||
match current_block {
|
||||
2719512138335094285 => {
|
||||
*result = mailimf_fields_new(list);
|
||||
*indx = cur_token;
|
||||
return MAILIMF_NO_ERROR as libc::c_int;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if current_block == 2719512138335094285 {
|
||||
*result = mailimf_fields_new(list);
|
||||
*indx = cur_token;
|
||||
return MAILIMF_NO_ERROR as libc::c_int;
|
||||
}
|
||||
|
||||
res
|
||||
}
|
||||
|
||||
|
||||
@@ -165,6 +165,15 @@ pub enum mailimf_field {
|
||||
OptionalField(*mut mailimf_optional_field),
|
||||
}
|
||||
|
||||
impl mailimf_field {
|
||||
pub fn is_optional_field(&self) -> bool {
|
||||
match self {
|
||||
mailimf_field::OptionalField(_) => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for mailimf_field {
|
||||
fn drop(&mut self) {
|
||||
use mailimf_field::*;
|
||||
@@ -192,7 +201,6 @@ impl Drop for mailimf_field {
|
||||
Comments(c) => mailimf_comments_free(*c),
|
||||
Keywords(k) => mailimf_keywords_free(*k),
|
||||
OptionalField(o) => mailimf_optional_field_free(*o),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -241,26 +249,31 @@ pub struct mailimf_comments {
|
||||
pub struct mailimf_subject {
|
||||
pub sbj_value: *mut libc::c_char,
|
||||
}
|
||||
/*
|
||||
mailimf_references is the parsed References field
|
||||
|
||||
- msg_id_list is the list of message identifiers
|
||||
*/
|
||||
#[derive(Copy, Clone)]
|
||||
#[repr(C)]
|
||||
pub struct mailimf_references {
|
||||
pub mid_list: *mut clist,
|
||||
}
|
||||
/*
|
||||
mailimf_in_reply_to is the parsed In-Reply-To field
|
||||
/// List of parsed references.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct mailimf_references(pub Vec<*mut libc::c_char>);
|
||||
|
||||
- mid_list is the list of message identifers
|
||||
*/
|
||||
#[derive(Copy, Clone)]
|
||||
#[repr(C)]
|
||||
pub struct mailimf_in_reply_to {
|
||||
pub mid_list: *mut clist,
|
||||
impl Drop for mailimf_references {
|
||||
fn drop(&mut self) {
|
||||
for el in &self.0 {
|
||||
unsafe { mailimf_msg_id_free(*el) };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// The parsed In-Reply-To field.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct mailimf_in_reply_to(pub Vec<*mut libc::c_char>);
|
||||
|
||||
impl Drop for mailimf_in_reply_to {
|
||||
fn drop(&mut self) {
|
||||
for el in &self.0 {
|
||||
unsafe { mailimf_msg_id_free(*el) };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
mailimf_message_id is the parsed Message-ID field
|
||||
|
||||
@@ -649,34 +662,25 @@ pub unsafe fn mailimf_subject_free(mut subject: *mut mailimf_subject) {
|
||||
mailimf_unstructured_free((*subject).sbj_value);
|
||||
free(subject as *mut libc::c_void);
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn mailimf_references_free(mut references: *mut mailimf_references) {
|
||||
clist_foreach(
|
||||
(*references).mid_list,
|
||||
::std::mem::transmute::<Option<unsafe fn(_: *mut libc::c_char) -> ()>, clist_func>(Some(
|
||||
mailimf_msg_id_free,
|
||||
)),
|
||||
0 as *mut libc::c_void,
|
||||
);
|
||||
clist_free((*references).mid_list);
|
||||
free(references as *mut libc::c_void);
|
||||
|
||||
pub unsafe fn mailimf_references_free(references: *mut mailimf_references) {
|
||||
if references.is_null() {
|
||||
return;
|
||||
}
|
||||
let _ = Box::from_raw(references);
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn mailimf_msg_id_free(mut msg_id: *mut libc::c_char) {
|
||||
free(msg_id as *mut libc::c_void);
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn mailimf_in_reply_to_free(mut in_reply_to: *mut mailimf_in_reply_to) {
|
||||
clist_foreach(
|
||||
(*in_reply_to).mid_list,
|
||||
::std::mem::transmute::<Option<unsafe fn(_: *mut libc::c_char) -> ()>, clist_func>(Some(
|
||||
mailimf_msg_id_free,
|
||||
)),
|
||||
0 as *mut libc::c_void,
|
||||
);
|
||||
clist_free((*in_reply_to).mid_list);
|
||||
free(in_reply_to as *mut libc::c_void);
|
||||
|
||||
pub unsafe fn mailimf_in_reply_to_free(in_reply_to: *mut mailimf_in_reply_to) {
|
||||
if in_reply_to.is_null() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn mailimf_message_id_free(mut message_id: *mut mailimf_message_id) {
|
||||
if !(*message_id).mid_value.is_null() {
|
||||
@@ -839,29 +843,17 @@ pub unsafe fn mailimf_message_id_new(mut mid_value: *mut libc::c_char) -> *mut m
|
||||
(*message_id).mid_value = mid_value;
|
||||
return message_id;
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn mailimf_in_reply_to_new(mut mid_list: *mut clist) -> *mut mailimf_in_reply_to {
|
||||
let mut in_reply_to: *mut mailimf_in_reply_to = 0 as *mut mailimf_in_reply_to;
|
||||
in_reply_to = malloc(::std::mem::size_of::<mailimf_in_reply_to>() as libc::size_t)
|
||||
as *mut mailimf_in_reply_to;
|
||||
if in_reply_to.is_null() {
|
||||
return 0 as *mut mailimf_in_reply_to;
|
||||
}
|
||||
(*in_reply_to).mid_list = mid_list;
|
||||
return in_reply_to;
|
||||
|
||||
pub unsafe fn mailimf_in_reply_to_new(ids: Vec<*mut libc::c_char>) -> *mut mailimf_in_reply_to {
|
||||
let irt = mailimf_in_reply_to(ids);
|
||||
Box::into_raw(Box::new(irt))
|
||||
}
|
||||
/* != NULL */
|
||||
#[no_mangle]
|
||||
pub unsafe fn mailimf_references_new(mid_list: *mut clist) -> *mut mailimf_references {
|
||||
let mut ref_0: *mut mailimf_references = 0 as *mut mailimf_references;
|
||||
ref_0 = malloc(::std::mem::size_of::<mailimf_references>() as libc::size_t)
|
||||
as *mut mailimf_references;
|
||||
if ref_0.is_null() {
|
||||
return 0 as *mut mailimf_references;
|
||||
}
|
||||
(*ref_0).mid_list = mid_list;
|
||||
return ref_0;
|
||||
|
||||
pub unsafe fn mailimf_references_new(ids: Vec<*mut libc::c_char>) -> *mut mailimf_references {
|
||||
let list = mailimf_references(ids);
|
||||
Box::into_raw(Box::new(list))
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn mailimf_subject_new(mut sbj_value: *mut libc::c_char) -> *mut mailimf_subject {
|
||||
let mut subject: *mut mailimf_subject = 0 as *mut mailimf_subject;
|
||||
|
||||
@@ -588,7 +588,7 @@ unsafe fn mailimf_references_write_driver(
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
return r;
|
||||
}
|
||||
r = mailimf_msg_id_list_write_driver(do_write, data, col, (*references).mid_list);
|
||||
r = mailimf_msg_id_list_write_driver(do_write, data, col, &(*references).0);
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
return r;
|
||||
}
|
||||
@@ -605,28 +605,19 @@ unsafe fn mailimf_references_write_driver(
|
||||
return MAILIMF_NO_ERROR as libc::c_int;
|
||||
}
|
||||
unsafe fn mailimf_msg_id_list_write_driver(
|
||||
mut do_write: Option<
|
||||
do_write: Option<
|
||||
unsafe fn(_: *mut libc::c_void, _: *const libc::c_char, _: size_t) -> libc::c_int,
|
||||
>,
|
||||
mut data: *mut libc::c_void,
|
||||
mut col: *mut libc::c_int,
|
||||
mut mid_list: *mut clist,
|
||||
data: *mut libc::c_void,
|
||||
col: *mut libc::c_int,
|
||||
mid_list: &Vec<*mut libc::c_char>,
|
||||
) -> libc::c_int {
|
||||
let mut cur: *mut clistiter = 0 as *mut clistiter;
|
||||
let mut r: libc::c_int = 0;
|
||||
let mut first: libc::c_int = 0;
|
||||
first = 1i32;
|
||||
cur = (*mid_list).first;
|
||||
while !cur.is_null() {
|
||||
let mut msgid: *mut libc::c_char = 0 as *mut libc::c_char;
|
||||
let mut len: size_t = 0;
|
||||
msgid = (if !cur.is_null() {
|
||||
(*cur).data
|
||||
} else {
|
||||
0 as *mut libc::c_void
|
||||
}) as *mut libc::c_char;
|
||||
len = strlen(msgid);
|
||||
if 0 == first {
|
||||
let mut r = 0;
|
||||
let mut first = true;
|
||||
|
||||
for msgid in mid_list {
|
||||
let len = strlen(*msgid);
|
||||
if !first {
|
||||
if *col > 1i32 {
|
||||
if (*col as libc::size_t).wrapping_add(len) >= 72i32 as libc::size_t {
|
||||
r = mailimf_string_write_driver(
|
||||
@@ -639,11 +630,11 @@ unsafe fn mailimf_msg_id_list_write_driver(
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
return r;
|
||||
}
|
||||
first = 1i32
|
||||
first = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if 0 == first {
|
||||
if !first {
|
||||
r = mailimf_string_write_driver(
|
||||
do_write,
|
||||
data,
|
||||
@@ -655,7 +646,7 @@ unsafe fn mailimf_msg_id_list_write_driver(
|
||||
return r;
|
||||
}
|
||||
} else {
|
||||
first = 0i32
|
||||
first = false;
|
||||
}
|
||||
r = mailimf_string_write_driver(
|
||||
do_write,
|
||||
@@ -667,7 +658,7 @@ unsafe fn mailimf_msg_id_list_write_driver(
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
return r;
|
||||
}
|
||||
r = mailimf_string_write_driver(do_write, data, col, msgid, len);
|
||||
r = mailimf_string_write_driver(do_write, data, col, *msgid, len);
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
return r;
|
||||
}
|
||||
@@ -681,14 +672,11 @@ unsafe fn mailimf_msg_id_list_write_driver(
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
return r;
|
||||
}
|
||||
cur = if !cur.is_null() {
|
||||
(*cur).next
|
||||
} else {
|
||||
0 as *mut clistcell
|
||||
}
|
||||
}
|
||||
return MAILIMF_NO_ERROR as libc::c_int;
|
||||
|
||||
MAILIMF_NO_ERROR as libc::c_int
|
||||
}
|
||||
|
||||
unsafe fn mailimf_in_reply_to_write_driver(
|
||||
mut do_write: Option<
|
||||
unsafe fn(_: *mut libc::c_void, _: *const libc::c_char, _: size_t) -> libc::c_int,
|
||||
@@ -708,7 +696,7 @@ unsafe fn mailimf_in_reply_to_write_driver(
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
return r;
|
||||
}
|
||||
r = mailimf_msg_id_list_write_driver(do_write, data, col, (*in_reply_to).mid_list);
|
||||
r = mailimf_msg_id_list_write_driver(do_write, data, col, &(*in_reply_to).0);
|
||||
if r != MAILIMF_NO_ERROR as libc::c_int {
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -349,17 +349,17 @@ pub unsafe fn mailimf_address_list_add(
|
||||
other code will be returned otherwise
|
||||
*/
|
||||
pub unsafe fn mailimf_fields_new_with_data_all(
|
||||
mut date: *mut mailimf_date_time,
|
||||
mut from: *mut mailimf_mailbox_list,
|
||||
mut sender: *mut mailimf_mailbox,
|
||||
mut reply_to: *mut mailimf_address_list,
|
||||
mut to: *mut mailimf_address_list,
|
||||
mut cc: *mut mailimf_address_list,
|
||||
mut bcc: *mut mailimf_address_list,
|
||||
mut message_id: *mut libc::c_char,
|
||||
mut in_reply_to: *mut clist,
|
||||
mut references: *mut clist,
|
||||
mut subject: *mut libc::c_char,
|
||||
date: *mut mailimf_date_time,
|
||||
from: *mut mailimf_mailbox_list,
|
||||
sender: *mut mailimf_mailbox,
|
||||
reply_to: *mut mailimf_address_list,
|
||||
to: *mut mailimf_address_list,
|
||||
cc: *mut mailimf_address_list,
|
||||
bcc: *mut mailimf_address_list,
|
||||
message_id: *mut libc::c_char,
|
||||
in_reply_to: Vec<*mut libc::c_char>,
|
||||
references: Vec<*mut libc::c_char>,
|
||||
subject: *mut libc::c_char,
|
||||
) -> *mut mailimf_fields {
|
||||
let mut fields: *mut mailimf_fields = 0 as *mut mailimf_fields;
|
||||
let mut r: libc::c_int = 0;
|
||||
@@ -406,18 +406,18 @@ pub unsafe fn mailimf_fields_new_with_data_all(
|
||||
other code will be returned otherwise
|
||||
*/
|
||||
pub unsafe fn mailimf_fields_add_data(
|
||||
mut fields: *mut mailimf_fields,
|
||||
mut date: *mut mailimf_date_time,
|
||||
mut from: *mut mailimf_mailbox_list,
|
||||
mut sender: *mut mailimf_mailbox,
|
||||
mut reply_to: *mut mailimf_address_list,
|
||||
mut to: *mut mailimf_address_list,
|
||||
mut cc: *mut mailimf_address_list,
|
||||
mut bcc: *mut mailimf_address_list,
|
||||
mut msg_id: *mut libc::c_char,
|
||||
mut in_reply_to: *mut clist,
|
||||
mut references: *mut clist,
|
||||
mut subject: *mut libc::c_char,
|
||||
fields: *mut mailimf_fields,
|
||||
date: *mut mailimf_date_time,
|
||||
from: *mut mailimf_mailbox_list,
|
||||
sender: *mut mailimf_mailbox,
|
||||
reply_to: *mut mailimf_address_list,
|
||||
to: *mut mailimf_address_list,
|
||||
cc: *mut mailimf_address_list,
|
||||
bcc: *mut mailimf_address_list,
|
||||
msg_id: *mut libc::c_char,
|
||||
in_reply_to: Vec<*mut libc::c_char>,
|
||||
references: Vec<*mut libc::c_char>,
|
||||
subject: *mut libc::c_char,
|
||||
) -> libc::c_int {
|
||||
let mut current_block: u64;
|
||||
let mut imf_date: *mut mailimf_orig_date = 0 as *mut mailimf_orig_date;
|
||||
@@ -579,63 +579,35 @@ pub unsafe fn mailimf_fields_add_data(
|
||||
13813460800808168376 => {}
|
||||
16539016819803454162 => {}
|
||||
_ => {
|
||||
if !in_reply_to.is_null() {
|
||||
imf_in_reply_to =
|
||||
mailimf_in_reply_to_new(
|
||||
in_reply_to,
|
||||
);
|
||||
if imf_in_reply_to.is_null()
|
||||
{
|
||||
current_block
|
||||
=
|
||||
16539016819803454162;
|
||||
} else {
|
||||
let field
|
||||
=
|
||||
mailimf_field::InReplyTo(
|
||||
imf_in_reply_to,
|
||||
);
|
||||
mailimf_fields_add(
|
||||
fields, field,
|
||||
);
|
||||
current_block
|
||||
=
|
||||
15587532755333643506;
|
||||
}
|
||||
} else {
|
||||
current_block =
|
||||
15587532755333643506;
|
||||
}
|
||||
imf_in_reply_to =
|
||||
mailimf_in_reply_to_new(
|
||||
in_reply_to,
|
||||
);
|
||||
let field =
|
||||
mailimf_field::InReplyTo(
|
||||
imf_in_reply_to,
|
||||
);
|
||||
mailimf_fields_add(
|
||||
fields, field,
|
||||
);
|
||||
current_block =
|
||||
15587532755333643506;
|
||||
match current_block {
|
||||
13813460800808168376 => {}
|
||||
16539016819803454162 => {}
|
||||
_ => {
|
||||
if !references.is_null()
|
||||
{
|
||||
imf_references
|
||||
=
|
||||
mailimf_references_new(references);
|
||||
if imf_references
|
||||
.is_null()
|
||||
{
|
||||
current_block
|
||||
=
|
||||
16539016819803454162;
|
||||
} else {
|
||||
let field
|
||||
=
|
||||
mailimf_field::References(
|
||||
imf_references);
|
||||
mailimf_fields_add(fields, field);
|
||||
current_block
|
||||
=
|
||||
7301440000599063274;
|
||||
}
|
||||
} else {
|
||||
current_block
|
||||
=
|
||||
7301440000599063274;
|
||||
}
|
||||
imf_references
|
||||
=
|
||||
mailimf_references_new(references);
|
||||
let field
|
||||
=
|
||||
mailimf_field::References(
|
||||
imf_references);
|
||||
mailimf_fields_add(
|
||||
fields, field,
|
||||
);
|
||||
current_block =
|
||||
7301440000599063274;
|
||||
match current_block
|
||||
{
|
||||
13813460800808168376
|
||||
@@ -746,11 +718,9 @@ unsafe fn detach_free_fields(
|
||||
mailimf_reply_to_free(reply_to);
|
||||
}
|
||||
if !in_reply_to.is_null() {
|
||||
(*in_reply_to).mid_list = 0 as *mut clist;
|
||||
mailimf_in_reply_to_free(in_reply_to);
|
||||
}
|
||||
if !references.is_null() {
|
||||
(*references).mid_list = 0 as *mut clist;
|
||||
mailimf_references_free(references);
|
||||
}
|
||||
if !subject.is_null() {
|
||||
|
||||
Reference in New Issue
Block a user