From a72d0c6650242a9b02858de7020e9a4ae387ebba Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 09:52:33 -0300 Subject: A name shows its own backslash as \\, and a terminal tag never carries a raw newline With `\n` for a newline and `\xNN` for a bad byte, a name holding a backslash and an n read back as one holding a newline. Names in /index, the log and a terminal's tag now double their own backslashes; and a terminal's directory with a newline no longer breaks its tag. Co-Authored-By: Claude Opus 5.5 --- docs/fs.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'docs') diff --git a/docs/fs.md b/docs/fs.md index c3c42d0d..72789182 100644 --- a/docs/fs.md +++ b/docs/fs.md @@ -100,7 +100,8 @@ Existing Plan9port/v9fs clients need a userspace bridge for QUIC. ``` /README this guide, also src/fs-help.txt /index one line per pane: serial, kind (text|term|pdf|image), dirty flag, name, column serial - (the name as the log shows it: one line of UTF-8, a newline in it `\n`) + (the name as the log shows it: one line of UTF-8, a newline in it `\n`, + a backslash `\\`, a byte not UTF-8 `\xNN`) /status pid, version and pane count /look write a line: a right click on it at the active pane; read: the serials the last look, exec or ctl write touched (made, else acted at) @@ -834,9 +835,10 @@ takes \`follow\` or \`follow new\``, `invalid write: this pane has no text`), never a bare `Invalid argument`. Control characters, DEL and C1 controls (U+0080-U+009F) in a record become spaces, and a byte that is not UTF-8 is written `\xNN`, so a record is one -line of UTF-8; a pane's name, in a record and in `/index` alike, shows a -newline in it as `\n` rather than a space, so a directory named with one -reads back as what it is. +line of UTF-8; a pane's name, in a record, in `/index` and in a terminal's +tag alike, shows a newline in it as `\n` rather than a space and its own +backslash as `\\`, so a directory named with a newline and one named +with a backslash and an `n` read back differently, as what they are. (An `event` record is not: acme's ` \n`, whose text may hold newlines. The origin is `E` (a 9P write to body or tag), `F` (other files, the editor's own lines), `K` (the keyboard) or `M` (the mouse); the -- cgit v1.3