pr: -n repeats line numbers after a form feed

Đã đóng Phù hợp với người mới
#16,131 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Một pull request liên quan đã được merge.

  • #16170 của @1kailas — đã merge

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust
Lĩnh vực
cli

Hướng nghiên cứu

Lỗi nằm ở get_pages trong src/uu/pr/src/pr.rs, khoảng dòng 1153-1156: nhánh form feed thêm một FileLine mà không tăng line_num, trong khi nhánh xuống dòng tăng biến này gần dòng 1183. Tái tạo bằng printf 'a\fb\nc\n' | target/debug/pr -T -n:1 sau khi chạy cargo build --locked -p uu_pr. Hoàn thành khi đầu ra là 1:a, 2:b, 3:c, khớp với GNU, và việc đánh số -n vẫn đúng khi có hoặc không có ký tự xuống dòng ở cuối, cũng như khi dùng -N10.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Rust
Star
24.3k
Fork
2.1k
Merge trung bình
2 ngày 9 giờ
Pull request đã merge (30 ngày)
396

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của uutils/coreutils

Tất cả issue của uutils/coreutils

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.