Resolves the 13 rows still partial in docs/rewrite/notes/review-rv4- codex.md (details in final-Z5.md): - Escaped config strings are decoded to raw bytes at every OS boundary: Flatpak cwd/argv to D-Bus, screen-file paths, the default config template, GHOSTTY_RESOURCES_DIR/TERMINFO/shell integration/ bindtextdomain consumers, custom shader loading, list-themes hyperlinks. - osbytes escapes literal U+FDD0 on non-Unix too (bijective everywhere); the GTK paste dialog only decodes text that was actually encoded. - shadertoy: whole-array uses of iChannelTime rebuild a plain float[4] from the std140-padded members (naga-validated, MSL offsets checked). - libghostty-vt: the OSC parser holds caller-allocated storage inline and command payloads borrow from it, so ghostty_osc_end performs no global allocations (verified from Rust and C). - crash: aarch64 Linux minidump context fixed; macOS fatal signals record siginfo, registers and a fault-safe stack walk. - tripwire: selectionString map allocation-failure cleanup test ported. - libghostty-vt emits the versioned soname libghostty-vt.so.0 at build time (no patchelf needed at install). Test Plan: - cargo test --workspace (3342 passed) - just check-macos; just check-macos x86_64-apple-darwin; just check-windows; just check-wasm - cargo check --target aarch64-unknown-linux-gnu -p ghostty-crash
28 lines
683 B
Rust
28 lines
683 B
Rust
//! OSC 1 (ZIG/src/terminal/osc/parsers/change_window_icon.zig).
|
|
use crate::osc::{ByteStorage, Command, Parser};
|
|
|
|
/// Parse OSC 1
|
|
pub fn parse<S: ByteStorage>(
|
|
parser: &mut Parser<S>,
|
|
_terminator_ch: Option<u8>,
|
|
) -> Option<Command<'_>> {
|
|
parser.data()?;
|
|
Some(Command::ChangeWindowIcon(parser.payload().into()))
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
#![allow(clippy::unwrap_used)]
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn osc_1_change_window_icon() {
|
|
let mut p = Parser::init(false);
|
|
for c in b"1;ab" {
|
|
p.next(*c);
|
|
}
|
|
let cmd = p.end(None).unwrap();
|
|
assert_eq!(cmd, Command::ChangeWindowIcon(b"ab".to_vec().into()));
|
|
}
|
|
}
|