Files
tai/research/shell-multiplexer-auto-attach/android-adb-cfmakeraw-commit.md
T

48 lines
2.2 KiB
Markdown
Raw Normal View History

# Android adb — Raw Mode via cfmakeraw (commit a826579d)
## Metadata
| Field | Value |
|---|---|
| Institute | Molodetz Institute — Research & Retrieval Division |
| Subject | shell-multiplexer-auto-attach |
| Document type | Source Dossier |
| Tier | 1 |
| Source title | adb: platform/packages/modules/adb commit a826579d |
| Source URL | https://android.googlesource.com/platform/packages/modules/adb/+/a826579d%5E%21 |
| Source publisher / author | Android Open Source Project (Google) |
| Source type | repository |
| Source date (published) | Unknown — not stated |
| Date researched | 2026-10-09 |
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
| Research method | web search synthesis |
| Confidence | High |
| Status | Active |
## Summary
A real, shipped commit in Android's `adb` tool showing the standard raw-mode pattern: save the current `termios` state for the local terminal, apply `cfmakeraw` to a *copy* of it, and restore the original state on exit — including on signal-driven exit paths, not just normal return.
## Key findings
- `cfmakeraw` is applied to a saved copy, never mutating the live state in place without a saved original to restore from.
- Restoration must happen on every exit path, explicitly including signals — a program that puts the terminal in raw mode and then dies to an uncaught signal without restoring leaves the user's shell visibly broken (no echo, no line editing) until they run `reset` or `stty sane`.
## Pros / strengths
- Production code from a widely-used, heavily-tested tool (`adb`) rather than a toy example — this is the pattern battle-tested at scale.
## Cons / limitations / caveats
- A single commit view; doesn't show the surrounding signal-handler wiring in full, only confirms the save/apply/restore shape exists and is deliberate.
## Relevance to tai
The exact pattern any raw-mode terminal handling inside a tai-managed session (if tai ever needs to read raw keystrokes itself, rather than delegating entirely to tmux) must follow: save-copy-restore, restoration guaranteed on every exit path including signals, or a bug can leave the user's real terminal broken after the fact.
## Changelog
| Date | Change |
|---|---|
| 2026-10-09 | Initial dossier created. |