How much code (and how ugly) would be required to distinguish ext4
from ext[23]?
it'd need to be able to do some parsing of the ext2/3/4 feature flags,
so it'd need to know some ext2/3/4 details.
lib/blkid/probe.c in e2fsprogs is an example, see probe_ext2,
probe_ext3, etc. It reads in the superblock and then checks some of the
feature fields, for example:
/* Ext4 has at least one feature which ext3 doesn't understand */
if (!(blkid_le32(es->s_feature_ro_compat) &
EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) &&
!(blkid_le32(es->s_feature_incompat) &
EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
return -BLKID_ERR_PARAM;
so it'd not be rocket science but it might be a lot more fs details than
you'd really want in coreutils, I'm not sure...