pr: -n repeats line numbers after a form feed
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
El error está en get_pages en src/uu/pr/src/pr.rs, alrededor de las líneas 1153-1156: la rama de salto de página (form feed) añade un FileLine sin incrementar line_num, mientras que la rama de salto de línea lo incrementa cerca de la línea 1183. Reproduce con printf 'a\fb\nc\n' | target/debug/pr -T -n:1 después de cargo build --locked -p uu_pr. Está terminado cuando la salida es 1:a, 2:b, 3:c, igual que GNU, y la numeración de -n se mantiene correcta con y sin saltos de línea finales y con -N10.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Rust
- Estrellas
- 24.3k
- Forks
- 2.1k
- Merge medio
- 2 d 6 h
- PR fusionados (30 d)
- 399
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de uutils/coreutils
-
Unhelpful manual page(s)Abierto
Dificultad 2/5 Medio día Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
U - nl
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
uniq: overflowing -f/-s/-w values with trailing garbage are silently acceptedPosiblemente ocupada @huuan26 la tomó hace 1 día. AbiertoU - uniq
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
README: Rust version is outdatedAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
fold: tab after an 8 KiB buffer flush exceeds the requested widthPosiblemente ocupada @gibkim la tomó hace 3 días. AbiertoU - fold
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
Todos los issues de uutils/coreutils
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
longbridge/gpui-kit#3795 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
saltnpepper97/halley#271 ·
Los mantenedores suelen responder en 1 día
-
config: `command` in `[commands.<name>]` is silently ignored when a positional command is givenAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
akitaonrails/ai-jail#216 ·
Los mantenedores suelen responder en 1 día
-
Poetry updater rejects OR (||) Python constraints in PyprojectPreparer#update_python_requirementAbiertoL: python L: ruby:bundler
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
dependabot/dependabot-core#16819 ·
Los mantenedores suelen responder en 1 día