pr: -n repeats line numbers after a form feed

Aperta Adatta ai principianti
#16,131 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
cli

Direzione di ricerca

Il bug si trova in get_pages in src/uu/pr/src/pr.rs, intorno alle righe 1153-1156: il ramo del salto di pagina (form feed) aggiunge un FileLine senza incrementare line_num, mentre il ramo del a capo lo incrementa vicino alla riga 1183. Riproduci con printf 'a\fb\nc\n' | target/debug/pr -T -n:1 dopo cargo build --locked -p uu_pr. È completato quando l'output è 1:a, 2:b, 3:c, come GNU, e la numerazione di -n resta corretta con e senza a capo finali e con -N10.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

U - pr

pr -n does not advance the line counter when a form feed ends a line. The next line receives the same number, and later line numbers are too small.

Reproduced on Linux x86_64 (Debian 13), using uutils 0.13.0 from main at 43eb6205c20c551480057cdee98e6e7529cd984d, with LC_ALL=C LANG=C. GNU coreutils 9.12 (the reference package linked in CONTRIBUTING.md) and 9.7 both produce the expected result.

From the repository root:

cargo build --locked -p uu_pr
export LC_ALL=C LANG=C
printf 'a\fb\nc\n' | target/debug/pr -T -n:1

Actual output:

1:a
1:b
2:c

Expected output (GNU 9.12 and 9.7):

1:a
2:b
3:c

Both exit 0 with empty stderr. -T removes pagination, making the numbering difference visible without headers or page separators.

The problem also occurs without a trailing newline and with -N10. With a\fb\fc\n, all three lines receive number 1. As controls, a\nb\nc\n and a\n\fb\nc\n produce 1, 2, 3 in both implementations.

In get_pages, pr.rs:1153–1156, the form-feed branch pushes a FileLine without incrementing line_num. The newline branch increments it at line 1183.

No matching report was found in searches of open and closed issues and related PRs for pr numbering and form feeds. Existing #12313 and #14334 describe column formatting and page padding, rather than repeated line numbers.

Lingua principale
Rust
Stelle
24.3k
Fork
2.1k
Merge medio
1g 20h
PR unite (30g)
380

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di uutils/coreutils

Tutte le issue di uutils/coreutils

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.