FWIW, if you have lchown available you'll chown the symlink but not the target. If you don't, you'll chown the target, but not the symlink.

That seems kind of strange to me, but YMMV. I could see that if lchown was defined you'd want to change the symlink, but how you handle the target seems like it should always be the same (i.e. always chown the target, or always avoid it).

The program is supposed to recreate permissions of files. It would be run over both symlinks and non-symlinks, and over non-symlinks any function will do, however for symlinks I would need lchown. So I want my script to have full functionality on systems with lchown and at least partial functionality on systems without it.

However you are right .. I do not really want to even attempt the chown if it is a symlink and I do not have lchown. I guess this would be more appropriate:

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other