The function blkid_do_probe() is able to detect more filesystems on
the device
while(blkid_do_probe(pr) == 0)
...
but in many cases we need only one exact answer, and we also need to
be sure that there is not any other FS on the device.
For example it's possible to create valid LUKS (or vfat, ...) header
and valid linux swap header on the same device -- in such case the
device can be interpreted (by mount/swapon) in two completely
different ways. An ambivalent result is always error -- the library
never returns such result.