bug#81413: [PATCH] install: skip chown/chmod when -C finds nothing to change
Mateusz Nosek <[email protected]> Wed, 15 Jul 2026 00:30:55 +0200
| Newsgroups | gmane.comp.gnu.core-utils.bugs |
|---|---|
| Message-ID | <CAKJSxDRMbWNShW7Fe91eFj1oYUoBjZw2qmfObnzUhUOKHDuGcA@mail.gmail.com> |
--0000000000005a9f41065699c32b Content-Type: text/plain; charset="UTF-8" Hi, I attach a patch for the "install" utility: "install -C" was still calling chown/chmod on the destination even when need_copy() had already determined it matches (mode, owner, group, content), which could needlessly fail, e.g. on an immutable file. This is my first patch to coreutils, so apologies for any mistakes in the submission process -- happy to fix anything you point out. Thanks, Mateusz Nosek --0000000000005a9f41065699c32b Content-Type: text/x-patch; charset="US-ASCII"; name="install-C-immutable.patch" Content-Disposition: attachment; filename="install-C-immutable.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mrl7zrcn0> X-Attachment-Id: f_mrl7zrcn0 RnJvbSBjNzYyZmM2NTFlNzhkYzAxYWEyYmMzNzA4ODIyODNkYjQxNGUxMjdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRldXN6IE5vc2VrIDxtYXRldXN6bm9zZWswQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCAxNCBKdWwgMjAyNiAyMzo1MDoyOCArMDIwMApTdWJqZWN0OiBbUEFUQ0hd IGluc3RhbGw6IHNraXAgY2hvd24vY2htb2Qgd2hlbiAtQyBmaW5kcyBub3RoaW5nIHRvIGNoYW5n ZQoKImluc3RhbGwgLUMiICgtLWNvbXBhcmUpIGhhcyBhbHdheXMgY2FsbGVkIGNob3duL2NobW9k IG9uIHRoZQpkZXN0aW5hdGlvbiBldmVuIGFmdGVyIGRldGVybWluaW5nIHRoYXQgY29weWluZyB3 YXMgdW5uZWNlc3NhcnksCmV2ZXIgc2luY2UgLS1jb21wYXJlIHdhcyBhZGRlZCBpbiBjb21taXQg djcuMC0xODItZ2RhYzVmMTJjNi4KbmVlZF9jb3B5KCkgYWxyZWFkeSB2ZXJpZmllcyB0aGF0IHRo ZSBkZXN0aW5hdGlvbidzIG1vZGUsIG93bmVyLCBhbmQKZ3JvdXAgbWF0Y2ggYmVmb3JlIHNraXBw aW5nIHRoZSBjb3B5LCBzbyByZS1hcHBseWluZyB0aGVtIGlzCnJlZHVuZGFudCwgYW5kIGNhbiBu ZWVkbGVzc2x5IGZhaWwgb24gYSBkZXN0aW5hdGlvbiB0aGF0IGNhbm5vdCBiZQpjaG93bi9jaG1v ZCdkIGV2ZW4gdGhvdWdoIG5vdGhpbmcgd291bGQgYWN0dWFsbHkgY2hhbmdlLCBlLmcuIG9uZQpt YXJrZWQgaW1tdXRhYmxlIHdpdGggY2hhdHRyICtpLgpbYnVnIGludHJvZHVjZWQgaW4gY29yZXV0 aWxzLTcuMV0KCiogc3JjL2luc3RhbGwuYyAoY2hhbmdlX2F0dHJpYnV0ZXMpOiBNb3ZlIHRoZSBz ZXRkZWZhdWx0ZmlsZWNvbiBjYWxsCm91dCB0byB0aGUgY2FsbGVyLCBkZWNvdXBsaW5nIGl0IGZy b20gY2hvd24vY2htb2Qgc3VjY2Vzcy4KKGluc3RhbGxfZmlsZV9pbl9maWxlKTogT25seSBjYWxs IGNoYW5nZV9hdHRyaWJ1dGVzIHdoZW4gdGhlIGNvcHkKd2FzIGFjdHVhbGx5IHBlcmZvcm1lZCwg aS5lLiBjb3B5X3N0YXR1cyAhPSBDT1BZX1NLSVBQRUQuCiogdGVzdHMvaW5zdGFsbC9pbnN0YWxs LUMtaW1tdXRhYmxlLnNoOiBOZXcgdGVzdC4KKiB0ZXN0cy9sb2NhbC5tayAoYWxsX3Jvb3RfdGVz dHMpOiBBZGQgaXQuCi0tLQogc3JjL2luc3RhbGwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwg MTMgKysrKy0tCiB0ZXN0cy9pbnN0YWxsL2luc3RhbGwtQy1pbW11dGFibGUuc2ggfCA2MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9sb2NhbC5tayAgICAgICAgICAgICAgICAg ICAgICAgfCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA3NTUgdGVzdHMvaW5zdGFsbC9pbnN0YWxsLUMtaW1tdXRh YmxlLnNoCgpkaWZmIC0tZ2l0IGEvc3JjL2luc3RhbGwuYyBiL3NyYy9pbnN0YWxsLmMKaW5kZXgg YmNjZmU2MDZmLi4yOTZjYzAxZDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbnN0YWxsLmMKKysrIGIvc3Jj L2luc3RhbGwuYwpAQCAtNDU3LDkgKzQ1Nyw2IEBAIGNoYW5nZV9hdHRyaWJ1dGVzIChjaGFyIGNv bnN0ICpuYW1lLCBpbnQgZGlyZmQsIGNoYXIgY29uc3QgKnJlbG5hbWUpCiAgIGVsc2UKICAgICBv ayA9IHRydWU7CiAKLSAgaWYgKHVzZV9kZWZhdWx0X3NlbGludXhfY29udGV4dCkKLSAgICBzZXRk ZWZhdWx0ZmlsZWNvbiAobmFtZSk7Ci0KICAgcmV0dXJuIG9rOwogfQogCkBAIC03MzcsNyArNzM0 LDE1IEBAIGluc3RhbGxfZmlsZV9pbl9maWxlIChjaGFyIGNvbnN0ICpmcm9tLCBjaGFyIGNvbnN0 ICp0bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICEgU19JU1JFRyAoZnJv bV9zYi5zdF9tb2RlKSkKICAgICAgICYmICEgY2hhbmdlX3RpbWVzdGFtcHMgKCZmcm9tX3NiLCB0 bywgdG9fZGlyZmQsIHRvX3JlbG5hbWUpKQogICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIGNo YW5nZV9hdHRyaWJ1dGVzICh0bywgdG9fZGlyZmQsIHRvX3JlbG5hbWUpOworCisgIGlmIChjb3B5 X3N0YXR1cyAhPSBDT1BZX1NLSVBQRUQKKyAgICAgICYmICEgY2hhbmdlX2F0dHJpYnV0ZXMgKHRv LCB0b19kaXJmZCwgdG9fcmVsbmFtZSkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGlmICh1c2Vf ZGVmYXVsdF9zZWxpbnV4X2NvbnRleHQpCisgICAgc2V0ZGVmYXVsdGZpbGVjb24gKHRvKTsKKwor ICByZXR1cm4gdHJ1ZTsKIH0KIAogLyogQ3JlYXRlIGFueSBtaXNzaW5nIHBhcmVudCBkaXJlY3Rv cmllcyBvZiBUTywKZGlmZiAtLWdpdCBhL3Rlc3RzL2luc3RhbGwvaW5zdGFsbC1DLWltbXV0YWJs ZS5zaCBiL3Rlc3RzL2luc3RhbGwvaW5zdGFsbC1DLWltbXV0YWJsZS5zaApuZXcgZmlsZSBtb2Rl IDEwMDc1NQppbmRleCAwMDAwMDAwMDAuLmNjMWE4ODYyMQotLS0gL2Rldi9udWxsCisrKyBiL3Rl c3RzL2luc3RhbGwvaW5zdGFsbC1DLWltbXV0YWJsZS5zaApAQCAtMCwwICsxLDYwIEBACisjIS9i aW4vc2gKKyMgRW5zdXJlICJpbnN0YWxsIC1DIiBkb2VzIG5vdCBhdHRlbXB0IHRvIGNob3duL2No bW9kIGFuIHVuY2hhbmdlZCwKKyMgaW1tdXRhYmxlIGRlc3RpbmF0aW9uIGZpbGUuCisjIFJlcXVp cmVzIHJvb3QgYWNjZXNzIHRvIGRvIGNoYXR0ciAraSwgYXMgd2VsbCBhcyBhIGZpbGUgc3lzdGVt CisjIHRoYXQgc3VwcG9ydHMgdGhlIGltbXV0YWJsZSBhdHRyaWJ1dGUgKGUuZy4sIGV4dDIvMy80 LCB4ZnMsIGJ0cmZzKS4KKworIyBDb3B5cmlnaHQgKEMpIDIwMjYgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworLiAiJHtzcmNkaXI9Ln0vdGVzdHMv aW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi9zcmMKK3ByaW50X3Zlcl8gZ2luc3RhbGwKK3JlcXVp cmVfcm9vdF8KK3NraXBfaWZfc2V0Z2lkXworc2tpcF9pZl9ub25kZWZhdWx0X2dyb3VwXworCisj IFRoZXNlIHNpbXBsZSBvbmUtZmlsZSBvcGVyYXRpb25zIGFyZSBleHBlY3RlZCB0byB3b3JrIGV2 ZW4gaW4gdGhlCisjIHByZXNlbmNlIG9mIHRoaXMgYnVnLCBhbmQgd2UgbmVlZCB0aGVtIHRvIHNl dCB1cCB0aGUgcmVzdCBvZiB0aGUgdGVzdC4KK2NoYXR0cl9pX3dvcmtzPTEKK3RvdWNoIGYKK2No YXR0ciAraSBmIDI+L2Rldi9udWxsIHx8IGNoYXR0cl9pX3dvcmtzPTAKK3JtIGYgMj4vZGV2L251 bGwKK3Rlc3QgLWYgZiB8fCBjaGF0dHJfaV93b3Jrcz0wCitjaGF0dHIgLWkgZiAyPi9kZXYvbnVs bCB8fCBjaGF0dHJfaV93b3Jrcz0wCitybSBmIDI+L2Rldi9udWxsIHx8IGNoYXR0cl9pX3dvcmtz PTAKK3Rlc3QgLWYgZiAmJiBjaGF0dHJfaV93b3Jrcz0wCisKK2lmIHRlc3QgJGNoYXR0cl9pX3dv cmtzID0gMDsgdGhlbgorICBza2lwXyAiY2hhdHRyICtpIGRvZXNuJ3Qgd29yayBvbiB0aGlzIGZp bGUgc3lzdGVtIgorZmkKKwordTE9MQorZzE9MQorCitlY2hvIHRlc3QgPiBhIHx8IGZyYW1ld29y a19mYWlsdXJlXworCisjIEluc3RhbGwgb25jZSB0byBjcmVhdGUgdGhlIGRlc3RpbmF0aW9uLCB0 aGVuIG1ha2UgaXQgaW1tdXRhYmxlLgorZ2luc3RhbGwgLUN2IC1tMDY0NCAtbyR1MSAtZyRnMSBh IGIgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCitjaGF0dHIgK2kgYiB8fCBmcmFtZXdvcmtfZmFpbHVy ZV8KKworIyBBIHNlY29uZCAiLUMiIGluc3RhbGwgd2l0aCBhbiBpZGVudGljYWwgc291cmNlLCBt b2RlLCBvd25lciBhbmQgZ3JvdXAKKyMgbXVzdCBiZSBhIG5vLW9wOiBpdCBtdXN0IG5vdCBhdHRl bXB0IHRvIGNob3duL2NobW9kIHRoZSBkZXN0aW5hdGlvbiwKKyMgc2luY2UgdGhhdCB3b3VsZCBm YWlsIG9uIGFuIGltbXV0YWJsZSBmaWxlIGV2ZW4gdGhvdWdoIG5vdGhpbmcgYWJvdXQKKyMgaXQg d291bGQgYWN0dWFsbHkgY2hhbmdlLgorZ2luc3RhbGwgLUN2IC1tMDY0NCAtbyR1MSAtZyRnMSBh IGIgfHwgZmFpbD0xCisKK2NoYXR0ciAtaSBiCisKK0V4aXQgJGZhaWwKZGlmZiAtLWdpdCBhL3Rl c3RzL2xvY2FsLm1rIGIvdGVzdHMvbG9jYWwubWsKaW5kZXggZTJhZmJlMTM0Li4xOGJmNzk4NjEg MTAwNjQ0Ci0tLSBhL3Rlc3RzL2xvY2FsLm1rCisrKyBiL3Rlc3RzL2xvY2FsLm1rCkBAIC0xMjEs NiArMTIxLDcgQEAgYWxsX3Jvb3RfdGVzdHMgPQkJCQlcCiAgIHRlc3RzL2R1L2JpbmQtbW91bnQt ZGlyLWN5Y2xlLnNoCQlcCiAgIHRlc3RzL2R1L2JpbmQtbW91bnQtZGlyLWN5Y2xlLXYyLnNoCQlc CiAgIHRlc3RzL2lkL3NldGdpZC5zaAkJCQlcCisgIHRlc3RzL2luc3RhbGwvaW5zdGFsbC1DLWlt bXV0YWJsZS5zaAkJXAogICB0ZXN0cy9pbnN0YWxsL2luc3RhbGwtQy1yb290LnNoCQlcCiAgIHRl c3RzL2xzL2NhcGFiaWxpdHkuc2gJCQlcCiAgIHRlc3RzL2xzL25vLWNhcC5zaAkJCQlcCi0tIAoy LjQ3LjMKCg== --0000000000005a9f41065699c32b--