In the "Limitations of Usual Tools" page you might like to add a note that the -h and -L options to "test" specified by the current POSIX and SUS specifications and implemented in GNU are not portable. In fact, on Solaris 8 they fail in a rather bizarre and confusing way:
$ ln -s /nowhere bad $ ls -l bad lrwxrwxrwx 1 josb user 8 Mar 13 20:10 bad -> /nowhere $ if test -L bad; then echo bad; fi test: argument expected $ if test -h bad; then echo bad; fi bad $ Jos Backus helped me work this out. I am not sure what a good portable way to test for symlinks from the shell would be. Perhaps grepping the output of 'ls -l'? In rsync I'm planning to just provide a small C program that can be called. You can see that many people have already had to puzzle this out for themselves: http://www.google.com/search?q=solaris+test+%22argument+expected%22 -- Martin