From: Simon Tatham Date: Sat, 23 Dec 2023 12:51:03 +0000 (+0000) Subject: Process raw stream data into UTF-8 lines. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=3658f050584831cc8142bd67edf17ab0421ce6d0;p=mastodonochrome.git Process raw stream data into UTF-8 lines. --- diff --git a/src/main.rs b/src/main.rs index 550e9da..9ea485a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,11 +16,30 @@ fn main() -> Result<(), mastodonochrome::OurError> { Ok(d) => Ok(d), }?; + let mut vec: Vec = Vec::new(); + const BUFSIZE: usize = 4096; let mut buf: [u8; BUFSIZE] = [0; BUFSIZE]; while let Ok(sz) = rsp.read(&mut buf) { let read = &buf[..sz]; - dbg!(read); + vec.extend_from_slice(read); + vec = 'outer: loop { + for line in vec.split_inclusive(|c| *c == 10) { + if !line.ends_with(&[10]) { + let mut newvec = Vec::new(); + newvec.extend_from_slice(line); + break 'outer newvec; + } else { + match std::str::from_utf8(&line) { + Err(e) => { dbg!(e); () }, + Ok(d) => { dbg!(d); () }, + }; + } + } + // If we didn't get a partial line inside the loop, then + // we must have an empty buffer here + break Vec::new(); + }; } Ok(())