diff --git a/crates/nu-command/src/formats/from/csv.rs b/crates/nu-command/src/formats/from/csv.rs index b00dd5022b..c62d4910ef 100644 --- a/crates/nu-command/src/formats/from/csv.rs +++ b/crates/nu-command/src/formats/from/csv.rs @@ -176,7 +176,8 @@ fn from_csv( trim, }; - from_delimited_data(config, input, name) + let ctrlc = engine_state.ctrlc.clone(); + from_delimited_data(config, input, name, ctrlc) } #[cfg(test)] diff --git a/crates/nu-command/src/formats/from/delimited.rs b/crates/nu-command/src/formats/from/delimited.rs index 853f3bd83e..6fb081f03f 100644 --- a/crates/nu-command/src/formats/from/delimited.rs +++ b/crates/nu-command/src/formats/from/delimited.rs @@ -1,3 +1,5 @@ +use std::sync::{atomic::AtomicBool, Arc}; + use csv::{ReaderBuilder, Trim}; use nu_protocol::{ByteStream, ListStream, PipelineData, ShellError, Span, Value}; @@ -21,6 +23,7 @@ fn from_delimited_stream( }: DelimitedReaderConfig, input: ByteStream, span: Span, + ctrl_c: Option>, ) -> Result { let input_reader = if let Some(stream) = input.reader() { stream @@ -83,7 +86,7 @@ fn from_delimited_stream( Value::record(columns.zip(values).collect(), span) }); - Ok(ListStream::new(iter, span, None)) + Ok(ListStream::new(iter, span, ctrl_c)) } pub(super) struct DelimitedReaderConfig { @@ -101,6 +104,7 @@ pub(super) fn from_delimited_data( config: DelimitedReaderConfig, input: PipelineData, name: Span, + ctrl_c: Option>, ) -> Result { match input { PipelineData::Empty => Ok(PipelineData::Empty), @@ -108,7 +112,7 @@ pub(super) fn from_delimited_data( let string = value.into_string()?; let byte_stream = ByteStream::read_string(string, name, None); Ok(PipelineData::ListStream( - from_delimited_stream(config, byte_stream, name)?, + from_delimited_stream(config, byte_stream, name, ctrl_c)?, metadata, )) } @@ -119,7 +123,7 @@ pub(super) fn from_delimited_data( src_span: list_stream.span(), }), PipelineData::ByteStream(byte_stream, metadata) => Ok(PipelineData::ListStream( - from_delimited_stream(config, byte_stream, name)?, + from_delimited_stream(config, byte_stream, name, ctrl_c)?, metadata, )), } diff --git a/crates/nu-command/src/formats/from/tsv.rs b/crates/nu-command/src/formats/from/tsv.rs index ea507ab1c7..7de7cb1def 100644 --- a/crates/nu-command/src/formats/from/tsv.rs +++ b/crates/nu-command/src/formats/from/tsv.rs @@ -142,7 +142,8 @@ fn from_tsv( trim, }; - from_delimited_data(config, input, name) + let ctrlc = engine_state.ctrlc.clone(); + from_delimited_data(config, input, name, ctrlc) } #[cfg(test)]