From d2b23b727b630691ca75fe89159104de6bc2241d Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Sat, 3 Aug 2019 00:26:38 +0200 Subject: [PATCH] Restore carriage-return handling to how it was in dcc Some part of the translation seems to have got this wrong somewhere. Add a test and restore handling to something more sane again. --- src/dc_imex.rs | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/dc_imex.rs b/src/dc_imex.rs index daaed60fb..11d06b9b4 100644 --- a/src/dc_imex.rs +++ b/src/dc_imex.rs @@ -241,9 +241,7 @@ pub fn dc_render_setup_file(context: &Context, passphrase: &str) -> Result"); - let msg_body_html = msg_body.replace("\n", "
"); + let msg_body_html = msg_body.replace("\r", "").replace("\n", "
"); Ok(format!( concat!( "\r\n", @@ -1289,6 +1287,8 @@ mod tests { use std::ffi::CStr; + use num_traits::ToPrimitive; + use crate::config::Config; use crate::key; use crate::test_utils::*; @@ -1441,6 +1441,28 @@ mod tests { assert!(msg.contains("-----END PGP MESSAGE-----\n")); } + unsafe extern "C" fn ac_setup_msg_cb( + ctx: &Context, + evt: Event, + d1: uintptr_t, + d2: uintptr_t, + ) -> uintptr_t { + if evt == Event::GET_STRING && d1 == StockMessage::AcSetupMsgBody.to_usize().unwrap() { + "hello\r\nthere".strdup() as usize + } else { + logging_cb(ctx, evt, d1, d2) + } + } + + #[test] + fn test_render_setup_file_newline_replace() { + let t = test_context(Some(ac_setup_msg_cb)); + create_alice_keypair(&t.ctx); + let msg = dc_render_setup_file(&t.ctx, "pw").unwrap(); + println!("{}", &msg); + assert!(msg.contains("

hello
there

")); + } + #[test] fn test_create_setup_code() { let t = dummy_context();