Suprisingly, POSIX-2008 mandates unlink() have to return "[EPERM]" on directory, not "[EPERM] or [EISDIR]".
[EPERM]The file named by path is a directory, and either the calling process does not have appropriate privileges, or the implementation prohibits using unlink() on directories.
http://www.opengroup.org/onlinepubs/9699919799/functions/unlink.html