http://www.perlmonks.org?node_id=665598


in reply to Detecting lchown and falling back to chown

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).

  • Comment on Re: Detecting lchown and falling back to chown

Replies are listed 'Best First'.
Re^2: Detecting lchown and falling back to chown
by andy314 (Initiate) on Feb 01, 2008 at 16:49 UTC
    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:
    sub best_chown($$$) { chown(@_) unless -l $_[0]; }

    Does this make sense?
      Messed up the parameter order. Should probably be (I never call it for more than 1 file at a time):
      sub best_chown($$$) { chown(@_) unless -l $_[2]; }