[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

File permissions w/Dir.mkdir

John Joyce

6/28/2007 2:24:00 AM

In OS X 10.4.9, Ruby 1.8.4 when I use:
Dir.mkdir(file_name, 755)

The directories created are drop-box, owner-only.
It seems the Dir class expects the leading bit.
So, it should be 0755 and not 755.

When using:
Dir.mkdir(file_name)

Without permissions, it appears to default to 0755.

Just thought this might be useful for some people.
Seems like I read this in the Pickaxe, but I forgot.
It is interesting, since chmod accepts 755 and assumes you mean 0755
Seems to me that Dir should do the same assuming... but doesn't


John Joyce



1 Answer

Anthony Martinez

6/28/2007 2:44:00 AM

0

On Thu, Jun 28, 2007 at 11:24:14AM +0900, John Joyce wrote:
> In OS X 10.4.9, Ruby 1.8.4 when I use:
> Dir.mkdir(file_name, 755)
>
> The directories created are drop-box, owner-only.
> It seems the Dir class expects the leading bit.
> So, it should be 0755 and not 755.
>
> When using:
> Dir.mkdir(file_name)
>
> Without permissions, it appears to default to 0755.
>
> Just thought this might be useful for some people.
> Seems like I read this in the Pickaxe, but I forgot.
> It is interesting, since chmod accepts 755 and assumes you mean 0755
> Seems to me that Dir should do the same assuming... but doesn't
>

Dir.mkdir accepts octal numbers, which is standard notation for this
sort of thing. A leading 0 makes Ruby interpret it as octal. You *could*
say Dir.mkdir(file_name, 493), but that's sick and twisted.

Also, without the second argument it defaults to 0777, which will get
modified by the umask. cf lines 912-917 of dir.c in the ruby 1.8.6
source.

The reason chmod on the command line accepts 755 is because it can
assume you mean octal digits. Also, I think I've come across a few
(weirder) chmods that require the leading 0, but that was a long time
ago.

>
> John Joyce
>
>
>

--
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++
gives you enough rope to shoot yourself in the foot.