Before:
% i2c -f /dev/iic1 -a 0x20 -d r -c 513 i2c: ioctl(I2CRDWR) failed: Exec format error
After:
% i2c -f /dev/iic1 -a 0x20 -d r -c 513 i2c: ioctl(I2CRDWR) failed: Operation not supported
(the example above is IIC_ENOTSUPP due to an overly long read)
So yeah, turns out this has been a thing for years :/
I guess we could alternatively keep the current way, document it in the manpage and add an iic_strerror to i2c(8) (which would also require moving the IIC_E* definitions to a header shared with userspace) but since nobody noticed that the errors are weird, it should be fine to change.