Some programs (like NSCA httpd) include <dirent.h> without first including <sys/types.h> so the u_foo types aren't declared. I don't think POSIX.1 allows us to include <sys/types.h> in <dirent.h> either.