You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
tools: decode cancelled-extended terminfo layout -- infocmp/tic -x now 100%
Crack the extended (user-defined) offset-table layout that previously bounded the
`-x` paths, lifting both `infocmp -1 -x` and the `infocmp -1 -x | tic -x` round-trip
to 100.000% byte-exact across the whole 2,869-entry terminfo database.
The key was the offset-table length: it is `2*es + eb + en` (es string-value
offsets followed by eb+en+es cap-name offsets), NOT the extended header's 4th field
-- which is the *count of strings* in the table (offsets minus the cancelled string
caps, since a cancelled string keeps a -2 value slot but contributes no value
string). The 5th field is the string-table byte size. Byte accounting
(`p + 2*(2es+eb+en) + str_size == file_end`) confirms it.
reader (src/terminfo/mod.rs): read `2*es+eb+en` offsets; surface extended string
caps with cancellation (`Some(value)` vs `None` for `name@`); `ext_string_caps()`.
infocmp: emit cancelled extended strings as `name@`, merged sorted.
tic: parse extended caps (names outside the predefined tables; a bare `name@` is a
cancelled extended string, matching ncurses); with `-x`, lift the SVr4 predefined
cutoff and append the full extended section -- ext bool bytes (+pad), ext numbers,
the value+name offset tables, and the value/name string tables, with the
str_count/str_size header and cancelled `-2` value offsets.
Both NCURSES.INFOCMP and NCURSES.TIC courts now admit 100.000% on -1 and -x.
Closes the cancelled-extended-capability corner noted in the gap ledger; advances
BLD-03.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CbiPgWC3PHKmrTNvZzXcWQ
-**BLD-04 · companion libraries panel / menu / form (+`w`)** — ~200+ symbols,
610
611
entire subsystems (overlapping-window stack; menu driver; field/form driver).
611
612
**Zero coverage.****S0, open.**
@@ -1160,7 +1161,7 @@ intentional, documented divergence — that is strictly-better parity, not a gap
1160
1161
draws each field's buffer padded into the (sub)window and form_driver edits the current field's
1161
1162
buffer + parks the cursor; byte-identical to system `libformw`, `NCURSES.FORM` court). All three
1162
1163
companion libraries are built natively (closes BLD-04 / STRUCT-03).
1163
-
5.**CLI tools** — `tput`/`clear` are **done** (native binaries in `crates/ncurses-tools`, byte-identical to the system tools incl. the extended-terminfo `E3` append, `NCURSES.TPUT` court); **`infocmp -1` is done** (100.000% byte-exact decompile across the 2,869-entry terminfo DB, `NCURSES.INFOCMP` court; `-1 -x` at 99.2%, residual = cancelled extended caps); **`tic` is done**for the non-extended case (100.000% byte-exact `infocmp -1 | tic`round-trip across the DB, `NCURSES.TIC` court); `toe`/… remain (BLD-03).
1164
+
5.**CLI tools** — `tput`/`clear` are **done** (native binaries in `crates/ncurses-tools`, byte-identical to the system tools incl. the extended-terminfo `E3` append, `NCURSES.TPUT` court); **`infocmp` is done** (100.000% byte-exact decompile for both `-1` and `-1 -x`across the 2,869-entry terminfo DB, `NCURSES.INFOCMP` court); **`tic` is done** (100.000% byte-exact on both the `infocmp -1 | tic`and `infocmp -1 -x | tic -x` round-trips, `NCURSES.TIC` court); `toe`/… remain (BLD-03).
1164
1165
6.**Native API completeness** — the macro API as Rust methods, panel/menu/form
1165
1166
modules, wide-char module, and the CLI tools as native binaries (closes
1166
1167
STRUCT-03); plus a global-state compatibility shim (thread-local `SP`/`cur_term`,
0 commit comments