I was always happy with the traditional Unix approach - Kernel allows anything unless there is a good reason not to (ie no NULL or '/'). Anything else is an application problem that usually required some ingenuity if you really wanted to break convention.
But then, I have never been a big fan of spaces in filenames so varying levels of support in userland was not a big concern. I can remember amusing myself once as an undergraduate, deleting and creating files till I got the right inode numbers to allow a judicious choice of binary file names to result in a directory that was a valid executable a.out image. DigbyT -- Digby R. S. Tarvin digbyt(at)digbyt.com http://www.digbyt.com