Repository navigation
cmp: size the -l offset column from the regular-file operand when the other is stdin - #373
sarankumar1325 wants to merge 2 commits into
Conversation
… other is stdin The offset width was only narrowed when both operands could be stat'ed, so 'cmp -l - file' used the 19-column u64::MAX width. Like GNU cmp, use the size of every operand that is a regular file (minus its skip) and ignore standard input, pipes and devices. Fixes uutils#348
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing. Review the Copilot code review billing settings.
| } | ||
|
|
||
| #[cfg(not(target_os = "windows"))] | ||
| let size = meta.len(); |
There was a problem hiding this comment.
meta.len() works on windows too, do we still need the cfg here?
Metadata::len() is cross-platform, so the Windows-only file_size() branch and its MetadataExt import are not needed.
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing. Review the Copilot code review billing settings.
Fixes #348.
cmp -lsizes the offset column from the smallest number of bytes that can still be compared. #330 did this only when both operands could be stat'ed as paths. With standard input on one side (cat c1 | cmp -l - c2), the width stayed at theu64::MAXwidth (19 columns).This change adds a
regular_file_size()helper that returns the size only for operands that are regular files (not-, pipes or devices). The offset width is now narrowed by the size, minus the skip, of each regular-file operand. GNU cmp does the same. The-searly exit for files of different sizes still needs both sizes, and it now uses only regular-file sizes (a device'slen()of 0 is no longer treated as a real size).Test:
cmp_verbose_offset_width_stdin(from the issue, plus the reversed operand order). It fails onmainwith the 19-column output and passes with this change.cargo test --test tests,cargo fmtandcargo clippy -- -D warningsare clean. Theed_diffpermutation unit tests can't run locally becauseedisn't installed on my machine.I used an AI assistant to help with this change. I reviewed and tested it myself.