From 84bf1ec6e7bd25b3048b425ec8e9982e3f8bd709 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Sun, 15 Sep 2019 21:04:50 +0200 Subject: [PATCH 1/7] refactor(tools): no more dc_mprintf --- src/dc_imex.rs | 46 ++----- src/dc_mimeparser.rs | 54 ++++----- src/dc_tools.rs | 280 ++++++++++++++----------------------------- src/job.rs | 34 ++---- src/key.rs | 2 +- tests/stress.rs | 53 ++------ 6 files changed, 142 insertions(+), 327 deletions(-) diff --git a/src/dc_imex.rs b/src/dc_imex.rs index a2dc5df0e..6cebf983d 100644 --- a/src/dc_imex.rs +++ b/src/dc_imex.rs @@ -101,7 +101,6 @@ pub unsafe fn dc_imex_has_backup( } pub unsafe fn dc_initiate_key_transfer(context: &Context) -> *mut libc::c_char { - let mut setup_file_name: *mut libc::c_char = ptr::null_mut(); let mut msg: Message; if !dc_alloc_ongoing(context) { return std::ptr::null_mut(); @@ -115,8 +114,7 @@ pub unsafe fn dc_initiate_key_transfer(context: &Context) -> *mut libc::c_char { .unwrap() .shall_stop_ongoing { - if let Ok(setup_file_content) = dc_render_setup_file(context, &setup_code) { - let setup_file_content_c = CString::yolo(setup_file_content.as_str()); + if let Ok(ref setup_file_content) = dc_render_setup_file(context, &setup_code) { /* encrypting may also take a while ... */ if !context .running_state @@ -125,23 +123,14 @@ pub unsafe fn dc_initiate_key_transfer(context: &Context) -> *mut libc::c_char { .unwrap() .shall_stop_ongoing { - setup_file_name = dc_get_fine_pathNfilename( - context, - b"$BLOBDIR\x00" as *const u8 as *const libc::c_char, - b"autocrypt-setup-message.html\x00" as *const u8 as *const libc::c_char, - ); - if !(setup_file_name.is_null() - || 0 == dc_write_file( - context, - setup_file_name, - setup_file_content_c.as_ptr() as *const libc::c_void, - setup_file_content_c.as_bytes().len(), - )) - { + let setup_file_name = + dc_get_fine_path_filename(context, "$BLOBDIR", "autocrypt-setup-message.html"); + if dc_write_file(context, &setup_file_name, setup_file_content.as_bytes()) { if let Ok(chat_id) = chat::create_by_contact_id(context, 1) { msg = dc_msg_new_untyped(); msg.type_0 = Viewtype::File; - msg.param.set(Param::File, as_str(setup_file_name)); + msg.param + .set(Param::File, setup_file_name.to_string_lossy()); msg.param .set(Param::MimeType, "application/autocrypt-setup"); @@ -182,7 +171,6 @@ pub unsafe fn dc_initiate_key_transfer(context: &Context) -> *mut libc::c_char { } } } - free(setup_file_name as *mut libc::c_void); dc_free_ongoing(context); setup_code.strdup() @@ -640,7 +628,7 @@ unsafe fn import_backup(context: &Context, backup_to_import: *const libc::c_char } let pathNfilename = context.get_blobdir().join(file_name); - if dc_write_file_safe(context, &pathNfilename, &file_blob) { + if dc_write_file(context, &pathNfilename, &file_blob) { continue; } error!( @@ -687,13 +675,8 @@ unsafe fn export_backup(context: &Context, dir: *const libc::c_char) -> bool { let res = chrono::NaiveDateTime::from_timestamp(now as i64, 0) .format("delta-chat-%Y-%m-%d.bak") .to_string(); - let buffer = CString::yolo(res); - let dest_pathNfilename = dc_get_fine_pathNfilename(context, dir, buffer.as_ptr()); - if dest_pathNfilename.is_null() { - error!(context, "Cannot get backup file name.",); - return success; - } + let dest_path_filename = dc_get_fine_path_filename(context, as_path(dir), res); sql::housekeeping(context); @@ -704,15 +687,15 @@ unsafe fn export_backup(context: &Context, dir: *const libc::c_char) -> bool { context, "Backup \"{}\" to \"{}\".", context.get_dbfile().display(), - as_str(dest_pathNfilename), + dest_path_filename.display(), ); - if dc_copy_file(context, context.get_dbfile(), as_path(dest_pathNfilename)) { + if dc_copy_file(context, context.get_dbfile(), &dest_path_filename) { context.sql.open(&context, &context.get_dbfile(), 0); closed = false; /* add all files as blobs to the database copy (this does not require the source to be locked, neigher the destination as it is used only here) */ /*for logging only*/ let sql = Sql::new(); - if sql.open(context, as_path(dest_pathNfilename), 0) { + if sql.open(context, &dest_path_filename, 0) { if !sql.table_exists("backup_blobs") { if sql::execute( context, @@ -821,9 +804,7 @@ unsafe fn export_backup(context: &Context, dir: *const libc::c_char) -> bool { .set_config_int(context, "backup_time", now as i32) .is_ok() { - context.call_cb(Event::ImexFileWritten( - as_path(dest_pathNfilename).to_path_buf(), - )); + context.call_cb(Event::ImexFileWritten(&dest_path_filename)); success = true; } } @@ -841,9 +822,8 @@ unsafe fn export_backup(context: &Context, dir: *const libc::c_char) -> bool { context.sql.open(&context, &context.get_dbfile(), 0); } if 0 != delete_dest_file { - dc_delete_file(context, as_path(dest_pathNfilename)); + dc_delete_file(context, &dest_path_filename); } - free(dest_pathNfilename as *mut libc::c_void); success } diff --git a/src/dc_mimeparser.rs b/src/dc_mimeparser.rs index 02aed946d..b26c56562 100644 --- a/src/dc_mimeparser.rs +++ b/src/dc_mimeparser.rs @@ -1301,44 +1301,30 @@ unsafe fn do_add_single_file_part( decoded_data_bytes: libc::size_t, desired_filename: *const libc::c_char, ) { - let pathNfilename: *mut libc::c_char; - /* create a free file name to use */ - pathNfilename = dc_get_fine_pathNfilename( - (*parser).context, - b"$BLOBDIR\x00" as *const u8 as *const libc::c_char, - desired_filename, - ); - if !pathNfilename.is_null() { - /* copy data to file */ - if !(dc_write_file( - (*parser).context, - pathNfilename, - decoded_data as *const libc::c_void, - decoded_data_bytes, - ) == 0i32) - { - let mut part = dc_mimepart_new(); - part.type_0 = msg_type; - part.int_mimetype = mime_type; - part.bytes = decoded_data_bytes as libc::c_int; - part.param.set(Param::File, as_str(pathNfilename)); - part.param.set(Param::MimeType, raw_mime); - if mime_type == 80 { - assert!(!decoded_data.is_null(), "invalid image data"); - let data = std::slice::from_raw_parts( - decoded_data as *const u8, - decoded_data_bytes as usize, - ); + let path_filename = + dc_get_fine_path_filename((*parser).context, "$BLOBDIR", as_str(desired_filename)); + let bytes = std::slice::from_raw_parts(decoded_data as *const u8, decoded_data_bytes); - if let Ok((width, height)) = dc_get_filemeta(data) { - part.param.set_int(Param::Width, width as i32); - part.param.set_int(Param::Height, height as i32); - } + /* copy data to file */ + if dc_write_file((*parser).context, &path_filename, bytes) { + let mut part = dc_mimepart_new(); + part.type_0 = msg_type; + part.int_mimetype = mime_type; + part.bytes = decoded_data_bytes as libc::c_int; + part.param.set(Param::File, path_filename.to_string_lossy()); + part.param.set(Param::MimeType, raw_mime); + if mime_type == 80 { + assert!(!decoded_data.is_null(), "invalid image data"); + let data = + std::slice::from_raw_parts(decoded_data as *const u8, decoded_data_bytes as usize); + + if let Ok((width, height)) = dc_get_filemeta(data) { + part.param.set_int(Param::Width, width as i32); + part.param.set_int(Param::Height, height as i32); } - do_add_single_part(parser, part); } + do_add_single_part(parser, part); } - free(pathNfilename as *mut libc::c_void); } unsafe fn do_add_single_part(parser: &mut dc_mimeparser_t, mut part: dc_mimepart_t) { diff --git a/src/dc_tools.rs b/src/dc_tools.rs index cb8c6d6b6..1ae3bfe73 100644 --- a/src/dc_tools.rs +++ b/src/dc_tools.rs @@ -1,12 +1,14 @@ +//! Some tools and enhancements to the used libraries, there should be +//! no references to Context and other "larger" entities here. + use std::borrow::Cow; -use std::ffi::{CStr, CString}; -use std::path::Path; +use std::ffi::{CStr, CString, OsString}; +use std::path::{Path, PathBuf}; use std::str::FromStr; use std::time::SystemTime; use std::{fmt, fs, ptr}; use chrono::{Local, TimeZone}; -use itertools::max; use libc::uintptr_t; use mmime::clist::*; use mmime::mailimf_types::*; @@ -16,10 +18,6 @@ use crate::context::Context; use crate::error::Error; use crate::x::*; -/* Some tools and enhancements to the used libraries, there should be -no references to Context and other "larger" classes here. */ -/* ** library-private **********************************************************/ -/* math tools */ pub fn dc_exactly_one_bit_set(v: libc::c_int) -> bool { 0 != v && 0 == v & (v - 1) } @@ -570,7 +568,7 @@ fn encode_66bits_as_base64(v1: u32, v2: u32, fill: u32) -> String { String::from_utf8(wrapped_writer).unwrap() } -pub unsafe fn dc_create_incoming_rfc724_mid( +pub fn dc_create_incoming_rfc724_mid( message_timestamp: i64, contact_id_from: u32, contact_ids_to: &Vec, @@ -579,51 +577,36 @@ pub unsafe fn dc_create_incoming_rfc724_mid( return ptr::null_mut(); } /* find out the largest receiver ID (we could also take the smallest, but it should be unique) */ - let largest_id_to = max(contact_ids_to.iter()); + let largest_id_to = contact_ids_to.iter().max().copied().unwrap_or_default(); - dc_mprintf( - b"%lu-%lu-%lu@stub\x00" as *const u8 as *const libc::c_char, - message_timestamp as libc::c_ulong, - contact_id_from as libc::c_ulong, - *largest_id_to.unwrap() as libc::c_ulong, - ) + let result = format!( + "{}-{}-{}@stub", + message_timestamp, contact_id_from, largest_id_to + ); + + unsafe { result.strdup() } } +/// Function generates a Message-ID that can be used for a new outgoing message. +/// - this function is called for all outgoing messages. +/// - the message ID should be globally unique +/// - do not add a counter or any private data as as this may give unneeded information to the receiver pub unsafe fn dc_create_outgoing_rfc724_mid( grpid: *const libc::c_char, from_addr: *const libc::c_char, ) -> *mut libc::c_char { - /* Function generates a Message-ID that can be used for a new outgoing message. - - this function is called for all outgoing messages. - - the message ID should be globally unique - - do not add a counter or any private data as as this may give unneeded information to the receiver */ - let mut rand1: *mut libc::c_char = ptr::null_mut(); - let rand2: *mut libc::c_char = dc_create_id().strdup(); - let ret: *mut libc::c_char; - let mut at_hostname: *const libc::c_char = strchr(from_addr, '@' as i32); - if at_hostname.is_null() { - at_hostname = b"@nohost\x00" as *const u8 as *const libc::c_char - } - if !grpid.is_null() { - ret = dc_mprintf( - b"Gr.%s.%s%s\x00" as *const u8 as *const libc::c_char, - grpid, - rand2, - at_hostname, - ) - } else { - rand1 = dc_create_id().strdup(); - ret = dc_mprintf( - b"Mr.%s.%s%s\x00" as *const u8 as *const libc::c_char, - rand1, - rand2, - at_hostname, - ) - } - free(rand1 as *mut libc::c_void); - free(rand2 as *mut libc::c_void); + let rand2 = dc_create_id(); - ret + let at_hostname = as_opt_str(strchr(from_addr, '@' as i32)).unwrap_or_else(|| "@nohost"); + + let ret = if !grpid.is_null() { + format!("Gr.{}.{}{}", as_str(grpid), rand2, at_hostname,) + } else { + let rand1 = dc_create_id(); + format!("Mr.{}.{}{}", rand1, rand2, at_hostname) + }; + + ret.strdup() } /// Generate globally-unique message-id for a new outgoing message. @@ -696,16 +679,6 @@ pub unsafe fn dc_extract_grpid_from_rfc724_mid_list(list: *const clist) -> *mut ptr::null_mut() } -#[allow(non_snake_case)] -unsafe fn dc_ensure_no_slash(pathNfilename: *mut libc::c_char) { - let path_len = strlen(pathNfilename); - if path_len > 0 && *pathNfilename.add(path_len - 1) as libc::c_int == '/' as i32 - || *pathNfilename.add(path_len - 1) as libc::c_int == '\\' as i32 - { - *pathNfilename.add(path_len - 1) = 0 as libc::c_char; - } -} - pub fn dc_ensure_no_slash_safe(path: &str) -> &str { if path.ends_with('/') || path.ends_with('\\') { return &path[..path.len() - 1]; @@ -713,18 +686,12 @@ pub fn dc_ensure_no_slash_safe(path: &str) -> &str { path } -unsafe fn dc_validate_filename(filename: *mut libc::c_char) { - /* function modifies the given buffer and replaces all characters not valid in filenames by a "-" */ - let mut p1: *mut libc::c_char = filename; - while 0 != *p1 { - if *p1 as libc::c_int == '/' as i32 - || *p1 as libc::c_int == '\\' as i32 - || *p1 as libc::c_int == ':' as i32 - { - *p1 = '-' as i32 as libc::c_char - } - p1 = p1.offset(1isize) - } +/// Function modifies the given buffer and replaces all characters not valid in filenames by a "-". +fn validate_filename(filename: &str) -> String { + filename + .replace('/', "-") + .replace('\\', "-") + .replace(':', "-") } pub unsafe fn dc_get_filename(path_filename: impl AsRef) -> *mut libc::c_char { @@ -735,42 +702,6 @@ pub unsafe fn dc_get_filename(path_filename: impl AsRef) -> *mut libc::c_ch } } -// the case of the suffix is preserved -#[allow(non_snake_case)] -unsafe fn dc_split_filename( - pathNfilename: *const libc::c_char, - ret_basename: *mut *mut libc::c_char, - ret_all_suffixes_incl_dot: *mut *mut libc::c_char, -) { - if pathNfilename.is_null() { - return; - } - /* splits a filename into basename and all suffixes, eg. "/path/foo.tar.gz" is split into "foo.tar" and ".gz", - (we use the _last_ dot which allows the usage inside the filename which are very usual; - maybe the detection could be more intelligent, however, for the moment, it is just file) - - if there is no suffix, the returned suffix string is empty, eg. "/path/foobar" is split into "foobar" and "" - - the case of the returned suffix is preserved; this is to allow reconstruction of (similar) names */ - let basename: *mut libc::c_char = dc_get_filename(as_str(pathNfilename)); - let suffix: *mut libc::c_char; - let p1: *mut libc::c_char = strrchr(basename, '.' as i32); - if !p1.is_null() { - suffix = dc_strdup(p1); - *p1 = 0 as libc::c_char - } else { - suffix = dc_strdup(ptr::null()) - } - if !ret_basename.is_null() { - *ret_basename = basename - } else { - free(basename as *mut libc::c_void); - } - if !ret_all_suffixes_incl_dot.is_null() { - *ret_all_suffixes_incl_dot = suffix - } else { - free(suffix as *mut libc::c_void); - }; -} - // the returned suffix is lower-case #[allow(non_snake_case)] pub unsafe fn dc_get_filesuffix_lc(path_filename: impl AsRef) -> *mut libc::c_char { @@ -876,23 +807,8 @@ pub fn dc_create_folder(context: &Context, path: impl AsRef) -> } } -#[allow(non_snake_case)] -pub unsafe fn dc_write_file( - context: &Context, - pathNfilename: *const libc::c_char, - buf: *const libc::c_void, - buf_bytes: libc::size_t, -) -> libc::c_int { - let bytes = std::slice::from_raw_parts(buf as *const u8, buf_bytes); - - dc_write_file_safe(context, as_str(pathNfilename), bytes) as libc::c_int -} - -pub fn dc_write_file_safe>( - context: &Context, - path: P, - buf: &[u8], -) -> bool { +/// Write a the given content to provied file path. +pub fn dc_write_file(context: &Context, path: impl AsRef, buf: &[u8]) -> bool { let path_abs = dc_get_abs_path(context, &path); if let Err(_err) = fs::write(&path_abs, buf) { warn!( @@ -942,58 +858,48 @@ pub fn dc_read_file_safe>(context: &Context, path: P) } } -#[allow(non_snake_case)] -pub unsafe fn dc_get_fine_pathNfilename( +pub fn dc_get_fine_path_filename( context: &Context, - pathNfolder: *const libc::c_char, - desired_filenameNsuffix__: *const libc::c_char, -) -> *mut libc::c_char { - let mut ret: *mut libc::c_char = ptr::null_mut(); - let pathNfolder_wo_slash: *mut libc::c_char; - let filenameNsuffix: *mut libc::c_char; - let mut basename: *mut libc::c_char = ptr::null_mut(); - let mut dotNSuffix: *mut libc::c_char = ptr::null_mut(); + folder: impl AsRef, + desired_filename_suffix: impl AsRef, +) -> PathBuf { let now = time(); - pathNfolder_wo_slash = dc_strdup(pathNfolder); - dc_ensure_no_slash(pathNfolder_wo_slash); - filenameNsuffix = dc_strdup(desired_filenameNsuffix__); - dc_validate_filename(filenameNsuffix); - dc_split_filename(filenameNsuffix, &mut basename, &mut dotNSuffix); + let folder = PathBuf::from(folder.as_ref()); + let suffix = validate_filename(desired_filename_suffix.as_ref()); - for i in 0..1000i64 { - /*no deadlocks, please*/ - if 0 != i { - let idx = if i < 100 { i } else { now + i }; - ret = dc_mprintf( - b"%s/%s-%lu%s\x00" as *const u8 as *const libc::c_char, - pathNfolder_wo_slash, - basename, - idx as libc::c_ulong, - dotNSuffix, - ) + let file_name = PathBuf::from(suffix); + let extension = file_name.extension().map(|c| c.clone()); + + for i in 0..100_000 { + let ret = if i == 0 { + let mut folder = folder.clone(); + folder.push(&file_name); + folder } else { - ret = dc_mprintf( - b"%s/%s%s\x00" as *const u8 as *const libc::c_char, - pathNfolder_wo_slash, - basename, - dotNSuffix, - ) + let idx = if i < 100 { i } else { now + i }; + let file_name = if let Some(stem) = file_name.file_stem() { + let mut stem = stem.to_os_string(); + stem.push(format!("-{}", idx)); + stem + } else { + OsString::from(idx.to_string()) + }; + let mut folder = folder.clone(); + folder.push(file_name); + if let Some(ext) = extension { + folder.set_extension(&ext); + } + folder + }; + + if !dc_file_exist(context, &ret) { + // fine filename found + return ret; } - if !dc_file_exist(context, as_path(ret)) { - /* fine filename found */ - break; - } - free(ret as *mut libc::c_void); - ret = ptr::null_mut(); } - free(filenameNsuffix as *mut libc::c_void); - free(basename as *mut libc::c_void); - free(dotNSuffix as *mut libc::c_void); - free(pathNfolder_wo_slash as *mut libc::c_void); - - ret + panic!("Something is really wrong, you need to clean up your disk"); } pub fn dc_is_blobdir_path(context: &Context, path: impl AsRef) -> bool { @@ -1017,38 +923,18 @@ fn dc_make_rel_path(context: &Context, path: &mut String) { } pub fn dc_make_rel_and_copy(context: &Context, path: &mut String) -> bool { - let mut success = false; - let mut filename = ptr::null_mut(); - let mut blobdir_path = ptr::null_mut(); if dc_is_blobdir_path(context, &path) { dc_make_rel_path(context, path); - success = true; - } else { - filename = unsafe { dc_get_filename(&path) }; - if !(filename.is_null() - || { - blobdir_path = unsafe { - dc_get_fine_pathNfilename( - context, - b"$BLOBDIR\x00" as *const u8 as *const libc::c_char, - filename, - ) - }; - blobdir_path.is_null() - } - || !dc_copy_file(context, &path, as_path(blobdir_path))) - { - *path = to_string(blobdir_path); - blobdir_path = ptr::null_mut(); - dc_make_rel_path(context, path); - success = true; - } + return true; } - unsafe { - free(blobdir_path.cast()); - free(filename.cast()); + let blobdir_path = dc_get_fine_path_filename(context, "$BLOBDIR", &path); + if dc_copy_file(context, &path, &blobdir_path) { + *path = blobdir_path.to_string_lossy().to_string(); + dc_make_rel_path(context, path); + return true; } - success + + false } /// Error type for the [OsStrExt] trait @@ -1923,4 +1809,14 @@ mod tests { } } } + + #[test] + fn test_dc_create_incoming_rfc724_mid() { + let res = dc_create_incoming_rfc724_mid(123, 45, &vec![6, 7]); + assert_eq!(as_str(res), "123-45-7@stub"); + + unsafe { + free(res.cast()); + } + } } diff --git a/src/job.rs b/src/job.rs index 43fb07957..d9a79a615 100644 --- a/src/job.rs +++ b/src/job.rs @@ -998,38 +998,23 @@ fn send_mdn(context: &Context, msg_id: u32) { #[allow(non_snake_case)] fn add_smtp_job(context: &Context, action: Action, mimefactory: &dc_mimefactory_t) -> libc::c_int { - let pathNfilename: *mut libc::c_char; let mut success: libc::c_int = 0i32; let mut recipients: *mut libc::c_char = ptr::null_mut(); let mut param = Params::new(); - pathNfilename = unsafe { - dc_get_fine_pathNfilename( - context, - b"$BLOBDIR\x00" as *const u8 as *const libc::c_char, - mimefactory.rfc724_mid, + let path_filename = + dc_get_fine_path_filename(context, "$BLOBDIR", as_str(mimefactory.rfc724_mid)); + let bytes = unsafe { + std::slice::from_raw_parts( + (*mimefactory.out).str_0 as *const u8, + (*mimefactory.out).len, ) }; - if pathNfilename.is_null() { - error!( - context, - "Could not find free file name for message with ID <{}>.", - to_string(mimefactory.rfc724_mid), - ); - } else if 0 - == unsafe { - dc_write_file( - context, - pathNfilename, - (*mimefactory.out).str_0 as *const libc::c_void, - (*mimefactory.out).len, - ) - } - { + if !dc_write_file(context, &path_filename, bytes) { error!( context, "Could not write message <{}> to \"{}\".", to_string(mimefactory.rfc724_mid), - as_str(pathNfilename), + path_filename.display(), ); } else { recipients = unsafe { @@ -1038,7 +1023,7 @@ fn add_smtp_job(context: &Context, action: Action, mimefactory: &dc_mimefactory_ b"\x1e\x00" as *const u8 as *const libc::c_char, ) }; - param.set(Param::File, as_str(pathNfilename)); + param.set(Param::File, path_filename.to_string_lossy()); param.set(Param::Recipients, as_str(recipients)); job_add( context, @@ -1057,7 +1042,6 @@ fn add_smtp_job(context: &Context, action: Action, mimefactory: &dc_mimefactory_ } unsafe { free(recipients.cast()); - free(pathNfilename.cast()); } success } diff --git a/src/key.rs b/src/key.rs index 9afc8ff43..c7193cbd7 100644 --- a/src/key.rs +++ b/src/key.rs @@ -218,7 +218,7 @@ impl Key { pub fn write_asc_to_file(&self, file: impl AsRef, context: &Context) -> bool { let file_content = self.to_asc(None).into_bytes(); - if dc_write_file_safe(context, &file, &file_content) { + if dc_write_file(context, &file, &file_content) { return true; } else { error!(context, "Cannot write key to {}", file.as_ref().display()); diff --git a/tests/stress.rs b/tests/stress.rs index f94e97091..544fde8b5 100644 --- a/tests/stress.rs +++ b/tests/stress.rs @@ -1,6 +1,7 @@ //! Stress some functions for testing; if used as a lib, this file is obsolete. use std::collections::HashSet; +use std::path::PathBuf; use std::ptr; use tempfile::{tempdir, TempDir}; @@ -39,15 +40,10 @@ unsafe fn stress_functions(context: &Context) { dc_delete_file(context, "$BLOBDIR/foobar.dadada"); dc_delete_file(context, "$BLOBDIR/foobar-folder"); } - dc_write_file( - context, - b"$BLOBDIR/foobar\x00" as *const u8 as *const libc::c_char, - b"content\x00" as *const u8 as *const libc::c_char as *const libc::c_void, - 7, - ); + assert!(dc_write_file(context, "$BLOBDIR/foobar", b"content")); assert!(dc_file_exist(context, "$BLOBDIR/foobar",)); assert!(!dc_file_exist(context, "$BLOBDIR/foobarx")); - assert_eq!(dc_get_filebytes(context, "$BLOBDIR/foobar",), 7); + assert_eq!(dc_get_filebytes(context, "$BLOBDIR/foobar"), 7); let abs_path = context .get_blobdir() @@ -87,41 +83,14 @@ unsafe fn stress_functions(context: &Context) { assert!(dc_create_folder(context, "$BLOBDIR/foobar-folder")); assert!(dc_file_exist(context, "$BLOBDIR/foobar-folder",)); assert!(!dc_delete_file(context, "$BLOBDIR/foobar-folder")); - let fn0: *mut libc::c_char = dc_get_fine_pathNfilename( - context, - b"$BLOBDIR\x00" as *const u8 as *const libc::c_char, - b"foobar.dadada\x00" as *const u8 as *const libc::c_char, - ); - assert!(!fn0.is_null()); - assert_eq!( - strcmp( - fn0, - b"$BLOBDIR/foobar.dadada\x00" as *const u8 as *const libc::c_char, - ), - 0 - ); - dc_write_file( - context, - fn0, - b"content\x00" as *const u8 as *const libc::c_char as *const libc::c_void, - 7, - ); - let fn1: *mut libc::c_char = dc_get_fine_pathNfilename( - context, - b"$BLOBDIR\x00" as *const u8 as *const libc::c_char, - b"foobar.dadada\x00" as *const u8 as *const libc::c_char, - ); - assert!(!fn1.is_null()); - assert_eq!( - strcmp( - fn1, - b"$BLOBDIR/foobar-1.dadada\x00" as *const u8 as *const libc::c_char, - ), - 0 - ); - assert!(dc_delete_file(context, as_path(fn0))); - free(fn0 as *mut libc::c_void); - free(fn1 as *mut libc::c_void); + let fn0 = dc_get_fine_path_filename(context, "$BLOBDIR", "foobar.dadada"); + assert_eq!(fn0, PathBuf::from("$BLOBDIR/foobar.dadada")); + + assert!(dc_write_file(context, &fn0, b"content")); + let fn1 = dc_get_fine_path_filename(context, "$BLOBDIR", "foobar.dadada"); + assert_eq!(fn1, PathBuf::from("$BLOBDIR/foobar-1.dadada")); + + assert!(dc_delete_file(context, &fn0)); let res = context.get_config(config::Config::SysConfigKeys).unwrap(); From ecaae42b806e4eeb6714c77f42bbeec800ccd943 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Sun, 15 Sep 2019 21:10:15 +0200 Subject: [PATCH 2/7] refactor(examples): remove dc_mprintf --- examples/repl/cmdline.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 0a05332e7..e2d6dead4 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -510,18 +510,14 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E } "export-setup" => { let setup_code = dc_create_setup_code(context); - let file_name: *mut libc::c_char = dc_mprintf( - b"%s/autocrypt-setup-message.html\x00" as *const u8 as *const libc::c_char, - context.get_blobdir(), - ); + let file_name = context.get_blobdir().join("autocrypt-setup-message.html"); let file_content = dc_render_setup_file(context, &setup_code)?; - std::fs::write(as_str(file_name), file_content)?; + std::fs::write(&file_name, file_content)?; println!( "Setup message written to: {}\nSetup code: {}", - as_str(file_name), + file_name.display(), &setup_code, ); - free(file_name as *mut libc::c_void); } "poke" => { ensure!(0 != poke_spec(context, arg1_c), "Poke failed"); From 72a9ca0aa594110a652f1f2c7ddee0bb49efb920 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Sun, 15 Sep 2019 21:10:55 +0200 Subject: [PATCH 3/7] refactor(receive_imf): remove dc_mprintf --- src/dc_receive_imf.rs | 47 +++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index f24fa7d00..443f2002c 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -1,4 +1,3 @@ -use std::ffi::CString; use std::ptr; use itertools::join; @@ -307,14 +306,10 @@ unsafe fn add_parts( let mut rcvd_timestamp = 0; let mut mime_in_reply_to = std::ptr::null_mut(); let mut mime_references = std::ptr::null_mut(); - let mut txt_raw = std::ptr::null_mut(); - let cleanup = |mime_in_reply_to: *mut libc::c_char, - mime_references: *mut libc::c_char, - txt_raw: *mut libc::c_char| { + let cleanup = |mime_in_reply_to: *mut libc::c_char, mime_references: *mut libc::c_char| { free(mime_in_reply_to.cast()); free(mime_references.cast()); - free(txt_raw.cast()); }; // collect the rest information, CC: is added to the to-list, BCC: is ignored @@ -353,7 +348,7 @@ unsafe fn add_parts( if rfc724_mid.is_null() { rfc724_mid = dc_create_incoming_rfc724_mid(*sent_timestamp, *from_id, to_ids); if rfc724_mid.is_null() { - cleanup(mime_in_reply_to, mime_references, txt_raw); + cleanup(mime_in_reply_to, mime_references); bail!("Cannot create Message-ID"); } } @@ -375,7 +370,7 @@ unsafe fn add_parts( } free(old_server_folder.cast()); - cleanup(mime_in_reply_to, mime_references, txt_raw); + cleanup(mime_in_reply_to, mime_references); bail!("Message already in DB"); } @@ -630,6 +625,8 @@ unsafe fn add_parts( // into only one message; mails sent by other clients may result in several messages // (eg. one per attachment)) let icnt = mime_parser.parts.len(); + let mut txt_raw = None; + let is_ok = context .sql .prepare( @@ -657,20 +654,13 @@ unsafe fn add_parts( } } if part.type_0 == Viewtype::Text { - let msg_raw = - CString::yolo(part.msg_raw.as_ref().cloned().unwrap_or_default()); - let subject_c = CString::yolo( - mime_parser - .subject - .as_ref() - .map(|s| s.to_string()) - .unwrap_or("".into()), - ); - txt_raw = dc_mprintf( - b"%s\n\n%s\x00" as *const u8 as *const libc::c_char, - subject_c.as_ptr(), - msg_raw.as_ptr(), - ) + let msg_raw = part.msg_raw.as_ref().cloned().unwrap_or_default(); + let subject = mime_parser + .subject + .as_ref() + .map(|s| s.to_string()) + .unwrap_or("".into()); + txt_raw = Some(format!("{}\n\n{}", subject, msg_raw)); } if 0 != mime_parser.is_system_message { part.param @@ -692,11 +682,7 @@ unsafe fn add_parts( msgrmsg, part.msg.as_ref().map_or("", String::as_str), // txt_raw might contain invalid utf8 - if !txt_raw.is_null() { - to_string_lossy(txt_raw) - } else { - String::new() - }, + txt_raw.unwrap_or_default(), part.param.to_string(), part.bytes, *hidden, @@ -715,8 +701,7 @@ unsafe fn add_parts( to_string(mime_references), ])?; - free(txt_raw as *mut libc::c_void); - txt_raw = ptr::null_mut(); + txt_raw = None; *insert_msg_id = sql::get_rowid_with_conn( context, conn, @@ -733,7 +718,7 @@ unsafe fn add_parts( if !is_ok { // i/o error - there is nothing more we can do - in other cases, we try to write at least an empty record - cleanup(mime_in_reply_to, mime_references, txt_raw); + cleanup(mime_in_reply_to, mime_references); bail!("Cannot write DB."); } @@ -756,7 +741,7 @@ unsafe fn add_parts( } context.do_heuristics_moves(server_folder.as_ref(), *insert_msg_id); - cleanup(mime_in_reply_to, mime_references, txt_raw); + cleanup(mime_in_reply_to, mime_references); Ok(()) } From d091857cefcd66312cd2eb760b271e5f5cf2d086 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Sun, 15 Sep 2019 21:28:03 +0200 Subject: [PATCH 4/7] refactor(imex): remove dc_mprintf --- src/dc_imex.rs | 84 +++++++++++++++++++++----------------------------- 1 file changed, 35 insertions(+), 49 deletions(-) diff --git a/src/dc_imex.rs b/src/dc_imex.rs index 6cebf983d..2768b6ad0 100644 --- a/src/dc_imex.rs +++ b/src/dc_imex.rs @@ -804,7 +804,7 @@ unsafe fn export_backup(context: &Context, dir: *const libc::c_char) -> bool { .set_config_int(context, "backup_time", now as i32) .is_ok() { - context.call_cb(Event::ImexFileWritten(&dest_path_filename)); + context.call_cb(Event::ImexFileWritten(dest_path_filename.clone())); success = true; } } @@ -840,10 +840,8 @@ unsafe fn import_self_keys(context: &Context, dir_name: *const libc::c_char) -> (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 = 0; let mut suffix: *mut libc::c_char = ptr::null_mut(); - let mut path_plus_name: *mut libc::c_char = ptr::null_mut(); let mut set_default: libc::c_int; let mut buf: *mut libc::c_char = ptr::null_mut(); - let mut buf_bytes: libc::size_t = 0; // a pointer inside buf, MUST NOT be free()'d let mut private_key: *const libc::c_char; let mut buf2: *mut libc::c_char = ptr::null_mut(); @@ -866,25 +864,21 @@ unsafe fn import_self_keys(context: &Context, dir_name: *const libc::c_char) -> { continue; } - free(path_plus_name as *mut libc::c_void); - path_plus_name = dc_mprintf( - b"%s/%s\x00" as *const u8 as *const libc::c_char, - dir_name, - name_c.as_ptr(), - ); - info!(context, "Checking: {}", as_str(path_plus_name)); - free(buf as *mut libc::c_void); + let path_plus_name = dir.join(entry.file_name()); + info!(context, "Checking: {}", path_plus_name.display()); + + free(buf.cast()); buf = ptr::null_mut(); - if 0 == dc_read_file( - context, - path_plus_name, - &mut buf as *mut *mut libc::c_char as *mut *mut libc::c_void, - &mut buf_bytes, - ) || buf_bytes < 50 - { + + if let Some(buf_r) = dc_read_file_safe(context, &path_plus_name) { + buf = buf_r.as_ptr() as *mut _; + std::mem::forget(buf_r); + } else { continue; - } + }; + private_key = buf; + free(buf2 as *mut libc::c_void); buf2 = dc_strdup(buf); if dc_split_armored_data( @@ -917,7 +911,7 @@ unsafe fn import_self_keys(context: &Context, dir_name: *const libc::c_char) -> info!( context, "Treating \"{}\" as a legacy private key.", - as_str(path_plus_name), + path_plus_name.display(), ); set_default = 0i32 } @@ -943,7 +937,6 @@ unsafe fn import_self_keys(context: &Context, dir_name: *const libc::c_char) -> } free(suffix as *mut libc::c_void); - free(path_plus_name as *mut libc::c_void); free(buf as *mut libc::c_void); free(buf2 as *mut libc::c_void); @@ -1006,38 +999,31 @@ unsafe fn export_key_to_asc_file( is_default: libc::c_int, ) -> bool { let mut success = false; - let file_name; - if 0 != is_default { - file_name = dc_mprintf( - b"%s/%s-key-default.asc\x00" as *const u8 as *const libc::c_char, - dir, - if key.is_public() { - b"public\x00" as *const u8 as *const libc::c_char - } else { - b"private\x00" as *const u8 as *const libc::c_char - }, - ) + let dir = as_path(dir); + + let file_name = if 0 != is_default { + let name = format!( + "{}-key-default.asc", + if key.is_public() { "public" } else { "private" }, + ); + dir.join(name) } else { - file_name = dc_mprintf( - b"%s/%s-key-%i.asc\x00" as *const u8 as *const libc::c_char, - dir, - if key.is_public() { - b"public\x00" as *const u8 as *const libc::c_char - } else { - b"private\x00" as *const u8 as *const libc::c_char - }, - id, - ) - } - info!(context, "Exporting key {}", as_str(file_name),); - dc_delete_file(context, as_path(file_name)); - if !key.write_asc_to_file(as_path(file_name), context) { - error!(context, "Cannot write key to {}", as_str(file_name),); + let name = format!( + "{}-key-{}.asc", + if key.is_public() { "public" } else { "private" }, + id + ); + dir.join(name) + }; + info!(context, "Exporting key {}", file_name.display()); + dc_delete_file(context, &file_name); + + if !key.write_asc_to_file(&file_name, context) { + error!(context, "Cannot write key to {}", file_name.display()); } else { - context.call_cb(Event::ImexFileWritten(as_path(file_name).to_path_buf())); + context.call_cb(Event::ImexFileWritten(file_name.clone())); success = true; } - free(file_name as *mut libc::c_void); success } From 9534a9ad304f0b907618b26cbe357a503a16041f Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Sun, 15 Sep 2019 21:33:50 +0200 Subject: [PATCH 5/7] refactor(mimeparser): remove dc_mprintf --- src/dc_mimeparser.rs | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/dc_mimeparser.rs b/src/dc_mimeparser.rs index b26c56562..81882b928 100644 --- a/src/dc_mimeparser.rs +++ b/src/dc_mimeparser.rs @@ -1,5 +1,5 @@ use std::collections::{HashMap, HashSet}; -use std::ffi::{CStr, CString}; +use std::ffi::CStr; use std::ptr; use charset::Charset; @@ -241,18 +241,14 @@ pub unsafe fn dc_mimeparser_parse<'a>(context: &'a Context, body: &[u8]) -> dc_m .trim(); if !subj.is_empty() { - let subj_c = CString::yolo(subj); for part in mimeparser.parts.iter_mut() { if part.type_0 == Viewtype::Text { - let msg_c = part.msg.as_ref().unwrap().strdup(); - let new_txt: *mut libc::c_char = dc_mprintf( - b"%s \xe2\x80\x93 %s\x00" as *const u8 as *const libc::c_char, - subj_c.as_ptr(), - msg_c, + let new_txt = format!( + "{} – {}", + subj, + part.msg.as_ref().expect("missing msg part") ); - free(msg_c.cast()); - part.msg = Some(to_string_lossy(new_txt)); - free(new_txt.cast()); + part.msg = Some(new_txt); break; } } @@ -1213,10 +1209,11 @@ unsafe fn dc_mimeparser_add_single_part_if_known( if !(*mime).mm_content_type.is_null() && !(*(*mime).mm_content_type).ct_subtype.is_null() { - desired_filename = dc_mprintf( - b"file.%s\x00" as *const u8 as *const libc::c_char, - (*(*mime).mm_content_type).ct_subtype, - ); + desired_filename = format!( + "file.{}", + as_str((*(*mime).mm_content_type).ct_subtype) + ) + .strdup(); } else { ok_to_continue = false; } From 0f718e0d08f8e0b03df1fb800e6aae4fdfe94787 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Sun, 15 Sep 2019 21:55:16 +0200 Subject: [PATCH 6/7] refactor(mimefactory): remove dc_mprintf --- src/dc_mimefactory.rs | 252 +++++++++++++++++++----------------------- src/dc_strencode.rs | 14 ++- 2 files changed, 122 insertions(+), 144 deletions(-) diff --git a/src/dc_mimefactory.rs b/src/dc_mimefactory.rs index 69627708e..cb8b34506 100644 --- a/src/dc_mimefactory.rs +++ b/src/dc_mimefactory.rs @@ -1,4 +1,4 @@ -use std::ffi::CString; +use std::path::Path; use std::ptr; use chrono::TimeZone; @@ -31,7 +31,7 @@ use crate::x::*; pub struct dc_mimefactory_t<'a> { pub from_addr: *mut libc::c_char, pub from_displayname: *mut libc::c_char, - pub selfstatus: *mut libc::c_char, + pub selfstatus: Option, pub recipients_names: *mut clist, pub recipients_addr: *mut clist, pub timestamp: i64, @@ -56,7 +56,6 @@ impl<'a> Drop for dc_mimefactory_t<'a> { unsafe { free(self.from_addr as *mut libc::c_void); free(self.from_displayname as *mut libc::c_void); - free(self.selfstatus as *mut libc::c_void); free(self.rfc724_mid as *mut libc::c_void); if !self.recipients_names.is_null() { clist_free_content(self.recipients_names); @@ -94,7 +93,7 @@ pub unsafe fn dc_mimefactory_load_msg( let mut factory = dc_mimefactory_t { from_addr: ptr::null_mut(), from_displayname: ptr::null_mut(), - selfstatus: ptr::null_mut(), + selfstatus: None, recipients_names: clist_new(), recipients_addr: clist_new(), timestamp: 0, @@ -252,14 +251,16 @@ unsafe fn load_from(factory: &mut dc_mimefactory_t) { .unwrap_or_default() .strdup(); - factory.selfstatus = context - .sql - .get_config(context, "selfstatus") - .unwrap_or_default() - .strdup(); - if factory.selfstatus.is_null() { - factory.selfstatus = factory.context.stock_str(StockMessage::StatusLine).strdup(); - }; + factory.selfstatus = context.sql.get_config(context, "selfstatus"); + + if factory.selfstatus.is_none() { + factory.selfstatus = Some( + factory + .context + .stock_str(StockMessage::StatusLine) + .to_string(), + ); + } } pub unsafe fn dc_mimefactory_load_mdn<'a>( @@ -282,7 +283,7 @@ pub unsafe fn dc_mimefactory_load_mdn<'a>( let mut factory = dc_mimefactory_t { from_addr: ptr::null_mut(), from_displayname: ptr::null_mut(), - selfstatus: ptr::null_mut(), + selfstatus: None, recipients_names: clist_new(), recipients_addr: clist_new(), timestamp: 0, @@ -341,7 +342,6 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact let mut message: *mut mailmime = ptr::null_mut(); let mut message_text: *mut libc::c_char = ptr::null_mut(); let mut message_text2: *mut libc::c_char = ptr::null_mut(); - let mut subject_str: *mut libc::c_char = ptr::null_mut(); let mut afwd_email: libc::c_int = 0; let mut col: libc::c_int = 0; let mut success = false; @@ -368,7 +368,7 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact from, mailimf_mailbox_new( if !factory.from_displayname.is_null() { - dc_encode_header_words(factory.from_displayname) + dc_encode_header_words(as_str(factory.from_displayname)) } else { ptr::null_mut() }, @@ -402,7 +402,7 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact MAILIMF_ADDRESS_MAILBOX as libc::c_int, mailimf_mailbox_new( if !name.is_null() { - dc_encode_header_words(name) + dc_encode_header_words(as_str(name)) } else { ptr::null_mut() }, @@ -457,17 +457,12 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact .as_ref() .map(|s| format!("/{}", s)) .unwrap_or_default(); - let os_part = CString::new(os_part).expect("String -> CString conversion failed"); - let version = CString::yolo(get_version_str()); + let version = get_version_str(); mailimf_fields_add( imf_fields, mailimf_field_new_custom( strdup(b"X-Mailer\x00" as *const u8 as *const libc::c_char), - dc_mprintf( - b"Delta Chat Core %s%s\x00" as *const u8 as *const libc::c_char, - version.as_ptr(), - os_part.as_ptr(), - ), + format!("Delta Chat Core {}{}", version, os_part).strdup(), ), ); @@ -496,7 +491,8 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact *********************************************************************/ let chat = factory.chat.as_ref().unwrap(); let mut meta_part: *mut mailmime = ptr::null_mut(); - let mut placeholdertext: *mut libc::c_char = ptr::null_mut(); + let mut placeholdertext = None; + if chat.typ == Chattype::VerifiedGroup { mailimf_fields_add( imf_fields, @@ -538,12 +534,11 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact chat.grpid.strdup(), ), ); - let name = CString::yolo(chat.name.as_bytes()); mailimf_fields_add( imf_fields, mailimf_field_new_custom( strdup(b"Chat-Group-Name\x00" as *const u8 as *const libc::c_char), - dc_encode_header_words(name.as_ptr()), + dc_encode_header_words(&chat.name), ), ); if command == DC_CMD_MEMBER_REMOVED_FROM_GROUP { @@ -642,11 +637,14 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact strdup(b"v1\x00" as *const u8 as *const libc::c_char), ), ); - placeholdertext = factory - .context - .stock_str(StockMessage::AcSetupMsgBody) - .strdup(); + placeholdertext = Some( + factory + .context + .stock_str(StockMessage::AcSetupMsgBody) + .to_string(), + ); } + if command == DC_CMD_SECUREJOIN_MESSAGE { let msg = &factory.msg; let step = msg.param.get(Param::Arg).unwrap_or_default().strdup(); @@ -768,78 +766,68 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact imf_fields, mailimf_field_new_custom( strdup(b"Chat-Duration\x00" as *const u8 as *const libc::c_char), - dc_mprintf( - b"%i\x00" as *const u8 as *const libc::c_char, - duration_ms as libc::c_int, - ), + duration_ms.to_string().strdup(), ), ); } } afwd_email = factory.msg.param.exists(Param::Forwarded) as libc::c_int; - let mut fwdhint = ptr::null_mut(); - if 0 != afwd_email { - fwdhint = dc_strdup( - b"---------- Forwarded message ----------\r\nFrom: Delta Chat\r\n\r\n\x00" - as *const u8 as *const libc::c_char, + let fwdhint = if 0 != afwd_email { + Some( + "---------- Forwarded message ----------\r\nFrom: Delta Chat\r\n\r\n" + .to_string(), ) - } + } else { + None + }; let final_text = { - if !placeholdertext.is_null() { - to_string(placeholdertext) + if let Some(ref text) = placeholdertext { + text } else if let Some(ref text) = factory.msg.text { - text.clone() + text } else { - "".into() + "" } }; - let final_text = CString::yolo(final_text); - let footer: *mut libc::c_char = factory.selfstatus; - message_text = dc_mprintf( - b"%s%s%s%s%s\x00" as *const u8 as *const libc::c_char, - if !fwdhint.is_null() { - fwdhint + let footer = factory.selfstatus.as_ref(); + + message_text = format!( + "{}{}{}{}{}", + if let Some(ref hint) = fwdhint { + hint } else { - b"\x00" as *const u8 as *const libc::c_char + "" }, - final_text.as_ptr(), - if final_text != CString::yolo("") - && !footer.is_null() - && 0 != *footer.offset(0isize) as libc::c_int - { - b"\r\n\r\n\x00" as *const u8 as *const libc::c_char + &final_text, + if !final_text.is_empty() && footer.is_some() { + "\r\n\r\n" } else { - b"\x00" as *const u8 as *const libc::c_char + "" }, - if !footer.is_null() && 0 != *footer.offset(0isize) as libc::c_int { - b"-- \r\n\x00" as *const u8 as *const libc::c_char - } else { - b"\x00" as *const u8 as *const libc::c_char - }, - if !footer.is_null() && 0 != *footer.offset(0isize) as libc::c_int { + if footer.is_some() { "-- \r\n" } else { "" }, + if let Some(footer) = footer { footer } else { - b"\x00" as *const u8 as *const libc::c_char + "" }, - ); + ) + .strdup(); let text_part: *mut mailmime = build_body_text(message_text); mailmime_smart_add_part(message, text_part); parts += 1; - free(fwdhint as *mut libc::c_void); - free(placeholdertext as *mut libc::c_void); /* add attachment part */ if chat::msgtype_has_file(factory.msg.type_0) { if !is_file_size_okay(context, &factory.msg) { - let error: *mut libc::c_char = dc_mprintf( - b"Message exceeds the recommended %i MB.\x00" as *const u8 - as *const libc::c_char, + let error = format!( + "Message exceeds the recommended {} MB.", 24 * 1024 * 1024 / 4 * 3 / 1000 / 1000, - ); + ) + .strdup(); set_error(factory, error); - free(error as *mut libc::c_void); + free(error.cast()); ok_to_continue = false; } else { let file_part: *mut mailmime = @@ -954,15 +942,14 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact message_text = format!("{}\r\n", p2).strdup(); let human_mime_part: *mut mailmime = build_body_text(message_text); mailmime_add_part(multipart, human_mime_part); - let version = CString::yolo(get_version_str()); - message_text2 = - dc_mprintf( - b"Reporting-UA: Delta Chat %s\r\nOriginal-Recipient: rfc822;%s\r\nFinal-Recipient: rfc822;%s\r\nOriginal-Message-ID: <%s>\r\nDisposition: manual-action/MDN-sent-automatically; displayed\r\n\x00" - as *const u8 as *const libc::c_char, - version.as_ptr(), - factory.from_addr, factory.from_addr, - factory.msg.rfc724_mid - ); + let version = get_version_str(); + message_text2 = format!( + "Reporting-UA: Delta Chat {}\r\nOriginal-Recipient: rfc822;{}\r\nFinal-Recipient: rfc822;{}\r\nOriginal-Message-ID: <{}>\r\nDisposition: manual-action/MDN-sent-automatically; displayed\r\n", + version, + as_str(factory.from_addr), + as_str(factory.from_addr), + as_str(factory.msg.rfc724_mid) + ).strdup(); let content_type_0: *mut mailmime_content = mailmime_content_new_with_str( b"message/disposition-notification\x00" as *const u8 as *const libc::c_char, @@ -982,17 +969,19 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact } if ok_to_continue { - if factory.loaded as libc::c_uint == DC_MF_MDN_LOADED as libc::c_int as libc::c_uint { - let e = CString::new(factory.context.stock_str(StockMessage::ReadRcpt).as_ref()) - .unwrap(); - subject_str = dc_mprintf( - b"Chat: %s\x00" as *const u8 as *const libc::c_char, - e.as_ptr(), - ); + let subject_str = if factory.loaded as libc::c_uint == DC_MF_MDN_LOADED as libc::c_uint + { + let e = factory.context.stock_str(StockMessage::ReadRcpt); + format!("Chat: {}", e) } else { - subject_str = - get_subject(context, factory.chat.as_ref(), &mut factory.msg, afwd_email) - } + to_string(get_subject( + context, + factory.chat.as_ref(), + &mut factory.msg, + afwd_email, + )) + }; + subject = mailimf_subject_new(dc_encode_header_words(subject_str)); mailimf_fields_add( imf_fields, @@ -1051,7 +1040,6 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut dc_mimefact e2ee_helper.thanks(); free(message_text as *mut libc::c_void); free(message_text2 as *mut libc::c_void); - free(subject_str as *mut libc::c_void); success } @@ -1069,34 +1057,17 @@ unsafe fn get_subject( let chat = chat.unwrap(); let ret: *mut libc::c_char; - let raw_subject = { - dc_msg_get_summarytext_by_raw(msg.type_0, msg.text.as_ref(), &mut msg.param, 32, context) - .strdup() - }; + let raw_subject = + dc_msg_get_summarytext_by_raw(msg.type_0, msg.text.as_ref(), &mut msg.param, 32, context); - let fwd = if 0 != afwd_email { - b"Fwd: \x00" as *const u8 as *const libc::c_char - } else { - b"\x00" as *const u8 as *const libc::c_char - }; + let fwd = if 0 != afwd_email { "Fwd: " } else { "" }; if msg.param.get_int(Param::Cmd).unwrap_or_default() == DC_CMD_AUTOCRYPT_SETUP_MESSAGE { ret = context.stock_str(StockMessage::AcSetupMsgSubject).strdup() } else if chat.typ == Chattype::Group || chat.typ == Chattype::VerifiedGroup { - ret = format!( - "Chat: {}: {}{}", - chat.name, - to_string(fwd), - to_string(raw_subject), - ) - .strdup() + ret = format!("Chat: {}: {}{}", chat.name, fwd, raw_subject,).strdup(); } else { - ret = dc_mprintf( - b"Chat: %s%s\x00" as *const u8 as *const libc::c_char, - fwd, - raw_subject, - ) + ret = format!("Chat: {}{}", fwd, raw_subject).strdup(); } - free(raw_subject as *mut libc::c_void); ret } @@ -1148,13 +1119,12 @@ unsafe fn build_body_file( .map(|s| s.strdup()) .unwrap_or_else(|| std::ptr::null_mut()); - let mut filename_to_send = ptr::null_mut(); let mut filename_encoded = ptr::null_mut(); if let Some(ref path_filename) = path_filename { let suffix = dc_get_filesuffix_lc(path_filename); - if msg.type_0 == Viewtype::Voice { + let filename_to_send = if msg.type_0 == Viewtype::Voice { let ts = chrono::Utc.timestamp(msg.timestamp_sort as i64, 0); let suffix = if !suffix.is_null() { @@ -1162,37 +1132,42 @@ unsafe fn build_body_file( } else { "dat".into() }; - let res = ts - .format(&format!("voice-message_%Y-%m-%d_%H-%M-%S.{}", suffix)) - .to_string(); - filename_to_send = res.strdup(); + ts.format(&format!("voice-message_%Y-%m-%d_%H-%M-%S.{}", suffix)) + .to_string() } else if msg.type_0 == Viewtype::Audio { - filename_to_send = dc_get_filename(path_filename) + Path::new(path_filename) + .file_name() + .map(|c| c.to_string_lossy().to_string()) + .unwrap_or_default() } else if msg.type_0 == Viewtype::Image || msg.type_0 == Viewtype::Gif { if base_name.is_null() { base_name = b"image\x00" as *const u8 as *const libc::c_char } - filename_to_send = dc_mprintf( - b"%s.%s\x00" as *const u8 as *const libc::c_char, - base_name, + format!( + "{}.{}", + as_str(base_name), if !suffix.is_null() { - suffix + as_str(suffix) } else { - b"dat\x00" as *const u8 as *const libc::c_char + "dat" }, ) } else if msg.type_0 == Viewtype::Video { - filename_to_send = dc_mprintf( - b"video.%s\x00" as *const u8 as *const libc::c_char, + format!( + "video.{}", if !suffix.is_null() { - suffix + as_str(suffix) } else { - b"dat\x00" as *const u8 as *const libc::c_char + "dat" }, ) } else { - filename_to_send = dc_get_filename(path_filename) - } + Path::new(path_filename) + .file_name() + .map(|c| c.to_string_lossy().to_string()) + .unwrap_or_default() + }; + if mimetype.is_null() { if suffix.is_null() { mimetype = @@ -1215,13 +1190,13 @@ unsafe fn build_body_file( /* create mime part, for Content-Disposition, see RFC 2183. `Content-Disposition: attachment` seems not to make a difference to `Content-Disposition: inline` at least on tested Thunderbird and Gma'l in 2017. But I've heard about problems with inline and outl'k, so we just use the attachment-type until we run into other problems ... */ - needs_ext = dc_needs_ext_header(as_str(filename_to_send)); + needs_ext = dc_needs_ext_header(&filename_to_send); mime_fields = mailmime_fields_new_filename( MAILMIME_DISPOSITION_TYPE_ATTACHMENT as libc::c_int, if needs_ext { ptr::null_mut() } else { - dc_strdup(filename_to_send) + filename_to_send.strdup() }, MAILMIME_MECHANISM_BASE64 as libc::c_int, ); @@ -1252,7 +1227,7 @@ unsafe fn build_body_file( strdup( b"filename*\x00" as *const u8 as *const libc::c_char, ), - dc_encode_ext_header(as_str(filename_to_send)).strdup(), + dc_encode_ext_header(&filename_to_send).strdup(), ), ); if !parm.is_null() { @@ -1274,7 +1249,7 @@ unsafe fn build_body_file( } } content = mailmime_content_new_with_str(mimetype); - filename_encoded = dc_encode_header_words(filename_to_send); + filename_encoded = dc_encode_header_words(&filename_to_send); clist_insert_after( (*content).ct_parameters, (*(*content).ct_parameters).last, @@ -1289,13 +1264,12 @@ unsafe fn build_body_file( .unwrap(); mailmime_set_body_file(mime_sub, dc_strdup(abs_path.as_ptr())); if !ret_file_name_as_sent.is_null() { - *ret_file_name_as_sent = dc_strdup(filename_to_send) + *ret_file_name_as_sent = filename_to_send.strdup(); } } } free(mimetype as *mut libc::c_void); - free(filename_to_send as *mut libc::c_void); free(filename_encoded as *mut libc::c_void); mime_sub diff --git a/src/dc_strencode.rs b/src/dc_strencode.rs index fbab86c91..05481481c 100644 --- a/src/dc_strencode.rs +++ b/src/dc_strencode.rs @@ -25,12 +25,15 @@ use crate::x::*; * @return Returns the encoded string which must be free()'d when no longed needed. * On errors, NULL is returned. */ -pub unsafe fn dc_encode_header_words(to_encode: *const libc::c_char) -> *mut libc::c_char { +pub unsafe fn dc_encode_header_words(to_encode_r: impl AsRef) -> *mut libc::c_char { + let to_encode = + CString::new(to_encode_r.as_ref().as_bytes()).expect("invalid cstring to_encode"); + let mut ok_to_continue = true; let mut ret_str: *mut libc::c_char = ptr::null_mut(); - let mut cur: *const libc::c_char = to_encode; + let mut cur: *const libc::c_char = to_encode.as_ptr(); let mmapstr: *mut MMAPString = mmap_string_new(b"\x00" as *const u8 as *const libc::c_char); - if to_encode.is_null() || mmapstr.is_null() { + if mmapstr.is_null() { ok_to_continue = false; } loop { @@ -355,12 +358,13 @@ mod tests { assert_eq!(CStr::from_ptr(buf1).to_str().unwrap(), "just ascii test"); free(buf1 as *mut libc::c_void); - buf1 = dc_encode_header_words(b"abcdef\x00" as *const u8 as *const libc::c_char); + buf1 = dc_encode_header_words("abcdef"); assert_eq!(CStr::from_ptr(buf1).to_str().unwrap(), "abcdef"); free(buf1 as *mut libc::c_void); buf1 = dc_encode_header_words( - b"test\xc3\xa4\xc3\xb6\xc3\xbc.txt\x00" as *const u8 as *const libc::c_char, + std::string::String::from_utf8(b"test\xc3\xa4\xc3\xb6\xc3\xbc.txt".to_vec()) + .unwrap(), ); assert_eq!( strncmp(buf1, b"=?utf-8\x00" as *const u8 as *const libc::c_char, 7), From ff0aa8423d95ec90c30b0815334e722eb1d073ea Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Sun, 15 Sep 2019 21:58:28 +0200 Subject: [PATCH 7/7] refactor: remove now unused build.rs and extern declarations --- Cargo.lock | 448 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 4 - build.rs | 38 ----- misc.c | 52 ------- misc.h | 1 - src/x.rs | 7 - 6 files changed, 223 insertions(+), 327 deletions(-) delete mode 100644 build.rs delete mode 100644 misc.c delete mode 100644 misc.h diff --git a/Cargo.lock b/Cargo.lock index f8611f84e..07ed37dad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -47,7 +47,7 @@ name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -74,17 +74,17 @@ version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "autocfg" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.34" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -98,7 +98,7 @@ name = "backtrace-sys" version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -135,12 +135,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "blake2b_simd" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -225,7 +225,7 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -245,8 +245,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -262,7 +262,7 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.40" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -271,7 +271,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "stream-cipher 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -285,12 +285,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "chrono" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", @@ -309,7 +309,7 @@ name = "clear_on_drop" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -322,7 +322,7 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -343,8 +343,8 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -422,8 +422,8 @@ name = "ctor" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "quote 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -483,13 +483,12 @@ dependencies = [ name = "deltachat" version = "1.0.0-alpha.4" dependencies = [ - "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "charset 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "debug_stub_derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "deltachat_derive 0.1.0", "escaper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -510,7 +509,6 @@ dependencies = [ "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pgp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "phf 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -518,11 +516,11 @@ dependencies = [ "r2d2 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", "r2d2_sqlite 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)", "rusqlite 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustyline 4.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -614,7 +612,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -636,12 +634,12 @@ dependencies = [ [[package]] name = "either" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "encoding_rs" -version = "0.8.17" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -666,9 +664,9 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -677,7 +675,7 @@ name = "error-chain" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -694,7 +692,7 @@ name = "failure" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -781,7 +779,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -789,7 +787,7 @@ name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -798,17 +796,17 @@ name = "generic-array" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "getrandom" -version = "0.1.9" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -824,9 +822,9 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -871,7 +869,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -886,11 +884,11 @@ name = "human-panic" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "os_type 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -899,7 +897,7 @@ dependencies = [ [[package]] name = "humantime" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -907,11 +905,11 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.33" +version = "0.12.35" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", @@ -940,8 +938,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -961,6 +959,16 @@ dependencies = [ "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "image-meta" version = "0.1.0" @@ -978,12 +986,12 @@ source = "git+https://github.com/jonhoo/rust-imap?rev=281d2eb8ab50dc656ceff2ae74 dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bufstream 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "imap-proto 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "nom 5.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -996,7 +1004,7 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.0.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1013,7 +1021,7 @@ name = "itertools" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1057,20 +1065,20 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lexical-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "stackvector 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1084,8 +1092,8 @@ name = "libsqlite3-sys" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1169,7 +1177,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1182,19 +1190,16 @@ dependencies = [ [[package]] name = "mime" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "mime_guess" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1239,7 +1244,7 @@ version = "0.1.2-alpha.0" source = "git+https://github.com/dignifiedquire/mmime?rev=bccd2c2#bccd2c2c89e9241e05f321c963f638affdccad96" dependencies = [ "charset 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1271,7 +1276,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1280,7 +1285,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1305,7 +1310,7 @@ name = "nom" version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lexical-core 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lexical-core 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1340,7 +1345,7 @@ name = "num-integer" version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1349,7 +1354,7 @@ name = "num-iter" version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1367,7 +1372,7 @@ name = "num-traits" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1403,10 +1408,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-src" -version = "111.5.0+1.1.1c" +version = "111.6.0+1.1.1d" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1414,11 +1419,11 @@ name = "openssl-sys" version = "0.9.49" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-src 111.5.0+1.1.1c (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-src 111.6.0+1.1.1d (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1427,7 +1432,7 @@ name = "os_type" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1435,7 +1440,7 @@ name = "output_vt100" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1492,7 +1497,7 @@ dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1507,7 +1512,7 @@ dependencies = [ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1521,7 +1526,7 @@ dependencies = [ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1549,7 +1554,7 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "cast5 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "cfb-mode 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "circular 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "crc24 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "derive_builder 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1596,7 +1601,7 @@ version = "0.7.24" source = "git+https://github.com/sfackler/rust-phf?rev=0d00821#0d0082178568036736bb6d51cb91f95ca5a616c3" dependencies = [ "phf_shared 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)", - "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1622,7 +1627,7 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1646,7 +1651,7 @@ name = "pretty_env_logger" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1656,9 +1661,9 @@ name = "proc-macro-hack" version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1671,7 +1676,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1691,21 +1696,21 @@ dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "publicsuffix" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1727,7 +1732,7 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1748,10 +1753,10 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1782,7 +1787,7 @@ dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1790,7 +1795,7 @@ name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "packed_simd 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1801,18 +1806,18 @@ dependencies = [ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1822,7 +1827,7 @@ name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1832,7 +1837,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1850,10 +1855,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rand_core" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1869,7 +1874,7 @@ name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1887,7 +1892,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1900,7 +1905,7 @@ dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1908,7 +1913,7 @@ name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1917,8 +1922,8 @@ name = "rand_pcg" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1955,18 +1960,18 @@ dependencies = [ [[package]] name = "regex" -version = "1.2.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1974,29 +1979,29 @@ name = "remove_dir_all" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "reqwest" -version = "0.9.19" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2057,7 +2062,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2096,9 +2101,9 @@ dependencies = [ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8parse 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2125,7 +2130,7 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2171,7 +2176,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2181,20 +2186,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2204,7 +2209,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2214,7 +2219,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2284,7 +2289,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "mach 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2297,15 +2302,6 @@ name = "stable_deref_trait" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "stackvector" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "static_assertions" version = "0.3.4" @@ -2313,7 +2309,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "stream-cipher" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2385,11 +2381,11 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2428,10 +2424,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2473,7 +2469,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2482,7 +2478,7 @@ version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2500,8 +2496,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2509,7 +2505,7 @@ name = "tokio-current-thread" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2519,7 +2515,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2528,7 +2524,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2538,7 +2534,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2556,7 +2552,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2565,7 +2561,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2580,7 +2576,7 @@ dependencies = [ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2594,7 +2590,7 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2604,7 +2600,7 @@ name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2637,12 +2633,12 @@ dependencies = [ [[package]] name = "typenum" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicase" -version = "2.4.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2671,7 +2667,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicode-width" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2689,14 +2685,6 @@ name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "unsafe-any" version = "0.4.2" @@ -2715,6 +2703,16 @@ dependencies = [ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "url" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "utf8parse" version = "0.1.1" @@ -2766,7 +2764,7 @@ version = "2.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2775,14 +2773,14 @@ name = "want" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasi" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2792,7 +2790,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2814,7 +2812,7 @@ name = "winapi-util" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2827,7 +2825,7 @@ name = "wincolor" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2835,7 +2833,7 @@ name = "wincolor" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2844,7 +2842,7 @@ name = "winreg" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2852,7 +2850,7 @@ name = "winutil" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2903,15 +2901,15 @@ dependencies = [ "checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" "checksum ascii_utils 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "71938f30533e4d95a6d17aa530939da3842c2ab6f4f84b9dae68447e4129f74a" "checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" -"checksum autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "22130e92352b948e7e82a49cdb0aa94f2211761117f29e052dd397c1ac33542b" -"checksum backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)" = "b5164d292487f037ece34ec0de2fcede2faa162f085dd96d2385ab81b12765ba" +"checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" +"checksum backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)" = "5180c5a20655b14a819b652fd2378fa5f1697b6c9ddad3e695c2f9cedf6df4e2" "checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" "checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" "checksum bitfield 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" -"checksum blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "461f4b879a8eb70c1debf7d0788a9a5ff15f1ea9d25925fea264ef4258bed6b2" +"checksum blake2b_simd 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "5850aeee1552f495dd0250014cf64b82b7c8879a89d83b33bbdace2cc4f63182" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" "checksum block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "31aa8410095e39fdb732909fb5730a48d5bd7c2e3cd76bd1b07b3dbea130c529" @@ -2926,15 +2924,15 @@ dependencies = [ "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" "checksum cargo_metadata 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1b4d380e1bab994591a24c2bdd1b054f64b60bef483a8c598c7c345bc3bbe" "checksum cast5 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ce5759b4c52ca74f9a98421817c882f1fd9b0071ae41cd61ab9f9d059c04fd6" -"checksum cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "b548a4ee81fccb95919d4e22cfea83c7693ebfd78f0495493178db20b3139da7" +"checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be" "checksum cfb-mode 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "190e7b55d3a27cf8879becf61035a141cbc783f3258a41d16d1706719f991345" "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" "checksum charset 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4f426e64df1c3de26cbf44593c6ffff5dbfd43bbf9de0d075058558126b3fc73" -"checksum chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "77d81f58b7301084de3b958691458a53c3f7e0b1d702f77e550b6a88e3a88abe" +"checksum chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68" "checksum circular 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "82945ea9ff134eba321833377d0c485f5c6fb4c8e26cfec199174e2970d5385a" "checksum clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" +"checksum constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" "checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" "checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" @@ -2960,8 +2958,8 @@ dependencies = [ "checksum dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" "checksum ed25519-dalek 1.0.0-pre.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81956bcf7ef761fb4e1d88de3fa181358a0d26cbcb9755b587a08f9119824b86" -"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" -"checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" +"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum encoding_rs 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)" = "79906e1ad1f7f8bc48864fcc6ffd58336fb5992e627bf61928099cb25fdf4314" "checksum entities 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" "checksum enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" "checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" @@ -2980,10 +2978,10 @@ dependencies = [ "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869" +"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -"checksum getrandom 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "2512b3191f22e2763a5db387f1c9409379772e2050841722eb4a8c4f497bf096" +"checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" @@ -2993,15 +2991,16 @@ dependencies = [ "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" "checksum human-panic 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "21638c5955a6daf3ecc42cae702335fc37a72a4abcc6959ce457b31a7d43bbdd" -"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)" = "7cb44cbce9d8ee4fb36e4c0ad7b794ac44ebaad924b9c8291a63215bb44c2c8f" +"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +"checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" "checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" "checksum ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" "checksum image-meta 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b00861cbbb254a627d8acc0cec786b484297d896ab8f20fdc8e28536a3e918ef" "checksum imap 1.0.2 (git+https://github.com/jonhoo/rust-imap?rev=281d2eb8ab50dc656ceff2ae749ca5045f334e15)" = "" "checksum imap-proto 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1b92ca529b24c5f80a950abe993d3883df6fe6791d4a46b1fda1eb339796c589" -"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" +"checksum indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a61202fbe46c4a951e9404a720a0180bcf3212c750d735cb5c4ba4dc551299f3" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" @@ -3010,7 +3009,7 @@ dependencies = [ "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum lettre 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c66afaa5dfadbb81d4e00fd1d1ab057c7cd4c799c5a44e0009386d553587e728" -"checksum lexical-core 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b0f90c979adde96d19eb10eb6431ba0c441e2f9e9bdff868b2f6f5114ff519" +"checksum lexical-core 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d11f3928ffd249baadf9f083cdea16d7cf317b2a8be6227e1169102432a36d2" "checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" "checksum libsqlite3-sys 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5e5b95e89c330291768dc840238db7f9e204fd208511ab6319b56193a7f2ae25" "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" @@ -3025,7 +3024,7 @@ dependencies = [ "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" "checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" "checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" -"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" +"checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf" "checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" "checksum miniz_oxide 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7108aff85b876d06f22503dcce091e29f76733b2bfdd91eebce81f5e68203a10" "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" @@ -3047,7 +3046,7 @@ dependencies = [ "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-src 111.5.0+1.1.1c (registry+https://github.com/rust-lang/crates.io-index)" = "4bdebf3f49173e2f693e3ad83eed3aa9fe9e5a60e23c84010c29063b1497049e" +"checksum openssl-src 111.6.0+1.1.1d (registry+https://github.com/rust-lang/crates.io-index)" = "b9c2da1de8a7a3f860919c01540b03a6db16de042405a8a07a5e9d0b4b825d9c" "checksum openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f4fad9e54bd23bd4cbbe48fdc08a1b8091707ac869ef8508edea2fec77dcc884" "checksum os_type 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7edc011af0ae98b7f88cf7e4a83b70a54a75d2b8cb013d6efd02e5956207e9eb" "checksum output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" @@ -3066,31 +3065,31 @@ dependencies = [ "checksum phf_generator 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)" = "" "checksum phf_macros 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)" = "" "checksum phf_shared 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)" = "" -"checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af" +"checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" "checksum pretty_env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "717ee476b1690853d222af4634056d830b5197ffd747726a9a1eee6da9f49074" "checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802" +"checksum proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e98a83a9f9b331f54b924e68a66acb1bb35cb01fb0a23645139967abefb697e8" "checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" -"checksum publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5afecba86dcf1e4fd610246f89899d1924fe12e1e89f555eb7c7f710f3c5ad1d" +"checksum publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9bf259a81de2b2eb9850ec990ec78e6a25319715584fd7652b9b26f96fcb1510" "checksum pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eef52fac62d0ea7b9b4dc7da092aa64ea7ec3d90af6679422d3d7e0e14b6ee15" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quick-xml 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c2b074258da4f2ccb1c450380c5bd8e77db2508de2161f574c70930d8e880482" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -"checksum quote 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "49d77c41ca8767f2f41394c11a4eebccab83da25e7cc035387a3125f02be90a3" +"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" "checksum r2d2 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bc42ce75d9f4447fb2a04bbe1ed5d18dd949104572850ec19b164e274919f81b" "checksum r2d2_sqlite 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "806e268035ce9e5a604bf617ac8a073ef28b59ef2e48e8338db0baf530caef33" "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" +"checksum rand 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "59cea0d944b32347a1863e95942fd6ebdb486afb4f038119494f2860380c1d51" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca" +"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" @@ -3102,10 +3101,10 @@ dependencies = [ "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" -"checksum regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88c3d9193984285d544df4a30c23a4e62ead42edf70a4452ceb76dac1ce05c26" -"checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f" +"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" +"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -"checksum reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)" = "1d0777154c2c3eb54f5c480db01de845652d941e47191277cc673634c3853939" +"checksum reqwest 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)" = "0f6d896143a583047512e59ac54a215cb203c29cc941917343edea3be8df9c78" "checksum ripemd160 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad5112e0dbbb87577bfbc56c42450235e3012ce336e29c5befd7807bd626da4a" "checksum rsa 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6ad8d3632f6745bb671c8637e2aa44015537c5e384789d2ea3235739301ed1e0" "checksum rusqlite 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2a194373ef527035645a1bc21b10dc2125f73497e6e155771233eb187aedd051" @@ -3125,8 +3124,8 @@ dependencies = [ "checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f" -"checksum serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "cb4dc18c61206b08dc98216c98faa0232f4337e1e1b8574551d5bad29ea1b425" +"checksum serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)" = "f4473e8506b213730ff2061073b48fa51dcc66349219e2e7c5608f0296a1d95a" +"checksum serde_derive 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)" = "11e410fde43e157d789fc290d26bc940778ad0fdd47836426fbac36573710dbb" "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" "checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" @@ -3138,9 +3137,8 @@ dependencies = [ "checksum slice-deque 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ffddf594f5f597f63533d897427a570dbaa9feabaaa06595b74b71b7014507d7" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum stackvector 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "4dade1e9ad1ce13baaba168a04cdefb5c0cbc100242a4035d6dfa9c64348f9c5" "checksum static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7f3eb36b47e512f8f1c9e3d10c2c1965bc992bd9cdb024fa581e2194501c83d3" -"checksum stream-cipher 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8861bc80f649f5b4c9bd38b696ae9af74499d479dbfb327f0607de6b326a36bc" +"checksum stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1c33039533f051704951680f1adfd468fd37ac46816ded0d9ee068e60f05f" @@ -3149,7 +3147,7 @@ dependencies = [ "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2ae5cd13590144ea968ba5d5520da7a4c08415861014399b5b349f74591c375f" +"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" @@ -3174,18 +3172,18 @@ dependencies = [ "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" "checksum twofish 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d261e83e727c8e2dbb75dacac67c36e35db36a958ee504f2164fc052434e1" -"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" +"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" +"checksum unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e2e6bd1e59e56598518beb94fd6db628ded570326f0a98c679a304bd9f00150" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" "checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" -"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" +"checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f30360d7979f5e9c6e6cea48af192ea8fab4afb3cf72597154b8f08935bc9c7f" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" "checksum utf8parse 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8772a4ccbb4e89959023bc5b7cb8623a795caa7092d99f3aa9501b9484d4557d" "checksum uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e1436e58182935dcd9ce0add9ea0b558e8a87befe01c1a301e6020aeb0876363" "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" @@ -3195,9 +3193,9 @@ dependencies = [ "checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" "checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" "checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -"checksum wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5442abcac6525a045cc8c795aedb60da7a2e5e89c7bf18a0d5357849bb23c7" +"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" +"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" diff --git a/Cargo.toml b/Cargo.toml index 4cf4e9fc2..40b5e3a11 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,10 +5,6 @@ authors = ["dignifiedquire "] edition = "2018" license = "MPL" -[build-dependencies] -cc = "1.0.35" -pkg-config = "0.3" - [dependencies] deltachat_derive = { path = "./deltachat_derive" } libc = "0.2.51" diff --git a/build.rs b/build.rs deleted file mode 100644 index 8c5ffb7fb..000000000 --- a/build.rs +++ /dev/null @@ -1,38 +0,0 @@ -extern crate cc; - -fn link_static(lib: &str) { - println!("cargo:rustc-link-lib=static={}", lib); -} - -fn link_framework(fw: &str) { - println!("cargo:rustc-link-lib=framework={}", fw); -} - -fn add_search_path(p: &str) { - println!("cargo:rustc-link-search={}", p); -} - -fn build_tools() { - let mut config = cc::Build::new(); - config.file("misc.c").compile("libtools.a"); - - println!("rerun-if-changed=build.rs"); - println!("rerun-if-changed=misc.h"); - println!("rerun-if-changed=misc.c"); -} - -fn main() { - build_tools(); - - add_search_path("/usr/local/lib"); - - let target = std::env::var("TARGET").unwrap(); - if target.contains("-apple") || target.contains("-darwin") { - link_framework("CoreFoundation"); - link_framework("CoreServices"); - link_framework("Security"); - } - - // local tools - link_static("tools"); -} diff --git a/misc.c b/misc.c deleted file mode 100644 index 78b34a474..000000000 --- a/misc.c +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include -#include -#include -#include -#include "misc.h" - - -static char* internal_dc_strdup(const char* s) /* strdup(NULL) is undefined, save_strdup(NULL) returns an empty string in this case */ -{ - char* ret = NULL; - if (s) { - if ((ret=strdup(s))==NULL) { - exit(16); /* cannot allocate (little) memory, unrecoverable error */ - } - } - else { - if ((ret=(char*)calloc(1, 1))==NULL) { - exit(17); /* cannot allocate little memory, unrecoverable error */ - } - } - return ret; -} - -char* dc_mprintf(const char* format, ...) -{ - char testbuf[1]; - char* buf = NULL; - int char_cnt_without_zero = 0; - - va_list argp; - va_list argp_copy; - va_start(argp, format); - va_copy(argp_copy, argp); - - char_cnt_without_zero = vsnprintf(testbuf, 0, format, argp); - va_end(argp); - if (char_cnt_without_zero < 0) { - va_end(argp_copy); - return internal_dc_strdup("ErrFmt"); - } - - buf = malloc(char_cnt_without_zero+2 /* +1 would be enough, however, protect against off-by-one-errors */); - if (buf==NULL) { - va_end(argp_copy); - return internal_dc_strdup("ErrMem"); - } - - vsnprintf(buf, char_cnt_without_zero+1, format, argp_copy); - va_end(argp_copy); - return buf; -} diff --git a/misc.h b/misc.h deleted file mode 100644 index bf406f418..000000000 --- a/misc.h +++ /dev/null @@ -1 +0,0 @@ -char* dc_mprintf (const char* format, ...); /* The result must be free()'d. */ diff --git a/src/x.rs b/src/x.rs index d617617ad..481f837ca 100644 --- a/src/x.rs +++ b/src/x.rs @@ -33,13 +33,6 @@ pub fn strndup(s: *const libc::c_char, n: libc::c_ulong) -> *mut libc::c_char { } } -extern "C" { - pub fn clock() -> libc::clock_t; - - // -- DC Methods - pub fn dc_mprintf(format: *const libc::c_char, _: ...) -> *mut libc::c_char; -} - pub(crate) unsafe fn strcasecmp(s1: *const libc::c_char, s2: *const libc::c_char) -> libc::c_int { let s1 = std::ffi::CStr::from_ptr(s1) .to_string_lossy()