Beefy Boxes and Bandwidth Generously Provided by pair Networks DiBona
There's more than one way to do things
 
PerlMonks  

How can I Check the permissions of the folder,and correct them?

by Nelly (Novice)
on Apr 28, 2004 at 11:43 UTC ( #348786=note: print w/ replies, xml ) Need Help??


in reply to Permission denied to delete an empty folder
in thread rmtree deletes everything inside the folder but doesn't deletes the root folder him self

How can I Check the permissions of the folder,and correct them? I'm new in perl,excuse me if it's very obvious!


Comment on How can I Check the permissions of the folder,and correct them?
Re: How can I Check the permissions of the folder,and correct them?
by pelagic (Curate) on Apr 28, 2004 at 11:55 UTC
    check:
    ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);
    set:
    chmod
    see perlfunc for more details stat chmod.

    pelagic
Re: How can I Check the permissions of the folder,and correct them?
by matija (Priest) on Apr 28, 2004 at 11:56 UTC
    What operating system? It's rather hard to guess the exact commands unless you at least give us that...

    What have you tried so far? In what way has it failed?

    You would realy benifit from reading How to ask questions the smart way

Re: How can I Check the permissions of the folder,and correct them?
by crabbdean (Pilgrim) on Apr 28, 2004 at 12:44 UTC
    Well I don't know your system but on Win32 its tricky. Here is how. Its actually a subroutine to check if a directory is empty and then remove it (of course you could just force it to remove it with the the "rmtree" command, but better to be safe).

    Also uncomment the commented-out section if you want it to display the folder permissions mask before you alter them.

    What I don't like about this code is that doing a directory listing to check if a directory is empty is slow, especially if a directory is large. There could be an easy command to do that that I'm simply not aware of (probable!).
    #!perl use Win32::FileSecurity; use Cwd qw(cwd); use File::Path; use strict; use warnings; sub remove_dir { my ($path) = @_; my $currpath = cwd; my $ok = chdir $path; if ($ok) { my @dir = <*>; ## check if directory is empty if (!@dir) { my $dirmask = Win32::FileSecurity::MakeMask( qw(FULL GENER +IC_ALL) ); my %hash; # if ( Win32::FileSecurity::Get( $path, \%hash ) ) { # while( (my $name, my $mask) = each %hash ) { # print "$name:\n\t"; # my @happy; # Win32::FileSecurity::EnumerateRights( $mask, \@happy +) ; # print join( "\n\t", @happy ), "\n"; # } # } Win32::FileSecurity::Get( $path, \%hash); $hash{Administrator} = $dirmask; $ok = chdir $currpath; if ( Win32::FileSecurity::Set($path, \%hash) ) { print "\n\t$path --> Permissions Changed"; } else { print "\n\t$path --> Permission change failed$!\n$^E"; } if (rmtree $path) { print "\n\t$path --> Removed"; } else { print "\n\t$path --> Can't be removed $!\n$^E"; } } } }

    Dean
    The Funkster of Mirth
    Programming these days takes more than a lone avenger with a compiler. - sam
    RFC1149: A Standard for the Transmission of IP Datagrams on Avian Carriers
      THANK YOU ALL!!!!!!!!!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://348786]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (7)
As of 2014-04-19 02:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (475 votes), past polls