I noticed some inconsistencies in how ENOTSUP errors were handled by cp. $ dd bs=1M count=10 if=/dev/zero of=t.vfat $ mkfs.vfat t.vfat $ mkdir m.vfat $ sudo mount -o loop t.vfat m.vfat $ ./src/cp --preserve=all a m.vfat/ ./src/cp: setting attribute `user.foo' for `user.foo': Permission denied ./src/cp: setting attribute `user.foo2' for `user.foo2': Permission denied ./src/cp: setting attribute `security.capability' for `security.capability': Operation not permitted ./src/cp: preserving permissions for `m.vfat/a': Operation not supported $ sudo ./src/cp --preserve=all a m.vfat/a ./src/cp: failed to set the security context of `m.vfat/a' to `system_u:object_r:user_home_t:s0': Operation not supported ./src/cp: failed to preserve ownership for `m.vfat/a': Operation not permitted Notice how one gets "Operation not supported" when the target exists. The attached should fix it up. cheers, Pádraig.