961 Commits
Author SHA1 Message Date
renovate[bot] 58608af612 chore(deps): update rust crate divan to v5.0.3 2026-10-14 15:26:57 +02:00
renovate[bot] d1f49fdb8a chore(deps): update rust crate sha2 to v0.11.1 2026-10-13 07:14:20 +02:00
oech3 49fc67a25e ci.yml: avoid full git clone (--depth=1) 2026-10-12 09:06:30 +02:00
Anthony DePasquale 96afb29187 sed: test q newline behavior with explicit printing 2026-10-10 19:55:31 +02:00
Anthony DePasquale 7db579b0b8 sed: don't write a missing final newline on Q, as GNU sed does 2026-10-10 19:55:31 +02:00
sap1110 cccbcec479 fixup! sed: start a range whose numeric first address was already passed 2026-10-10 16:09:45 +02:00
sap1110 443b085fb9 sed: start a range whose numeric first address was already passed
When a range command is first evaluated on a line after its numeric first
address (inside a block, or after d, n, N, c or a branch skipped it), start
the range on the current line, as GNU sed does, unless a numeric second
address has also been passed. The range can start this way only once.

Fixes #541
2026-10-10 16:09:45 +02:00
Sylvestre Ledru 10fa717ee9 sed: report where an unmatched { was opened 2026-10-10 16:08:53 +02:00
Sichen e6829c3d16 compiler: report an unterminated s or y command instead of aborting
The substitution and transliteration compilers read the delimiter with
ScriptCharProvider::current() even when the command letter was the last
character on the line. This indexed past the end of the line and
aborted.

Check for the end of the line first and report an unterminated command,
as GNU sed does. Scripts such as `s`, `1y`, and `p;s` now exit 1 with a
diagnostic instead of aborting.

The address-parser aborts from #570 were fixed separately in #578.
2026-10-06 11:19:59 +02:00
Anthony DePasquale 8a7fc1bed9 sed: write appended text, R text and e output as GNU sed does 2026-10-05 22:21:04 +02:00
Anthony DePasquale d43d4dea6b sed: discard text queued by a, r and R on Q, as GNU sed does 2026-10-05 12:34:05 +02:00
Anthony DePasquale 479c4bedf0 sed: show an empty pattern space as $ in l, even without a newline 2026-10-05 00:14:25 +02:00
Anthony DePasquale 3676eac374 sed: name the two ways n and N read the next line, and test n with -i 2026-10-03 13:11:26 -04:00
Anthony DePasquale 8ba5a5f440 sed: continue with the next command after n instead of starting a new cycle 2026-10-03 13:11:26 -04:00
Anthony DePasquale 21ffff7a8e ci: use an absolute LLVM_PROFILE_FILE path so coverage includes the sed binary 2026-10-03 06:25:14 -04:00
renovate[bot] 7e46328d8a Update Rust crate libc to v0.2.190 2026-10-03 07:05:23 +02:00
Daniel Hofstetter 111347950e clippy: fix warnings from assert_is_empty lint 2026-10-02 08:20:21 -04:00
Daniel Hofstetter 95804a298b Remove unused chrono 2026-10-01 06:59:36 -04:00
xtqqczze 0554c50b65 build(deps): update rust crates 2026-10-01 09:31:29 +02:00
renovate[bot] f7fb0d797e Update dawidd6/action-download-artifact action to v27 2026-09-30 07:19:19 +02:00
Anthony DePasquale 75fbaca15b sed: leave other options' values alone when rewriting -i 2026-09-29 16:45:34 -04:00
Anthony DePasquale e40667ffc5 sed: take the -i suffix only when attached, as GNU sed does 2026-09-29 16:45:34 -04:00
renovate[bot] dfae00da61 Update dawidd6/action-download-artifact action to v26 2026-09-29 07:00:50 +02:00
Sylvestre Ledru a05d74344e sed: underline the offending script character at a terminal
When stderr is a terminal (or UUTILS_DIAG=always), quote the offending
script line and underline the faulty character, in the layout uucore's
diagnostics use. Pipes and the test suite still get the single-line
message.

Both error constructors handle this, so no call site changes.
ScriptLocation now carries the line text, captured only when diagnostics
are on and shared between commands from the same line, so semantic
errors raised after compilation can still be drawn.

Anything that cannot be drawn (non-UTF-8 script, empty line, no line
recorded) leaves the message unchanged.
2026-09-27 20:55:01 +02:00
Sylvestre Ledru b451333205 sed: keep script position for errors at end of script 2026-09-27 20:54:49 +02:00