aboutsummaryrefslogtreecommitdiff
path: root/patches
Commit message (Collapse)AuthorAgeFilesLines
* patches: drop generated config.h and binary sections from the diffsLukasz Kasprzak2026-08-255-111/+18
| | | | | | | | | | | | | | | | | | | | | | | The 3.0 patch files each carried a spurious diff section for config.h -- a file the Makefile generates from config.def.h -- plus "Binary files a/timer and b/timer differ" noise. Applying any of them made patch(1) stop and prompt "File to patch:", which stalls a non-interactive apply and prints "1 out of 1 hunk ignored" otherwise. Cause: the diff-generation step cleaned its scratch trees with a glob that matched nothing, and the shell aborts the whole command line on a failed glob, so the cleanup never ran and the build products were left in place. The resulting builds were correct either way, since make regenerates config.h from config.def.h, but the patches were not clean. Each patch now touches only ttym.c and config.def.h. Verified with patch --batch < /dev/null so a prompt is fatal rather than silently skipped: all five apply with no prompt, skip, ignored hunk or fuzz, and compile. Claude-Session: https://claude.ai/code/session_01APLBs8RB1FcUaC4viVkzbP
* ttym 3.0: fix terminal and config bugs, fold terminal-only patches into baseLukasz Kasprzak2026-08-2510-1079/+708
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Correctness fixes: - restore the terminal on SIGQUIT and SIGHUP. atexit never runs on an uncaught fatal signal, so Ctrl+\ left the cursor hidden and autowrap disabled. - drop the unconditional newline in restore_tty. Every run emitted a stray blank line, including piped output. - treat EINTR as an interruption rather than a poll() failure, which delayed Ctrl+C by up to one 100ms frame. config-file patch: - make comment stripping quote-aware so a value may contain '#', and strip one matched pair of quotes. bar_fill = "#" was silently dropped, despite '#' being the glyph of the hash style this build ships. - resolve bar_fill/bar_empty inside resolve_bar and clear them on --bar, so command-line flags beat the config file as documented. Previously config glyphs silently overrode --bar. - report unknown keys, unparseable booleans and malformed lines on stderr. flash = enabled silently meant off. - never write to disk. --dump-config prints a commented template on stdout instead of the binary creating ~/.config/ttym/config on first run. Patch set: - fold persist-alert, flash and bar-styles into the base. The base is now terminal-only: it opens /dev/tty, draws and exits, with no file writes and no subprocesses. Everything still in patches/ changes what the program touches. - seven patches become four; config-file's prerequisites drop from six patches to one (notify), so it is regenerable mechanically. - regenerate every patch. All apply with zero fuzz and compile. Source: - rewrite argv in place rather than into a malloc'd copy (C99 5.1.2.2.1), removing die(), four free() calls and <stdarg.h>. - fold the duplicated elapsed-time expression into elapsed(). - drop dead code: have_any, (void)cfg, and an unreachable branch in parse_duration. - replace hand-counted padding with \033[K. Docs and build: - timer.1: -c is the third hook argument, not the fourth. Add EXIT STATUS (a stopwatch always exits 130 -- it has no natural end) and ENVIRONMENT. Document config precedence and quoting. - wire VERSION into a dist target; it was defined and never used. - track .gitignore, which previously ignored itself, so a fresh clone had no ignore rules. Claude-Session: https://claude.ai/code/session_01APLBs8RB1FcUaC4viVkzbP
* initial commitLukasz Kasprzak2026-05-209-0/+2612