diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 6abd069e1..2930ca3b3 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -57,7 +57,7 @@ use num_traits::FromPrimitive; */ #[no_mangle] pub unsafe extern "C" fn dc_reset_tables( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut bits: libc::c_int, ) -> libc::c_int { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { @@ -152,7 +152,7 @@ pub unsafe extern "C" fn dc_reset_tables( * database. With this cleanup, they are also removed, as well as all * auto-added contacts, unless they are used in a chat or for blocking purpose. */ -unsafe extern "C" fn dc_cleanup_contacts(mut context: *mut dc_context_t) -> libc::c_int { +unsafe extern "C" fn dc_cleanup_contacts(mut context: &dc_context_t) -> libc::c_int { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return 0i32; } @@ -167,7 +167,7 @@ unsafe extern "C" fn dc_cleanup_contacts(mut context: *mut dc_context_t) -> libc return 1i32; } unsafe extern "C" fn dc_poke_eml_file( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut filename: *const libc::c_char, ) -> libc::c_int { /* mainly for testing, may be called by dc_import_spec() */ @@ -198,7 +198,7 @@ unsafe extern "C" fn dc_poke_eml_file( return success; } unsafe extern "C" fn poke_public_key( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut addr: *const libc::c_char, mut public_key_file: *const libc::c_char, ) -> libc::c_int { @@ -245,7 +245,7 @@ unsafe extern "C" fn poke_public_key( * @return 1=success, 0=error. */ unsafe extern "C" fn poke_spec( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut spec: *const libc::c_char, ) -> libc::c_int { let mut current_block: u64; @@ -403,7 +403,7 @@ unsafe extern "C" fn poke_spec( return success; } unsafe extern "C" fn log_msg( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut prefix: *const libc::c_char, mut msg: *mut dc_msg_t, ) { @@ -466,7 +466,7 @@ unsafe extern "C" fn log_msg( free(contact_name as *mut libc::c_void); dc_contact_unref(contact); } -unsafe extern "C" fn log_msglist(mut context: *mut dc_context_t, mut msglist: *mut dc_array_t) { +unsafe extern "C" fn log_msglist(mut context: &dc_context_t, mut msglist: *mut dc_array_t) { let mut i: libc::c_int = 0; let mut cnt: libc::c_int = dc_array_get_cnt(msglist) as libc::c_int; let mut lines_out: libc::c_int = 0i32; @@ -500,10 +500,7 @@ unsafe extern "C" fn log_msglist(mut context: *mut dc_context_t, mut msglist: *m ); }; } -unsafe extern "C" fn log_contactlist( - mut context: *mut dc_context_t, - mut contacts: *mut dc_array_t, -) { +unsafe extern "C" fn log_contactlist(mut context: &dc_context_t, mut contacts: *mut dc_array_t) { let mut contact: *mut dc_contact_t = 0 as *mut dc_contact_t; let mut peerstate: *mut dc_apeerstate_t = dc_apeerstate_new(context); if 0 == dc_array_search_id(contacts, 1i32 as uint32_t, 0 as *mut size_t) { @@ -604,7 +601,7 @@ pub unsafe extern "C" fn dc_cmdline( mut context: *mut dc_context_t, cmdline: &str, ) -> *mut libc::c_char { - let mut cmd: *mut libc::c_char = 0 as *mut libc::c_char; + let mut cmd: &libc::c_char = 0 as *mut libc::c_char; let mut arg1: *mut libc::c_char = 0 as *mut libc::c_char; let mut ret: *mut libc::c_char = 1i32 as *mut libc::c_char; let mut sel_chat: *mut dc_chat_t = 0 as *mut dc_chat_t; diff --git a/examples/repl/main.rs b/examples/repl/main.rs index 9dda5a618..a364da63b 100644 --- a/examples/repl/main.rs +++ b/examples/repl/main.rs @@ -81,7 +81,7 @@ use self::stress::*; static mut s_do_log_info: libc::c_int = 1i32; unsafe extern "C" fn receive_event( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut event: Event, mut data1: uintptr_t, mut data2: uintptr_t, @@ -276,7 +276,7 @@ static mut run_threads: libc::c_int = 0i32; unsafe extern "C" fn inbox_thread_entry_point( mut entry_arg: *mut libc::c_void, ) -> *mut libc::c_void { - let mut context: *mut dc_context_t = entry_arg as *mut dc_context_t; + let mut context: &dc_context_t = entry_arg as *mut dc_context_t; while 0 != run_threads { dc_perform_imap_jobs(context); dc_perform_imap_fetch(context); @@ -290,7 +290,7 @@ static mut mvbox_thread: pthread_t = 0 as pthread_t; unsafe extern "C" fn mvbox_thread_entry_point( mut entry_arg: *mut libc::c_void, ) -> *mut libc::c_void { - let mut context: *mut dc_context_t = entry_arg as *mut dc_context_t; + let mut context: &dc_context_t = entry_arg as *mut dc_context_t; while 0 != run_threads { dc_perform_mvbox_fetch(context); if 0 != run_threads { @@ -303,7 +303,7 @@ static mut sentbox_thread: pthread_t = 0 as pthread_t; unsafe extern "C" fn sentbox_thread_entry_point( mut entry_arg: *mut libc::c_void, ) -> *mut libc::c_void { - let mut context: *mut dc_context_t = entry_arg as *mut dc_context_t; + let mut context: &dc_context_t = entry_arg as *mut dc_context_t; while 0 != run_threads { dc_perform_sentbox_fetch(context); if 0 != run_threads { @@ -316,7 +316,7 @@ static mut smtp_thread: pthread_t = 0 as pthread_t; unsafe extern "C" fn smtp_thread_entry_point( mut entry_arg: *mut libc::c_void, ) -> *mut libc::c_void { - let mut context: *mut dc_context_t = entry_arg as *mut dc_context_t; + let mut context: &dc_context_t = entry_arg as *mut dc_context_t; while 0 != run_threads { dc_perform_smtp_jobs(context); if 0 != run_threads { @@ -325,7 +325,7 @@ unsafe extern "C" fn smtp_thread_entry_point( } return 0 as *mut libc::c_void; } -unsafe extern "C" fn start_threads(mut context: *mut dc_context_t) { +unsafe extern "C" fn start_threads(mut context: &dc_context_t) { run_threads = 1i32; if inbox_thread == 0 { pthread_create( @@ -360,7 +360,7 @@ unsafe extern "C" fn start_threads(mut context: *mut dc_context_t) { ); }; } -unsafe extern "C" fn stop_threads(mut context: *mut dc_context_t) { +unsafe extern "C" fn stop_threads(mut context: &dc_context_t) { run_threads = 0i32; dc_interrupt_imap_idle(context); dc_interrupt_mvbox_idle(context); @@ -390,7 +390,7 @@ fn read_cmd() -> String { #[cfg(not(target_os = "android"))] unsafe fn main_0(mut argc: libc::c_int, mut argv: *mut *mut libc::c_char) -> libc::c_int { let mut cmd: *mut libc::c_char = 0 as *mut libc::c_char; - let mut context: *mut dc_context_t = dc_context_new( + let mut context: &dc_context_t = dc_context_new( receive_event, 0 as *mut libc::c_void, b"CLI\x00" as *const u8 as *const libc::c_char, @@ -534,7 +534,7 @@ unsafe fn main_0(mut argc: libc::c_int, mut argv: *mut *mut libc::c_char) -> lib stop_threads(context); dc_close(context); dc_context_unref(context); - context = 0 as *mut dc_context_t; + context = 0 as &dc_context_t; return 0i32; } diff --git a/examples/repl/stress.rs b/examples/repl/stress.rs index 11140e3ab..676626012 100644 --- a/examples/repl/stress.rs +++ b/examples/repl/stress.rs @@ -56,7 +56,7 @@ static mut s_em_setupfile: *const libc::c_char = b"-----BEGIN PGP MESSAGE-----\nPassphrase-Format: numeric9x4\nPassphrase-Begin: 17\n\nwy4ECQMI0jNRBQfVKHVg1+a2Yihd6JAjR9H0kk3oDVeX7nc4Oi+IjEtonUJt\nPQpO0tPWASWYuYvjZSuTz9r1yZYV+y4mu9bu9NEQoRlWg2wnbjoUoKk4emFF\nFweUj84iI6VWTCSRyMu5d5JS1RfOdX4CG/muLAegyIHezqYOEC0Z3b9Ci9rd\nDiSgqqN+/LDkUR/vr7L2CSLN5suBP9Hsz75AtaV8DJ2DYDywYX89yH1CfL1O\nWohyrJPdmGJZfdvQX0LI9mzN7MH0W6vUJeCaUpujc+UkLiOM6TDB74rmYF+V\nZ7K9BXbaN4V6dyxVZfgpXUoZlaNpvqPJXuLHJ68umkuIgIyQvzmMj3mFgZ8s\nakCt6Cf3o5O9n2PJvX89vuNnDGJrO5booEqGaBJfwUk0Rwb0gWsm5U0gceUz\ndce8KZK15CzX+bNv5OC+8jjjBw7mBHVt+2q8LI+G9fEy9NIREkp5/v2ZRN0G\nR6lpZwW+8TkMvJnriQeABqDpxsJVT6ENYAhkPG3AZCr/whGBU3EbDzPexXkz\nqt8Pdu5DrazLSFtjpjkekrjCh43vHjGl8IOiWxKQx0VfBkHJ7O9CsHmb0r1o\nF++fMh0bH1/aewmlg5wd0ixwZoP1o79he8Q4kfATZAjvB1xSLyMma+jxW5uu\nU3wYUOsUmYmzo46/QzizFCUpaTJ4ZQZY1/4sflidsl/XgZ0fD1NCrdkWBNA1\n0tQF949pEAeA4hSfHfQDNKAY8A7fk8lZblqWPkyu/0x8eV537QOhs89ZvhSB\nV87KEAwxWt60+Eolf8PvvkvB/AKlfWq4MYShgyldwwCfkED3rv2mvTsdqfvW\nWvqZNo4eRkJrnv9Be3LaXoFyY6a3z+ObBIkKI+u5azGJYge97O4E2DrUEKdQ\ncScq5upzXity0E+Yhm964jzBzxnA52S4RoXzkjTxH+AHjQ5+MHQxmRfMd2ly\n7skM106weVOR0JgOdkvfiOFDTHZLIVCzVyYVlOUJYYwPhmM1426zbegHNkaM\nM2WgvjMp5G+X9qfDWKecntQJTziyDFZKfd1UrUCPHrvl1Ac9cuqgcCXLtdUS\njI+e1Y9fXvgyvHiMX0ztSz1yfvnRt34508G9j68fEQFQR/VIepULB5/SqKbq\np2flgJL48kY32hEw2GRPri64Tv3vMPIWa//zvQDhQPmcd3S4TqnTIIKUoTAO\nNUo6GS9UAX12fdSFPZINcAkNIaB69+iwGyuJE4FLHKVkqNnNmDwF3fl0Oczo\nhbboWzA3GlpR2Ri6kfe0SocfGR0CHT5ZmqI6es8hWx+RN8hpXcsRxGS0BMi2\nmcJ7fPY+bKastnEeatP+b0XN/eaJAPZPZSF8PuPeQ0Uc735fylPrrgtWK9Gp\nWq0DPaWV/+O94OB/JvWT5wq7d/EEVbTck5FPl4gdv3HHpaaQ6/8G89wVMEXA\nGUxB8WuvNeHAtQ7qXF7TkaZvUpF0rb1aV88uABOOPpsfAyWJo/PExCZacg8R\nGOQYI6inV5HcGUw06yDSqArHZmONveqjbDBApenearcskv6Uz7q+Bp60GGSA\nlvU3C3RyP/OUc1azOp72MIe0+JvP8S5DN9/Ltc/5ZyZHOjLoG+npIXnThYwV\n0kkrlsi/7loCzvhcWOac1vrSaGVCfifkYf+LUFQFrFVbxKLOQ6vTsYZWM0yM\nQsMMywW5A6CdROT5UB0UKRh/S1cwCwrN5UFTRt2UpDF3wSBAcChsHyy90RAL\nXd4+ZIyf29GIFuwwQyzGBWnXQ2ytU4kg/D5XSqJbJJTya386UuyQpnFjI19R\nuuD0mvEfFvojCKDJDWguUNtWsHSg01NXDSrY26BhlOkMpUrzPfX5r0FQpgDS\nzOdY9SIG+y9MKG+4nwmYnFM6V5NxVL+6XZ7BQTvlLIcIIu+BujVNWteDnWNZ\nT1UukCGmFd8sNZpCc3wu4o/gLDQxih/545tWMf0dmeUfYhKcjSX9uucMRZHT\n1N0FINw04fDdp2LccL+WCGatFGnkZVPw3asid4d1od9RG9DbNRBJEp/QeNhc\n/peJCPLGYlA1NjTEq+MVB+DHdGNOuy//be3KhedBr6x4VVaDzL6jyHu/a7PR\nBWRVtI1CIVDxyrEXucHdGQoEm7p+0G2zouOe/oxbPFoEYrjaI+0e/FN3u/Y3\naG0dlYWbxeHMqTh2F3lB/CFALReeGqqN6PwRyePWKaVctZYb6ydf9JVl6q1/\naV9C5rf9eFGqqA+OIx/+XuAG1w0rwlznvtajHzCoUeA4QfbmuOV/t5drWN2N\nPCk2mJlcSmd7lx53rnOIgme1hggchjezc4TisL4PvSLxjJ7DxzktD2jv2I/Q\nOlSxTUaXnGfIVedsI0WjFomz5w9tZjC0B5O5TpSRRz6gfpe/OC3kV7qs1YCS\nlJTTxj1mTs6wqt0WjKkN/Ke0Cm5r7NQ79szDNlcC0AViEOQb3U1R88nNdiVx\nymKT5Dl+yM6acv53lNX6O5BH+mpP2/pCpi3x+kYFyr4cUsNgVVGlhmkPWctZ\ntrHvO7wcLrAsrLNqRxt1G3DLjQt9VY+w5qOPJv6s9qd5JBL/qtH5zqIXiXlM\nIWI9LLwHFFXqjk/f6G4LyOeHB9AqccGQ4IztgzTKmYEmFWVIpTO4UN6+E7yQ\ngtcYSIUEJo824ht5rL+ODqmCSAWsWIomEoTPvgn9QqO0YRwAEMpsFtE17klS\nqjbYyV7Y5A0jpCvqbnGmZPqCgzjjN/p5VKSNjSdM0vdwBRgpXlyooXg/EGoJ\nZTZH8nLSuYMMu7AK8c7DKJ1AocTNYHRe9xFV8RzEiIm3zaezxa0r+Fo3nuTX\nUR9DOH0EHaDLrFQcfS5y1iRxY9CHg0N2ECaUzr/H7jck9mLZ7v9xisj3QDuv\ni0xQbC4BTxMEBGTK8fOcjHHOABOyhqotOreERqwOV2c1OOGUQE8QK18zJCUd\nBTmQZ709ttASD7VWK4TraOGczZXkZsKdZko5T6+6EkFy9H+gwENLUG9zk0x9\n2G5zicDr6PDoAGDuoB3B3VA8ertXTX7zEz30N6m+tcAtPWka0owokLy3f0o7\nZdytBPkly8foTMWKF2vsJ8K4Xdn/57jJ2qFku32xmtiPIoa6s8wINO06AVB0\n0/AuttvxcPr+ycE+9wRZHx6JBujAqOZztU3zu8WZMaqVKb7gnmkWPiL+1XFp\n2+mr0AghScIvjzTDEjigDtLydURJrW01wXjaR0ByBT4z8ZjaNmQAxIPOIRFC\nbD0mviaoX61qgQLmSc6mzVlzzNZRCKtSvvGEK5NJ6CB6g2EeFau8+w0Zd+vv\n/iv6Img3pUBgvpMaIsxRXvGZwmo2R0tztJt+CqHRvyTWjQL+CjIAWyoHEdVH\nk7ne/q9zo3iIMsQUO7tVYtgURpRYc2OM1IVQtrgbmbYGEdOrhMjaWULg9C7o\n6oDM0EFlCAId3P8ykXQNMluFKlf9il5nr19B/qf/wh6C7DFLOmnjTWDXrEiP\n6wFEWTeUWLchGlbpiJFEu05MWPIRoRd3BHQvVpzLLgeBdxMVW7D6WCK+KJxI\nW1rOKhhLVvKU3BrFgr12A4uQm+6w1j33Feh68Y0JB7GLDBBGe11QtLCD6kz5\nRzFl+GbgiwpHi3nlCc5yiNwyPq/JRxU3GRb62YJcsSQBg+CD3Mk5FGiDcuvp\nkZXOcTE2FAnUDigjEs+oH2qkhD4/5CiHkrfFJTzv+wqw+jwxPor2jkZH2akN\n6PssXQYupXJE3NmcyaYT+b5E6qbkIyQj7CknkiqmrqrmxkOQxA+Ab2Vy9zrW\nu0+Wvf+C+SebWTo3qfJZQ3KcASZHa5AGoSHetWzH2fNLIHfULXac/T++1DWE\nnbeNvhXiFmAJ+BRsZj9p6RcnSamk4bjAbX1lg2G3Sq6MiA1fIRSMlSjuDLrQ\n8xfVFrg7gfBIIQPErJWv2GdAsz76sLxuSXQLKYpFnozvMT7xRs84+iRNWWh9\nSNibbEjlh0DcJlKw49Eis/bN22sDQWy4awHuRvvQetk/QCgp54epuqWnbxoE\nXZDgGBBkMc3or+6Cxr3q9x7J/oHLvPb+Q5yVP9fyz6ZiSVWluMefA9smjJ/A\nKMD84s7uO/8/4yug+swXGrcBjHSddTcy05vm+7X6o9IEZKZb5tz7VqAfEcuk\nQNPUWCMudhzxSNr4+yVXRVpcjsjKtplJcXC5aIuJwq3C5OdysCGqXWjLuUu1\nOFSoPvTsYC2VxYdFUcczeHEFTxXoXz3I0TyLPyxUNsJiKpUGt/SXmV/IyAx+\nh6pZ2OUXspC9d78DdiHZtItPjEGiIb678ZyMxWPE59XQd/ad92mlPHU8InXD\nyTq6otZ7LwAOLGbDR9bqN7oX8PCHRwuu30hk2b4+WkZn/WLd2KCPddQswZJg\nQgi5ajUaFhZvxF5YNTqIzzYVh7Y8fFMfzH9AO+SJqy+0ECX0GwtHHeVsXYNb\nP/NO/ma4MI8301JyipPmdtzvvt9NOD/PJcnZH2KmDquARXMO/vKbn3rNUXog\npTFqqyNTr4L5FK86QPEoE4hDy9ItHGlEuiNVD+5suGVGUgYfV7AvZU46EeqO\nrfFj8wNSX1aK/pIwWmh1EkygPSxomWRUANLX1jO6zX9wk2X80Xn9q/8jot1k\nVl54OOd7cvGls2wKkEZi5h3p6KKZHJ+WIDBQupeJbuma1GK8wAiwjDH59Y0X\nwXHAk7XA+t4u0dgRpZbUUMqQmvEvfJaCr4qMlpuGdEYbbpIMUB1qCfYU9taL\nzbepMIT+XYD5mTyytZhR+zrsfpt1EzbrhuabqPioySoIS/1+bWfxvndq16r0\nAdNxR5LiVSVh8QJr3B/HJhVghgSVrrynniG3E94abNWL/GNxPS/dTHSf8ass\nvbv7+uznADzHsMiG/ZlLAEkQJ9j0ENJvHmnayeVFIXDV6jPCcQJ+rURDgl7z\n/qTLfe3o3zBMG78LcB+xDNXTQrK5Z0LX7h17hLSElpiUghFa9nviCsT0nkcr\nnz302P4IOFwJuYMMCEfW+ywTn+CHpKjLHWkZSZ4q6LzNTbbgXZn/vh7njNf0\nQHaHmaMNxnDhUw/Bl13uM52qtsfEYK07SEhLFlJbAk0G7q+OabK8dJxCRwS3\nX9k4juzLUYhX8XBovg9G3YEVckb6iM8/LF/yvNXbUsPrdhYU9lPA63xD0Pgb\nzthZCLIlnF+lS6e41WJv3n1dc4dFWD7F5tmt/7uwLC6oUGYsccSzY+bUkYhL\ndp7tlQRd5AG/Xz8XilORk8cUjvi6uZss5LyQpKvGSU+77C8ZV/oS62BdS5TE\nosBTrO2/9FGzQtHT+8DJSTPPgR6rcQUWLPemiG09ACKfRQ/g3b9Qj0upOcKL\n6dti0lq7Aorc39vV18DPMFBOwzchUEBlBFyuSa4AoD30tsoilAC3qbzBwu3z\nQLjmst76HEcWDkxgDAhlBz6/XgiVZsCivn7ygigmc2+hNEzIdDsKKfM9bkoe\n3uJzmmsv8Bh5ZEtfGoGNmu/zA7tgvTOCBeotYeHr2O6pLmYb3hK+E/qCBl14\n8pK4qYrjAlF+ZMq9BzXcaz5mRfKVfAQtghHOaNqopBczSE1bjFF6HaNhIaGa\nN8YdabNQG7mLI/fgBxJfkPl6HdIhEpctp4RURbSFhW+wn0o85VyHM6a+6Vgj\nNrYmhxPZ6N1KN0Qy76aNiw7nAToRRcOv87uZnkDIeVH8mP/0hldyiy/Y97cG\nQgOeQHOG27QW57nHhqLRqvf0zzQZekuXWFbqajpaabEcdGXyiUpJ8/ZopBPM\nAJwfkyA2LkV946IA4JV6sPnu9pYzpXQ4vdQKJ6DoDUyRTQmgmfSFGtfHAozY\nV9k0iQeetSkYYtOagTrg3t92v7M00o/NJW/rKX4jj2djD8wtBovOcv4kxg4Z\no58Iv94ROim48XfyesvSYKN1xqqbXH4sfE6b4b9pLUxQVOmWANLK9MK8D+Ci\nIvrGbz5U5bZP6vlNbe9bYzjvWTPjaMrjXknRTBcikavqOfDTSIVFtT4qvhvK\n42PpOrm0qdiLwExGKQ9FfEfYZRgEcYRGg7rH3oNz6ZNOEXppF3tCl9yVOlFb\nygdIeT3Z3HeOQbAsi8jK7o16DSXL7ZOpFq9Bv9yzusrF7Eht/fSEpAVUO3D1\nIuqjZcsQRhMtIvnF0oFujFtooJx9x3dj/RarvEGX/NzwATZkgJ+yWs2etruA\nEzMQqED4j7Lb790zEWnt+nuHdCdlPnNy8RG5u5X62p3h5KqUbg9HfmIuuESi\nhwr6dKsVQGc5XUB5KTt0dtjWlK5iaetDsZFuF5+aE0Xa6PmiQ2e7ZPFyxXmO\nT/PSHzobx0qClKCu+tSWA1HDSL08IeoGZEyyhoaxyn5D9r1Mqg101v/iu59r\nlRRs+plAhbuq5aQA3WKtF1N6Zb5+AVRpNUyrxyHoH36ddR4/n7lnIld3STGD\nRqZLrOuKHS3dCNW2Pt15lU+loYsWFZwC6T/tAbvwhax+XaBMiKQSDFmG9sBw\nTiM1JWXhq2IsjXBvCl6k2AKWLQOvc/Hin+oYs4d7M9mi0vdoEOAMadU/+Pqn\nuZzP941mOUV5UeTCCbjpyfI7qtIi3TH1cQmC2kG2HrvQYuM6Momp//JusH1+\n9eHgFo25HbitcKJ1sAqxsnYIW5/jIVyIJC7tatxmNfFQQ/LUb2cT+Jowwsf4\nbbPinA9S6aQFy9k3vk07V2ouYl+cpMMXmNAUrboFRLxw7QDapWYMKdmnbU5O\nHZuDz3iyrm0lMPsRtt/f5WUhZYY4vXT5/dj+8P6Pr5fdc4S84i5qEzf7bX/I\nSc6fpISdYBscfHdv6uXsEVtVPKEuQVYwhyc4kkwVKjZBaqsgjAA7VEhQXzO3\nrC7di4UhabWQCQTG1GYZyrj4bm6dg/32uVxMoLS5kuSpi3nMz5JmQahLqRxh\nargg13K2/MJ7w2AI23gCvO5bEmD1ZXIi1aGYdZfu7+KqrTumYxj0KgIesgU0\n6ekmPh4Zu5lIyKopa89nfQVj3uKbwr9LLHegfzeMhvI5WQWghKcNcXEvJwSA\nvEik5aXm2qSKXT+ijXBy5MuNeICoGaQ5WA0OJ30Oh5dN0XpLtFUWHZKThJvR\nmngm1QCMMw2v/j8=\n=9sJE\n-----END PGP MESSAGE-----\n\x00" as *const u8 as *const libc::c_char; #[no_mangle] -pub unsafe extern "C" fn stress_functions(mut context: *mut dc_context_t) { +pub unsafe extern "C" fn stress_functions(mut context: &dc_context_t) { let mut saxparser: dc_saxparser_t = dc_saxparser_t { starttag_cb: None, endtag_cb: None, @@ -2445,7 +2445,7 @@ pub unsafe extern "C" fn stress_functions(mut context: *mut dc_context_t) { ); } else { }; - let mut arr: *mut dc_array_t = dc_array_new(0 as *mut dc_context_t, 7i32 as size_t); + let mut arr: &dc_array_t = dc_array_new(0 as *mut dc_context_t, 7i32 as size_t); if 0 != !(dc_array_get_cnt(arr) == 0) as libc::c_int as libc::c_long { __assert_rtn( (*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00")) diff --git a/examples/simple.rs b/examples/simple.rs index fbfb70525..f018db042 100644 --- a/examples/simple.rs +++ b/examples/simple.rs @@ -16,7 +16,7 @@ use deltachat::dc_job::{ }; use deltachat::dc_lot::*; -extern "C" fn cb(_ctx: *mut dc_context_t, event: Event, data1: usize, data2: usize) -> usize { +extern "C" fn cb(_ctx: &dc_context_t, event: Event, data1: usize, data2: usize) -> usize { println!("[{:?}]", event); match event { diff --git a/src/dc_apeerstate.rs b/src/dc_apeerstate.rs index 71857bff4..bc5bc84ef 100644 --- a/src/dc_apeerstate.rs +++ b/src/dc_apeerstate.rs @@ -18,7 +18,7 @@ use crate::x::*; #[derive(Copy, Clone)] #[repr(C)] pub struct dc_apeerstate_t { - pub context: *mut dc_context_t, + pub context: &dc_context_t, pub addr: *mut libc::c_char, pub last_seen: time_t, pub last_seen_autocrypt: time_t, @@ -35,7 +35,7 @@ pub struct dc_apeerstate_t { } /* the returned pointer is ref'd and must be unref'd after usage */ -pub unsafe fn dc_apeerstate_new(mut context: *mut dc_context_t) -> *mut dc_apeerstate_t { +pub unsafe fn dc_apeerstate_new(mut context: &dc_context_t) -> *mut dc_apeerstate_t { let mut peerstate: *mut dc_apeerstate_t = 0 as *mut dc_apeerstate_t; peerstate = calloc(1, ::std::mem::size_of::()) as *mut dc_apeerstate_t; if peerstate.is_null() { diff --git a/src/dc_array.rs b/src/dc_array.rs index 5550f2a7c..560d6313b 100644 --- a/src/dc_array.rs +++ b/src/dc_array.rs @@ -10,7 +10,6 @@ use crate::x::*; #[repr(C)] pub struct dc_array_t { pub magic: uint32_t, - pub context: *mut dc_context_t, pub allocated: size_t, pub count: size_t, pub type_0: libc::c_int, @@ -262,24 +261,20 @@ pub unsafe fn dc_array_get_raw(mut array: *const dc_array_t) -> *const uintptr_t } return (*array).array; } -pub unsafe fn dc_array_new( - mut context: *mut dc_context_t, - mut initsize: size_t, -) -> *mut dc_array_t { - return dc_array_new_typed(context, 0i32, initsize); +pub unsafe fn dc_array_new(initsize: size_t) -> *mut dc_array_t { + dc_array_new_typed(0, initsize) } + pub unsafe extern "C" fn dc_array_new_typed( - mut context: *mut dc_context_t, mut type_0: libc::c_int, mut initsize: size_t, -) -> *mut dc_array_t { +) -> &dc_array_t { let mut array: *mut dc_array_t = 0 as *mut dc_array_t; array = calloc(1, ::std::mem::size_of::()) as *mut dc_array_t; if array.is_null() { exit(47i32); } (*array).magic = 0xa11aai32 as uint32_t; - (*array).context = context; (*array).count = 0i32 as size_t; (*array).allocated = if initsize < 1 { 1 } else { initsize }; (*array).type_0 = type_0; @@ -304,7 +299,7 @@ pub unsafe fn dc_array_duplicate(mut array: *const dc_array_t) -> *mut dc_array_ if array.is_null() || (*array).magic != 0xa11aai32 as libc::c_uint { return 0 as *mut dc_array_t; } - ret = dc_array_new((*array).context, (*array).allocated); + ret = dc_array_new((*array).allocated); (*ret).count = (*array).count; memcpy( (*ret).array as *mut libc::c_void, diff --git a/src/dc_chat.rs b/src/dc_chat.rs index ad40eacc7..e838432e1 100644 --- a/src/dc_chat.rs +++ b/src/dc_chat.rs @@ -35,7 +35,7 @@ pub struct dc_chat_t { // handle chats pub unsafe fn dc_create_chat_by_msg_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut msg_id: uint32_t, ) -> uint32_t { let mut chat_id: uint32_t = 0i32 as uint32_t; @@ -82,7 +82,7 @@ pub unsafe fn dc_create_chat_by_msg_id( // only an indicator in a chatlist // only an indicator in a chatlist // larger chat IDs are "real" chats, their messages are "real" messages. -pub unsafe fn dc_chat_new(mut context: *mut dc_context_t) -> *mut dc_chat_t { +pub unsafe fn dc_chat_new(mut context: &dc_context_t) -> *mut dc_chat_t { let mut chat: *mut dc_chat_t = 0 as *mut dc_chat_t; if context.is_null() || { chat = calloc(1, ::std::mem::size_of::()) as *mut dc_chat_t; @@ -119,11 +119,11 @@ pub unsafe fn dc_chat_empty(mut chat: *mut dc_chat_t) { (*chat).gossiped_timestamp = 0i32 as time_t; dc_param_set_packed((*chat).param, 0 as *const libc::c_char); } -pub unsafe fn dc_unblock_chat(mut context: *mut dc_context_t, mut chat_id: uint32_t) { +pub unsafe fn dc_unblock_chat(mut context: &dc_context_t, mut chat_id: uint32_t) { dc_block_chat(context, chat_id, 0i32); } pub unsafe fn dc_block_chat( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut new_blocking: libc::c_int, ) { @@ -219,7 +219,7 @@ unsafe fn set_from_stmt(mut chat: *mut dc_chat_t, mut row: *mut sqlite3_stmt) -> return row_offset; } pub unsafe fn dc_create_chat_by_contact_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, ) -> uint32_t { let mut chat_id: uint32_t = 0i32 as uint32_t; @@ -268,7 +268,7 @@ pub unsafe fn dc_create_chat_by_contact_id( return chat_id; } pub unsafe fn dc_create_or_lookup_nchat_by_contact_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, mut create_blocked: libc::c_int, mut ret_chat_id: *mut uint32_t, @@ -378,7 +378,7 @@ pub unsafe fn dc_create_or_lookup_nchat_by_contact_id( }; } pub unsafe fn dc_lookup_real_nchat_by_contact_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, mut ret_chat_id: *mut uint32_t, mut ret_chat_blocked: *mut libc::c_int, @@ -413,7 +413,7 @@ pub unsafe fn dc_lookup_real_nchat_by_contact_id( sqlite3_finalize(stmt); } pub unsafe fn dc_get_chat_id_by_contact_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, ) -> uint32_t { let mut chat_id: uint32_t = 0i32 as uint32_t; @@ -429,7 +429,7 @@ pub unsafe fn dc_get_chat_id_by_contact_id( }; } pub unsafe fn dc_prepare_msg( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut msg: *mut dc_msg_t, ) -> uint32_t { @@ -451,7 +451,7 @@ pub unsafe fn dc_prepare_msg( return msg_id; } unsafe fn prepare_msg_common( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut msg: *mut dc_msg_t, ) -> uint32_t { @@ -550,7 +550,7 @@ unsafe fn prepare_msg_common( return (*msg).id; } unsafe fn prepare_msg_raw( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat: *mut dc_chat_t, mut msg: *const dc_msg_t, mut timestamp: time_t, @@ -959,7 +959,7 @@ pub unsafe fn dc_chat_update_param(mut chat: *mut dc_chat_t) -> libc::c_int { return success; } pub unsafe fn dc_is_contact_in_chat( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut contact_id: uint32_t, ) -> libc::c_int { @@ -984,7 +984,7 @@ pub unsafe fn dc_is_contact_in_chat( sqlite3_finalize(stmt); return ret; } -pub unsafe fn dc_unarchive_chat(mut context: *mut dc_context_t, mut chat_id: uint32_t) { +pub unsafe fn dc_unarchive_chat(mut context: &dc_context_t, mut chat_id: uint32_t) { let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"UPDATE chats SET archived=0 WHERE id=?\x00" as *const u8 as *const libc::c_char, @@ -994,7 +994,7 @@ pub unsafe fn dc_unarchive_chat(mut context: *mut dc_context_t, mut chat_id: uin sqlite3_finalize(stmt); } pub unsafe fn dc_send_msg( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut msg: *mut dc_msg_t, ) -> uint32_t { @@ -1051,7 +1051,7 @@ pub unsafe fn dc_send_msg( return (*msg).id; } pub unsafe fn dc_send_text_msg( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut text_to_send: *const libc::c_char, ) -> uint32_t { @@ -1069,7 +1069,7 @@ pub unsafe fn dc_send_text_msg( return ret; } pub unsafe fn dc_set_draft( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut msg: *mut dc_msg_t, ) { @@ -1089,7 +1089,7 @@ pub unsafe fn dc_set_draft( }; } unsafe fn set_draft_raw( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut msg: *mut dc_msg_t, ) -> libc::c_int { @@ -1171,7 +1171,7 @@ unsafe fn set_draft_raw( free(pathNfilename as *mut libc::c_void); return sth_changed; } -unsafe fn get_draft_msg_id(mut context: *mut dc_context_t, mut chat_id: uint32_t) -> uint32_t { +unsafe fn get_draft_msg_id(mut context: &dc_context_t, mut chat_id: uint32_t) -> uint32_t { let mut draft_msg_id: uint32_t = 0i32 as uint32_t; let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, @@ -1185,7 +1185,7 @@ unsafe fn get_draft_msg_id(mut context: *mut dc_context_t, mut chat_id: uint32_t sqlite3_finalize(stmt); return draft_msg_id; } -pub unsafe fn dc_get_draft(mut context: *mut dc_context_t, mut chat_id: uint32_t) -> *mut dc_msg_t { +pub unsafe fn dc_get_draft(mut context: &dc_context_t, mut chat_id: uint32_t) -> *mut dc_msg_t { let mut draft_msg_id: uint32_t = 0i32 as uint32_t; let mut draft_msg: *mut dc_msg_t = 0 as *mut dc_msg_t; if context.is_null() @@ -1206,7 +1206,7 @@ pub unsafe fn dc_get_draft(mut context: *mut dc_context_t, mut chat_id: uint32_t return draft_msg; } pub unsafe fn dc_get_chat_msgs( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut flags: uint32_t, mut marker1before: uint32_t, @@ -1271,7 +1271,7 @@ pub unsafe fn dc_get_chat_msgs( return 0 as *mut dc_array_t; }; } -pub unsafe fn dc_get_msg_cnt(mut context: *mut dc_context_t, mut chat_id: uint32_t) -> libc::c_int { +pub unsafe fn dc_get_msg_cnt(mut context: &dc_context_t, mut chat_id: uint32_t) -> libc::c_int { let mut ret: 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) { @@ -1288,7 +1288,7 @@ pub unsafe fn dc_get_msg_cnt(mut context: *mut dc_context_t, mut chat_id: uint32 return ret; } pub unsafe fn dc_get_fresh_msg_cnt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, ) -> libc::c_int { let mut ret: libc::c_int = 0i32; @@ -1307,7 +1307,7 @@ pub unsafe fn dc_get_fresh_msg_cnt( sqlite3_finalize(stmt); return ret; } -pub unsafe fn dc_marknoticed_chat(mut context: *mut dc_context_t, mut chat_id: uint32_t) { +pub unsafe fn dc_marknoticed_chat(mut context: &dc_context_t, mut chat_id: uint32_t) { let mut check: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; let mut update: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; if !(context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint) { @@ -1336,7 +1336,7 @@ pub unsafe fn dc_marknoticed_chat(mut context: *mut dc_context_t, mut chat_id: u sqlite3_finalize(check); sqlite3_finalize(update); } -pub unsafe fn dc_marknoticed_all_chats(mut context: *mut dc_context_t) { +pub unsafe fn dc_marknoticed_all_chats(mut context: &dc_context_t) { let mut check: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; let mut update: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; if !(context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint) { @@ -1363,7 +1363,7 @@ pub unsafe fn dc_marknoticed_all_chats(mut context: *mut dc_context_t) { sqlite3_finalize(update); } pub unsafe fn dc_get_chat_media( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut msg_type: libc::c_int, mut msg_type2: libc::c_int, @@ -1404,7 +1404,7 @@ pub unsafe fn dc_get_chat_media( return ret; } pub unsafe fn dc_get_next_media( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut curr_msg_id: uint32_t, mut dir: libc::c_int, mut msg_type: libc::c_int, @@ -1456,7 +1456,7 @@ pub unsafe fn dc_get_next_media( return ret_msg_id; } pub unsafe fn dc_archive_chat( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut archive: libc::c_int, ) { @@ -1492,7 +1492,7 @@ pub unsafe fn dc_archive_chat( 0i32 as uintptr_t, ); } -pub unsafe fn dc_delete_chat(mut context: *mut dc_context_t, mut chat_id: uint32_t) { +pub unsafe fn dc_delete_chat(mut context: &dc_context_t, mut chat_id: uint32_t) { /* Up to 2017-11-02 deleting a group also implied leaving it, see above why we have changed this. */ let mut pending_transaction: libc::c_int = 0i32; let mut obj: *mut dc_chat_t = dc_chat_new(context); @@ -1558,7 +1558,7 @@ pub unsafe fn dc_delete_chat(mut context: *mut dc_context_t, mut chat_id: uint32 sqlite3_free(q3 as *mut libc::c_void); } pub unsafe fn dc_get_chat_contacts( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, ) -> *mut dc_array_t { /* Normal chats do not include SELF. Group chats do (as it may happen that one is deleted from a @@ -1581,7 +1581,7 @@ pub unsafe fn dc_get_chat_contacts( sqlite3_finalize(stmt); return ret; } -pub unsafe fn dc_get_chat(mut context: *mut dc_context_t, mut chat_id: uint32_t) -> *mut dc_chat_t { +pub unsafe fn dc_get_chat(mut context: &dc_context_t, mut chat_id: uint32_t) -> *mut dc_chat_t { let mut success: libc::c_int = 0i32; let mut obj: *mut dc_chat_t = dc_chat_new(context); if !(context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint) { @@ -1598,7 +1598,7 @@ pub unsafe fn dc_get_chat(mut context: *mut dc_context_t, mut chat_id: uint32_t) } // handle group chats pub unsafe fn dc_create_group_chat( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut verified: libc::c_int, mut chat_name: *const libc::c_char, ) -> uint32_t { @@ -1656,7 +1656,7 @@ pub unsafe fn dc_create_group_chat( /* you MUST NOT modify this or the following strings */ // Context functions to work with chats pub unsafe fn dc_add_to_chat_contacts_table( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut contact_id: uint32_t, ) -> libc::c_int { @@ -1678,14 +1678,14 @@ pub unsafe fn dc_add_to_chat_contacts_table( return ret; } pub unsafe fn dc_add_contact_to_chat( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut contact_id: uint32_t, ) -> libc::c_int { return dc_add_contact_to_chat_ex(context, chat_id, contact_id, 0i32); } pub unsafe fn dc_add_contact_to_chat_ex( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut contact_id: uint32_t, mut flags: libc::c_int, @@ -1807,7 +1807,7 @@ pub unsafe fn dc_add_contact_to_chat_ex( free(self_addr as *mut libc::c_void); return success; } -unsafe fn real_group_exists(mut context: *mut dc_context_t, mut chat_id: uint32_t) -> libc::c_int { +unsafe fn real_group_exists(mut context: &dc_context_t, mut chat_id: uint32_t) -> libc::c_int { // check if a group or a verified group exists under the given ID let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; let mut ret: libc::c_int = 0i32; @@ -1830,11 +1830,11 @@ unsafe fn real_group_exists(mut context: *mut dc_context_t, mut chat_id: uint32_ sqlite3_finalize(stmt); return ret; } -pub unsafe fn dc_reset_gossiped_timestamp(mut context: *mut dc_context_t, mut chat_id: uint32_t) { +pub unsafe fn dc_reset_gossiped_timestamp(mut context: &dc_context_t, mut chat_id: uint32_t) { dc_set_gossiped_timestamp(context, chat_id, 0i32 as time_t); } pub unsafe fn dc_set_gossiped_timestamp( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut timestamp: time_t, ) { @@ -1871,7 +1871,7 @@ pub unsafe fn dc_set_gossiped_timestamp( sqlite3_finalize(stmt); } pub unsafe fn dc_remove_contact_from_chat( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut contact_id: uint32_t, ) -> libc::c_int { @@ -1957,7 +1957,7 @@ pub unsafe fn dc_remove_contact_from_chat( return success; } pub unsafe fn dc_set_group_explicitly_left( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut grpid: *const libc::c_char, ) { if 0 == dc_is_group_explicitly_left(context, grpid) { @@ -1971,7 +1971,7 @@ pub unsafe fn dc_set_group_explicitly_left( }; } pub unsafe fn dc_is_group_explicitly_left( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut grpid: *const libc::c_char, ) -> libc::c_int { let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( @@ -1984,7 +1984,7 @@ pub unsafe fn dc_is_group_explicitly_left( return ret; } pub unsafe fn dc_set_chat_name( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut new_name: *const libc::c_char, ) -> libc::c_int { @@ -2057,7 +2057,7 @@ pub unsafe fn dc_set_chat_name( return success; } pub unsafe fn dc_set_chat_profile_image( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut new_image: *const libc::c_char, ) -> libc::c_int { @@ -2140,7 +2140,7 @@ pub unsafe fn dc_set_chat_profile_image( return success; } pub unsafe fn dc_forward_msgs( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut msg_ids: *const uint32_t, mut msg_cnt: libc::c_int, mut chat_id: uint32_t, @@ -2321,7 +2321,7 @@ pub unsafe extern "C" fn dc_chat_get_subtitle(mut chat: *const dc_chat_t) -> *mu }; } pub unsafe fn dc_get_chat_contact_cnt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, ) -> libc::c_int { let mut ret: libc::c_int = 0i32; @@ -2408,7 +2408,7 @@ pub unsafe fn dc_chat_is_sending_locations(mut chat: *const dc_chat_t) -> libc:: } return (*chat).is_sending_locations; } -pub unsafe fn dc_get_chat_cnt(mut context: *mut dc_context_t) -> size_t { +pub unsafe fn dc_get_chat_cnt(mut context: &dc_context_t) -> size_t { let mut ret: size_t = 0i32 as size_t; let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; if !(context.is_null() @@ -2429,7 +2429,7 @@ pub unsafe fn dc_get_chat_cnt(mut context: *mut dc_context_t) -> size_t { return ret; } pub unsafe fn dc_get_chat_id_by_grpid( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut grpid: *const libc::c_char, mut ret_blocked: *mut libc::c_int, mut ret_verified: *mut libc::c_int, @@ -2463,7 +2463,7 @@ pub unsafe fn dc_get_chat_id_by_grpid( return chat_id; } pub unsafe fn dc_add_device_msg( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut text: *const libc::c_char, ) { diff --git a/src/dc_chatlist.rs b/src/dc_chatlist.rs index dba84afe8..bf203a95b 100644 --- a/src/dc_chatlist.rs +++ b/src/dc_chatlist.rs @@ -17,14 +17,14 @@ use crate::x::*; #[repr(C)] pub struct dc_chatlist_t { pub magic: uint32_t, - pub context: *mut dc_context_t, + pub context: &dc_context_t, pub cnt: size_t, pub chatNlastmsg_ids: *mut dc_array_t, } // handle chatlists pub unsafe fn dc_get_chatlist( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut listflags: libc::c_int, mut query_str: *const libc::c_char, mut query_id: uint32_t, @@ -81,7 +81,7 @@ pub unsafe fn dc_get_chatlist( * Rendering the deaddrop in the described way * would not add extra work in the UI then. */ -pub unsafe fn dc_chatlist_new(mut context: *mut dc_context_t) -> *mut dc_chatlist_t { +pub unsafe fn dc_chatlist_new(mut context: &dc_context_t) -> *mut dc_chatlist_t { let mut chatlist: *mut dc_chatlist_t = 0 as *mut dc_chatlist_t; chatlist = calloc(1, ::std::mem::size_of::()) as *mut dc_chatlist_t; if chatlist.is_null() { @@ -221,7 +221,7 @@ unsafe fn dc_chatlist_load_from_db( return success; } // Context functions to work with chatlist -pub unsafe fn dc_get_archived_cnt(mut context: *mut dc_context_t) -> libc::c_int { +pub unsafe fn dc_get_archived_cnt(mut context: &dc_context_t) -> libc::c_int { let mut ret: libc::c_int = 0i32; let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, @@ -234,7 +234,7 @@ pub unsafe fn dc_get_archived_cnt(mut context: *mut dc_context_t) -> libc::c_int sqlite3_finalize(stmt); return ret; } -unsafe fn get_last_deaddrop_fresh_msg(mut context: *mut dc_context_t) -> uint32_t { +unsafe fn get_last_deaddrop_fresh_msg(mut context: &dc_context_t) -> uint32_t { let mut ret: uint32_t = 0i32 as uint32_t; let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; stmt = @@ -355,7 +355,7 @@ pub unsafe fn dc_chatlist_get_summary( dc_chat_unref(chat_to_delete); return ret; } -pub unsafe fn dc_chatlist_get_context(mut chatlist: *mut dc_chatlist_t) -> *mut dc_context_t { +pub unsafe fn dc_chatlist_get_context(mut chatlist: *mut dc_chatlist_t) -> &dc_context_t { if chatlist.is_null() || (*chatlist).magic != 0xc4a71157u32 { return 0 as *mut dc_context_t; } diff --git a/src/dc_configure.rs b/src/dc_configure.rs index c13226f17..c63ade0c8 100644 --- a/src/dc_configure.rs +++ b/src/dc_configure.rs @@ -58,7 +58,7 @@ pub struct outlk_autodiscover_t { pub redirect: *mut libc::c_char, } // connect -pub unsafe fn dc_configure(mut context: *mut dc_context_t) { +pub unsafe fn dc_configure(mut context: &dc_context_t) { if 0 != dc_has_ongoing(context) { dc_log_warning( context, @@ -71,7 +71,7 @@ pub unsafe fn dc_configure(mut context: *mut dc_context_t) { dc_job_kill_action(context, 900i32); dc_job_add(context, 900i32, 0i32, 0 as *const libc::c_char, 0i32); } -pub unsafe fn dc_has_ongoing(mut context: *mut dc_context_t) -> libc::c_int { +pub unsafe fn dc_has_ongoing(mut context: &dc_context_t) -> libc::c_int { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return 0i32; } @@ -81,7 +81,7 @@ pub unsafe fn dc_has_ongoing(mut context: *mut dc_context_t) -> libc::c_int { 0i32 }; } -pub unsafe fn dc_is_configured(mut context: *const dc_context_t) -> libc::c_int { +pub unsafe fn dc_is_configured(mut context: &dc_context_t) -> libc::c_int { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return 0i32; } @@ -96,7 +96,7 @@ pub unsafe fn dc_is_configured(mut context: *const dc_context_t) -> libc::c_int 0i32 }; } -pub unsafe fn dc_stop_ongoing_process(mut context: *mut dc_context_t) { +pub unsafe fn dc_stop_ongoing_process(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return; } @@ -116,7 +116,7 @@ pub unsafe fn dc_stop_ongoing_process(mut context: *mut dc_context_t) { }; } // the other dc_job_do_DC_JOB_*() functions are declared static in the c-file -pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: *mut dc_context_t, _job: *mut dc_job_t) { +pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &dc_context_t, _job: *mut dc_job_t) { let mut flags: libc::c_int = 0; let mut current_block: u64; let mut success: libc::c_int = 0i32; @@ -1323,7 +1323,7 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: *mut dc_context_t, _job: ); } -pub unsafe fn dc_free_ongoing(mut context: *mut dc_context_t) { +pub unsafe fn dc_free_ongoing(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return; } @@ -1331,7 +1331,7 @@ pub unsafe fn dc_free_ongoing(mut context: *mut dc_context_t) { (*context).shall_stop_ongoing = 1i32; } pub unsafe fn dc_configure_folders( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut imap: *mut dc_imap_t, mut flags: libc::c_int, ) { @@ -1634,7 +1634,7 @@ unsafe fn get_folder_meaning(mut flags: *mut mailimap_mbx_list_flags) -> libc::c return ret_meaning; } unsafe fn moz_autoconfigure( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut url: *const libc::c_char, mut param_in: *const dc_loginparam_t, ) -> *mut dc_loginparam_t { @@ -1859,7 +1859,7 @@ unsafe fn moz_autoconfigure_starttag_cb( }; } unsafe fn read_autoconf_file( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut url: *const libc::c_char, ) -> *mut libc::c_char { let mut filecontent: *mut libc::c_char = 0 as *mut libc::c_char; @@ -1887,7 +1887,7 @@ unsafe fn read_autoconf_file( return filecontent; } unsafe fn outlk_autodiscover( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut url__: *const libc::c_char, mut param_in: *const dc_loginparam_t, ) -> *mut dc_loginparam_t { @@ -2071,7 +2071,7 @@ unsafe fn outlk_autodiscover_starttag_cb( (*outlk_ad).tag_config = 5i32 }; } -pub unsafe fn dc_alloc_ongoing(mut context: *mut dc_context_t) -> libc::c_int { +pub unsafe fn dc_alloc_ongoing(mut context: &dc_context_t) -> libc::c_int { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return 0i32; } @@ -2089,7 +2089,7 @@ pub unsafe fn dc_alloc_ongoing(mut context: *mut dc_context_t) -> libc::c_int { return 1i32; } pub unsafe fn dc_connect_to_configured_imap( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut imap: *mut dc_imap_t, ) -> libc::c_int { let mut ret_connected: libc::c_int = 0i32; diff --git a/src/dc_contact.rs b/src/dc_contact.rs index 3f0520291..81c463f07 100644 --- a/src/dc_contact.rs +++ b/src/dc_contact.rs @@ -30,7 +30,7 @@ pub struct dc_contact_t { pub origin: libc::c_int, } -pub unsafe fn dc_marknoticed_contact(mut context: *mut dc_context_t, mut contact_id: uint32_t) { +pub unsafe fn dc_marknoticed_contact(mut context: &dc_context_t, mut contact_id: uint32_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return; } @@ -69,7 +69,7 @@ pub unsafe extern "C" fn dc_may_be_valid_addr(mut addr: *const libc::c_char) -> return 1i32; } pub unsafe fn dc_lookup_contact_id_by_addr( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut addr: *const libc::c_char, ) -> uint32_t { let mut contact_id: libc::c_int = 0i32; @@ -130,7 +130,7 @@ pub unsafe fn dc_addr_normalize(mut addr: *const libc::c_char) -> *mut libc::c_c return addr_normalized; } pub unsafe fn dc_create_contact( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut name: *const libc::c_char, mut addr: *const libc::c_char, ) -> uint32_t { @@ -161,7 +161,7 @@ pub unsafe fn dc_create_contact( return contact_id; } pub unsafe fn dc_block_contact( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, mut new_blocking: libc::c_int, ) { @@ -243,7 +243,7 @@ pub unsafe fn dc_block_contact( * dc_create_contact() or dc_add_address_book()) * only affect the given-name. */ -pub unsafe fn dc_contact_new(mut context: *mut dc_context_t) -> *mut dc_contact_t { +pub unsafe fn dc_contact_new(mut context: &dc_context_t) -> *mut dc_contact_t { let mut contact: *mut dc_contact_t = 0 as *mut dc_contact_t; contact = calloc(1, ::std::mem::size_of::()) as *mut dc_contact_t; if contact.is_null() { @@ -341,7 +341,7 @@ pub unsafe fn dc_contact_load_from_db( return success; } pub unsafe fn dc_is_contact_blocked( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, ) -> libc::c_int { let mut is_blocked: libc::c_int = 0i32; @@ -356,7 +356,7 @@ pub unsafe fn dc_is_contact_blocked( } /*can be NULL*/ pub unsafe fn dc_add_or_lookup_contact( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut name: *const libc::c_char, mut addr__: *const libc::c_char, mut origin: libc::c_int, @@ -541,7 +541,7 @@ pub unsafe fn dc_add_or_lookup_contact( return row_id; } pub unsafe fn dc_add_address_book( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut adr_book: *const libc::c_char, ) -> libc::c_int { let mut lines: *mut carray = 0 as *mut carray; @@ -619,7 +619,7 @@ pub unsafe fn dc_normalize_name(mut full_name: *mut libc::c_char) { }; } pub unsafe fn dc_get_contacts( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut listflags: uint32_t, mut query: *const libc::c_char, ) -> *mut dc_array_t { @@ -713,7 +713,7 @@ pub unsafe fn dc_get_contacts( free(self_name2 as *mut libc::c_void); return ret; } -pub unsafe fn dc_get_blocked_cnt(mut context: *mut dc_context_t) -> libc::c_int { +pub unsafe fn dc_get_blocked_cnt(mut context: &dc_context_t) -> libc::c_int { let mut ret: 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) { @@ -730,7 +730,7 @@ pub unsafe fn dc_get_blocked_cnt(mut context: *mut dc_context_t) -> libc::c_int sqlite3_finalize(stmt); return ret; } -pub unsafe fn dc_get_blocked_contacts(mut context: *mut dc_context_t) -> *mut dc_array_t { +pub unsafe fn dc_get_blocked_contacts(mut context: &dc_context_t) -> *mut dc_array_t { let mut ret: *mut dc_array_t = dc_array_new(context, 100i32 as size_t); let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; if !(context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint) { @@ -748,7 +748,7 @@ pub unsafe fn dc_get_blocked_contacts(mut context: *mut dc_context_t) -> *mut dc return ret; } pub unsafe fn dc_get_contact_encrinfo( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, ) -> *mut libc::c_char { let mut ret: dc_strbuilder_t = dc_strbuilder_t { @@ -890,7 +890,7 @@ unsafe fn cat_fingerprint( }; } pub unsafe fn dc_delete_contact( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, ) -> libc::c_int { let mut success: libc::c_int = 0i32; @@ -939,7 +939,7 @@ pub unsafe fn dc_delete_contact( return success; } pub unsafe fn dc_get_contact( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, ) -> *mut dc_contact_t { let mut ret: *mut dc_contact_t = dc_contact_new(context); @@ -1099,7 +1099,7 @@ pub unsafe fn dc_addr_cmp( return ret; } pub unsafe fn dc_addr_equals_self( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut addr: *const libc::c_char, ) -> libc::c_int { let mut ret: libc::c_int = 0i32; @@ -1125,7 +1125,7 @@ pub unsafe fn dc_addr_equals_self( return ret; } pub unsafe fn dc_addr_equals_contact( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut addr: *const libc::c_char, mut contact_id: uint32_t, ) -> libc::c_int { @@ -1146,7 +1146,7 @@ pub unsafe fn dc_addr_equals_contact( return addr_are_equal; } // Context functions to work with contacts -pub unsafe fn dc_get_real_contact_cnt(mut context: *mut dc_context_t) -> size_t { +pub unsafe fn dc_get_real_contact_cnt(mut context: &dc_context_t) -> size_t { let mut ret: size_t = 0i32 as size_t; let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; if !(context.is_null() @@ -1166,7 +1166,7 @@ pub unsafe fn dc_get_real_contact_cnt(mut context: *mut dc_context_t) -> size_t return ret; } pub unsafe fn dc_get_contact_origin( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, mut ret_blocked: *mut libc::c_int, ) -> libc::c_int { @@ -1189,7 +1189,7 @@ pub unsafe fn dc_get_contact_origin( return ret; } pub unsafe fn dc_real_contact_exists( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, ) -> libc::c_int { let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; @@ -1212,7 +1212,7 @@ pub unsafe fn dc_real_contact_exists( return ret; } pub unsafe fn dc_scaleup_contact_origin( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_id: uint32_t, mut origin: libc::c_int, ) { diff --git a/src/dc_e2ee.rs b/src/dc_e2ee.rs index 93cb77061..dc01a16e3 100644 --- a/src/dc_e2ee.rs +++ b/src/dc_e2ee.rs @@ -33,7 +33,7 @@ pub struct dc_e2ee_helper_t { } pub unsafe fn dc_e2ee_encrypt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut recipients_addr: *const clist, mut force_unencrypted: libc::c_int, mut e2ee_guaranteed: libc::c_int, @@ -54,7 +54,7 @@ pub unsafe fn dc_e2ee_encrypt( let mut plain: *mut MMAPString = mmap_string_new(b"\x00" as *const u8 as *const libc::c_char); let mut ctext: *mut libc::c_char = 0 as *mut libc::c_char; let mut ctext_bytes: size_t = 0i32 as size_t; - let mut peerstates: *mut dc_array_t = dc_array_new(0 as *mut dc_context_t, 10i32 as size_t); + let mut peerstates: &dc_array_t = dc_array_new(0 as *mut dc_context_t, 10i32 as size_t); if !helper.is_null() { memset( helper as *mut libc::c_void, @@ -505,7 +505,7 @@ unsafe fn new_data_part( * Generate Keypairs ******************************************************************************/ unsafe fn load_or_generate_self_public_key( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut public_key: *mut dc_key_t, mut self_addr: *const libc::c_char, mut random_data_mime: *mut mailmime, @@ -619,7 +619,7 @@ unsafe fn load_or_generate_self_public_key( } /* returns 1 if sth. was decrypted, 0 in other cases */ pub unsafe fn dc_e2ee_decrypt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut in_out_message: *mut mailmime, mut helper: *mut dc_e2ee_helper_t, ) { @@ -753,7 +753,7 @@ pub unsafe fn dc_e2ee_decrypt( free(self_addr as *mut libc::c_void); } unsafe fn update_gossip_peerstates( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut message_time: time_t, mut imffields: *mut mailimf_fields, mut gossip_headers: *const mailimf_fields, @@ -845,7 +845,7 @@ unsafe fn update_gossip_peerstates( return gossipped_addr; } unsafe fn decrypt_recursive( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mime: *mut mailmime, mut private_keyring: *const dc_keyring_t, mut public_keyring_for_validate: *const dc_keyring_t, @@ -950,7 +950,7 @@ unsafe fn decrypt_recursive( return 0i32; } unsafe fn decrypt_part( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mime: *mut mailmime, mut private_keyring: *const dc_keyring_t, mut public_keyring_for_validate: *const dc_keyring_t, @@ -1192,7 +1192,7 @@ pub unsafe fn dc_e2ee_thanks(mut helper: *mut dc_e2ee_helper_t) { }; } /* makes sure, the private key exists, needed only for exporting keys and the case no message was sent before */ -pub unsafe fn dc_ensure_secret_key_exists(mut context: *mut dc_context_t) -> libc::c_int { +pub unsafe fn dc_ensure_secret_key_exists(mut context: &dc_context_t) -> libc::c_int { /* normally, the key is generated as soon as the first mail is send (this is to gain some extra-random-seed by the message content and the timespan between program start and message sending) */ let mut success: libc::c_int = 0i32; diff --git a/src/dc_imap.rs b/src/dc_imap.rs index e122185a2..ce4f59ab5 100644 --- a/src/dc_imap.rs +++ b/src/dc_imap.rs @@ -100,127 +100,115 @@ pub unsafe fn dc_imap_new( )), ); mailimap_fetch_type_new_fetch_att_list_add( - (*imap).fetch_type_flags, + imap.fetch_type_flags, mailimap_fetch_att_new_flags(), ); imap } -pub unsafe fn dc_imap_unref(mut imap: *mut dc_imap_t) { - if imap.is_null() { - return; - } +pub unsafe fn dc_imap_unref(imap: &mut dc_imap_t) { dc_imap_disconnect(imap); - pthread_cond_destroy(&mut (*imap).watch_cond); - pthread_mutex_destroy(&mut (*imap).watch_condmutex); - free((*imap).watch_folder as *mut libc::c_void); - free((*imap).selected_folder as *mut libc::c_void); - if !(*imap).fetch_type_prefetch.is_null() { - mailimap_fetch_type_free((*imap).fetch_type_prefetch); + free(imap.watch_folder as *mut libc::c_void); + free(imap.selected_folder as *mut libc::c_void); + if !imap.fetch_type_prefetch.is_null() { + mailimap_fetch_type_free(imap.fetch_type_prefetch); } - if !(*imap).fetch_type_body.is_null() { - mailimap_fetch_type_free((*imap).fetch_type_body); + if !imap.fetch_type_body.is_null() { + mailimap_fetch_type_free(imap.fetch_type_body); } - if !(*imap).fetch_type_flags.is_null() { - mailimap_fetch_type_free((*imap).fetch_type_flags); + if !imap.fetch_type_flags.is_null() { + mailimap_fetch_type_free(imap.fetch_type_flags); } - free(imap as *mut libc::c_void); } -pub unsafe fn dc_imap_disconnect(mut imap: *mut dc_imap_t) { - if imap.is_null() { - return; - } - if 0 != (*imap).connected { + +pub unsafe fn dc_imap_disconnect(imap: &mut dc_imap_t) { + if 0 != imap.connected { unsetup_handle(imap); free_connect_param(imap); - (*imap).connected = 0i32 + imap.connected = 0 }; } -/* we leave sent_folder set; normally this does not change in a normal reconnect; we'll update this folder if we get errors */ + /* ****************************************************************************** * Connect/Disconnect ******************************************************************************/ -unsafe fn free_connect_param(mut imap: *mut dc_imap_t) { - free((*imap).addr as *mut libc::c_void); - (*imap).addr = 0 as *mut libc::c_char; - free((*imap).imap_server as *mut libc::c_void); - (*imap).imap_server = 0 as *mut libc::c_char; - free((*imap).imap_user as *mut libc::c_void); - (*imap).imap_user = 0 as *mut libc::c_char; - free((*imap).imap_pw as *mut libc::c_void); - (*imap).imap_pw = 0 as *mut libc::c_char; - *(*imap).watch_folder.offset(0isize) = 0i32 as libc::c_char; - *(*imap).selected_folder.offset(0isize) = 0i32 as libc::c_char; - (*imap).imap_port = 0i32; - (*imap).can_idle = 0i32; - (*imap).has_xlist = 0i32; + +unsafe fn free_connect_param(imap: &mut dc_imap_t) { + free(imap.addr as *mut libc::c_void); + imap.addr = 0 as *mut libc::c_char; + free(imap.imap_server as *mut libc::c_void); + imap.imap_server = 0 as *mut libc::c_char; + free(imap.imap_user as *mut libc::c_void); + imap.imap_user = 0 as *mut libc::c_char; + free(imap.imap_pw as *mut libc::c_void); + imap.imap_pw = 0 as *mut libc::c_char; + *imap.watch_folder.offset(0isize) = 0 as libc::c_char; + *imap.selected_folder.offset(0isize) = 0 as libc::c_char; + imap.imap_port = 0; + imap.can_idle = 0; + imap.has_xlist = 0; } -unsafe fn unsetup_handle(mut imap: *mut dc_imap_t) { - if imap.is_null() { - return; - } - if !(*imap).etpan.is_null() { - if 0 != (*imap).idle_set_up { - mailstream_unsetup_idle((*(*imap).etpan).imap_stream); - (*imap).idle_set_up = 0i32 + +unsafe fn unsetup_handle(imap: &mut dc_imap_t) { + if !imap.etpan.is_null() { + if 0 != imap.idle_set_up { + mailstream_unsetup_idle((*imap.etpan).imap_stream); + imap.idle_set_up = 0 } - if !(*(*imap).etpan).imap_stream.is_null() { - mailstream_close((*(*imap).etpan).imap_stream); - (*(*imap).etpan).imap_stream = 0 as *mut mailstream + if !(*imap.etpan).imap_stream.is_null() { + mailstream_close((*imap.etpan).imap_stream); + (*imap.etpan).imap_stream = 0 as *mut mailstream } - mailimap_free((*imap).etpan); - (*imap).etpan = 0 as *mut mailimap; + mailimap_free(imap.etpan); + imap.etpan = 0 as *mut mailimap; dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"IMAP disconnected.\x00" as *const u8 as *const libc::c_char, ); } - *(*imap).selected_folder.offset(0isize) = 0i32 as libc::c_char; + *imap.selected_folder.offset(0isize) = 0 as libc::c_char; } -pub unsafe fn dc_imap_connect( - mut imap: *mut dc_imap_t, - mut lp: *const dc_loginparam_t, -) -> libc::c_int { - let mut success: libc::c_int = 0i32; - if imap.is_null() - || lp.is_null() + +pub unsafe fn dc_imap_connect(imap: &mut dc_imap_t, lp: *const dc_loginparam_t) -> libc::c_int { + let mut success: libc::c_int = 0; + if lp.is_null() || (*lp).mail_server.is_null() || (*lp).mail_user.is_null() || (*lp).mail_pw.is_null() { - return 0i32; + return 0; } - if 0 != (*imap).connected { - success = 1i32 + if 0 != imap.connected { + success = 1 } else { - (*imap).addr = dc_strdup((*lp).addr); - (*imap).imap_server = dc_strdup((*lp).mail_server); - (*imap).imap_port = (*lp).mail_port as libc::c_int; - (*imap).imap_user = dc_strdup((*lp).mail_user); - (*imap).imap_pw = dc_strdup((*lp).mail_pw); - (*imap).server_flags = (*lp).server_flags; + imap.addr = dc_strdup((*lp).addr); + imap.imap_server = dc_strdup((*lp).mail_server); + imap.imap_port = (*lp).mail_port as libc::c_int; + imap.imap_user = dc_strdup((*lp).mail_user); + imap.imap_pw = dc_strdup((*lp).mail_pw); + imap.server_flags = (*lp).server_flags; if !(0 == setup_handle_if_needed(imap)) { - (*imap).can_idle = mailimap_has_idle((*imap).etpan); - (*imap).has_xlist = mailimap_has_xlist((*imap).etpan); - (*imap).can_idle = 0i32; - if 0 == (*imap).skip_log_capabilities - && !(*(*imap).etpan).imap_connection_info.is_null() - && !(*(*(*imap).etpan).imap_connection_info) + imap.can_idle = mailimap_has_idle(imap.etpan); + imap.has_xlist = mailimap_has_xlist(imap.etpan); + imap.can_idle = 0; + if 0 == imap.skip_log_capabilities + && !(*imap.etpan).imap_connection_info.is_null() + && !(*(*imap.etpan).imap_connection_info) .imap_capability .is_null() { - (*imap).skip_log_capabilities = 1i32; + imap.skip_log_capabilities = 1; let mut capinfostr: dc_strbuilder_t = dc_strbuilder_t { buf: 0 as *mut libc::c_char, allocated: 0, free: 0, eos: 0 as *mut libc::c_char, }; - dc_strbuilder_init(&mut capinfostr, 0i32); + dc_strbuilder_init(&mut capinfostr, 0); let mut list: *mut clist = - (*(*(*(*imap).etpan).imap_connection_info).imap_capability).cap_list; + (*(*(*imap.etpan).imap_connection_info).imap_capability).cap_list; if !list.is_null() { let mut cur: *mut clistiter = 0 as *mut clistiter; cur = (*list).first; @@ -248,113 +236,110 @@ pub unsafe fn dc_imap_connect( } } dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"IMAP-capabilities:%s\x00" as *const u8 as *const libc::c_char, capinfostr.buf, ); free(capinfostr.buf as *mut libc::c_void); } - (*imap).connected = 1i32; - success = 1i32 + imap.connected = 1; + success = 1 } } - if success == 0i32 { + if success == 0 { unsetup_handle(imap); free_connect_param(imap); } - return success; + success } -unsafe fn setup_handle_if_needed(mut imap: *mut dc_imap_t) -> libc::c_int { + +unsafe fn setup_handle_if_needed(imap: &mut dc_imap_t) -> libc::c_int { let mut current_block: u64; - let mut r: libc::c_int = 0i32; - let mut success: libc::c_int = 0i32; - if !(imap.is_null() || (*imap).imap_server.is_null()) { - if 0 != (*imap).should_reconnect { + let mut r: libc::c_int = 0; + let mut success: libc::c_int = 0; + if !(imap.imap_server.is_null()) { + if 0 != imap.should_reconnect { unsetup_handle(imap); } - if !(*imap).etpan.is_null() { - success = 1i32 + if !imap.etpan.is_null() { + success = 1 } else { - (*imap).etpan = mailimap_new(0i32 as size_t, None); - mailimap_set_timeout((*imap).etpan, 10i32 as time_t); - if 0 != (*imap).server_flags & (0x100i32 | 0x400i32) { + imap.etpan = mailimap_new(0 as size_t, None); + mailimap_set_timeout(imap.etpan, 10 as time_t); + if 0 != imap.server_flags & (0x100 | 0x400) { r = mailimap_socket_connect( - (*imap).etpan, - (*imap).imap_server, - (*imap).imap_port as uint16_t, + imap.etpan, + imap.imap_server, + imap.imap_port as uint16_t, ); if 0 != dc_imap_is_error(imap, r) { dc_log_event_seq( - (*imap).context, + imap.context, Event::ERROR_NETWORK, - &mut (*imap).log_connect_errors as *mut libc::c_int, + &mut imap.log_connect_errors as *mut libc::c_int, b"Could not connect to IMAP-server %s:%i. (Error #%i)\x00" as *const u8 as *const libc::c_char, - (*imap).imap_server, - (*imap).imap_port as libc::c_int, + imap.imap_server, + imap.imap_port as libc::c_int, r as libc::c_int, ); current_block = 15811161807000851472; - } else if 0 != (*imap).server_flags & 0x100i32 { - r = mailimap_socket_starttls((*imap).etpan); + } else if 0 != imap.server_flags & 0x100 { + r = mailimap_socket_starttls(imap.etpan); if 0 != dc_imap_is_error(imap, r) { - dc_log_event_seq((*imap).context, Event::ERROR_NETWORK, - &mut (*imap).log_connect_errors as + dc_log_event_seq(imap.context, Event::ERROR_NETWORK, + &mut imap.log_connect_errors as *mut libc::c_int, b"Could not connect to IMAP-server %s:%i using STARTTLS. (Error #%i)\x00" as *const u8 as *const libc::c_char, - (*imap).imap_server, - (*imap).imap_port as libc::c_int, + imap.imap_server, + imap.imap_port as libc::c_int, r as libc::c_int); current_block = 15811161807000851472; } else { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"IMAP-server %s:%i STARTTLS-connected.\x00" as *const u8 as *const libc::c_char, - (*imap).imap_server, - (*imap).imap_port as libc::c_int, + imap.imap_server, + imap.imap_port as libc::c_int, ); current_block = 14763689060501151050; } } else { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"IMAP-server %s:%i connected.\x00" as *const u8 as *const libc::c_char, - (*imap).imap_server, - (*imap).imap_port as libc::c_int, + imap.imap_server, + imap.imap_port as libc::c_int, ); current_block = 14763689060501151050; } } else { - r = mailimap_ssl_connect( - (*imap).etpan, - (*imap).imap_server, - (*imap).imap_port as uint16_t, - ); + r = mailimap_ssl_connect(imap.etpan, imap.imap_server, imap.imap_port as uint16_t); if 0 != dc_imap_is_error(imap, r) { dc_log_event_seq( - (*imap).context, + imap.context, Event::ERROR_NETWORK, - &mut (*imap).log_connect_errors as *mut libc::c_int, + &mut imap.log_connect_errors as *mut libc::c_int, b"Could not connect to IMAP-server %s:%i using SSL. (Error #%i)\x00" as *const u8 as *const libc::c_char, - (*imap).imap_server, - (*imap).imap_port as libc::c_int, + imap.imap_server, + imap.imap_port as libc::c_int, r as libc::c_int, ); current_block = 15811161807000851472; } else { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"IMAP-server %s:%i SSL-connected.\x00" as *const u8 as *const libc::c_char, - (*imap).imap_server, - (*imap).imap_port as libc::c_int, + imap.imap_server, + imap.imap_port as libc::c_int, ); current_block = 14763689060501151050; } @@ -362,40 +347,32 @@ unsafe fn setup_handle_if_needed(mut imap: *mut dc_imap_t) -> libc::c_int { match current_block { 15811161807000851472 => {} _ => { - if 0 != (*imap).server_flags & 0x2i32 { + if 0 != imap.server_flags & 0x2 { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"IMAP-OAuth2 connect...\x00" as *const u8 as *const libc::c_char, ); - let mut access_token: *mut libc::c_char = dc_get_oauth2_access_token( - (*imap).context, - (*imap).addr, - (*imap).imap_pw, - 0i32, - ); - r = mailimap_oauth2_authenticate( - (*imap).etpan, - (*imap).imap_user, - access_token, - ); + let mut access_token: *mut libc::c_char = + dc_get_oauth2_access_token(imap.context, imap.addr, imap.imap_pw, 0); + r = mailimap_oauth2_authenticate(imap.etpan, imap.imap_user, access_token); if 0 != dc_imap_is_error(imap, r) { free(access_token as *mut libc::c_void); access_token = dc_get_oauth2_access_token( - (*imap).context, - (*imap).addr, - (*imap).imap_pw, - 0x1i32, + imap.context, + imap.addr, + imap.imap_pw, + 0x1, ); r = mailimap_oauth2_authenticate( - (*imap).etpan, - (*imap).imap_user, + imap.etpan, + imap.imap_user, access_token, ) } free(access_token as *mut libc::c_void); } else { - r = mailimap_login((*imap).etpan, (*imap).imap_user, (*imap).imap_pw) + r = mailimap_login(imap.etpan, imap.imap_user, imap.imap_pw) } if 0 != dc_imap_is_error(imap, r) { let mut msg: *mut libc::c_char = get_error_msg( @@ -404,37 +381,38 @@ unsafe fn setup_handle_if_needed(mut imap: *mut dc_imap_t) -> libc::c_int { r, ); dc_log_event_seq( - (*imap).context, + imap.context, Event::ERROR_NETWORK, - &mut (*imap).log_connect_errors as *mut libc::c_int, + &mut imap.log_connect_errors as *mut libc::c_int, b"%s\x00" as *const u8 as *const libc::c_char, msg, ); free(msg as *mut libc::c_void); } else { dc_log_event( - (*imap).context, + imap.context, Event::IMAP_CONNECTED, - 0i32, + 0, b"IMAP-login as %s ok.\x00" as *const u8 as *const libc::c_char, - (*imap).imap_user, + imap.imap_user, ); - success = 1i32 + success = 1 } } } } } - if success == 0i32 { + if success == 0 { unsetup_handle(imap); } - (*imap).should_reconnect = 0i32; - return success; + imap.should_reconnect = 0; + success } + unsafe fn get_error_msg( - mut imap: *mut dc_imap_t, - mut what_failed: *const libc::c_char, - mut code: libc::c_int, + imap: &mut dc_imap_t, + what_failed: *const libc::c_char, + code: libc::c_int, ) -> *mut libc::c_char { let mut stock: *mut libc::c_char = 0 as *mut libc::c_char; let mut msg: dc_strbuilder_t = dc_strbuilder_t { @@ -443,10 +421,10 @@ unsafe fn get_error_msg( free: 0, eos: 0 as *mut libc::c_char, }; - dc_strbuilder_init(&mut msg, 1000i32); + dc_strbuilder_init(&mut msg, 1000); match code { 28 => { - stock = dc_stock_str_repl_string((*imap).context, 60i32, (*imap).imap_user); + stock = dc_stock_str_repl_string(imap.context, 60, imap.imap_user); dc_strbuilder_cat(&mut msg, stock); } _ => { @@ -460,332 +438,323 @@ unsafe fn get_error_msg( } free(stock as *mut libc::c_void); stock = 0 as *mut libc::c_char; - if !(*(*imap).etpan).imap_response.is_null() { + if !(*imap.etpan).imap_response.is_null() { dc_strbuilder_cat(&mut msg, b"\n\n\x00" as *const u8 as *const libc::c_char); stock = dc_stock_str_repl_string2( - (*imap).context, - 61i32, - (*imap).imap_server, - (*(*imap).etpan).imap_response, + imap.context, + 61, + imap.imap_server, + (*imap.etpan).imap_response, ); dc_strbuilder_cat(&mut msg, stock); } free(stock as *mut libc::c_void); stock = 0 as *mut libc::c_char; - return msg.buf; + msg.buf } -pub unsafe fn dc_imap_is_error(mut imap: *mut dc_imap_t, mut code: libc::c_int) -> libc::c_int { + +pub unsafe fn dc_imap_is_error(imap: &mut dc_imap_t, code: libc::c_int) -> libc::c_int { if code == MAILIMAP_NO_ERROR as libc::c_int || code == MAILIMAP_NO_ERROR_AUTHENTICATED as libc::c_int || code == MAILIMAP_NO_ERROR_NON_AUTHENTICATED as libc::c_int { - return 0i32; + return 0; } if code == MAILIMAP_ERROR_STREAM as libc::c_int || code == MAILIMAP_ERROR_PARSE as libc::c_int { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"IMAP stream lost; we\'ll reconnect soon.\x00" as *const u8 as *const libc::c_char, ); - (*imap).should_reconnect = 1i32 + imap.should_reconnect = 1 } - return 1i32; + 1 } + pub unsafe extern "C" fn dc_imap_set_watch_folder( - mut imap: *mut dc_imap_t, - mut watch_folder: *const libc::c_char, + imap: &mut dc_imap_t, + watch_folder: *const libc::c_char, ) { - if imap.is_null() || watch_folder.is_null() { + if watch_folder.is_null() { return; } - free((*imap).watch_folder as *mut libc::c_void); - (*imap).watch_folder = dc_strdup(watch_folder); + free(imap.watch_folder as *mut libc::c_void); + imap.watch_folder = dc_strdup(watch_folder); } -pub unsafe fn dc_imap_is_connected(mut imap: *const dc_imap_t) -> libc::c_int { - return (!imap.is_null() && 0 != (*imap).connected) as libc::c_int; + +pub unsafe fn dc_imap_is_connected(imap: *const dc_imap_t) -> libc::c_int { + (0 != imap.connected) as libc::c_int } -pub unsafe fn dc_imap_fetch(mut imap: *mut dc_imap_t) -> libc::c_int { - let mut success: libc::c_int = 0i32; - if !(imap.is_null() || 0 == (*imap).connected) { + +pub unsafe fn dc_imap_fetch(imap: &mut dc_imap_t) -> libc::c_int { + let mut success: libc::c_int = 0; + if !(imap.is_null() || 0 == imap.connected) { setup_handle_if_needed(imap); - while fetch_from_single_folder(imap, (*imap).watch_folder) > 0i32 {} - success = 1i32 + while fetch_from_single_folder(imap, imap.watch_folder) > 0 {} + success = 1; } - return success; + success } + unsafe fn fetch_from_single_folder( - mut imap: *mut dc_imap_t, - mut folder: *const libc::c_char, + imap: &mut dc_imap_t, + folder: *const libc::c_char, ) -> libc::c_int { let mut current_block: u64; let mut r: libc::c_int = 0; - let mut uidvalidity: uint32_t = 0i32 as uint32_t; - let mut lastseenuid: uint32_t = 0i32 as uint32_t; - let mut new_lastseenuid: uint32_t = 0i32 as uint32_t; + let mut uidvalidity: uint32_t = 0 as uint32_t; + let mut lastseenuid: uint32_t = 0 as uint32_t; + let mut new_lastseenuid: uint32_t = 0 as uint32_t; let mut fetch_result: *mut clist = 0 as *mut clist; - let mut read_cnt: size_t = 0i32 as size_t; - let mut read_errors: size_t = 0i32 as size_t; + let mut read_cnt: size_t = 0 as size_t; + let mut read_errors: size_t = 0 as size_t; let mut cur: *mut clistiter = 0 as *mut clistiter; let mut set: *mut mailimap_set = 0 as *mut mailimap_set; - if !imap.is_null() { - if (*imap).etpan.is_null() { - dc_log_info( - (*imap).context, - 0i32, - b"Cannot fetch from \"%s\" - not connected.\x00" as *const u8 - as *const libc::c_char, - folder, - ); - } else if select_folder(imap, folder) == 0i32 { - dc_log_warning( - (*imap).context, - 0i32, - b"Cannot select folder %s for fetching.\x00" as *const u8 as *const libc::c_char, - folder, - ); - } else { - get_config_lastseenuid(imap, folder, &mut uidvalidity, &mut lastseenuid); - if uidvalidity != (*(*(*imap).etpan).imap_selection_info).sel_uidvalidity { - /* first time this folder is selected or UIDVALIDITY has changed, init lastseenuid and save it to config */ - if (*(*(*imap).etpan).imap_selection_info).sel_uidvalidity <= 0i32 as libc::c_uint { - dc_log_error( - (*imap).context, - 0i32, - b"Cannot get UIDVALIDITY for folder \"%s\".\x00" as *const u8 + if imap.etpan.is_null() { + dc_log_info( + imap.context, + 0, + b"Cannot fetch from \"%s\" - not connected.\x00" as *const u8 as *const libc::c_char, + folder, + ); + } else if select_folder(imap, folder) == 0 { + dc_log_warning( + imap.context, + 0, + b"Cannot select folder %s for fetching.\x00" as *const u8 as *const libc::c_char, + folder, + ); + } else { + get_config_lastseenuid(imap, folder, &mut uidvalidity, &mut lastseenuid); + if uidvalidity != (*(*imap.etpan).imap_selection_info).sel_uidvalidity { + /* first time this folder is selected or UIDVALIDITY has changed, init lastseenuid and save it to config */ + if (*(*imap.etpan).imap_selection_info).sel_uidvalidity <= 0 as libc::c_uint { + dc_log_error( + imap.context, + 0, + b"Cannot get UIDVALIDITY for folder \"%s\".\x00" as *const u8 + as *const libc::c_char, + folder, + ); + current_block = 17288151659885296046; + } else { + if 0 != (*(*imap.etpan).imap_selection_info).sel_has_exists() { + if (*(*imap.etpan).imap_selection_info).sel_exists <= 0 as libc::c_uint { + dc_log_info( + imap.context, + 0, + b"Folder \"%s\" is empty.\x00" as *const u8 as *const libc::c_char, + folder, + ); + if (*(*imap.etpan).imap_selection_info).sel_exists == 0 as libc::c_uint { + set_config_lastseenuid( + imap, + folder, + (*(*imap.etpan).imap_selection_info).sel_uidvalidity, + 0 as uint32_t, + ); + } + current_block = 17288151659885296046; + } else { + set = mailimap_set_new_single( + (*(*imap.etpan).imap_selection_info).sel_exists, + ); + current_block = 11057878835866523405; + } + } else { + dc_log_info( + imap.context, + 0, + b"EXISTS is missing for folder \"%s\", using fallback.\x00" as *const u8 as *const libc::c_char, folder, ); - current_block = 17288151659885296046; - } else { - if 0 != (*(*(*imap).etpan).imap_selection_info).sel_has_exists() { - if (*(*(*imap).etpan).imap_selection_info).sel_exists - <= 0i32 as libc::c_uint - { + set = mailimap_set_new_single(0 as uint32_t); + current_block = 11057878835866523405; + } + match current_block { + 17288151659885296046 => {} + _ => { + r = mailimap_fetch( + imap.etpan, + set, + imap.fetch_type_prefetch, + &mut fetch_result, + ); + if !set.is_null() { + mailimap_set_free(set); + set = 0 as *mut mailimap_set + } + if 0 != dc_imap_is_error(imap, r) || fetch_result.is_null() { + fetch_result = 0 as *mut clist; dc_log_info( - (*imap).context, - 0i32, - b"Folder \"%s\" is empty.\x00" as *const u8 as *const libc::c_char, + imap.context, + 0, + b"No result returned for folder \"%s\".\x00" as *const u8 + as *const libc::c_char, folder, ); - if (*(*(*imap).etpan).imap_selection_info).sel_exists - == 0i32 as libc::c_uint - { - set_config_lastseenuid( - imap, - folder, - (*(*(*imap).etpan).imap_selection_info).sel_uidvalidity, - 0i32 as uint32_t, - ); - } + /* this might happen if the mailbox is empty an EXISTS does not work */ current_block = 17288151659885296046; } else { - set = mailimap_set_new_single( - (*(*(*imap).etpan).imap_selection_info).sel_exists, - ); - current_block = 11057878835866523405; - } - } else { - dc_log_info( - (*imap).context, - 0i32, - b"EXISTS is missing for folder \"%s\", using fallback.\x00" as *const u8 - as *const libc::c_char, - folder, - ); - set = mailimap_set_new_single(0i32 as uint32_t); - current_block = 11057878835866523405; - } - match current_block { - 17288151659885296046 => {} - _ => { - r = mailimap_fetch( - (*imap).etpan, - set, - (*imap).fetch_type_prefetch, - &mut fetch_result, - ); - if !set.is_null() { - mailimap_set_free(set); - set = 0 as *mut mailimap_set - } - if 0 != dc_imap_is_error(imap, r) || fetch_result.is_null() { - fetch_result = 0 as *mut clist; + cur = (*fetch_result).first; + if cur.is_null() { dc_log_info( - (*imap).context, - 0i32, - b"No result returned for folder \"%s\".\x00" as *const u8 + imap.context, + 0, + b"Empty result returned for folder \"%s\".\x00" as *const u8 as *const libc::c_char, folder, ); /* this might happen if the mailbox is empty an EXISTS does not work */ current_block = 17288151659885296046; } else { - cur = (*fetch_result).first; - if cur.is_null() { - dc_log_info( - (*imap).context, - 0i32, - b"Empty result returned for folder \"%s\".\x00" as *const u8 + let mut msg_att: *mut mailimap_msg_att = (if !cur.is_null() { + (*cur).data + } else { + 0 as *mut libc::c_void + }) + as *mut mailimap_msg_att; + lastseenuid = peek_uid(msg_att); + if !fetch_result.is_null() { + mailimap_fetch_list_free(fetch_result); + fetch_result = 0 as *mut clist + } + if lastseenuid <= 0 as libc::c_uint { + dc_log_error( + imap.context, + 0, + b"Cannot get largest UID for folder \"%s\"\x00" as *const u8 as *const libc::c_char, folder, ); - /* this might happen if the mailbox is empty an EXISTS does not work */ current_block = 17288151659885296046; } else { - let mut msg_att: *mut mailimap_msg_att = (if !cur.is_null() { - (*cur).data - } else { - 0 as *mut libc::c_void - }) - as *mut mailimap_msg_att; - lastseenuid = peek_uid(msg_att); - if !fetch_result.is_null() { - mailimap_fetch_list_free(fetch_result); - fetch_result = 0 as *mut clist - } - if lastseenuid <= 0i32 as libc::c_uint { - dc_log_error( - (*imap).context, - 0i32, - b"Cannot get largest UID for folder \"%s\"\x00" - as *const u8 - as *const libc::c_char, - folder, - ); - current_block = 17288151659885296046; - } else { - if uidvalidity > 0i32 as libc::c_uint - && lastseenuid > 1i32 as libc::c_uint - { - lastseenuid = (lastseenuid as libc::c_uint) - .wrapping_sub(1i32 as libc::c_uint) - as uint32_t - as uint32_t - } - uidvalidity = - (*(*(*imap).etpan).imap_selection_info).sel_uidvalidity; - set_config_lastseenuid( - imap, - folder, - uidvalidity, - lastseenuid, - ); - dc_log_info( - (*imap).context, - 0i32, - b"lastseenuid initialized to %i for %s@%i\x00" - as *const u8 - as *const libc::c_char, - lastseenuid as libc::c_int, - folder, - uidvalidity as libc::c_int, - ); - current_block = 2516253395664191498; + if uidvalidity > 0 as libc::c_uint + && lastseenuid > 1 as libc::c_uint + { + lastseenuid = (lastseenuid as libc::c_uint) + .wrapping_sub(1 as libc::c_uint) + as uint32_t + as uint32_t } + uidvalidity = + (*(*imap.etpan).imap_selection_info).sel_uidvalidity; + set_config_lastseenuid(imap, folder, uidvalidity, lastseenuid); + dc_log_info( + imap.context, + 0, + b"lastseenuid initialized to %i for %s@%i\x00" as *const u8 + as *const libc::c_char, + lastseenuid as libc::c_int, + folder, + uidvalidity as libc::c_int, + ); + current_block = 2516253395664191498; } } } } } - } else { - current_block = 2516253395664191498; } - match current_block { - 17288151659885296046 => {} - _ => { - set = mailimap_set_new_interval( - lastseenuid.wrapping_add(1i32 as libc::c_uint), - 0i32 as uint32_t, - ); - r = mailimap_uid_fetch( - (*imap).etpan, - set, - (*imap).fetch_type_prefetch, - &mut fetch_result, - ); - if !set.is_null() { - mailimap_set_free(set); - set = 0 as *mut mailimap_set - } - if 0 != dc_imap_is_error(imap, r) || fetch_result.is_null() { - fetch_result = 0 as *mut clist; - if r == MAILIMAP_ERROR_PROTOCOL as libc::c_int { - dc_log_info( - (*imap).context, - 0i32, - b"Folder \"%s\" is empty\x00" as *const u8 as *const libc::c_char, - folder, - ); - } else { - /* the folder is simply empty, this is no error */ - dc_log_warning( - (*imap).context, - 0i32, - b"Cannot fetch message list from folder \"%s\".\x00" as *const u8 - as *const libc::c_char, - folder, - ); - } + } else { + current_block = 2516253395664191498; + } + match current_block { + 17288151659885296046 => {} + _ => { + set = mailimap_set_new_interval( + lastseenuid.wrapping_add(1 as libc::c_uint), + 0 as uint32_t, + ); + r = mailimap_uid_fetch( + imap.etpan, + set, + imap.fetch_type_prefetch, + &mut fetch_result, + ); + if !set.is_null() { + mailimap_set_free(set); + set = 0 as *mut mailimap_set + } + if 0 != dc_imap_is_error(imap, r) || fetch_result.is_null() { + fetch_result = 0 as *mut clist; + if r == MAILIMAP_ERROR_PROTOCOL as libc::c_int { + dc_log_info( + imap.context, + 0, + b"Folder \"%s\" is empty\x00" as *const u8 as *const libc::c_char, + folder, + ); } else { - cur = (*fetch_result).first; - while !cur.is_null() { - let mut msg_att_0: *mut mailimap_msg_att = (if !cur.is_null() { - (*cur).data - } else { - 0 as *mut libc::c_void - }) - as *mut mailimap_msg_att; - let mut cur_uid: uint32_t = peek_uid(msg_att_0); - if cur_uid > lastseenuid { - let mut rfc724_mid: *mut libc::c_char = - unquote_rfc724_mid(peek_rfc724_mid(msg_att_0)); - read_cnt = read_cnt.wrapping_add(1); - if 0 == (*imap).precheck_imf.expect("non-null function pointer")( - imap, rfc724_mid, folder, cur_uid, - ) { - if fetch_single_msg(imap, folder, cur_uid) == 0i32 { - dc_log_info((*imap).context, 0i32, - b"Read error for message %s from \"%s\", trying over later.\x00" - as *const u8 as - *const libc::c_char, - rfc724_mid, folder); - read_errors = read_errors.wrapping_add(1) - } - } else { - dc_log_info( - (*imap).context, - 0i32, - b"Skipping message %s from \"%s\" by precheck.\x00" - as *const u8 - as *const libc::c_char, - rfc724_mid, - folder, - ); + /* the folder is simply empty, this is no error */ + dc_log_warning( + imap.context, + 0, + b"Cannot fetch message list from folder \"%s\".\x00" as *const u8 + as *const libc::c_char, + folder, + ); + } + } else { + cur = (*fetch_result).first; + while !cur.is_null() { + let mut msg_att_0: *mut mailimap_msg_att = (if !cur.is_null() { + (*cur).data + } else { + 0 as *mut libc::c_void + }) + as *mut mailimap_msg_att; + let mut cur_uid: uint32_t = peek_uid(msg_att_0); + if cur_uid > lastseenuid { + let mut rfc724_mid: *mut libc::c_char = + unquote_rfc724_mid(peek_rfc724_mid(msg_att_0)); + read_cnt = read_cnt.wrapping_add(1); + if 0 == imap.precheck_imf.expect("non-null function pointer")( + imap, rfc724_mid, folder, cur_uid, + ) { + if fetch_single_msg(imap, folder, cur_uid) == 0 { + dc_log_info(imap.context, 0, + b"Read error for message %s from \"%s\", trying over later.\x00" + as *const u8 as + *const libc::c_char, + rfc724_mid, folder); + read_errors = read_errors.wrapping_add(1) } - if cur_uid > new_lastseenuid { - new_lastseenuid = cur_uid - } - free(rfc724_mid as *mut libc::c_void); - } - cur = if !cur.is_null() { - (*cur).next } else { - 0 as *mut clistcell_s + dc_log_info( + imap.context, + 0, + b"Skipping message %s from \"%s\" by precheck.\x00" as *const u8 + as *const libc::c_char, + rfc724_mid, + folder, + ); } + if cur_uid > new_lastseenuid { + new_lastseenuid = cur_uid + } + free(rfc724_mid as *mut libc::c_void); } - if 0 == read_errors && new_lastseenuid > 0i32 as libc::c_uint { - set_config_lastseenuid(imap, folder, uidvalidity, new_lastseenuid); + cur = if !cur.is_null() { + (*cur).next + } else { + 0 as *mut clistcell_s } } + if 0 == read_errors && new_lastseenuid > 0 as libc::c_uint { + set_config_lastseenuid(imap, folder, uidvalidity, new_lastseenuid); + } } } } } + /* done */ if 0 != read_errors { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"%i mails read from \"%s\" with %i errors.\x00" as *const u8 as *const libc::c_char, read_cnt as libc::c_int, folder, @@ -793,7 +762,7 @@ unsafe fn fetch_from_single_folder( ); } else { dc_log_info( - (*imap).context, + imap.context, 0i32, b"%i mails read from \"%s\".\x00" as *const u8 as *const libc::c_char, read_cnt as libc::c_int, @@ -804,13 +773,14 @@ unsafe fn fetch_from_single_folder( mailimap_fetch_list_free(fetch_result); fetch_result = 0 as *mut clist } - return read_cnt as libc::c_int; + read_cnt as libc::c_int } + unsafe fn set_config_lastseenuid( - mut imap: *mut dc_imap_t, - mut folder: *const libc::c_char, - mut uidvalidity: uint32_t, - mut lastseenuid: uint32_t, + imap: &mut dc_imap_t, + folder: *const libc::c_char, + uidvalidity: uint32_t, + lastseenuid: uint32_t, ) { let mut key: *mut libc::c_char = dc_mprintf( b"imap.mailbox.%s\x00" as *const u8 as *const libc::c_char, @@ -821,11 +791,12 @@ unsafe fn set_config_lastseenuid( uidvalidity, lastseenuid, ); - (*imap).set_config.expect("non-null function pointer")(imap, key, val); + imap.set_config.expect("non-null function pointer")(imap, key, val); free(val as *mut libc::c_void); free(key as *mut libc::c_void); } -unsafe fn peek_rfc724_mid(mut msg_att: *mut mailimap_msg_att) -> *const libc::c_char { + +unsafe fn peek_rfc724_mid(msg_att: *mut mailimap_msg_att) -> *const libc::c_char { if msg_att.is_null() { return 0 as *const libc::c_char; } @@ -859,25 +830,28 @@ unsafe fn peek_rfc724_mid(mut msg_att: *mut mailimap_msg_att) -> *const libc::c_ } return 0 as *const libc::c_char; } -unsafe fn unquote_rfc724_mid(mut in_0: *const libc::c_char) -> *mut libc::c_char { + +unsafe fn unquote_rfc724_mid(in_0: *const libc::c_char) -> *mut libc::c_char { /* remove < and > from the given message id */ let mut out: *mut libc::c_char = dc_strdup(in_0); let mut out_len: libc::c_int = strlen(out) as libc::c_int; - if out_len > 2i32 { + if out_len > 2 { if *out.offset(0isize) as libc::c_int == '<' as i32 { *out.offset(0isize) = ' ' as i32 as libc::c_char } - if *out.offset((out_len - 1i32) as isize) as libc::c_int == '>' as i32 { - *out.offset((out_len - 1i32) as isize) = ' ' as i32 as libc::c_char + if *out.offset((out_len - 1) as isize) as libc::c_int == '>' as i32 { + *out.offset((out_len - 1) as isize) = ' ' as i32 as libc::c_char } dc_trim(out); } - return out; + out } + /* ****************************************************************************** * Fetch Messages ******************************************************************************/ -unsafe fn peek_uid(mut msg_att: *mut mailimap_msg_att) -> uint32_t { + +unsafe fn peek_uid(msg_att: *mut mailimap_msg_att) -> uint32_t { /* search the UID in a list of attributes returned by a FETCH command */ let mut iter1: *mut clistiter = 0 as *mut clistiter; iter1 = (*(*msg_att).att_list).first; @@ -900,106 +874,106 @@ unsafe fn peek_uid(mut msg_att: *mut mailimap_msg_att) -> uint32_t { 0 as *mut clistcell_s } } - return 0i32 as uint32_t; + 0 as uint32_t } + unsafe fn fetch_single_msg( - mut imap: *mut dc_imap_t, - mut folder: *const libc::c_char, - mut server_uid: uint32_t, + imap: &mut dc_imap_t, + folder: *const libc::c_char, + server_uid: uint32_t, ) -> libc::c_int { let mut msg_att: *mut mailimap_msg_att = 0 as *mut mailimap_msg_att; /* the function returns: 0 the caller should try over again later or 1 if the messages should be treated as received, the caller should not try to read the message again (even if no database entries are returned) */ let mut msg_content: *mut libc::c_char = 0 as *mut libc::c_char; - let mut msg_bytes: size_t = 0i32 as size_t; - let mut r: libc::c_int = 0i32; - let mut retry_later: libc::c_int = 0i32; - let mut deleted: libc::c_int = 0i32; - let mut flags: uint32_t = 0i32 as uint32_t; + let mut msg_bytes: size_t = 0 as size_t; + let mut r: libc::c_int = 0; + let mut retry_later: libc::c_int = 0; + let mut deleted: libc::c_int = 0; + let mut flags: uint32_t = 0 as uint32_t; let mut fetch_result: *mut clist = 0 as *mut clist; let mut cur: *mut clistiter = 0 as *mut clistiter; - if !imap.is_null() { - if !(*imap).etpan.is_null() { - let mut set: *mut mailimap_set = mailimap_set_new_single(server_uid); - r = mailimap_uid_fetch( - (*imap).etpan, - set, - (*imap).fetch_type_body, - &mut fetch_result, + if !imap.etpan.is_null() { + let mut set: *mut mailimap_set = mailimap_set_new_single(server_uid); + r = mailimap_uid_fetch(imap.etpan, set, imap.fetch_type_body, &mut fetch_result); + if !set.is_null() { + mailimap_set_free(set); + set = 0 as *mut mailimap_set + } + if 0 != dc_imap_is_error(imap, r) || fetch_result.is_null() { + fetch_result = 0 as *mut clist; + dc_log_warning( + imap.context, + 0, + b"Error #%i on fetching message #%i from folder \"%s\"; retry=%i.\x00" as *const u8 + as *const libc::c_char, + r as libc::c_int, + server_uid as libc::c_int, + folder, + imap.should_reconnect as libc::c_int, ); - if !set.is_null() { - mailimap_set_free(set); - set = 0 as *mut mailimap_set + if 0 != imap.should_reconnect { + retry_later = 1 } - if 0 != dc_imap_is_error(imap, r) || fetch_result.is_null() { - fetch_result = 0 as *mut clist; + } else { + /* this is an error that should be recovered; the caller should try over later to fetch the message again (if there is no such message, we simply get an empty result) */ + cur = (*fetch_result).first; + if cur.is_null() { dc_log_warning( - (*imap).context, - 0i32, - b"Error #%i on fetching message #%i from folder \"%s\"; retry=%i.\x00" - as *const u8 as *const libc::c_char, - r as libc::c_int, + imap.context, + 0, + b"Message #%i does not exist in folder \"%s\".\x00" as *const u8 + as *const libc::c_char, server_uid as libc::c_int, folder, - (*imap).should_reconnect as libc::c_int, ); - if 0 != (*imap).should_reconnect { - retry_later = 1i32 - } } else { - /* this is an error that should be recovered; the caller should try over later to fetch the message again (if there is no such message, we simply get an empty result) */ - cur = (*fetch_result).first; - if cur.is_null() { - dc_log_warning( - (*imap).context, - 0i32, - b"Message #%i does not exist in folder \"%s\".\x00" as *const u8 - as *const libc::c_char, - server_uid as libc::c_int, - folder, - ); + /* server response is fine, however, there is no such message, do not try to fetch the message again */ + msg_att = (if !cur.is_null() { + (*cur).data } else { - /* server response is fine, however, there is no such message, do not try to fetch the message again */ - msg_att = (if !cur.is_null() { - (*cur).data - } else { - 0 as *mut libc::c_void - }) as *mut mailimap_msg_att; - peek_body( - msg_att, - &mut msg_content, - &mut msg_bytes, - &mut flags, - &mut deleted, + 0 as *mut libc::c_void + }) as *mut mailimap_msg_att; + peek_body( + msg_att, + &mut msg_content, + &mut msg_bytes, + &mut flags, + &mut deleted, + ); + if !(msg_content.is_null() || msg_bytes <= 0 || 0 != deleted) { + /* dc_log_warning(imap->context, 0, "Message #%i in folder \"%s\" is empty or deleted.", (int)server_uid, folder); -- this is a quite usual situation, do not print a warning */ + imap.receive_imf.expect("non-null function pointer")( + imap, + msg_content, + msg_bytes, + folder, + server_uid, + flags, ); - if !(msg_content.is_null() || msg_bytes <= 0 || 0 != deleted) { - /* dc_log_warning(imap->context, 0, "Message #%i in folder \"%s\" is empty or deleted.", (int)server_uid, folder); -- this is a quite usual situation, do not print a warning */ - (*imap).receive_imf.expect("non-null function pointer")( - imap, - msg_content, - msg_bytes, - folder, - server_uid, - flags, - ); - } } } } } + if !fetch_result.is_null() { mailimap_fetch_list_free(fetch_result); fetch_result = 0 as *mut clist } - return if 0 != retry_later { 0i32 } else { 1i32 }; + if 0 != retry_later { + 0 + } else { + 1 + } } + unsafe fn peek_body( - mut msg_att: *mut mailimap_msg_att, - mut p_msg: *mut *mut libc::c_char, - mut p_msg_bytes: *mut size_t, - mut flags: *mut uint32_t, - mut deleted: *mut libc::c_int, + msg_att: *mut mailimap_msg_att, + p_msg: *mut *mut libc::c_char, + p_msg_bytes: *mut size_t, + flags: *mut uint32_t, + deleted: *mut libc::c_int, ) { if msg_att.is_null() { return; @@ -1033,7 +1007,7 @@ unsafe fn peek_body( if (*flag).fl_type == MAILIMAP_FLAG_SEEN as libc::c_int { *flags = (*flags as libc::c_long | 0x1) as uint32_t } else if (*flag).fl_type == MAILIMAP_FLAG_DELETED as libc::c_int { - *deleted = 1i32 + *deleted = 1 } } } @@ -1051,7 +1025,7 @@ unsafe fn peek_body( *p_msg = (*(*(*item).att_data.att_static).att_data.att_body_section).sec_body_part; *p_msg_bytes = - (*(*(*item).att_data.att_static).att_data.att_body_section).sec_length + (*(*(*item).att_data.att_static).att_data.att_body_section).sec_length; } } } @@ -1059,33 +1033,34 @@ unsafe fn peek_body( (*iter1).next } else { 0 as *mut clistcell_s - } + }; } } + unsafe fn get_config_lastseenuid( - mut imap: *mut dc_imap_t, - mut folder: *const libc::c_char, - mut uidvalidity: *mut uint32_t, - mut lastseenuid: *mut uint32_t, + imap: &mut dc_imap_t, + folder: *const libc::c_char, + uidvalidity: *mut uint32_t, + lastseenuid: *mut uint32_t, ) { - *uidvalidity = 0i32 as uint32_t; - *lastseenuid = 0i32 as uint32_t; + *uidvalidity = 0 as uint32_t; + *lastseenuid = 0 as uint32_t; let mut key: *mut libc::c_char = dc_mprintf( b"imap.mailbox.%s\x00" as *const u8 as *const libc::c_char, folder, ); let mut val1: *mut libc::c_char = - (*imap).get_config.expect("non-null function pointer")(imap, key, 0 as *const libc::c_char); + imap.get_config.expect("non-null function pointer")(imap, key, 0 as *const libc::c_char); let mut val2: *mut libc::c_char = 0 as *mut libc::c_char; let mut val3: *mut libc::c_char = 0 as *mut libc::c_char; if !val1.is_null() { val2 = strchr(val1, ':' as i32); if !val2.is_null() { - *val2 = 0i32 as libc::c_char; + *val2 = 0 as libc::c_char; val2 = val2.offset(1isize); val3 = strchr(val2, ':' as i32); if !val3.is_null() { - *val3 = 0i32 as libc::c_char + *val3 = 0 as libc::c_char } *uidvalidity = atol(val1) as uint32_t; *lastseenuid = atol(val2) as uint32_t @@ -1094,174 +1069,175 @@ unsafe fn get_config_lastseenuid( free(val1 as *mut libc::c_void); free(key as *mut libc::c_void); } + /* ****************************************************************************** * Handle folders ******************************************************************************/ -unsafe fn select_folder(mut imap: *mut dc_imap_t, mut folder: *const libc::c_char) -> libc::c_int { - if imap.is_null() { - return 0i32; - } - if (*imap).etpan.is_null() { - *(*imap).selected_folder.offset(0isize) = 0i32 as libc::c_char; - (*imap).selected_folder_needs_expunge = 0i32; - return 0i32; + +unsafe fn select_folder(imap: &mut dc_imap_t, folder: *const libc::c_char) -> libc::c_int { + if imap.etpan.is_null() { + *imap.selected_folder.offset(0isize) = 0 as libc::c_char; + imap.selected_folder_needs_expunge = 0; + return 0; } if !folder.is_null() && 0 != *folder.offset(0isize) as libc::c_int - && strcmp((*imap).selected_folder, folder) == 0i32 + && strcmp(imap.selected_folder, folder) == 0 { - return 1i32; + return 1; } - if 0 != (*imap).selected_folder_needs_expunge { - if 0 != *(*imap).selected_folder.offset(0isize) { + if 0 != imap.selected_folder_needs_expunge { + if 0 != *imap.selected_folder.offset(0isize) { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Expunge messages in \"%s\".\x00" as *const u8 as *const libc::c_char, - (*imap).selected_folder, + imap.selected_folder, ); - mailimap_close((*imap).etpan); + mailimap_close(imap.etpan); } - (*imap).selected_folder_needs_expunge = 0i32 + imap.selected_folder_needs_expunge = 0 } if !folder.is_null() { - let mut r: libc::c_int = mailimap_select((*imap).etpan, folder); - if 0 != dc_imap_is_error(imap, r) || (*(*imap).etpan).imap_selection_info.is_null() { + let mut r: libc::c_int = mailimap_select(imap.etpan, folder); + if 0 != dc_imap_is_error(imap, r) || (*imap.etpan).imap_selection_info.is_null() { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot select folder; code=%i, imap_response=%s\x00" as *const u8 as *const libc::c_char, r, - if !(*(*imap).etpan).imap_response.is_null() { - (*(*imap).etpan).imap_response + if !(*imap.etpan).imap_response.is_null() { + (*imap.etpan).imap_response } else { b"\x00" as *const u8 as *const libc::c_char }, ); - *(*imap).selected_folder.offset(0isize) = 0i32 as libc::c_char; - return 0i32; + *imap.selected_folder.offset(0isize) = 0 as libc::c_char; + return 0; } } - free((*imap).selected_folder as *mut libc::c_void); - (*imap).selected_folder = dc_strdup(folder); - return 1i32; + free(imap.selected_folder as *mut libc::c_void); + imap.selected_folder = dc_strdup(folder); + 1 } -pub unsafe fn dc_imap_idle(mut imap: *mut dc_imap_t) { + +pub unsafe fn dc_imap_idle(imap: &mut dc_imap_t) { let mut current_block: u64; - let mut r: libc::c_int = 0i32; - let mut r2: libc::c_int = 0i32; - if !imap.is_null() { - if 0 != (*imap).can_idle { - setup_handle_if_needed(imap); - if (*imap).idle_set_up == 0i32 - && !(*imap).etpan.is_null() - && !(*(*imap).etpan).imap_stream.is_null() - { - r = mailstream_setup_idle((*(*imap).etpan).imap_stream); - if 0 != dc_imap_is_error(imap, r) { - dc_log_warning( - (*imap).context, - 0i32, - b"IMAP-IDLE: Cannot setup.\x00" as *const u8 as *const libc::c_char, - ); - fake_idle(imap); - current_block = 14832935472441733737; - } else { - (*imap).idle_set_up = 1i32; - current_block = 17965632435239708295; - } + let mut r: libc::c_int = 0; + let mut r2: libc::c_int = 0; + if 0 != imap.can_idle { + setup_handle_if_needed(imap); + if imap.idle_set_up == 0 && !imap.etpan.is_null() && !(*imap.etpan).imap_stream.is_null() + { + r = mailstream_setup_idle((*imap.etpan).imap_stream); + if 0 != dc_imap_is_error(imap, r) { + dc_log_warning( + imap.context, + 0, + b"IMAP-IDLE: Cannot setup.\x00" as *const u8 as *const libc::c_char, + ); + fake_idle(imap); + current_block = 14832935472441733737; } else { + imap.idle_set_up = 1; current_block = 17965632435239708295; } - match current_block { - 14832935472441733737 => {} - _ => { - if 0 == (*imap).idle_set_up || 0 == select_folder(imap, (*imap).watch_folder) { + } else { + current_block = 17965632435239708295; + } + match current_block { + 14832935472441733737 => {} + _ => { + if 0 == imap.idle_set_up || 0 == select_folder(imap, imap.watch_folder) { + dc_log_warning( + imap.context, + 0, + b"IMAP-IDLE not setup.\x00" as *const u8 as *const libc::c_char, + ); + fake_idle(imap); + } else { + r = mailimap_idle(imap.etpan); + if 0 != dc_imap_is_error(imap, r) { dc_log_warning( - (*imap).context, - 0i32, - b"IMAP-IDLE not setup.\x00" as *const u8 as *const libc::c_char, + imap.context, + 0, + b"IMAP-IDLE: Cannot start.\x00" as *const u8 as *const libc::c_char, ); fake_idle(imap); } else { - r = mailimap_idle((*imap).etpan); - if 0 != dc_imap_is_error(imap, r) { - dc_log_warning( - (*imap).context, - 0i32, - b"IMAP-IDLE: Cannot start.\x00" as *const u8 as *const libc::c_char, + r = mailstream_wait_idle((*imap.etpan).imap_stream, 23 * 60); + r2 = mailimap_idle_done(imap.etpan); + if r == MAILSTREAM_IDLE_ERROR as libc::c_int + || r == MAILSTREAM_IDLE_CANCELLED as libc::c_int + { + dc_log_info( + imap.context, + 0, + b"IMAP-IDLE wait cancelled, r=%i, r2=%i; we\'ll reconnect soon.\x00" + as *const u8 + as *const libc::c_char, + r, + r2, + ); + imap.should_reconnect = 1 + } else if r == MAILSTREAM_IDLE_INTERRUPTED as libc::c_int { + dc_log_info( + imap.context, + 0, + b"IMAP-IDLE interrupted.\x00" as *const u8 as *const libc::c_char, + ); + } else if r == MAILSTREAM_IDLE_HASDATA as libc::c_int { + dc_log_info( + imap.context, + 0, + b"IMAP-IDLE has data.\x00" as *const u8 as *const libc::c_char, + ); + } else if r == MAILSTREAM_IDLE_TIMEOUT as libc::c_int { + dc_log_info( + imap.context, + 0, + b"IMAP-IDLE timeout.\x00" as *const u8 as *const libc::c_char, ); - fake_idle(imap); } else { - r = mailstream_wait_idle((*(*imap).etpan).imap_stream, 23i32 * 60i32); - r2 = mailimap_idle_done((*imap).etpan); - if r == MAILSTREAM_IDLE_ERROR as libc::c_int - || r == MAILSTREAM_IDLE_CANCELLED as libc::c_int - { - dc_log_info((*imap).context, 0i32, - b"IMAP-IDLE wait cancelled, r=%i, r2=%i; we\'ll reconnect soon.\x00" - as *const u8 as - *const libc::c_char, r, r2); - (*imap).should_reconnect = 1i32 - } else if r == MAILSTREAM_IDLE_INTERRUPTED as libc::c_int { - dc_log_info( - (*imap).context, - 0i32, - b"IMAP-IDLE interrupted.\x00" as *const u8 - as *const libc::c_char, - ); - } else if r == MAILSTREAM_IDLE_HASDATA as libc::c_int { - dc_log_info( - (*imap).context, - 0i32, - b"IMAP-IDLE has data.\x00" as *const u8 as *const libc::c_char, - ); - } else if r == MAILSTREAM_IDLE_TIMEOUT as libc::c_int { - dc_log_info( - (*imap).context, - 0i32, - b"IMAP-IDLE timeout.\x00" as *const u8 as *const libc::c_char, - ); - } else { - dc_log_warning( - (*imap).context, - 0i32, - b"IMAP-IDLE returns unknown value r=%i, r2=%i.\x00" as *const u8 - as *const libc::c_char, - r, - r2, - ); - } + dc_log_warning( + imap.context, + 0, + b"IMAP-IDLE returns unknown value r=%i, r2=%i.\x00" as *const u8 + as *const libc::c_char, + r, + r2, + ); } } } } - } else { - fake_idle(imap); } - }; + } else { + fake_idle(imap); + } } -unsafe fn fake_idle(mut imap: *mut dc_imap_t) { + +unsafe fn fake_idle(imap: &mut dc_imap_t) { /* Idle using timeouts. This is also needed if we're not yet configured - in this case, we're waiting for a configure job */ let mut fake_idle_start_time: time_t = time(0 as *mut time_t); - let mut seconds_to_wait: time_t = 0i32 as time_t; + let mut seconds_to_wait: time_t = 0 as time_t; dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"IMAP-fake-IDLEing...\x00" as *const u8 as *const libc::c_char, ); - let mut do_fake_idle: libc::c_int = 1i32; + let mut do_fake_idle: libc::c_int = 1; while 0 != do_fake_idle { seconds_to_wait = - (if time(0 as *mut time_t) - fake_idle_start_time < (3i32 * 60i32) as libc::c_long { - 5i32 + (if time(0 as *mut time_t) - fake_idle_start_time < (3 * 60) as libc::c_long { + 5 } else { - 60i32 + 60 }) as time_t; - pthread_mutex_lock(&mut (*imap).watch_condmutex); - let mut r: libc::c_int = 0i32; + pthread_mutex_lock(&mut imap.watch_condmutex); + let mut r: libc::c_int = 0; let mut wakeup_at: timespec = timespec { tv_sec: 0, tv_nsec: 0, @@ -1272,70 +1248,68 @@ unsafe fn fake_idle(mut imap: *mut dc_imap_t) { ::std::mem::size_of::(), ); wakeup_at.tv_sec = time(0 as *mut time_t) + seconds_to_wait; - while (*imap).watch_condflag == 0i32 && r == 0i32 { + while imap.watch_condflag == 0 && r == 0 { r = pthread_cond_timedwait( - &mut (*imap).watch_cond, - &mut (*imap).watch_condmutex, + &mut imap.watch_cond, + &mut imap.watch_condmutex, &mut wakeup_at, ); - if 0 != (*imap).watch_condflag { - do_fake_idle = 0i32 + if 0 != imap.watch_condflag { + do_fake_idle = 0 } } - (*imap).watch_condflag = 0i32; - pthread_mutex_unlock(&mut (*imap).watch_condmutex); - if do_fake_idle == 0i32 { + imap.watch_condflag = 0; + pthread_mutex_unlock(&mut imap.watch_condmutex); + if do_fake_idle == 0 { return; } if 0 != setup_handle_if_needed(imap) { - if 0 != fetch_from_single_folder(imap, (*imap).watch_folder) { - do_fake_idle = 0i32 + if 0 != fetch_from_single_folder(imap, imap.watch_folder) { + do_fake_idle = 0 } } else { - fake_idle_start_time = 0i32 as time_t + fake_idle_start_time = 0 as time_t } } } -pub unsafe fn dc_imap_interrupt_idle(mut imap: *mut dc_imap_t) { - if imap.is_null() { - return; - } - if 0 != (*imap).can_idle { - if !(*imap).etpan.is_null() && !(*(*imap).etpan).imap_stream.is_null() { - mailstream_interrupt_idle((*(*imap).etpan).imap_stream); + +pub unsafe fn dc_imap_interrupt_idle(imap: &mut dc_imap_t) { + if 0 != imap.can_idle { + if !imap.etpan.is_null() && !(*imap.etpan).imap_stream.is_null() { + mailstream_interrupt_idle((*imap.etpan).imap_stream); } } - pthread_mutex_lock(&mut (*imap).watch_condmutex); - (*imap).watch_condflag = 1i32; - pthread_cond_signal(&mut (*imap).watch_cond); - pthread_mutex_unlock(&mut (*imap).watch_condmutex); + pthread_mutex_lock(&mut imap.watch_condmutex); + imap.watch_condflag = 1; + pthread_cond_signal(&mut imap.watch_cond); + pthread_mutex_unlock(&mut imap.watch_condmutex); } + pub unsafe fn dc_imap_move( - mut imap: *mut dc_imap_t, - mut folder: *const libc::c_char, - mut uid: uint32_t, - mut dest_folder: *const libc::c_char, - mut dest_uid: *mut uint32_t, + imap: &mut dc_imap_t, + folder: *const libc::c_char, + uid: uint32_t, + _folder: *const libc::c_char, + dest_uid: *mut uint32_t, ) -> dc_imap_res { let mut current_block: u64; let mut res: dc_imap_res = DC_RETRY_LATER; - let mut r: libc::c_int = 0i32; + let mut r: libc::c_int = 0; let mut set: *mut mailimap_set = mailimap_set_new_single(uid); - let mut res_uid: uint32_t = 0i32 as uint32_t; + let mut res_uid: uint32_t = 0 as uint32_t; let mut res_setsrc: *mut mailimap_set = 0 as *mut mailimap_set; let mut res_setdest: *mut mailimap_set = 0 as *mut mailimap_set; - if imap.is_null() - || folder.is_null() - || uid == 0i32 as libc::c_uint + if folder.is_null() + || uid == 0 as libc::c_uint || dest_folder.is_null() || dest_uid.is_null() || set.is_null() { res = DC_FAILED - } else if strcasecmp(folder, dest_folder) == 0i32 { + } else if strcasecmp(folder, dest_folder) == 0 { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Skip moving message; message %s/%i is already in %s...\x00" as *const u8 as *const libc::c_char, folder, @@ -1345,24 +1319,24 @@ pub unsafe fn dc_imap_move( res = DC_ALREADY_DONE } else { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Moving message %s/%i to %s...\x00" as *const u8 as *const libc::c_char, folder, uid as libc::c_int, dest_folder, ); - if select_folder(imap, folder) == 0i32 { + if select_folder(imap, folder) == 0 { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot select folder %s for moving message.\x00" as *const u8 as *const libc::c_char, folder, ); } else { r = mailimap_uidplus_uid_move( - (*imap).etpan, + imap.etpan, set, dest_folder, &mut res_uid, @@ -1379,8 +1353,8 @@ pub unsafe fn dc_imap_move( res_setdest = 0 as *mut mailimap_set } dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot move message, fallback to COPY/DELETE %s/%i to %s...\x00" as *const u8 as *const libc::c_char, folder, @@ -1388,7 +1362,7 @@ pub unsafe fn dc_imap_move( dest_folder, ); r = mailimap_uidplus_uid_copy( - (*imap).etpan, + imap.etpan, set, dest_folder, &mut res_uid, @@ -1397,21 +1371,21 @@ pub unsafe fn dc_imap_move( ); if 0 != dc_imap_is_error(imap, r) { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot copy message.\x00" as *const u8 as *const libc::c_char, ); current_block = 14415637129417834392; } else { - if add_flag(imap, uid, mailimap_flag_new_deleted()) == 0i32 { + if add_flag(imap, uid, mailimap_flag_new_deleted()) == 0 { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot mark message as \"Deleted\".\x00" as *const u8 as *const libc::c_char, ); } - (*imap).selected_folder_needs_expunge = 1i32; + imap.selected_folder_needs_expunge = 1; current_block = 1538046216550696469; } } else { @@ -1450,7 +1424,7 @@ pub unsafe fn dc_imap_move( res_setdest = 0 as *mut mailimap_set } return (if res as libc::c_uint == DC_RETRY_LATER as libc::c_int as libc::c_uint { - (if 0 != (*imap).should_reconnect { + (if 0 != imap.should_reconnect { DC_RETRY_LATER as libc::c_int } else { DC_FAILED as libc::c_int @@ -1459,19 +1433,20 @@ pub unsafe fn dc_imap_move( res as libc::c_uint }) as dc_imap_res; } + unsafe fn add_flag( - mut imap: *mut dc_imap_t, - mut server_uid: uint32_t, - mut flag: *mut mailimap_flag, + imap: &mut dc_imap_t, + server_uid: uint32_t, + flag: *mut mailimap_flag, ) -> libc::c_int { let mut flag_list: *mut mailimap_flag_list = 0 as *mut mailimap_flag_list; let mut store_att_flags: *mut mailimap_store_att_flags = 0 as *mut mailimap_store_att_flags; let mut set: *mut mailimap_set = mailimap_set_new_single(server_uid); - if !(imap.is_null() || (*imap).etpan.is_null()) { + if !(imap.etpan.is_null()) { flag_list = mailimap_flag_list_new_empty(); mailimap_flag_list_add(flag_list, flag); store_att_flags = mailimap_store_att_flags_new_add_flags(flag_list); - mailimap_uid_store((*imap).etpan, set, store_att_flags); + mailimap_uid_store(imap.etpan, set, store_att_flags); } if !store_att_flags.is_null() { mailimap_store_att_flags_free(store_att_flags); @@ -1480,40 +1455,41 @@ unsafe fn add_flag( mailimap_set_free(set); set = 0 as *mut mailimap_set } - if 0 != (*imap).should_reconnect { - 0i32 + if 0 != imap.should_reconnect { + 0 } else { - 1i32 + 1 } } + pub unsafe fn dc_imap_set_seen( - mut imap: *mut dc_imap_t, - mut folder: *const libc::c_char, - mut uid: uint32_t, + imap: &mut dc_imap_t, + folder: *const libc::c_char, + uid: uint32_t, ) -> dc_imap_res { let mut res: dc_imap_res = DC_RETRY_LATER; - if imap.is_null() || folder.is_null() || uid == 0i32 as libc::c_uint { + if folder.is_null() || uid == 0 as libc::c_uint { res = DC_FAILED - } else if !(*imap).etpan.is_null() { + } else if !imap.etpan.is_null() { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Marking message %s/%i as seen...\x00" as *const u8 as *const libc::c_char, folder, uid as libc::c_int, ); - if select_folder(imap, folder) == 0i32 { + if select_folder(imap, folder) == 0 { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot select folder %s for setting SEEN flag.\x00" as *const u8 as *const libc::c_char, folder, ); - } else if add_flag(imap, uid, mailimap_flag_new_seen()) == 0i32 { + } else if add_flag(imap, uid, mailimap_flag_new_seen()) == 0 { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot mark message as seen.\x00" as *const u8 as *const libc::c_char, ); } else { @@ -1521,7 +1497,7 @@ pub unsafe fn dc_imap_set_seen( } } return (if res as libc::c_uint == DC_RETRY_LATER as libc::c_int as libc::c_uint { - (if 0 != (*imap).should_reconnect { + (if 0 != imap.should_reconnect { DC_RETRY_LATER as libc::c_int } else { DC_FAILED as libc::c_int @@ -1530,10 +1506,11 @@ pub unsafe fn dc_imap_set_seen( res as libc::c_uint }) as dc_imap_res; } + pub unsafe fn dc_imap_set_mdnsent( - mut imap: *mut dc_imap_t, - mut folder: *const libc::c_char, - mut uid: uint32_t, + imap: &mut dc_imap_t, + folder: *const libc::c_char, + uid: uint32_t, ) -> dc_imap_res { let mut can_create_flag: libc::c_int = 0; let mut current_block: u64; @@ -1541,20 +1518,20 @@ pub unsafe fn dc_imap_set_mdnsent( let mut res: dc_imap_res = DC_RETRY_LATER; let mut set: *mut mailimap_set = mailimap_set_new_single(uid); let mut fetch_result: *mut clist = 0 as *mut clist; - if imap.is_null() || folder.is_null() || uid == 0i32 as libc::c_uint || set.is_null() { + if folder.is_null() || uid == 0 as libc::c_uint || set.is_null() { res = DC_FAILED - } else if !(*imap).etpan.is_null() { + } else if !imap.etpan.is_null() { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Marking message %s/%i as $MDNSent...\x00" as *const u8 as *const libc::c_char, folder, uid as libc::c_int, ); - if select_folder(imap, folder) == 0i32 { + if select_folder(imap, folder) == 0 { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot select folder %s for setting $MDNSent flag.\x00" as *const u8 as *const libc::c_char, folder, @@ -1562,14 +1539,14 @@ pub unsafe fn dc_imap_set_mdnsent( } else { /* Check if the folder can handle the `$MDNSent` flag (see RFC 3503). If so, and not set: set the flags and return this information. If the folder cannot handle the `$MDNSent` flag, we risk duplicated MDNs; it's up to the receiving MUA to handle this then (eg. Delta Chat has no problem with this). */ - can_create_flag = 0i32; - if !(*(*imap).etpan).imap_selection_info.is_null() - && !(*(*(*imap).etpan).imap_selection_info) + can_create_flag = 0; + if !(*imap.etpan).imap_selection_info.is_null() + && !(*(*imap.etpan).imap_selection_info) .sel_perm_flags .is_null() { let mut iter: *mut clistiter = 0 as *mut clistiter; - iter = (*(*(*(*imap).etpan).imap_selection_info).sel_perm_flags).first; + iter = (*(*(*imap.etpan).imap_selection_info).sel_perm_flags).first; while !iter.is_null() { let mut fp: *mut mailimap_flag_perm = (if !iter.is_null() { (*iter).data @@ -1579,7 +1556,7 @@ pub unsafe fn dc_imap_set_mdnsent( as *mut mailimap_flag_perm; if !fp.is_null() { if (*fp).fl_type == MAILIMAP_FLAG_PERM_ALL as libc::c_int { - can_create_flag = 1i32; + can_create_flag = 1; break; } else if (*fp).fl_type == MAILIMAP_FLAG_PERM_FLAG as libc::c_int && !(*fp).fl_flag.is_null() @@ -1590,9 +1567,9 @@ pub unsafe fn dc_imap_set_mdnsent( && strcmp( (*fl).fl_data.fl_keyword, b"$MDNSent\x00" as *const u8 as *const libc::c_char, - ) == 0i32 + ) == 0 { - can_create_flag = 1i32; + can_create_flag = 1; break; } } @@ -1605,12 +1582,8 @@ pub unsafe fn dc_imap_set_mdnsent( } } if 0 != can_create_flag { - let mut r: libc::c_int = mailimap_uid_fetch( - (*imap).etpan, - set, - (*imap).fetch_type_flags, - &mut fetch_result, - ); + let mut r: libc::c_int = + mailimap_uid_fetch(imap.etpan, set, imap.fetch_type_flags, &mut fetch_result); if 0 != dc_imap_is_error(imap, r) || fetch_result.is_null() { fetch_result = 0 as *mut clist } else { @@ -1632,7 +1605,7 @@ pub unsafe fn dc_imap_set_mdnsent( mailimap_flag_new_flag_keyword(dc_strdup( b"$MDNSent\x00" as *const u8 as *const libc::c_char, )), - ) == 0i32 + ) == 0 { current_block = 17044610252497760460; } else { @@ -1643,8 +1616,8 @@ pub unsafe fn dc_imap_set_mdnsent( 17044610252497760460 => {} _ => { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, if res as libc::c_uint == DC_SUCCESS as libc::c_int as libc::c_uint { @@ -1663,8 +1636,8 @@ pub unsafe fn dc_imap_set_mdnsent( } else { res = DC_SUCCESS; dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot store $MDNSent flags, risk sending duplicate MDN.\x00" as *const u8 as *const libc::c_char, ); @@ -1679,22 +1652,24 @@ pub unsafe fn dc_imap_set_mdnsent( mailimap_fetch_list_free(fetch_result); fetch_result = 0 as *mut clist } - return (if res as libc::c_uint == DC_RETRY_LATER as libc::c_int as libc::c_uint { - (if 0 != (*imap).should_reconnect { + + (if res as libc::c_uint == DC_RETRY_LATER as libc::c_int as libc::c_uint { + (if 0 != imap.should_reconnect { DC_RETRY_LATER as libc::c_int } else { DC_FAILED as libc::c_int }) as libc::c_uint } else { res as libc::c_uint - }) as dc_imap_res; + }) as dc_imap_res } + unsafe fn peek_flag_keyword( - mut msg_att: *mut mailimap_msg_att, - mut flag_keyword: *const libc::c_char, + msg_att: *mut mailimap_msg_att, + flag_keyword: *const libc::c_char, ) -> libc::c_int { if msg_att.is_null() || (*msg_att).att_list.is_null() || flag_keyword.is_null() { - return 0i32; + return 0; } let mut iter1: *mut clistiter = 0 as *mut clistiter; let mut iter2: *mut clistiter = 0 as *mut clistiter; @@ -1723,9 +1698,9 @@ unsafe fn peek_flag_keyword( if !flag.is_null() { if (*flag).fl_type == MAILIMAP_FLAG_KEYWORD as libc::c_int && !(*flag).fl_data.fl_keyword.is_null() - && strcmp((*flag).fl_data.fl_keyword, flag_keyword) == 0i32 + && strcmp((*flag).fl_data.fl_keyword, flag_keyword) == 0 { - return 1i32; + return 1; } } } @@ -1744,41 +1719,41 @@ unsafe fn peek_flag_keyword( 0 as *mut clistcell_s } } - return 0i32; + 0 } + /* only returns 0 on connection problems; we should try later again in this case */ pub unsafe fn dc_imap_delete_msg( - mut imap: *mut dc_imap_t, - mut rfc724_mid: *const libc::c_char, - mut folder: *const libc::c_char, - mut server_uid: uint32_t, + imap: &mut dc_imap_t, + rfc724_mid: *const libc::c_char, + folder: *const libc::c_char, + server_uid: uint32_t, ) -> libc::c_int { - let mut success: libc::c_int = 0i32; - let mut r: libc::c_int = 0i32; + let mut success: libc::c_int = 0; + let mut r: libc::c_int = 0; let mut fetch_result: *mut clist = 0 as *mut clist; let mut is_rfc724_mid: *mut libc::c_char = 0 as *mut libc::c_char; let mut new_folder: *mut libc::c_char = 0 as *mut libc::c_char; - if imap.is_null() - || rfc724_mid.is_null() + if rfc724_mid.is_null() || folder.is_null() - || *folder.offset(0isize) as libc::c_int == 0i32 - || server_uid == 0i32 as libc::c_uint + || *folder.offset(0isize) as libc::c_int == 0 + || server_uid == 0 as libc::c_uint { - success = 1i32 + success = 1 } else { dc_log_info( - (*imap).context, - 0i32, + imap.context, + 0, b"Marking message \"%s\", %s/%i for deletion...\x00" as *const u8 as *const libc::c_char, rfc724_mid, folder, server_uid as libc::c_int, ); - if select_folder(imap, folder) == 0i32 { + if select_folder(imap, folder) == 0 { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot select folder %s for deleting message.\x00" as *const u8 as *const libc::c_char, folder, @@ -1787,12 +1762,7 @@ pub unsafe fn dc_imap_delete_msg( let mut cur: *mut clistiter = 0 as *mut clistiter; let mut is_quoted_rfc724_mid: *const libc::c_char = 0 as *const libc::c_char; let mut set: *mut mailimap_set = mailimap_set_new_single(server_uid); - r = mailimap_uid_fetch( - (*imap).etpan, - set, - (*imap).fetch_type_prefetch, - &mut fetch_result, - ); + r = mailimap_uid_fetch(imap.etpan, set, imap.fetch_type_prefetch, &mut fetch_result); if !set.is_null() { mailimap_set_free(set); set = 0 as *mut mailimap_set @@ -1800,14 +1770,14 @@ pub unsafe fn dc_imap_delete_msg( if 0 != dc_imap_is_error(imap, r) || fetch_result.is_null() { fetch_result = 0 as *mut clist; dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot delete on IMAP, %s/%i not found.\x00" as *const u8 as *const libc::c_char, folder, server_uid as libc::c_int, ); - server_uid = 0i32 as uint32_t + server_uid = 0 as uint32_t } cur = (*fetch_result).first; if cur.is_null() @@ -1825,29 +1795,29 @@ pub unsafe fn dc_imap_delete_msg( is_rfc724_mid = unquote_rfc724_mid(is_quoted_rfc724_mid); is_rfc724_mid.is_null() } - || strcmp(is_rfc724_mid, rfc724_mid) != 0i32 + || strcmp(is_rfc724_mid, rfc724_mid) != 0 { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot delete on IMAP, %s/%i does not match %s.\x00" as *const u8 as *const libc::c_char, folder, server_uid as libc::c_int, rfc724_mid, ); - server_uid = 0i32 as uint32_t + server_uid = 0 as uint32_t } /* mark the message for deletion */ - if add_flag(imap, server_uid, mailimap_flag_new_deleted()) == 0i32 { + if add_flag(imap, server_uid, mailimap_flag_new_deleted()) == 0 { dc_log_warning( - (*imap).context, - 0i32, + imap.context, + 0, b"Cannot mark message as \"Deleted\".\x00" as *const u8 as *const libc::c_char, ); } else { - (*imap).selected_folder_needs_expunge = 1i32; - success = 1i32 + imap.selected_folder_needs_expunge = 1; + success = 1 } } } @@ -1857,9 +1827,10 @@ pub unsafe fn dc_imap_delete_msg( } free(is_rfc724_mid as *mut libc::c_void); free(new_folder as *mut libc::c_void); - return if 0 != success { - 1i32 + + 0 != success { + 1 } else { dc_imap_is_connected(imap) - }; + } } diff --git a/src/dc_imex.rs b/src/dc_imex.rs index f72850c8e..539e1eadf 100644 --- a/src/dc_imex.rs +++ b/src/dc_imex.rs @@ -26,7 +26,7 @@ use crate::x::*; // param1 is a directory where the backup is written to // param1 is the file with the backup to import pub unsafe fn dc_imex( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut what: libc::c_int, mut param1: *const libc::c_char, mut param2: *const libc::c_char, @@ -40,7 +40,7 @@ pub unsafe fn dc_imex( dc_param_unref(param); } pub unsafe fn dc_imex_has_backup( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut dir_name: *const libc::c_char, ) -> *mut libc::c_char { let mut ret: *mut libc::c_char = 0 as *mut libc::c_char; @@ -117,7 +117,7 @@ pub unsafe fn dc_imex_has_backup( return ret; } pub unsafe fn dc_check_password( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut test_pw: *const libc::c_char, ) -> libc::c_int { /* Check if the given password matches the configured mail_pw. @@ -145,7 +145,7 @@ pub unsafe fn dc_check_password( dc_loginparam_unref(loginparam); return success; } -pub unsafe fn dc_initiate_key_transfer(mut context: *mut dc_context_t) -> *mut libc::c_char { +pub unsafe fn dc_initiate_key_transfer(mut context: &dc_context_t) -> *mut libc::c_char { let mut current_block: u64; let mut success: libc::c_int = 0i32; let mut setup_code: *mut libc::c_char = 0 as *mut libc::c_char; @@ -247,7 +247,7 @@ pub unsafe fn dc_initiate_key_transfer(mut context: *mut dc_context_t) -> *mut l return setup_code; } pub unsafe extern "C" fn dc_render_setup_file( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut passphrase: *const libc::c_char, ) -> *mut libc::c_char { let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; @@ -335,7 +335,7 @@ pub unsafe extern "C" fn dc_render_setup_file( free(self_addr as *mut libc::c_void); return ret_setupfilecontent; } -pub unsafe fn dc_create_setup_code(_context: *mut dc_context_t) -> *mut libc::c_char { +pub unsafe fn dc_create_setup_code(_context: &dc_context_t) -> *mut libc::c_char { let mut random_val: uint16_t = 0i32 as uint16_t; let mut i: libc::c_int = 0i32; let mut ret: dc_strbuilder_t = dc_strbuilder_t { @@ -370,7 +370,7 @@ pub unsafe fn dc_create_setup_code(_context: *mut dc_context_t) -> *mut libc::c_ return ret.buf; } pub unsafe fn dc_continue_key_transfer( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut msg_id: uint32_t, mut setup_code: *const libc::c_char, ) -> libc::c_int { @@ -449,7 +449,7 @@ pub unsafe fn dc_continue_key_transfer( return success; } unsafe fn set_self_key( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut armored: *const libc::c_char, mut set_default: libc::c_int, ) -> libc::c_int { @@ -567,7 +567,7 @@ unsafe fn set_self_key( return success; } pub unsafe fn dc_decrypt_setup_file( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut passphrase: *const libc::c_char, mut filecontent: *const libc::c_char, ) -> *mut libc::c_char { @@ -631,7 +631,7 @@ pub unsafe fn dc_decrypt_setup_file( return payload; } pub unsafe fn dc_normalize_setup_code( - _context: *mut dc_context_t, + _context: &dc_context_t, in_0: *const libc::c_char, ) -> *mut libc::c_char { if in_0.is_null() { @@ -670,7 +670,7 @@ pub unsafe fn dc_normalize_setup_code( } return out.buf; } -pub unsafe fn dc_job_do_DC_JOB_IMEX_IMAP(mut context: *mut dc_context_t, mut job: *mut dc_job_t) { +pub unsafe fn dc_job_do_DC_JOB_IMEX_IMAP(mut context: &dc_context_t, mut job: *mut dc_job_t) { let mut current_block: u64; let mut success: libc::c_int = 0i32; let mut ongoing_allocated_here: libc::c_int = 0i32; @@ -933,7 +933,7 @@ pub unsafe fn dc_job_do_DC_JOB_IMEX_IMAP(mut context: *mut dc_context_t, mut job * Import backup ******************************************************************************/ unsafe fn import_backup( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut backup_to_import: *const libc::c_char, ) -> libc::c_int { let mut current_block: u64; @@ -1074,10 +1074,7 @@ unsafe fn import_backup( ******************************************************************************/ /* the FILE_PROGRESS macro calls the callback with the permille of files processed. The macro avoids weird values of 0% or 100% while still working. */ -unsafe fn export_backup( - mut context: *mut dc_context_t, - mut dir: *const libc::c_char, -) -> libc::c_int { +unsafe fn export_backup(mut context: &dc_context_t, mut dir: *const libc::c_char) -> libc::c_int { let mut current_block: u64; let mut success: libc::c_int = 0i32; let mut closed: libc::c_int = 0i32; @@ -1360,7 +1357,7 @@ unsafe fn import_self_keys( Maybe we should make the "default" key handlong also a little bit smarter (currently, the last imported key is the standard key unless it contains the string "legacy" in its name) */ let mut imported_cnt: libc::c_int = 0i32; - let mut dir_handle: *mut DIR = 0 as *mut DIR; + let mut dir_handle: &DIR = 0 as *mut DIR; let mut dir_entry: *mut dirent = 0 as *mut dirent; let mut suffix: *mut libc::c_char = 0 as *mut libc::c_char; let mut path_plus_name: *mut libc::c_char = 0 as *mut libc::c_char; @@ -1489,7 +1486,7 @@ unsafe fn export_self_keys( ) -> libc::c_int { let mut success: libc::c_int = 0i32; let mut export_errors: libc::c_int = 0i32; - let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; + let mut stmt: &sqlite3_stmt = 0 as *mut sqlite3_stmt; let mut id: libc::c_int = 0i32; let mut is_default: libc::c_int = 0i32; let mut public_key: *mut dc_key_t = dc_key_new(); @@ -1532,7 +1529,7 @@ unsafe fn export_key_to_asc_file( mut is_default: libc::c_int, ) -> libc::c_int { let mut success: libc::c_int = 0i32; - let mut file_name: *mut libc::c_char = 0 as *mut libc::c_char; + let mut file_name: &libc::c_char = 0 as *mut libc::c_char; if 0 != is_default { file_name = dc_mprintf( b"%s/%s-key-default.asc\x00" as *const u8 as *const libc::c_char, diff --git a/src/dc_job.rs b/src/dc_job.rs index 89e20f239..0662900a2 100644 --- a/src/dc_job.rs +++ b/src/dc_job.rs @@ -45,7 +45,7 @@ pub struct dc_job_t { pub pending_error: *mut libc::c_char, } -pub unsafe fn dc_perform_imap_jobs(mut context: *mut dc_context_t) { +pub unsafe fn dc_perform_imap_jobs(mut context: &dc_context_t) { dc_log_info( context, 0i32, @@ -66,7 +66,7 @@ pub unsafe fn dc_perform_imap_jobs(mut context: *mut dc_context_t) { ); } unsafe fn dc_job_perform( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut thread: libc::c_int, mut probe_network: libc::c_int, ) { @@ -244,7 +244,7 @@ unsafe fn dc_job_perform( free(job.pending_error as *mut libc::c_void); sqlite3_finalize(select_stmt); } -unsafe fn dc_job_delete(mut context: *mut dc_context_t, mut job: *const dc_job_t) { +unsafe fn dc_job_delete(mut context: &dc_context_t, mut job: *const dc_job_t) { let mut delete_stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"DELETE FROM jobs WHERE id=?;\x00" as *const u8 as *const libc::c_char, @@ -268,7 +268,7 @@ unsafe fn get_backoff_time_offset(mut c_tries: libc::c_int) -> time_t { } return seconds; } -unsafe fn dc_job_update(mut context: *mut dc_context_t, mut job: *const dc_job_t) { +unsafe fn dc_job_update(mut context: &dc_context_t, mut job: *const dc_job_t) { let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"UPDATE jobs SET desired_timestamp=?, tries=?, param=? WHERE id=?;\x00" as *const u8 @@ -281,7 +281,7 @@ unsafe fn dc_job_update(mut context: *mut dc_context_t, mut job: *const dc_job_t sqlite3_step(stmt); sqlite3_finalize(stmt); } -unsafe fn dc_suspend_smtp_thread(mut context: *mut dc_context_t, mut suspend: libc::c_int) { +unsafe fn dc_suspend_smtp_thread(mut context: &dc_context_t, mut suspend: libc::c_int) { pthread_mutex_lock(&mut (*context).smtpidle_condmutex); (*context).smtp_suspended = suspend; pthread_mutex_unlock(&mut (*context).smtpidle_condmutex); @@ -297,7 +297,7 @@ unsafe fn dc_suspend_smtp_thread(mut context: *mut dc_context_t, mut suspend: li } }; } -unsafe extern "C" fn dc_job_do_DC_JOB_SEND(mut context: *mut dc_context_t, mut job: *mut dc_job_t) { +unsafe extern "C" fn dc_job_do_DC_JOB_SEND(mut context: &dc_context_t, mut job: *mut dc_job_t) { let mut current_block: u64; let mut filename: *mut libc::c_char = 0 as *mut libc::c_char; let mut buf: *mut libc::c_void = 0 as *mut libc::c_void; @@ -446,7 +446,7 @@ pub unsafe fn dc_job_try_again_later( free((*job).pending_error as *mut libc::c_void); (*job).pending_error = dc_strdup_keep_null(pending_error); } -unsafe fn dc_job_do_DC_JOB_MOVE_MSG(mut context: *mut dc_context_t, mut job: *mut dc_job_t) { +unsafe fn dc_job_do_DC_JOB_MOVE_MSG(mut context: &dc_context_t, mut job: *mut dc_job_t) { let mut current_block: u64; let mut msg: *mut dc_msg_t = dc_msg_new_untyped(context); let mut dest_folder: *mut libc::c_char = 0 as *mut libc::c_char; @@ -530,7 +530,7 @@ unsafe fn dc_job_do_DC_JOB_MOVE_MSG(mut context: *mut dc_context_t, mut job: *mu /* ****************************************************************************** * IMAP-jobs ******************************************************************************/ -unsafe fn connect_to_inbox(mut context: *mut dc_context_t) -> libc::c_int { +unsafe fn connect_to_inbox(mut context: &dc_context_t) -> libc::c_int { let mut ret_connected: libc::c_int = 0i32; ret_connected = dc_connect_to_configured_imap(context, (*context).inbox); if !(0 == ret_connected) { @@ -542,7 +542,7 @@ unsafe fn connect_to_inbox(mut context: *mut dc_context_t) -> libc::c_int { return ret_connected; } unsafe fn dc_job_do_DC_JOB_MARKSEEN_MDN_ON_IMAP( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut job: *mut dc_job_t, ) { let mut current_block: u64; @@ -599,7 +599,7 @@ unsafe fn dc_job_do_DC_JOB_MARKSEEN_MDN_ON_IMAP( free(dest_folder as *mut libc::c_void); } unsafe fn dc_job_do_DC_JOB_MARKSEEN_MSG_ON_IMAP( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut job: *mut dc_job_t, ) { let mut current_block: u64; @@ -741,7 +741,7 @@ unsafe fn dc_job_do_DC_JOB_MARKSEEN_MSG_ON_IMAP( } dc_msg_unref(msg); } -unsafe fn dc_send_mdn(mut context: *mut dc_context_t, mut msg_id: uint32_t) { +unsafe fn dc_send_mdn(mut context: &dc_context_t, mut msg_id: uint32_t) { let mut mimefactory: dc_mimefactory_t = dc_mimefactory_t { from_addr: 0 as *mut libc::c_char, from_displayname: 0 as *mut libc::c_char, @@ -762,7 +762,7 @@ unsafe fn dc_send_mdn(mut context: *mut dc_context_t, mut msg_id: uint32_t) { out_gossiped: 0, out_last_added_location_id: 0, error: 0 as *mut libc::c_char, - context: 0 as *mut dc_context_t, + context: 0 as &dc_context_t, }; dc_mimefactory_init(&mut mimefactory, context); if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { @@ -787,7 +787,7 @@ unsafe fn dc_send_mdn(mut context: *mut dc_context_t, mut msg_id: uint32_t) { * @return 1=success, 0=error */ unsafe fn dc_add_smtp_job( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut action: libc::c_int, mut mimefactory: *mut dc_mimefactory_t, ) -> libc::c_int { @@ -851,7 +851,7 @@ unsafe fn dc_add_smtp_job( return success; } pub unsafe fn dc_job_add( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut action: libc::c_int, mut foreign_id: libc::c_int, mut param: *const libc::c_char, @@ -899,7 +899,7 @@ pub unsafe fn dc_job_add( dc_interrupt_smtp_idle(context); }; } -pub unsafe fn dc_interrupt_smtp_idle(mut context: *mut dc_context_t) { +pub unsafe fn dc_interrupt_smtp_idle(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { dc_log_warning( context, @@ -919,7 +919,7 @@ pub unsafe fn dc_interrupt_smtp_idle(mut context: *mut dc_context_t) { pthread_cond_signal(&mut (*context).smtpidle_cond); pthread_mutex_unlock(&mut (*context).smtpidle_condmutex); } -pub unsafe fn dc_interrupt_imap_idle(mut context: *mut dc_context_t) { +pub unsafe fn dc_interrupt_imap_idle(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint || (*context).inbox.is_null() @@ -941,10 +941,7 @@ pub unsafe fn dc_interrupt_imap_idle(mut context: *mut dc_context_t) { drop(l); dc_imap_interrupt_idle((*context).inbox); } -unsafe fn dc_job_do_DC_JOB_DELETE_MSG_ON_IMAP( - mut context: *mut dc_context_t, - mut job: *mut dc_job_t, -) { +unsafe fn dc_job_do_DC_JOB_DELETE_MSG_ON_IMAP(mut context: &dc_context_t, mut job: *mut dc_job_t) { let mut current_block: u64; let mut delete_from_server: libc::c_int = 1i32; let mut msg: *mut dc_msg_t = dc_msg_new_untyped(context); @@ -1008,7 +1005,7 @@ pub unsafe fn dc_job_kill_action(mut context: *mut dc_context_t, mut action: lib if context.is_null() { return; } - let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( + let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"DELETE FROM jobs WHERE action=?;\x00" as *const u8 as *const libc::c_char, ); @@ -1055,7 +1052,7 @@ pub unsafe fn dc_perform_imap_fetch(mut context: *mut dc_context_t) { clock().wrapping_sub(start) as libc::c_double * 1000.0f64 / 1000000i32 as libc::c_double, ); } -pub unsafe fn dc_perform_imap_idle(mut context: *mut dc_context_t) { +pub unsafe fn dc_perform_imap_idle(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return; } @@ -1084,7 +1081,7 @@ pub unsafe fn dc_perform_imap_idle(mut context: *mut dc_context_t) { b"INBOX-IDLE ended.\x00" as *const u8 as *const libc::c_char, ); } -pub unsafe fn dc_perform_mvbox_fetch(mut context: *mut dc_context_t) { +pub unsafe fn dc_perform_mvbox_fetch(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return; } @@ -1095,7 +1092,7 @@ pub unsafe fn dc_perform_mvbox_fetch(mut context: *mut dc_context_t) { ); dc_jobthread_fetch(&mut (*context).mvbox_thread, use_network); } -pub unsafe fn dc_perform_mvbox_idle(mut context: *mut dc_context_t) { +pub unsafe fn dc_perform_mvbox_idle(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return; } @@ -1106,7 +1103,7 @@ pub unsafe fn dc_perform_mvbox_idle(mut context: *mut dc_context_t) { ); dc_jobthread_idle(&mut (*context).mvbox_thread, use_network); } -pub unsafe fn dc_interrupt_mvbox_idle(mut context: *mut dc_context_t) { +pub unsafe fn dc_interrupt_mvbox_idle(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { dc_log_warning( context, @@ -1117,7 +1114,7 @@ pub unsafe fn dc_interrupt_mvbox_idle(mut context: *mut dc_context_t) { } dc_jobthread_interrupt_idle(&mut (*context).mvbox_thread); } -pub unsafe fn dc_perform_sentbox_fetch(mut context: *mut dc_context_t) { +pub unsafe fn dc_perform_sentbox_fetch(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return; } @@ -1128,7 +1125,7 @@ pub unsafe fn dc_perform_sentbox_fetch(mut context: *mut dc_context_t) { ); dc_jobthread_fetch(&mut (*context).sentbox_thread, use_network); } -pub unsafe fn dc_perform_sentbox_idle(mut context: *mut dc_context_t) { +pub unsafe fn dc_perform_sentbox_idle(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { return; } @@ -1139,7 +1136,7 @@ pub unsafe fn dc_perform_sentbox_idle(mut context: *mut dc_context_t) { ); dc_jobthread_idle(&mut (*context).sentbox_thread, use_network); } -pub unsafe fn dc_interrupt_sentbox_idle(mut context: *mut dc_context_t) { +pub unsafe fn dc_interrupt_sentbox_idle(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { dc_log_warning( context, @@ -1150,7 +1147,7 @@ pub unsafe fn dc_interrupt_sentbox_idle(mut context: *mut dc_context_t) { } dc_jobthread_interrupt_idle(&mut (*context).sentbox_thread); } -pub unsafe fn dc_perform_smtp_jobs(mut context: *mut dc_context_t) { +pub unsafe fn dc_perform_smtp_jobs(mut context: &dc_context_t) { pthread_mutex_lock(&mut (*context).smtpidle_condmutex); let mut probe_smtp_network: libc::c_int = (*context).probe_smtp_network; (*context).probe_smtp_network = 0i32; @@ -1181,7 +1178,7 @@ pub unsafe fn dc_perform_smtp_jobs(mut context: *mut dc_context_t) { (*context).smtp_doing_jobs = 0i32; pthread_mutex_unlock(&mut (*context).smtpidle_condmutex); } -pub unsafe fn dc_perform_smtp_idle(mut context: *mut dc_context_t) { +pub unsafe fn dc_perform_smtp_idle(mut context: &dc_context_t) { if context.is_null() || (*context).magic != 0x11a11807i32 as libc::c_uint { dc_log_warning( context, @@ -1210,7 +1207,7 @@ pub unsafe fn dc_perform_smtp_idle(mut context: *mut dc_context_t) { tv_nsec: 0, }; memset( - &mut wakeup_at as *mut timespec as *mut libc::c_void, + &mut wakeup_at as ×pec as *mut libc::c_void, 0, ::std::mem::size_of::(), ); @@ -1244,7 +1241,7 @@ unsafe fn get_next_wakeup_time(mut context: *mut dc_context_t, mut thread: libc: wakeup_time = sqlite3_column_int(stmt, 0i32) as time_t } if wakeup_time == 0i32 as libc::c_long { - wakeup_time = time(0 as *mut time_t) + (10i32 * 60i32) as libc::c_long + wakeup_time = time(0 as &time_t) + (10i32 * 60i32) as libc::c_long } sqlite3_finalize(stmt); return wakeup_time; @@ -1262,11 +1259,11 @@ pub unsafe fn dc_maybe_network(mut context: *mut dc_context_t) { dc_interrupt_sentbox_idle(context); } pub unsafe fn dc_job_action_exists( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut action: libc::c_int, ) -> libc::c_int { let mut job_exists: libc::c_int = 0i32; - let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; + let mut stmt: &sqlite3_stmt = 0 as *mut sqlite3_stmt; stmt = dc_sqlite3_prepare( (*context).sql, b"SELECT id FROM jobs WHERE action=?;\x00" as *const u8 as *const libc::c_char, @@ -1280,7 +1277,7 @@ pub unsafe fn dc_job_action_exists( pub unsafe fn dc_job_send_msg(mut context: *mut dc_context_t, mut msg_id: uint32_t) -> libc::c_int { let mut success: libc::c_int = 0i32; let mut mimefactory: dc_mimefactory_t = dc_mimefactory_t { - from_addr: 0 as *mut libc::c_char, + from_addr: 0 as &libc::c_char, from_displayname: 0 as *mut libc::c_char, selfstatus: 0 as *mut libc::c_char, recipients_names: 0 as *mut clist, @@ -1319,7 +1316,7 @@ pub unsafe fn dc_job_send_msg(mut context: *mut dc_context_t, mut msg_id: uint32 || (*mimefactory.msg).type_0 == 50i32 || (*mimefactory.msg).type_0 == 60i32 { - let mut pathNfilename: *mut libc::c_char = dc_param_get( + let mut pathNfilename: &libc::c_char = dc_param_get( (*mimefactory.msg).param, 'f' as i32, 0 as *const libc::c_char, diff --git a/src/dc_key.rs b/src/dc_key.rs index 89923a3d9..d301ef585 100644 --- a/src/dc_key.rs +++ b/src/dc_key.rs @@ -149,7 +149,7 @@ pub unsafe fn dc_key_set_from_base64( pub unsafe fn dc_key_set_from_file( mut key: *mut dc_key_t, mut pathNfilename: *const libc::c_char, - mut context: *mut dc_context_t, + mut context: &dc_context_t, ) -> libc::c_int { let mut current_block: u64; let mut buf: *mut libc::c_char = 0 as *mut libc::c_char; @@ -465,7 +465,7 @@ pub unsafe fn dc_key_render_asc( pub unsafe fn dc_key_render_asc_to_file( mut key: *const dc_key_t, mut file: *const libc::c_char, - mut context: *mut dc_context_t, + mut context: &dc_context_t, ) -> libc::c_int { let mut success: libc::c_int = 0i32; let mut file_content: *mut libc::c_char = 0 as *mut libc::c_char; diff --git a/src/dc_keyhistory.rs b/src/dc_keyhistory.rs index 5a7adbfd6..a83fb888e 100644 --- a/src/dc_keyhistory.rs +++ b/src/dc_keyhistory.rs @@ -5,8 +5,8 @@ use crate::types::*; /* yes: uppercase */ /* library private: key-history */ -pub unsafe fn dc_add_to_keyhistory( - _context: *mut dc_context_t, +pub fn dc_add_to_keyhistory( + _context: &dc_context_t, _rfc724_mid: *const libc::c_char, _sending_time: time_t, _addr: *const libc::c_char, diff --git a/src/dc_location.rs b/src/dc_location.rs index b3e1a56c1..c88b6a62f 100644 --- a/src/dc_location.rs +++ b/src/dc_location.rs @@ -42,7 +42,7 @@ pub struct dc_kml_t { // location streaming pub unsafe fn dc_send_locations_to_chat( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut seconds: libc::c_int, ) { @@ -126,13 +126,13 @@ pub unsafe fn dc_send_locations_to_chat( /* ****************************************************************************** * job to send locations out to all chats that want them ******************************************************************************/ -unsafe fn schedule_MAYBE_SEND_LOCATIONS(mut context: *mut dc_context_t, mut flags: libc::c_int) { +unsafe fn schedule_MAYBE_SEND_LOCATIONS(mut context: &dc_context_t, mut flags: libc::c_int) { if 0 != flags & 0x1i32 || 0 == dc_job_action_exists(context, 5005i32) { dc_job_add(context, 5005i32, 0i32, 0 as *const libc::c_char, 60i32); }; } pub unsafe extern "C" fn dc_is_sending_locations_to_chat( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, ) -> libc::c_int { let mut is_sending_locations: libc::c_int = 0i32; @@ -162,7 +162,7 @@ pub unsafe extern "C" fn dc_is_sending_locations_to_chat( return is_sending_locations; } pub unsafe fn dc_set_location( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut latitude: libc::c_double, mut longitude: libc::c_double, mut accuracy: libc::c_double, @@ -212,7 +212,7 @@ pub unsafe fn dc_set_location( return continue_streaming; } pub unsafe fn dc_get_locations( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut contact_id: uint32_t, mut timestamp_from: time_t, @@ -294,7 +294,7 @@ unsafe fn is_marker(mut txt: *const libc::c_char) -> libc::c_int { } return 0i32; } -pub unsafe fn dc_delete_all_locations(mut context: *mut dc_context_t) { +pub unsafe fn dc_delete_all_locations(mut context: &dc_context_t) { 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( @@ -312,7 +312,7 @@ pub unsafe fn dc_delete_all_locations(mut context: *mut dc_context_t) { sqlite3_finalize(stmt); } pub unsafe fn dc_get_location_kml( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut last_added_location_id: *mut uint32_t, ) -> *mut libc::c_char { @@ -449,7 +449,7 @@ unsafe fn get_kml_timestamp(mut utc: time_t) -> *mut libc::c_char { } pub unsafe fn dc_get_message_kml( - context: *const dc_context_t, + context: &dc_context_t, timestamp: time_t, latitude: libc::c_double, longitude: libc::c_double, @@ -485,7 +485,7 @@ pub unsafe fn dc_get_message_kml( } pub unsafe fn dc_set_kml_sent_timestamp( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut timestamp: time_t, ) { @@ -501,7 +501,7 @@ pub unsafe fn dc_set_kml_sent_timestamp( sqlite3_finalize(stmt); } pub unsafe fn dc_set_msg_location_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut msg_id: uint32_t, mut location_id: uint32_t, ) { @@ -516,7 +516,7 @@ pub unsafe fn dc_set_msg_location_id( sqlite3_finalize(stmt); } pub unsafe fn dc_save_locations( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut contact_id: uint32_t, mut locations: *const dc_array_t, @@ -579,7 +579,7 @@ pub unsafe fn dc_save_locations( return newest_location_id; } pub unsafe fn dc_kml_parse( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut content: *const libc::c_char, mut content_bytes: size_t, ) -> *mut dc_kml_t { @@ -762,10 +762,7 @@ pub unsafe fn dc_kml_unref(mut kml: *mut dc_kml_t) { free((*kml).addr as *mut libc::c_void); free(kml as *mut libc::c_void); } -pub unsafe fn dc_job_do_DC_JOB_MAYBE_SEND_LOCATIONS( - context: *mut dc_context_t, - _job: *mut dc_job_t, -) { +pub unsafe fn dc_job_do_DC_JOB_MAYBE_SEND_LOCATIONS(context: &dc_context_t, _job: *mut dc_job_t) { let mut stmt_chats: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; let mut stmt_locations: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; let mut now: time_t = time(0 as *mut time_t); @@ -845,7 +842,7 @@ pub unsafe fn dc_job_do_DC_JOB_MAYBE_SEND_LOC_ENDED( let mut chat_id: uint32_t = (*job).foreign_id; let mut locations_send_begin: time_t = 0i32 as time_t; let mut locations_send_until: time_t = 0i32 as time_t; - let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; + let mut stmt: &sqlite3_stmt = 0 as *mut sqlite3_stmt; let mut stock_str: *mut libc::c_char = 0 as *mut libc::c_char; stmt = dc_sqlite3_prepare( (*context).sql, diff --git a/src/dc_log.rs b/src/dc_log.rs index 426c85272..e70482a62 100644 --- a/src/dc_log.rs +++ b/src/dc_log.rs @@ -7,7 +7,7 @@ use crate::types::*; use crate::x::*; pub unsafe extern "C" fn dc_log_event( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut event_code: Event, mut data1: libc::c_int, mut msg: *const libc::c_char, @@ -23,7 +23,7 @@ usually not reported using dc_log_error() - its up to the caller to decide, what should be reported or done. However, these "Normal" errors are usually logged by dc_log_warning(). */ unsafe fn log_vprintf( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut event: Event, mut data1: libc::c_int, mut msg_format: *const libc::c_char, @@ -52,7 +52,7 @@ unsafe fn log_vprintf( free(msg as *mut libc::c_void); } pub unsafe extern "C" fn dc_log_event_seq( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut event_code: Event, mut sequence_start: *mut libc::c_int, mut msg: *const libc::c_char, @@ -68,7 +68,7 @@ pub unsafe extern "C" fn dc_log_event_seq( *sequence_start = 0i32; } pub unsafe extern "C" fn dc_log_error( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut data1: libc::c_int, mut msg: *const libc::c_char, mut va_1: ... @@ -76,7 +76,7 @@ pub unsafe extern "C" fn dc_log_error( log_vprintf(context, Event::ERROR, data1, msg, va_1); } pub unsafe extern "C" fn dc_log_warning( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut data1: libc::c_int, mut msg: *const libc::c_char, mut va_2: ... @@ -84,7 +84,7 @@ pub unsafe extern "C" fn dc_log_warning( log_vprintf(context, Event::WARNING, data1, msg, va_2); } pub unsafe extern "C" fn dc_log_info( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut data1: libc::c_int, mut msg: *const libc::c_char, mut va_3: ... diff --git a/src/dc_lot.rs b/src/dc_lot.rs index 1cd55b0a2..9fd319606 100644 --- a/src/dc_lot.rs +++ b/src/dc_lot.rs @@ -115,7 +115,7 @@ pub unsafe fn dc_lot_fill( mut msg: *const dc_msg_t, mut chat: *const dc_chat_t, mut contact: *const dc_contact_t, - mut context: *mut dc_context_t, + mut context: &dc_context_t, ) { if lot.is_null() || (*lot).magic != 0x107107i32 as libc::c_uint || msg.is_null() { return; diff --git a/src/dc_mimefactory.rs b/src/dc_mimefactory.rs index 1ee95229a..6df7ffbf5 100644 --- a/src/dc_mimefactory.rs +++ b/src/dc_mimefactory.rs @@ -47,10 +47,7 @@ pub 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_init( - mut factory: *mut dc_mimefactory_t, - mut context: *mut dc_context_t, -) { +pub unsafe fn dc_mimefactory_init(mut factory: *mut dc_mimefactory_t, mut context: &dc_context_t) { if factory.is_null() || context.is_null() { return; } @@ -128,7 +125,7 @@ pub unsafe fn dc_mimefactory_load_msg( clist_insert_after( (*factory).recipients_names, (*(*factory).recipients_names).last, - dc_strdup_keep_null((*factory).from_displayname) as *mut libc::c_void, + dc_strdup_keep_null((*factory).from_displayname) as &libc::c_void, ); clist_insert_after( (*factory).recipients_addr, @@ -1060,7 +1057,7 @@ unsafe fn get_subject( let mut context: *mut dc_context_t = if !chat.is_null() { (*chat).context } else { - 0 as *mut dc_context_t + std::ptr::null_mut() }; let mut ret: *mut libc::c_char = 0 as *mut libc::c_char; let mut raw_subject: *mut libc::c_char = diff --git a/src/dc_mimeparser.rs b/src/dc_mimeparser.rs index 7b1ad3038..7aa0f4939 100644 --- a/src/dc_mimeparser.rs +++ b/src/dc_mimeparser.rs @@ -62,7 +62,7 @@ pub unsafe fn dc_no_compound_msgs() { static mut s_generate_compound_msgs: libc::c_int = 1i32; pub unsafe fn dc_mimeparser_new( mut blobdir: *const libc::c_char, - mut context: *mut dc_context_t, + mut context: &dc_context_t, ) -> *mut dc_mimeparser_t { let mut mimeparser: *mut dc_mimeparser_t = 0 as *mut dc_mimeparser_t; mimeparser = calloc(1, ::std::mem::size_of::()) as *mut dc_mimeparser_t; @@ -814,11 +814,7 @@ unsafe fn dc_mimeparser_parse_mime_recursive( } return any_part_added; } -unsafe fn hash_header( - out: *mut dc_hash_t, - in_0: *const mailimf_fields, - _context: *mut dc_context_t, -) { +unsafe fn hash_header(out: *mut dc_hash_t, in_0: *const mailimf_fields, _context: &dc_context_t) { if in_0.is_null() { return; } diff --git a/src/dc_move.rs b/src/dc_move.rs index bf3e29609..e3ed33641 100644 --- a/src/dc_move.rs +++ b/src/dc_move.rs @@ -7,7 +7,7 @@ use crate::dc_sqlite3::*; use crate::types::*; pub unsafe fn dc_do_heuristics_moves( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut folder: *const libc::c_char, mut msg_id: uint32_t, ) { diff --git a/src/dc_msg.rs b/src/dc_msg.rs index 8df57178e..ae73cf388 100644 --- a/src/dc_msg.rs +++ b/src/dc_msg.rs @@ -48,7 +48,7 @@ pub struct dc_msg_t { // handle messages pub unsafe fn dc_get_msg_info( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut msg_id: uint32_t, ) -> *mut libc::c_char { let mut e2ee_errors: libc::c_int = 0; @@ -292,7 +292,7 @@ pub unsafe fn dc_get_msg_info( free(rawtxt as *mut libc::c_void); return ret.buf; } -pub unsafe fn dc_msg_new_untyped(mut context: *mut dc_context_t) -> *mut dc_msg_t { +pub unsafe fn dc_msg_new_untyped(mut context: &dc_context_t) -> *mut dc_msg_t { return dc_msg_new(context, 0i32); } /* * @@ -305,10 +305,7 @@ pub unsafe fn dc_msg_new_untyped(mut context: *mut dc_context_t) -> *mut dc_msg_ // to check if a mail was sent, use dc_msg_is_sent() // approx. max. lenght returned by dc_msg_get_text() // approx. max. lenght returned by dc_get_msg_info() -pub unsafe fn dc_msg_new( - mut context: *mut dc_context_t, - mut viewtype: libc::c_int, -) -> *mut dc_msg_t { +pub unsafe fn dc_msg_new(mut context: &dc_context_t, mut viewtype: libc::c_int) -> *mut dc_msg_t { let mut msg: *mut dc_msg_t = 0 as *mut dc_msg_t; msg = calloc(1, ::std::mem::size_of::()) as *mut dc_msg_t; if msg.is_null() { @@ -508,7 +505,7 @@ pub unsafe fn dc_msg_load_from_db( mut id: uint32_t, ) -> libc::c_int { let mut success: libc::c_int = 0i32; - let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; + let mut stmt: &sqlite3_stmt = 0 as *mut sqlite3_stmt; if !(msg.is_null() || (*msg).magic != 0x11561156i32 as libc::c_uint || context.is_null() @@ -611,7 +608,7 @@ pub unsafe fn dc_get_mime_headers( mut context: *mut dc_context_t, mut msg_id: uint32_t, ) -> *mut libc::c_char { - let mut eml: *mut libc::c_char = 0 as *mut libc::c_char; + let mut eml: &libc::c_char = 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( @@ -664,11 +661,11 @@ pub unsafe fn dc_delete_msgs( }; } pub unsafe fn dc_update_msg_chat_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut msg_id: uint32_t, mut chat_id: uint32_t, ) { - let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( + let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"UPDATE msgs SET chat_id=? WHERE id=?;\x00" as *const u8 as *const libc::c_char, ); @@ -687,7 +684,7 @@ pub unsafe fn dc_markseen_msgs( 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: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; + 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() @@ -752,7 +749,7 @@ pub unsafe fn dc_update_msg_state( mut msg_id: uint32_t, mut state: libc::c_int, ) { - let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( + let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"UPDATE msgs SET state=? WHERE id=?;\x00" as *const u8 as *const libc::c_char, ); @@ -776,7 +773,7 @@ pub unsafe fn dc_star_msgs( return; } dc_sqlite3_begin_transaction((*context).sql); - let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( + let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"UPDATE msgs SET starred=? WHERE id=?;\x00" as *const u8 as *const libc::c_char, ); @@ -803,7 +800,7 @@ pub unsafe fn dc_get_msg(mut context: *mut dc_context_t, mut msg_id: uint32_t) - return obj; } else { dc_msg_unref(obj); - return 0 as *mut dc_msg_t; + return 0 as &dc_msg_t; }; } pub unsafe fn dc_msg_get_id(mut msg: *const dc_msg_t) -> uint32_t { @@ -976,7 +973,7 @@ pub unsafe fn dc_msg_get_summarytext_by_raw( mut context: *mut dc_context_t, ) -> *mut libc::c_char { /* get a summary text, result must be free()'d, never returns NULL. */ - let mut ret: *mut libc::c_char = 0 as *mut libc::c_char; + let mut ret: &libc::c_char = 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; @@ -1226,7 +1223,7 @@ pub unsafe fn dc_msg_new_load( mut context: *mut dc_context_t, mut msg_id: uint32_t, ) -> *mut dc_msg_t { - let mut msg: *mut dc_msg_t = dc_msg_new_untyped(context); + let mut msg: &dc_msg_t = dc_msg_new_untyped(context); dc_msg_load_from_db(msg, context, msg_id); return msg; } @@ -1241,7 +1238,7 @@ pub unsafe fn dc_delete_msg_from_db(mut context: *mut dc_context_t, mut msg_id: sqlite3_bind_int(stmt, 1i32, (*msg).id as libc::c_int); sqlite3_step(stmt); sqlite3_finalize(stmt); - stmt = 0 as *mut sqlite3_stmt; + stmt = 0 as &sqlite3_stmt; stmt = dc_sqlite3_prepare( (*context).sql, b"DELETE FROM msgs_mdns WHERE msg_id=?;\x00" as *const u8 as *const libc::c_char, @@ -1282,13 +1279,13 @@ pub unsafe fn dc_msg_exists(mut context: *mut dc_context_t, mut msg_id: uint32_t return msg_exists; } pub unsafe fn dc_update_msg_move_state( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut rfc724_mid: *const libc::c_char, mut state: dc_move_state_t, ) { // 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: *mut sqlite3_stmt = dc_sqlite3_prepare( + let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"UPDATE msgs SET move_state=? WHERE rfc724_mid=?;\x00" as *const u8 as *const libc::c_char, ); @@ -1302,7 +1299,7 @@ pub unsafe fn dc_set_msg_failed( mut msg_id: uint32_t, mut error: *const libc::c_char, ) { - let mut msg: *mut dc_msg_t = dc_msg_new_untyped(context); + let mut msg: &dc_msg_t = 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 { @@ -1341,7 +1338,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: *mut uint32_t, + mut ret_chat_id: &uint32_t, mut ret_msg_id: *mut uint32_t, ) -> libc::c_int { let mut chat_type: libc::c_int = 0; @@ -1466,7 +1463,7 @@ pub unsafe fn dc_get_real_msg_cnt(mut context: *mut dc_context_t) -> size_t { sqlite3_finalize(stmt); return ret; } -pub unsafe fn dc_get_deaddrop_msg_cnt(mut context: *mut 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() @@ -1485,12 +1482,12 @@ pub unsafe fn dc_get_deaddrop_msg_cnt(mut context: *mut dc_context_t) -> size_t return ret; } pub unsafe fn dc_rfc724_mid_cnt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut rfc724_mid: *const libc::c_char, ) -> libc::c_int { /* check the number of messages with the same rfc724_mid */ let mut ret: libc::c_int = 0i32; - let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; + 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()) @@ -1512,7 +1509,7 @@ pub unsafe fn dc_rfc724_mid_exists( mut context: *mut dc_context_t, mut rfc724_mid: *const libc::c_char, mut ret_server_folder: *mut *mut libc::c_char, - mut ret_server_uid: *mut uint32_t, + mut ret_server_uid: &uint32_t, ) -> uint32_t { let mut ret: uint32_t = 0i32 as uint32_t; let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; @@ -1552,7 +1549,7 @@ pub unsafe fn dc_update_server_uid( mut server_folder: *const libc::c_char, mut server_uid: uint32_t, ) { - let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare( + let mut stmt: &sqlite3_stmt = dc_sqlite3_prepare( (*context).sql, b"UPDATE msgs SET server_folder=?, server_uid=? WHERE rfc724_mid=?;\x00" as *const u8 as *const libc::c_char, diff --git a/src/dc_oauth2.rs b/src/dc_oauth2.rs index 5b2c97b86..3ca4b3387 100644 --- a/src/dc_oauth2.rs +++ b/src/dc_oauth2.rs @@ -22,7 +22,7 @@ pub struct oauth2_t { } pub unsafe fn dc_get_oauth2_url( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut addr: *const libc::c_char, mut redirect_uri: *const libc::c_char, ) -> *mut libc::c_char { @@ -124,7 +124,7 @@ unsafe fn get_info(mut addr: *const libc::c_char) -> *mut oauth2_t { // the following function may block due http-requests; // must not be called from the main thread or by the ui! pub unsafe fn dc_get_oauth2_access_token( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut addr: *const libc::c_char, mut code: *const libc::c_char, mut flags: libc::c_int, @@ -479,7 +479,7 @@ unsafe extern "C" fn jsoneq( } return -1i32; } -unsafe fn is_expired(mut context: *mut dc_context_t) -> libc::c_int { +unsafe fn is_expired(mut context: &dc_context_t) -> libc::c_int { let mut expire_timestamp: time_t = dc_sqlite3_get_config_int64( (*context).sql, b"oauth2_timestamp_expires\x00" as *const u8 as *const libc::c_char, @@ -494,7 +494,7 @@ unsafe fn is_expired(mut context: *mut dc_context_t) -> libc::c_int { return 1i32; } pub unsafe fn dc_get_oauth2_addr( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut addr: *const libc::c_char, mut code: *const libc::c_char, ) -> *mut libc::c_char { @@ -522,7 +522,7 @@ pub unsafe fn dc_get_oauth2_addr( return addr_out; } unsafe fn get_oauth2_addr( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut oauth2: *const oauth2_t, mut access_token: *const libc::c_char, ) -> *mut libc::c_char { diff --git a/src/dc_pgp.rs b/src/dc_pgp.rs index 899f816d9..48165a7a4 100644 --- a/src/dc_pgp.rs +++ b/src/dc_pgp.rs @@ -130,7 +130,7 @@ pub unsafe fn dc_split_armored_data( } /* public key encryption */ pub unsafe fn dc_pgp_create_keypair( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut addr: *const libc::c_char, mut ret_public_key: *mut dc_key_t, mut ret_private_key: *mut dc_key_t, @@ -190,7 +190,7 @@ pub unsafe fn dc_pgp_create_keypair( return success; } /* returns 0 if there is no error, otherwise logs the error if a context is provided and returns 1*/ -pub unsafe fn dc_pgp_handle_rpgp_error(mut context: *mut dc_context_t) -> libc::c_int { +pub unsafe fn dc_pgp_handle_rpgp_error(mut context: &dc_context_t) -> libc::c_int { let mut success: libc::c_int = 0i32; let mut len: libc::c_int = 0i32; let mut msg: *mut libc::c_char = 0 as *mut libc::c_char; @@ -213,7 +213,7 @@ pub unsafe fn dc_pgp_handle_rpgp_error(mut context: *mut dc_context_t) -> libc:: return success; } pub unsafe fn dc_pgp_is_valid_key( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut raw_key: *const dc_key_t, ) -> libc::c_int { let mut key_is_valid: libc::c_int = 0i32; @@ -261,9 +261,9 @@ pub unsafe fn dc_pgp_calc_fingerprint( (*raw_key).binary as *const uint8_t, (*raw_key).bytes as usize, ); - if !(0 != dc_pgp_handle_rpgp_error(0 as *mut dc_context_t)) { + if !(0 != dc_pgp_handle_rpgp_error(0 as &dc_context_t)) { fingerprint = rpgp::rpgp_key_fingerprint(key); - if !(0 != dc_pgp_handle_rpgp_error(0 as *mut dc_context_t)) { + if !(0 != dc_pgp_handle_rpgp_error(0 as &dc_context_t)) { *ret_fingerprint_bytes = rpgp::rpgp_cvec_len(fingerprint) as size_t; *ret_fingerprint = malloc(*ret_fingerprint_bytes) as *mut uint8_t; memcpy( @@ -284,7 +284,7 @@ pub unsafe fn dc_pgp_calc_fingerprint( return success; } pub unsafe fn dc_pgp_split_key( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut private_in: *const dc_key_t, mut ret_public_key: *mut dc_key_t, ) -> libc::c_int { @@ -333,7 +333,7 @@ pub unsafe fn dc_pgp_split_key( return success; } pub unsafe fn dc_pgp_pk_encrypt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut plain_text: *const libc::c_void, mut plain_bytes: size_t, mut raw_public_keys_for_encryption: *const dc_keyring_t, @@ -502,7 +502,7 @@ pub unsafe fn dc_pgp_pk_encrypt( return success; } pub unsafe fn dc_pgp_pk_decrypt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut ctext: *const libc::c_void, mut ctext_bytes: size_t, mut raw_private_keys_for_decryption: *const dc_keyring_t, @@ -665,7 +665,7 @@ pub unsafe fn dc_pgp_pk_decrypt( } /* symm. encryption */ pub unsafe fn dc_pgp_symm_encrypt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut passphrase: *const libc::c_char, mut plain: *const libc::c_void, mut plain_bytes: size_t, @@ -697,7 +697,7 @@ pub unsafe fn dc_pgp_symm_encrypt( return success; } pub unsafe fn dc_pgp_symm_decrypt( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut passphrase: *const libc::c_char, mut ctext: *const libc::c_void, mut ctext_bytes: size_t, diff --git a/src/dc_qr.rs b/src/dc_qr.rs index e8aae56bc..d6f679869 100644 --- a/src/dc_qr.rs +++ b/src/dc_qr.rs @@ -24,7 +24,7 @@ use crate::x::*; // text1=URL // text1=error string pub unsafe fn dc_check_qr( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut qr: *const libc::c_char, ) -> *mut dc_lot_t { let mut current_block: u64; diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index b4c2c919a..46bfb91b9 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -1042,7 +1042,7 @@ pub unsafe fn dc_receive_imf( * Misc. Tools ******************************************************************************/ unsafe fn calc_timestamps( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut chat_id: uint32_t, mut from_id: uint32_t, mut message_timestamp: time_t, @@ -1093,7 +1093,7 @@ which tries to create or find out the chat_id by: So when the function returns, the caller has the group id matching the current state of the group. */ unsafe fn create_or_lookup_group( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mime_parser: *mut dc_mimeparser_t, mut allow_creation: libc::c_int, mut create_blocked: libc::c_int, @@ -1559,7 +1559,7 @@ unsafe fn create_or_lookup_group( * Handle groups for received messages ******************************************************************************/ unsafe fn create_or_lookup_adhoc_group( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mime_parser: *mut dc_mimeparser_t, mut allow_creation: libc::c_int, mut create_blocked: libc::c_int, @@ -1673,7 +1673,7 @@ unsafe fn create_or_lookup_adhoc_group( }; } unsafe fn create_group_record( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut grpid: *const libc::c_char, mut grpname: *const libc::c_char, mut create_blocked: libc::c_int, @@ -1706,7 +1706,7 @@ unsafe fn create_group_record( return chat_id; } unsafe fn create_adhoc_grp_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut member_ids: *mut dc_array_t, ) -> *mut libc::c_char { /* algorithm: @@ -1791,7 +1791,7 @@ unsafe fn create_adhoc_grp_id( return ret; } unsafe fn search_chat_ids_by_contact_ids( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut unsorted_contact_ids: *const dc_array_t, ) -> *mut dc_array_t { /* searches chat_id's by the given contact IDs, may return zero, one or more chat_id's */ @@ -1859,7 +1859,7 @@ unsafe fn search_chat_ids_by_contact_ids( return chat_ids; } unsafe fn check_verified_properties( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mimeparser: *mut dc_mimeparser_t, mut from_id: uint32_t, mut to_ids: *const dc_array_t, @@ -2018,7 +2018,7 @@ unsafe fn set_better_msg( }; } unsafe fn dc_is_reply_to_known_message( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mime_parser: *mut dc_mimeparser_t, ) -> libc::c_int { /* check if the message is a reply to a known message; the replies are identified by the Message-ID from @@ -2067,7 +2067,7 @@ unsafe fn dc_is_reply_to_known_message( return 0i32; } unsafe fn is_known_rfc724_mid_in_list( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mid_list: *const clist, ) -> libc::c_int { if !mid_list.is_null() { @@ -2097,7 +2097,7 @@ unsafe fn is_known_rfc724_mid_in_list( * Check if a message is a reply to a known message (messenger or non-messenger) ******************************************************************************/ unsafe fn is_known_rfc724_mid( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut rfc724_mid: *const libc::c_char, ) -> libc::c_int { let mut is_known: libc::c_int = 0i32; @@ -2115,7 +2115,7 @@ unsafe fn is_known_rfc724_mid( return is_known; } unsafe fn dc_is_reply_to_messenger_message( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mime_parser: *mut dc_mimeparser_t, ) -> libc::c_int { /* function checks, if the message defined by mime_parser references a message send by us from Delta Chat. @@ -2157,7 +2157,7 @@ unsafe fn dc_is_reply_to_messenger_message( return 0i32; } unsafe fn is_msgrmsg_rfc724_mid_in_list( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mid_list: *const clist, ) -> libc::c_int { if !mid_list.is_null() { @@ -2186,7 +2186,7 @@ unsafe fn is_msgrmsg_rfc724_mid_in_list( * Check if a message is a reply to any messenger message ******************************************************************************/ unsafe fn is_msgrmsg_rfc724_mid( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut rfc724_mid: *const libc::c_char, ) -> libc::c_int { let mut is_msgrmsg: libc::c_int = 0i32; @@ -2205,7 +2205,7 @@ unsafe fn is_msgrmsg_rfc724_mid( return is_msgrmsg; } unsafe fn dc_add_or_lookup_contacts_by_address_list( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut adr_list: *const mailimf_address_list, mut origin: libc::c_int, mut ids: *mut dc_array_t, @@ -2256,7 +2256,7 @@ unsafe fn dc_add_or_lookup_contacts_by_address_list( } } unsafe fn dc_add_or_lookup_contacts_by_mailbox_list( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mb_list: *const mailimf_mailbox_list, mut origin: libc::c_int, mut ids: *mut dc_array_t, @@ -2293,7 +2293,7 @@ unsafe fn dc_add_or_lookup_contacts_by_mailbox_list( * Add contacts to database on receiving messages ******************************************************************************/ unsafe fn add_or_lookup_contact_by_addr( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut display_name_enc: *const libc::c_char, mut addr_spec: *const libc::c_char, mut origin: libc::c_int, diff --git a/src/dc_securejoin.rs b/src/dc_securejoin.rs index 9a8525884..88e356c7f 100644 --- a/src/dc_securejoin.rs +++ b/src/dc_securejoin.rs @@ -25,7 +25,7 @@ use crate::types::*; use crate::x::*; pub unsafe fn dc_get_securejoin_qr( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut group_chat_id: uint32_t, ) -> *mut libc::c_char { let mut current_block: u64; @@ -145,7 +145,7 @@ pub unsafe fn dc_get_securejoin_qr( dc_strdup(0 as *const libc::c_char) }; } -unsafe fn get_self_fingerprint(mut context: *mut dc_context_t) -> *mut libc::c_char { +unsafe fn get_self_fingerprint(mut context: &dc_context_t) -> *mut libc::c_char { let mut self_addr: *mut libc::c_char = 0 as *mut libc::c_char; let mut self_key: *mut dc_key_t = dc_key_new(); let mut fingerprint: *mut libc::c_char = 0 as *mut libc::c_char; @@ -163,7 +163,7 @@ unsafe fn get_self_fingerprint(mut context: *mut dc_context_t) -> *mut libc::c_c return fingerprint; } pub unsafe fn dc_join_securejoin( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut qr: *const libc::c_char, ) -> uint32_t { /* ========================================================== @@ -290,7 +290,7 @@ pub unsafe fn dc_join_securejoin( return ret_chat_id as uint32_t; } unsafe fn send_handshake_msg( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_chat_id: uint32_t, mut step: *const libc::c_char, mut param2: *const libc::c_char, @@ -326,7 +326,7 @@ unsafe fn send_handshake_msg( dc_msg_unref(msg); } unsafe fn chat_id_2_contact_id( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut contact_chat_id: uint32_t, ) -> uint32_t { let mut contact_id: uint32_t = 0i32 as uint32_t; @@ -338,7 +338,7 @@ unsafe fn chat_id_2_contact_id( return contact_id; } unsafe fn fingerprint_equals_sender( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut fingerprint: *const libc::c_char, mut contact_chat_id: uint32_t, ) -> libc::c_int { @@ -369,7 +369,7 @@ unsafe fn fingerprint_equals_sender( } /* library private: secure-join */ pub unsafe fn dc_handle_securejoin_handshake( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut mimeparser: *mut dc_mimeparser_t, mut contact_id: uint32_t, ) -> libc::c_int { @@ -896,14 +896,11 @@ pub unsafe fn dc_handle_securejoin_handshake( free(grpid as *mut libc::c_void); return ret; } -unsafe fn end_bobs_joining(mut context: *mut dc_context_t, mut status: libc::c_int) { +unsafe fn end_bobs_joining(mut context: &dc_context_t, mut status: libc::c_int) { (*context).bobs_status = status; dc_stop_ongoing_process(context); } -unsafe fn secure_connection_established( - mut context: *mut dc_context_t, - mut contact_chat_id: uint32_t, -) { +unsafe fn secure_connection_established(mut context: &dc_context_t, mut contact_chat_id: uint32_t) { let mut contact_id: uint32_t = chat_id_2_contact_id(context, contact_chat_id); let mut contact: *mut dc_contact_t = dc_get_contact(context, contact_id); let mut msg: *mut libc::c_char = dc_stock_str_repl_string( @@ -949,7 +946,7 @@ unsafe fn could_not_establish_secure_connection( mut details: *const libc::c_char, ) { let mut contact_id: uint32_t = chat_id_2_contact_id(context, contact_chat_id); - let mut contact: *mut dc_contact_t = dc_get_contact(context, contact_id); + let mut contact: &dc_contact_t = dc_get_contact(context, contact_id); let mut msg: *mut libc::c_char = dc_stock_str_repl_string( context, 36i32, @@ -975,7 +972,7 @@ unsafe fn mark_peer_as_verified( mut fingerprint: *const libc::c_char, ) -> libc::c_int { let mut success: libc::c_int = 0i32; - let mut peerstate: *mut dc_apeerstate_t = dc_apeerstate_new(context); + let mut peerstate: &dc_apeerstate_t = dc_apeerstate_new(context); if !(0 == dc_apeerstate_load_by_fingerprint(peerstate, (*context).sql, fingerprint)) { if !(0 == dc_apeerstate_set_verified(peerstate, 1i32, fingerprint, 2i32)) { (*peerstate).prefer_encrypt = 1i32; @@ -1040,7 +1037,7 @@ pub unsafe fn dc_handle_degrade_event( mut context: *mut dc_context_t, mut peerstate: *mut dc_apeerstate_t, ) { - let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt; + let mut stmt: &sqlite3_stmt = 0 as *mut sqlite3_stmt; let mut contact_id: uint32_t = 0i32 as uint32_t; let mut contact_chat_id: uint32_t = 0i32 as uint32_t; if !(context.is_null() || peerstate.is_null()) { diff --git a/src/dc_smtp.rs b/src/dc_smtp.rs index 11566ee32..066362692 100644 --- a/src/dc_smtp.rs +++ b/src/dc_smtp.rs @@ -34,85 +34,80 @@ pub fn dc_smtp_new() -> dc_smtp_t { } } -pub unsafe fn dc_smtp_unref(mut smtp: *mut dc_smtp_t) { - if smtp.is_null() { - return; - } +pub unsafe fn dc_smtp_unref(smtp: &mut dc_smtp_t) { dc_smtp_disconnect(smtp); - free((*smtp).from as *mut libc::c_void); - free((*smtp).error as *mut libc::c_void); + free(smtp.from as *mut libc::c_void); + free(smtp.error as *mut libc::c_void); free(smtp as *mut libc::c_void); } -pub unsafe fn dc_smtp_disconnect(mut smtp: *mut dc_smtp_t) { - if smtp.is_null() { - return; + +pub unsafe fn dc_smtp_disconnect(smtp: &mut dc_smtp_t) { + if !smtp.etpan.is_null() { + mailsmtp_free(smtp.etpan); + smtp.etpan = 0 as *mut mailsmtp; } - if !(*smtp).etpan.is_null() { - mailsmtp_free((*smtp).etpan); - (*smtp).etpan = 0 as *mut mailsmtp - }; } -pub unsafe fn dc_smtp_is_connected(mut smtp: *const dc_smtp_t) -> libc::c_int { - return if !smtp.is_null() && !(*smtp).etpan.is_null() { - 1i32 + +pub unsafe fn dc_smtp_is_connected(smtp: *const dc_smtp_t) -> libc::c_int { + if !smtp.etpan.is_null() { + 1 } else { - 0i32 - }; -} -pub unsafe fn dc_smtp_connect( - mut smtp: *mut dc_smtp_t, - mut lp: *const dc_loginparam_t, -) -> libc::c_int { - let mut current_block: u64; - let mut success: libc::c_int = 0i32; - let mut r: libc::c_int = 0i32; - let mut try_esmtp: libc::c_int = 0i32; - if smtp.is_null() || lp.is_null() { - return 0i32; + 0 } - if !(*smtp).etpan.is_null() { +} + +pub unsafe fn dc_smtp_connect(smtp: &mut dc_smtp_t, lp: *const dc_loginparam_t) -> libc::c_int { + let mut current_block: u64; + let mut success: libc::c_int = 0; + let mut r: libc::c_int = 0; + let mut try_esmtp: libc::c_int = 0; + if lp.is_null() { + return 0; + } + + if !smtp.etpan.is_null() { dc_log_warning( - (*smtp).context, - 0i32, + smtp.context, + 0, b"SMTP already connected.\x00" as *const u8 as *const libc::c_char, ); - success = 1i32 - } else if (*lp).addr.is_null() || (*lp).send_server.is_null() || (*lp).send_port == 0i32 { + success = 1; + } else if (*lp).addr.is_null() || (*lp).send_server.is_null() || (*lp).send_port == 0 { dc_log_event_seq( - (*smtp).context, + smtp.context, Event::ERROR_NETWORK, - &mut (*smtp).log_connect_errors as *mut libc::c_int, + &mut smtp.log_connect_errors as *mut libc::c_int, b"SMTP bad parameters.\x00" as *const u8 as *const libc::c_char, ); } else { - free((*smtp).from as *mut libc::c_void); - (*smtp).from = dc_strdup((*lp).addr); - (*smtp).etpan = mailsmtp_new(0i32 as size_t, None); - if (*smtp).etpan.is_null() { + free(smtp.from as *mut libc::c_void); + smtp.from = dc_strdup((*lp).addr); + smtp.etpan = mailsmtp_new(0 as size_t, None); + if smtp.etpan.is_null() { dc_log_error( - (*smtp).context, - 0i32, + smtp.context, + 0, b"SMTP-object creation failed.\x00" as *const u8 as *const libc::c_char, ); } else { - mailsmtp_set_timeout((*smtp).etpan, 10i32 as time_t); + mailsmtp_set_timeout(smtp.etpan, 10 as time_t); mailsmtp_set_progress_callback( - (*smtp).etpan, + smtp.etpan, Some(body_progress), smtp as *mut libc::c_void, ); /* connect to SMTP server */ - if 0 != (*lp).server_flags & (0x10000i32 | 0x40000i32) { + if 0 != (*lp).server_flags & (0x10000 | 0x40000) { r = mailsmtp_socket_connect( - (*smtp).etpan, + smtp.etpan, (*lp).send_server, (*lp).send_port as uint16_t, ); if r != MAILSMTP_NO_ERROR as libc::c_int { dc_log_event_seq( - (*smtp).context, + smtp.context, Event::ERROR_NETWORK, - &mut (*smtp).log_connect_errors as *mut libc::c_int, + &mut smtp.log_connect_errors as *mut libc::c_int, b"SMTP-Socket connection to %s:%i failed (%s)\x00" as *const u8 as *const libc::c_char, (*lp).send_server, @@ -125,15 +120,15 @@ pub unsafe fn dc_smtp_connect( } } else { r = mailsmtp_ssl_connect( - (*smtp).etpan, + smtp.etpan, (*lp).send_server, (*lp).send_port as uint16_t, ); if r != MAILSMTP_NO_ERROR as libc::c_int { dc_log_event_seq( - (*smtp).context, + smtp.context, Event::ERROR_NETWORK, - &mut (*smtp).log_connect_errors as *mut libc::c_int, + &mut smtp.log_connect_errors as *mut libc::c_int, b"SMTP-SSL connection to %s:%i failed (%s)\x00" as *const u8 as *const libc::c_char, (*lp).send_server, @@ -148,54 +143,54 @@ pub unsafe fn dc_smtp_connect( match current_block { 12512295087047028901 => {} _ => { - try_esmtp = 1i32; - (*smtp).esmtp = 0i32; + try_esmtp = 1; + smtp.esmtp = 0; if 0 != try_esmtp && { - r = mailesmtp_ehlo((*smtp).etpan); + r = mailesmtp_ehlo(smtp.etpan); r == MAILSMTP_NO_ERROR as libc::c_int } { - (*smtp).esmtp = 1i32 + smtp.esmtp = 1 } else if 0 == try_esmtp || r == MAILSMTP_ERROR_NOT_IMPLEMENTED as libc::c_int { - r = mailsmtp_helo((*smtp).etpan) + r = mailsmtp_helo(smtp.etpan) } if r != MAILSMTP_NO_ERROR as libc::c_int { dc_log_event_seq( - (*smtp).context, + smtp.context, Event::ERROR_NETWORK, - &mut (*smtp).log_connect_errors as *mut libc::c_int, + &mut smtp.log_connect_errors as *mut libc::c_int, b"SMTP-helo failed (%s)\x00" as *const u8 as *const libc::c_char, mailsmtp_strerror(r), ); } else { - if 0 != (*lp).server_flags & 0x10000i32 { - r = mailsmtp_socket_starttls((*smtp).etpan); + if 0 != (*lp).server_flags & 0x10000 { + r = mailsmtp_socket_starttls(smtp.etpan); if r != MAILSMTP_NO_ERROR as libc::c_int { dc_log_event_seq( - (*smtp).context, + smtp.context, Event::ERROR_NETWORK, - &mut (*smtp).log_connect_errors as *mut libc::c_int, + &mut smtp.log_connect_errors as *mut libc::c_int, b"SMTP-STARTTLS failed (%s)\x00" as *const u8 as *const libc::c_char, mailsmtp_strerror(r), ); current_block = 12512295087047028901; } else { - (*smtp).esmtp = 0i32; + smtp.esmtp = 0; if 0 != try_esmtp && { - r = mailesmtp_ehlo((*smtp).etpan); + r = mailesmtp_ehlo(smtp.etpan); r == MAILSMTP_NO_ERROR as libc::c_int } { - (*smtp).esmtp = 1i32 + smtp.esmtp = 1 } else if 0 == try_esmtp || r == MAILSMTP_ERROR_NOT_IMPLEMENTED as libc::c_int { - r = mailsmtp_helo((*smtp).etpan) + r = mailsmtp_helo(smtp.etpan) } if r != MAILSMTP_NO_ERROR as libc::c_int { dc_log_event_seq( - (*smtp).context, + smtp.context, Event::ERROR_NETWORK, - &mut (*smtp).log_connect_errors as *mut libc::c_int, + &mut smtp.log_connect_errors as *mut libc::c_int, b"SMTP-helo failed (%s)\x00" as *const u8 as *const libc::c_char, mailsmtp_strerror(r), @@ -203,8 +198,8 @@ pub unsafe fn dc_smtp_connect( current_block = 12512295087047028901; } else { dc_log_info( - (*smtp).context, - 0i32, + smtp.context, + 0, b"SMTP-server %s:%i STARTTLS-connected.\x00" as *const u8 as *const libc::c_char, (*lp).send_server, @@ -214,10 +209,10 @@ pub unsafe fn dc_smtp_connect( } } } else { - if 0 != (*lp).server_flags & 0x40000i32 { + if 0 != (*lp).server_flags & 0x40000 { dc_log_info( - (*smtp).context, - 0i32, + smtp.context, + 0, b"SMTP-server %s:%i connected.\x00" as *const u8 as *const libc::c_char, (*lp).send_server, @@ -225,8 +220,8 @@ pub unsafe fn dc_smtp_connect( ); } else { dc_log_info( - (*smtp).context, - 0i32, + smtp.context, + 0, b"SMTP-server %s:%i SSL-connected.\x00" as *const u8 as *const libc::c_char, (*lp).send_server, @@ -239,35 +234,35 @@ pub unsafe fn dc_smtp_connect( 12512295087047028901 => {} _ => { if !(*lp).send_user.is_null() { - if 0 != (*lp).server_flags & 0x2i32 { + if 0 != (*lp).server_flags & 0x2 { dc_log_info( - (*smtp).context, - 0i32, + smtp.context, + 0, b"SMTP-OAuth2 connect...\x00" as *const u8 as *const libc::c_char, ); let mut access_token: *mut libc::c_char = dc_get_oauth2_access_token( - (*smtp).context, + smtp.context, (*lp).addr, (*lp).send_pw, - 0i32, + 0, ); r = mailsmtp_oauth2_authenticate( - (*smtp).etpan, + smtp.etpan, (*lp).send_user, access_token, ); if r != MAILSMTP_NO_ERROR as libc::c_int { free(access_token as *mut libc::c_void); access_token = dc_get_oauth2_access_token( - (*smtp).context, + smtp.context, (*lp).addr, (*lp).send_pw, - 0x1i32, + 0x1, ); r = mailsmtp_oauth2_authenticate( - (*smtp).etpan, + smtp.etpan, (*lp).send_user, access_token, ) @@ -276,7 +271,7 @@ pub unsafe fn dc_smtp_connect( current_block = 15462640364611497761; } else { r = mailsmtp_auth( - (*smtp).etpan, + smtp.etpan, (*lp).send_user, (*lp).send_pw, ); @@ -285,12 +280,12 @@ pub unsafe fn dc_smtp_connect( * There are some Mailservers which do not correclty implement PLAIN auth (hMail) * So here we try a workaround. See https://github.com/deltachat/deltachat-android/issues/67 */ - if 0 != (*(*smtp).etpan).auth + if 0 != (*smtp.etpan).auth & MAILSMTP_AUTH_PLAIN as libc::c_int { dc_log_info( - (*smtp).context, - 0i32, + smtp.context, + 0, b"Trying SMTP-Login workaround \"%s\"...\x00" as *const u8 as *const libc::c_char, @@ -302,10 +297,10 @@ pub unsafe fn dc_smtp_connect( hostname.as_mut_ptr(), ::std::mem::size_of::<[libc::c_char; 513]>(), ); - if err < 0i32 { + if err < 0 { dc_log_error( - (*smtp).context, - 0i32, + smtp.context, + 0, b"SMTP-Login: Cannot get hostname.\x00" as *const u8 as *const libc::c_char, @@ -313,7 +308,7 @@ pub unsafe fn dc_smtp_connect( current_block = 12512295087047028901; } else { r = mailesmtp_auth_sasl( - (*smtp).etpan, + smtp.etpan, b"PLAIN\x00" as *const u8 as *const libc::c_char, hostname.as_mut_ptr(), @@ -338,9 +333,9 @@ pub unsafe fn dc_smtp_connect( _ => { if r != MAILSMTP_NO_ERROR as libc::c_int { dc_log_event_seq( - (*smtp).context, + smtp.context, Event::ERROR_NETWORK, - &mut (*smtp).log_connect_errors + &mut smtp.log_connect_errors as *mut libc::c_int, b"SMTP-login failed for user %s (%s)\x00" as *const u8 @@ -351,9 +346,9 @@ pub unsafe fn dc_smtp_connect( current_block = 12512295087047028901; } else { dc_log_event( - (*smtp).context, + smtp.context, Event::SMTP_CONNECTED, - 0i32, + 0, b"SMTP-login as %s ok.\x00" as *const u8 as *const libc::c_char, (*lp).send_user, @@ -367,7 +362,7 @@ pub unsafe fn dc_smtp_connect( } match current_block { 12512295087047028901 => {} - _ => success = 1i32, + _ => success = 1, } } } @@ -377,13 +372,14 @@ pub unsafe fn dc_smtp_connect( } } if 0 == success { - if !(*smtp).etpan.is_null() { - mailsmtp_free((*smtp).etpan); - (*smtp).etpan = 0 as *mut mailsmtp + if !smtp.etpan.is_null() { + mailsmtp_free(smtp.etpan); + smtp.etpan = 0 as *mut mailsmtp } } - return success; + success } + unsafe extern "C" fn body_progress( _current: size_t, _maximum: size_t, @@ -392,138 +388,129 @@ unsafe extern "C" fn body_progress( } pub unsafe fn dc_smtp_send_msg( - mut smtp: *mut dc_smtp_t, - mut recipients: *const clist, - mut data_not_terminated: *const libc::c_char, - mut data_bytes: size_t, + smtp: &mut dc_smtp_t, + recipients: *const clist, + data_not_terminated: *const libc::c_char, + data_bytes: size_t, ) -> libc::c_int { let mut current_block: u64; - let mut success: libc::c_int = 0i32; - let mut r: libc::c_int = 0i32; + let mut success: libc::c_int = 0; + let mut r: libc::c_int = 0; let mut iter: *mut clistiter = 0 as *mut clistiter; - if !smtp.is_null() { - if recipients.is_null() - || (*recipients).count == 0i32 - || data_not_terminated.is_null() - || data_bytes == 0 - { - success = 1i32 - } else if !(*smtp).etpan.is_null() { - // set source - // the `etPanSMTPTest` is the ENVID from RFC 3461 (SMTP DSNs), we should probably replace it by a random value - r = if 0 != (*smtp).esmtp { - mailesmtp_mail( - (*smtp).etpan, - (*smtp).from, - 1i32, - b"etPanSMTPTest\x00" as *const u8 as *const libc::c_char, - ) - } else { - mailsmtp_mail((*smtp).etpan, (*smtp).from) - }; - if r != MAILSMTP_NO_ERROR as libc::c_int { - log_error( - smtp, - b"SMTP failed to start message\x00" as *const u8 as *const libc::c_char, - r, - ); - } else { - // set recipients - // if the recipient is on the same server, this may fail at once. - // TODO: question is what to do if one recipient in a group fails - iter = (*recipients).first; - loop { - if iter.is_null() { - current_block = 12039483399334584727; - break; + if recipients.is_null() + || (*recipients).count == 0 + || data_not_terminated.is_null() + || data_bytes == 0 + { + success = 1 + } else if !smtp.etpan.is_null() { + // set source + // the `etPanSMTPTest` is the ENVID from RFC 3461 (SMTP DSNs), we should probably replace it by a random value + r = if 0 != smtp.esmtp { + mailesmtp_mail( + smtp.etpan, + smtp.from, + 1, + b"etPanSMTPTest\x00" as *const u8 as *const libc::c_char, + ) + } else { + mailsmtp_mail(smtp.etpan, smtp.from) + }; + if r != MAILSMTP_NO_ERROR as libc::c_int { + log_error( + smtp, + b"SMTP failed to start message\x00" as *const u8 as *const libc::c_char, + r, + ); + } else { + // set recipients + // if the recipient is on the same server, this may fail at once. + // TODO: question is what to do if one recipient in a group fails + iter = (*recipients).first; + loop { + if iter.is_null() { + current_block = 12039483399334584727; + break; + } + let mut rcpt: *const libc::c_char = (if !iter.is_null() { + (*iter).data + } else { + 0 as *mut libc::c_void + }) as *const libc::c_char; + r = if 0 != smtp.esmtp { + mailesmtp_rcpt(smtp.etpan, rcpt, 2 | 4, 0 as *const libc::c_char) + } else { + mailsmtp_rcpt(smtp.etpan, rcpt) + }; + if r != MAILSMTP_NO_ERROR as libc::c_int { + log_error( + smtp, + b"SMTP failed to add recipient\x00" as *const u8 as *const libc::c_char, + r, + ); + current_block = 5498835644851925448; + break; + } else { + iter = if !iter.is_null() { + (*iter).next + } else { + 0 as *mut clistcell_s } - let mut rcpt: *const libc::c_char = (if !iter.is_null() { - (*iter).data - } else { - 0 as *mut libc::c_void - }) - as *const libc::c_char; - r = if 0 != (*smtp).esmtp { - mailesmtp_rcpt((*smtp).etpan, rcpt, 2i32 | 4i32, 0 as *const libc::c_char) - } else { - mailsmtp_rcpt((*smtp).etpan, rcpt) - }; + } + } + match current_block { + 5498835644851925448 => {} + _ => { + // message + r = mailsmtp_data(smtp.etpan); if r != MAILSMTP_NO_ERROR as libc::c_int { log_error( smtp, - b"SMTP failed to add recipient\x00" as *const u8 as *const libc::c_char, + b"SMTP failed to set data\x00" as *const u8 as *const libc::c_char, r, ); - current_block = 5498835644851925448; - break; } else { - iter = if !iter.is_null() { - (*iter).next - } else { - 0 as *mut clistcell_s - } - } - } - match current_block { - 5498835644851925448 => {} - _ => { - // message - r = mailsmtp_data((*smtp).etpan); + r = mailsmtp_data_message(smtp.etpan, data_not_terminated, data_bytes); if r != MAILSMTP_NO_ERROR as libc::c_int { log_error( smtp, - b"SMTP failed to set data\x00" as *const u8 as *const libc::c_char, + b"SMTP failed to send message\x00" as *const u8 + as *const libc::c_char, r, ); } else { - r = mailsmtp_data_message( - (*smtp).etpan, - data_not_terminated, - data_bytes, + dc_log_event( + smtp.context, + Event::SMTP_MESSAGE_SENT, + 0, + b"Message was sent to SMTP server\x00" as *const u8 + as *const libc::c_char, ); - if r != MAILSMTP_NO_ERROR as libc::c_int { - log_error( - smtp, - b"SMTP failed to send message\x00" as *const u8 - as *const libc::c_char, - r, - ); - } else { - dc_log_event( - (*smtp).context, - Event::SMTP_MESSAGE_SENT, - 0i32, - b"Message was sent to SMTP server\x00" as *const u8 - as *const libc::c_char, - ); - success = 1i32 - } + success = 1; } } } } } } - return success; + + success } -unsafe fn log_error( - mut smtp: *mut dc_smtp_t, - mut what_failed: *const libc::c_char, - mut r: libc::c_int, -) { + +unsafe fn log_error(smtp: &mut dc_smtp_t, what_failed: *const libc::c_char, r: libc::c_int) { let mut error_msg: *mut libc::c_char = dc_mprintf( b"%s: %s: %s\x00" as *const u8 as *const libc::c_char, what_failed, mailsmtp_strerror(r), - (*(*smtp).etpan).response, + (*smtp.etpan).response, ); dc_log_warning( - (*smtp).context, - 0i32, + smtp.context, + 0, b"%s\x00" as *const u8 as *const libc::c_char, error_msg, ); - free((*smtp).error as *mut libc::c_void); - (*smtp).error = error_msg; - (*smtp).error_etpan = r; + free(smtp.error as *mut libc::c_void); + smtp.error = error_msg; + smtp.error_etpan = r; } diff --git a/src/dc_stock.rs b/src/dc_stock.rs index b93ce0e2a..7a44ac528 100644 --- a/src/dc_stock.rs +++ b/src/dc_stock.rs @@ -9,17 +9,14 @@ use crate::x::*; /* Return the string with the given ID by calling DC_EVENT_GET_STRING. The result must be free()'d! */ -pub unsafe fn dc_stock_str( - mut context: *mut dc_context_t, - mut id: libc::c_int, -) -> *mut libc::c_char { +pub unsafe fn dc_stock_str(mut context: &dc_context_t, mut id: libc::c_int) -> *mut libc::c_char { return get_string(context, id, 0i32); } unsafe fn get_string( mut context: *mut dc_context_t, mut id: libc::c_int, mut qty: libc::c_int, -) -> *mut libc::c_char { +) -> &libc::c_char { let mut ret: *mut libc::c_char = 0 as *mut libc::c_char; if !context.is_null() { ret = ((*context).cb)( @@ -218,7 +215,7 @@ pub unsafe fn dc_stock_str_repl_string( mut context: *mut dc_context_t, mut id: libc::c_int, mut to_insert: *const libc::c_char, -) -> *mut libc::c_char { +) -> &libc::c_char { let mut ret: *mut libc::c_char = get_string(context, id, 0i32); dc_str_replace( &mut ret, @@ -236,7 +233,7 @@ pub unsafe fn dc_stock_str_repl_int( mut context: *mut dc_context_t, mut id: libc::c_int, mut to_insert_int: libc::c_int, -) -> *mut libc::c_char { +) -> &libc::c_char { let mut ret: *mut libc::c_char = get_string(context, id, to_insert_int); let mut to_insert_str: *mut libc::c_char = dc_mprintf( b"%i\x00" as *const u8 as *const libc::c_char, @@ -262,7 +259,7 @@ pub unsafe fn dc_stock_str_repl_string2( mut id: libc::c_int, mut to_insert: *const libc::c_char, mut to_insert2: *const libc::c_char, -) -> *mut libc::c_char { +) -> &libc::c_char { let mut ret: *mut libc::c_char = get_string(context, id, 0i32); dc_str_replace( &mut ret, @@ -293,7 +290,7 @@ pub unsafe fn dc_stock_system_msg( mut param1: *const libc::c_char, mut param2: *const libc::c_char, mut from_id: uint32_t, -) -> *mut libc::c_char { +) -> &libc::c_char { let mut ret: *mut libc::c_char = 0 as *mut libc::c_char; let mut mod_contact: *mut dc_contact_t = 0 as *mut dc_contact_t; let mut mod_displayname: *mut libc::c_char = 0 as *mut libc::c_char; diff --git a/src/dc_token.rs b/src/dc_token.rs index 6ecc36b9d..8d399e35d 100644 --- a/src/dc_token.rs +++ b/src/dc_token.rs @@ -12,7 +12,7 @@ pub const DC_TOKEN_AUTH: dc_tokennamespc_t = 110; pub const DC_TOKEN_INVITENUMBER: dc_tokennamespc_t = 100; // Functions to read/write token from/to the database. A token is any string associated with a key. pub unsafe fn dc_token_save( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut namespc: dc_tokennamespc_t, mut foreign_id: uint32_t, mut token: *const libc::c_char, @@ -35,7 +35,7 @@ pub unsafe fn dc_token_save( sqlite3_finalize(stmt); } pub unsafe fn dc_token_lookup( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut namespc: dc_tokennamespc_t, mut foreign_id: uint32_t, ) -> *mut libc::c_char { @@ -56,7 +56,7 @@ pub unsafe fn dc_token_lookup( return token; } pub unsafe fn dc_token_exists( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut namespc: dc_tokennamespc_t, mut token: *const libc::c_char, ) -> libc::c_int { diff --git a/src/dc_tools.rs b/src/dc_tools.rs index a3efe57bf..ce5b4db41 100644 --- a/src/dc_tools.rs +++ b/src/dc_tools.rs @@ -887,7 +887,7 @@ pub unsafe fn dc_gm2local_offset() -> libc::c_long { return timeinfo.tm_gmtoff; } /* timesmearing */ -pub unsafe fn dc_smeared_time(mut context: *mut dc_context_t) -> time_t { +pub unsafe fn dc_smeared_time(mut context: &dc_context_t) -> time_t { /* function returns a corrected time(NULL) */ let mut now: time_t = time(0 as *mut time_t); pthread_mutex_lock(&mut (*context).smear_critical); @@ -897,7 +897,7 @@ pub unsafe fn dc_smeared_time(mut context: *mut dc_context_t) -> time_t { pthread_mutex_unlock(&mut (*context).smear_critical); return now; } -pub unsafe fn dc_create_smeared_timestamp(mut context: *mut dc_context_t) -> time_t { +pub unsafe fn dc_create_smeared_timestamp(mut context: &dc_context_t) -> time_t { let mut now: time_t = time(0 as *mut time_t); let mut ret: time_t = now; pthread_mutex_lock(&mut (*context).smear_critical); @@ -912,7 +912,7 @@ pub unsafe fn dc_create_smeared_timestamp(mut context: *mut dc_context_t) -> tim return ret; } pub unsafe fn dc_create_smeared_timestamps( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut count: libc::c_int, ) -> time_t { /* get a range to timestamps that can be used uniquely */ @@ -1262,7 +1262,7 @@ pub unsafe fn dc_get_filemeta( return 0i32; } pub unsafe fn dc_get_abs_path( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut pathNfilename: *const libc::c_char, ) -> *mut libc::c_char { let mut current_block: u64; @@ -1301,7 +1301,7 @@ pub unsafe fn dc_get_abs_path( return pathNfilename_abs; } pub unsafe fn dc_file_exist( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut pathNfilename: *const libc::c_char, ) -> libc::c_int { let pathNfilename_abs = dc_get_abs_path(context, pathNfilename); @@ -1320,7 +1320,7 @@ pub unsafe fn dc_file_exist( } pub unsafe fn dc_get_filebytes( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut pathNfilename: *const libc::c_char, ) -> uint64_t { let pathNfilename_abs = dc_get_abs_path(context, pathNfilename); @@ -1337,7 +1337,7 @@ pub unsafe fn dc_get_filebytes( } pub unsafe fn dc_delete_file( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut pathNfilename: *const libc::c_char, ) -> libc::c_int { let mut success: libc::c_int = 0i32; @@ -1359,7 +1359,7 @@ pub unsafe fn dc_delete_file( return success; } pub unsafe fn dc_copy_file( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut src: *const libc::c_char, mut dest: *const libc::c_char, ) -> libc::c_int { @@ -1455,7 +1455,7 @@ pub unsafe fn dc_copy_file( return success; } pub unsafe fn dc_create_folder( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut pathNfilename: *const libc::c_char, ) -> libc::c_int { let mut success = 0; @@ -1487,7 +1487,7 @@ pub unsafe fn dc_create_folder( } pub unsafe fn dc_write_file( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut pathNfilename: *const libc::c_char, mut buf: *const libc::c_void, mut buf_bytes: size_t, @@ -1527,7 +1527,7 @@ pub unsafe fn dc_write_file( return success; } pub unsafe fn dc_read_file( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut pathNfilename: *const libc::c_char, mut buf: *mut *mut libc::c_void, mut buf_bytes: *mut size_t, @@ -1579,7 +1579,7 @@ pub unsafe fn dc_read_file( return success; } pub unsafe fn dc_get_fine_pathNfilename( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut pathNfolder: *const libc::c_char, mut desired_filenameNsuffix__: *const libc::c_char, ) -> *mut libc::c_char { @@ -1635,7 +1635,7 @@ pub unsafe fn dc_get_fine_pathNfilename( return ret; } pub unsafe fn dc_is_blobdir_path( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut path: *const libc::c_char, ) -> libc::c_int { if strncmp(path, (*context).blobdir, strlen((*context).blobdir)) == 0i32 @@ -1645,7 +1645,7 @@ pub unsafe fn dc_is_blobdir_path( } return 0i32; } -pub unsafe fn dc_make_rel_path(mut context: *mut dc_context_t, mut path: *mut *mut libc::c_char) { +pub unsafe fn dc_make_rel_path(mut context: &dc_context_t, mut path: *mut *mut libc::c_char) { if context.is_null() || path.is_null() || (*path).is_null() { return; } @@ -1658,7 +1658,7 @@ pub unsafe fn dc_make_rel_path(mut context: *mut dc_context_t, mut path: *mut *m }; } pub unsafe fn dc_make_rel_and_copy( - mut context: *mut dc_context_t, + mut context: &dc_context_t, mut path: *mut *mut libc::c_char, ) -> libc::c_int { let mut success: libc::c_int = 0i32; diff --git a/src/types.rs b/src/types.rs index 272430039..bdb55956b 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1211,7 +1211,7 @@ pub type dc_get_config_t = Option< #[repr(C)] pub struct _dc_sqlite3 { pub cobj: *mut sqlite3, - pub context: *mut dc_context_t, + pub context: &dc_context_t, } #[inline] @@ -1254,7 +1254,7 @@ pub unsafe fn carray_get(mut array: *mut carray, mut indx: libc::c_uint) -> *mut * @return return 0 unless stated otherwise in the event parameter documentation */ pub type dc_callback_t = - unsafe extern "C" fn(_: *mut dc_context_t, _: Event, _: uintptr_t, _: uintptr_t) -> uintptr_t; + unsafe extern "C" fn(_: &dc_context_t, _: Event, _: uintptr_t, _: uintptr_t) -> uintptr_t; pub const DC_MOVE_STATE_MOVING: libc::c_uint = 3; pub const DC_MOVE_STATE_STAY: libc::c_uint = 2;