pr: -n repeats line numbers after a form feed

Abierto Apto para principiantes
#16,131 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@1kailas ya está trabajando en esto.

Desde el 3/11/2026.

  • #16170 de @1kailas — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
rust
Área
cli

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

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.

Lenguaje dominante
Rust
Estrellas
24.3k
Forks
2.1k
Merge medio
2 d 6 h
PR fusionados (30 d)
399

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de uutils/coreutils

Todos los issues de uutils/coreutils

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.