#!/usr/local/cpanel/3rdparty/bin/perl
# copyright@cpanel.net    http://cpanel.net
# It is inherited from  /usr/local/cpanel/scripts/safetybits.pl
use File::Find;	
$user=$ARGV[0];
$group=$ARGV[1];
$files=$ARGV[2];

sub checkhardlink {
    my ($file) = @_;
    return if ( -d $file );

    my $linkage = ( stat($file) )[3];

    return ( $linkage > 1 ) ? 1 : 0;
}

sub safe_chown {
    my ( $uid, $gid, @files ) = @_;
    my $count = 0;

    if ( $uid !~ m/^\d+$/ ) {
        $uid = ( getpwnam($uid) )[2];
    }
    if ( $gid !~ m/^\d+$/ ) {
        $gid = ( getgrnam($gid) )[2];
    }
    elsif ( $gid == -2 ) {
        $gid = ( getpwuid($uid) )[3];
    }

    if ( $uid eq "" || $gid eq "" ) { print "safe_chown: Error Fetching the uid/gid"; return (); }

    foreach my $file (@files) {
        if ( ( -l $file ) || ( checkhardlink($file) ) ) {

            #print "${file} is a link. Not changing ownership.\n";
            next;
        }
        chown $uid, $gid, $file;
        $count++;
    }
    return $count;
}

sub print_name_if_dir
{
 #    print "$_ \n";
    safe_chown("$user","$group","$_");
}
find(\&print_name_if_dir, "$files");
exit 0;
