xargs: -d '\0' is rejected, and octal escapes need a leading 0
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đá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
- 75/100
Hướng nghiên cứu
Bắt đầu với parse_delimiter trong src/xargs/mod.rs và bài kiểm thử test_delimiter_parsing được đề cập trong issue. So sánh cách phân tích chuỗi escape với các ví dụ GNU trong nội dung, sau đó chạy các bài kiểm thử phân tích dấu phân cách. Công việc hoàn tất khi các chuỗi escape được chấp nhận và bị từ chối trong danh sách hoạt động như mô tả, đồng thời bài kiểm thử hiện có phản ánh hành vi dự kiến của \0.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
$ printf 'a\0b' | xargs -d '\0' echo
Error: error: invalid value '\0' for '--delimiter <delimiter>': Invalid octal sequence: cannot parse integer from empty string
$ printf 'a\0b' | /usr/bin/xargs -d '\0' echo # GNU findutils 4.10.0
a b
$ printf 'a:b' | xargs -d '\72' echo
Error: error: invalid value '\72' for '--delimiter <delimiter>': Invalid escape sequence: \72
GNU's manual says -d takes "an octal or hexadecimal escape code ... understood as for the printf command", and GNU xargs accepts \0, \72, \072, \101 and \0101. It rejects \400, \8 and \09.
In parse_delimiter (src/xargs/mod.rs:914), any escape that starts with 0 goes to the octal branch with the 0 removed, so \0 parses an empty string; the "0" => Ok(b'\0') arm below it never runs. Octal without a leading 0 isn't handled at all.
test_delimiter_parsing asserts parse_delimiter("\\0").is_err(), so matching GNU means changing that line. I have a fix that parses \ followed by octal digits as one octal value, with tests for the cases above; happy to open a PR if you want GNU's behaviour here.
uutils findutils main 505421d.
- Ngôn ngữ chính
- Rust
- Star
- 653
- Fork
- 115
- Merge trung bình
- 1 ngày 4 giờ
- Pull request đã merge (30 ngày)
- 27
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của uutils/findutils
-
find: -printf %h drops a doubled slashCó thể đã có người làm @qodelicious đã nhận 1 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
find: -printf %TT and %TX drop the fraction of a secondCó thể đã có người làm @qodelicious đã nhận 1 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
uutils/findutils#692 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
find: -fprint /dev/stdout truncates a redirected stdoutCó thể đã có người làm @qodelicious đã nhận 1 ngày trước. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của uutils/findutils
Issue tương tự
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
bug order-flow studies ui
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
userFRM/egui-charts#2417 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
In a plain-text message, Font, Font Size, Font Color and Text Highlight Color stay liveCó thể đã có người làm @ragelfundionctrumnar đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
UCS-Care-Group/mailcraft#862 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
smoltcp-rs/smoltcp#1243 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 4 ngày