bug#81225: pr: +0 is interpreted as file name
Pádraig Brady <[email protected]> Fri, 12 Jun 2026 13:27:04 +0100
| Newsgroups | gmane.comp.gnu.core-utils.bugs |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------wOXj1yex0TO6wwNWyF16gT9J Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 12/06/2026 09:37, Daniel Hofstetter wrote: > Hi, > > I noticed that pr interprets +0 as a file name and not as +FIRST_PAGE. > And so a "no such file" error is shown whereas --pages=0 shows an > "invalid page range" error. > > $ echo "foo" > foo > $ pr +0 foo > pr: +0: No such file or directory > [snipped pr output of the "foo" file] > $ pr --pages=0 foo > pr: invalid page range ‘0’ > > I'm using coreutils 9.11. +... could be a file name, so we treat +<invalid page> as a file since: https://github.com/coreutils/coreutils/commit/48eaa7382 --pages=0 is diagnosed directly as an invalid range as there can be no ambiguity there. So the inconsistency is due to a feature, allowing users to `pr +foo --option` for example. Adjusting this now could introduce some breakage, and I don't see much benefit to changing this. Oh this is probably coming from uutils partially supporting the fallback. It would be good to give that context when reporting bugs. I've pushed the attached test to the GNU test suite, to verify this handling. Marking this as done. thanks, Padraig --------------wOXj1yex0TO6wwNWyF16gT9J Content-Type: text/x-patch; charset=UTF-8; name="pr-invalid-pages.patch" Content-Disposition: attachment; filename="pr-invalid-pages.patch" Content-Transfer-Encoding: base64 RnJvbSBhNTJmY2VmOTAzODJjNTFkOTc2NjZhZTk4OTBjY2UxYTQ5ODllYTZlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UD1DMz1BMWRyYWlnPTIwQnJhZHk/ PSA8UEBkcmFpZ0JyYWR5LmNvbT4KRGF0ZTogRnJpLCAxMiBKdW4gMjAyNiAxMzowNzoyNSAr MDEwMApTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBwcjogYWRkIGNoZWNrcyBmb3IgKy4uLiBw YXJhbWV0ZXIgaGFuZGxpbmcKCiogdGVzdHMvcHIvb3B0aW9ucy5zaDogQWQgYSBuZXcgdGVz dC4KKiB0ZXN0cy9sb2NhbC5tazogUmVmZXJlbmNlIG5ldyB0ZXN0LgpBZGRyZXNzZXMgaHR0 cHM6Ly9idWdzLmdudS5vcmcvODEyMjUKLS0tCiB0ZXN0cy9sb2NhbC5tayAgICAgIHwgIDEg KwogdGVzdHMvcHIvb3B0aW9ucy5zaCB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNzU1IHRlc3RzL3ByL29wdGlvbnMuc2gKCmRpZmYgLS1naXQgYS90ZXN0 cy9sb2NhbC5tayBiL3Rlc3RzL2xvY2FsLm1rCmluZGV4IDYzYTQzNzMxOC4uNmQ1NzJlNjc5 IDEwMDY0NAotLS0gYS90ZXN0cy9sb2NhbC5taworKysgYi90ZXN0cy9sb2NhbC5tawpAQCAt MjkwLDYgKzI5MCw3IEBAIGFsbF90ZXN0cyA9CQkJCQlcCiAgIHRlc3RzL21rdGVtcC93cml0 ZS1lcnJvci5zaAkJCVwKICAgdGVzdHMvbWlzYy9hcmNoLnNoCQkJCVwKICAgdGVzdHMvcHIv Ym91bmRlZC1tZW1vcnkuc2gJCQlcCisgIHRlc3RzL3ByL29wdGlvbnMuc2gJCQkJXAogICB0 ZXN0cy9wci9wci10ZXN0cy5wbAkJCQlcCiAgIHRlc3RzL3B3ZC9hcmd1bWVudC5zaAkJCQlc CiAgIHRlc3RzL3B3ZC9wd2Qtb3B0aW9uLnNoCQkJXApkaWZmIC0tZ2l0IGEvdGVzdHMvcHIv b3B0aW9ucy5zaCBiL3Rlc3RzL3ByL29wdGlvbnMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUK aW5kZXggMDAwMDAwMDAwLi5iYmQxZThkNzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9w ci9vcHRpb25zLnNoCkBAIC0wLDAgKzEsNDAgQEAKKyMhL2Jpbi9zaAorIyBUZXN0ICdwcicg b3B0aW9uIGhhbmRsaW5nCisKKyMgQ29weXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisKKy4gIiR7c3JjZGlyPS59L3Rlc3RzL2luaXQuc2giOyBwYXRo X3ByZXBlbmRfIC4vc3JjCitwcmludF92ZXJfIHByCitnZXRsaW1pdHNfCisKKyMgRW5zdXJl IHByIHRyZWF0cyBhbGwgaW52YWxpZCArcGFnZSByYW5nZXMgYXMgYSBmaWxlCitmb3IgcCBp biArMCArMGZvbzsgZG8KKyAgcmV0dXJuc18gMSBwciAiJHAiIDI+ZXJyIDwvZGV2L251bGwK KyAgcHJpbnRmICclc1xuJyAicHI6ICRwOiAkRU5PRU5UIiA+ZXhwIHx8IGZyYW1ld29ya19m YWlsdXJlXworICBjb21wYXJlIGV4cCBlcnIgfHwgZmFpbD0xCitkb25lCisKKyMgbnVtYmVy IHBhcnNpbmcgaXNzdWUKK3JldHVybnNfIDEgcHIgLS1wYWdlcz0tMCAyPmVyciA8L2Rldi9u dWxsCitwcmludGYgJyVzXG4nICJwcjogaW52YWxpZCAtLXBhZ2VzIGFyZ3VtZW50ICctMCci ID5leHAKK2NvbXBhcmUgZXhwIGVyciB8fCBmYWlsPTEKKworIyBudW1iZXIgdmFsaWRhdGlv biBpc3N1ZQorcmV0dXJuc18gMSBwciAtLXBhZ2VzPTAgMj5lcnIgPC9kZXYvbnVsbAorcHJp bnRmICclc1xuJyAicHI6IGludmFsaWQgcGFnZSByYW5nZSAnMCciID5leHAKK2NvbXBhcmUg ZXhwIGVyciB8fCBmYWlsPTEKKworRXhpdCAkZmFpbAotLSAKMi41NC4wCgo= --------------wOXj1yex0TO6wwNWyF16gT9J--