diff options
author | Profpatsch <mail@profpatsch.de> | 2021-01-23T15·17+0100 |
---|---|---|
committer | Profpatsch <mail@profpatsch.de> | 2021-01-23T15·33+0000 |
commit | cc3f54a0eedb579c2ffd76f0505af0ccf940f9ff (patch) | |
tree | 7a0e5b734fb0760f49ab41fdd6f9129f84d7caa1 /users/Profpatsch/tree-sitter.nix | |
parent | ea9982d9eab50ee724eb1e5bae000911b219472f (diff) |
feat(users/Profpatsch/netstring): add rust to_netstring r/2137
Change-Id: I539472fc9ebc3ebe6c34e01fde9c08d3e2e3558c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2431 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
Diffstat (limited to 'users/Profpatsch/tree-sitter.nix')
-rw-r--r-- | users/Profpatsch/tree-sitter.nix | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/users/Profpatsch/tree-sitter.nix b/users/Profpatsch/tree-sitter.nix index 4a05c825bab4..099fa2d5b7b9 100644 --- a/users/Profpatsch/tree-sitter.nix +++ b/users/Profpatsch/tree-sitter.nix @@ -60,9 +60,13 @@ let watch-file-modified = depot.users.Profpatsch.writers.rustSimple { name = "watch-file-modified"; - dependencies = [ depot.users.Profpatsch.rust-crates.inotify ]; + dependencies = [ + depot.users.Profpatsch.rust-crates.inotify + depot.users.Profpatsch.netstring.rust-netstring + ]; } '' extern crate inotify; + extern crate netstring; use inotify::{EventMask, WatchMask, Inotify}; use std::io::Write; @@ -79,18 +83,6 @@ let ) .expect("Failed to add inotify watch"); - fn to_netstring(s: &[u8]) -> Vec<u8> { - let len = s.len(); - // length of the integer as ascii - let i_len = ((len as f64).log10() as usize) + 1; - let ns_len = i_len + 1 + len + 1; - let mut res = Vec::with_capacity(ns_len); - res.extend_from_slice(format!("{}:", len).as_bytes()); - res.extend_from_slice(s); - res.push(b','); - res - } - let mut buffer = [0u8; 4096]; loop { let events = inotify @@ -99,7 +91,7 @@ let for event in events { if event.wd == file_watch { - std::io::stdout().write(&to_netstring(file.as_bytes())); + std::io::stdout().write(&netstring::to_netstring(file.as_bytes())); std::io::stdout().flush(); } } |