
I have a perfectly OK use of getPermissions: in hmake, there is a routine that scans the PATH variable looking for an executable with a given name. Basically, it is a Haskell implementation of the unix 'which' command. There is no actual use of the executable, just a test to report/reject the candidate pathname.
You wouldn't be losing much by using doesFileExist rather than getPermissions.
But on unix, it would be totally incorrect to return a file of the right name but with the wrong permissions. This is what my Haskell `which` originally did, and it bit me hard on a couple of occasions, hence the extra check.
On Windows it turns out to be really hard if not impossible to check for execute permission - the only reliable way is to actually try to execute the file.
Mounting a FAT filesystem on unix (or indeed any filesystem via Samba) also makes all files appear to be executable. These are just broken platforms, and I don't think they should hold us hostage or dictate our preferred API. I'm not saying that the current API is perfect - it could certainly be improved. But I'm just pointing out that there are valid use-cases for what we have currently. If you have concrete suggestions for a new API, I would certainly be interested. Regards, Malcolm