[#3861] super — ts <decoux@...>
[#3862] Marshal.dump'ing OpenStruct objects — Mauricio Fern疣dez <batsman.geo@...>
Hi,
[#3881] mkdir, mkdir_p in FileUtils and mode — Florian Frank <flori@...>
Hello,
[#3907] Obtaining mode information on an IO object — Jos Backus <jos@...>
The attached patch implements IO#mode. This method returns the mode the IO
Hi,
On Tue, Dec 07, 2004 at 09:25:13AM +0900, nobu.nokada@softhome.net wrote:
Jos Backus wrote:
Hi,
On Thu, Dec 09, 2004 at 10:47:48AM +0900, nobu.nokada@softhome.net wrote:
On Thu, Dec 09, 2004 at 02:40:33PM +0900, James Britt wrote:
[#3914] Pathname needs a makeover — "Berger, Daniel" <Daniel.Berger@...>
Hi all,
[#3922] Incorrect escaping in strings produced by String::inspect — noreply@...
Bugs item #1173, was opened at 2004-12-08 17:35
[#3966] unknown node type 0 — Andrew Walrond <andrew@...>
I still get this happening a lot with my Rubyx linux ruby script.
This is a long standing bug in Ruby, and has been reported hundreds of times
Hi,
[#3975] Patches to test/unit — Ryan Davis <ryand-ruby@...>
I believe these are the minimal patches needed to make it possible to
[#3982] Win32: rb_sys_fail() - errno == 0 — Florian Gro<florgro@...>
Moin!
[#4000] 1.8.2 preview4 — Yukihiro Matsumoto <matz@...>
Hello,
[#4009] cgi.rb -- more GET/POST stuff — mde@...26.com
First of all, I think it would be great, as Eustaquio suggests, to
GETs and POSTs are defined to be fairly different actions. I'd read
-----BEGIN PGP SIGNED MESSAGE-----
Francis Hwang wrote:
-----BEGIN PGP SIGNED MESSAGE-----
First of all, the entire discussion of when GET is appropriate
mde@state26.com wrote:
[#4027] Allowing custom number literal suffixes? — Florian Gro<florgro@...>
Moin!
Hi,
Mathieu Bouchard wrote:
Mathieu Bouchard wrote:
I'm not sure I would advocate making Ruby's grammar even more
>
Brent Roman wrote:
> Brent Roman wrote:
Brent Roman wrote:
> Florian Gross wrote:
Mathieu Bouchard wrote:
Mathieu Bouchard wrote:
[#4033] Garbage collection trouble — Christian Neukirchen <chneukirchen@...>
Hello,
>>>>> "C" == Christian Neukirchen <chneukirchen@gmail.com> writes:
ts <decoux@moulon.inra.fr> writes:
>>>>> "C" == Christian Neukirchen <chneukirchen@gmail.com> writes:
[#4040] Extensions, Internal — Jgen Mangler <juergen.mangler@...>
Hi,
mkdir, mkdir_p in FileUtils and mode
Hello, if I get this correct, the methods in FileUtils are supposed to mirror the unix shell commands. In shell mkdir can be used in this way: (flori@lambda:flori 0)$ mkdir -m 2750 foo (flori@lambda:flori 0)$ ls -ld foo drwxr-s--- 2 flori flori 4096 Dec 3 2004 foo But if I do >> FileUtils::mkdir 'foo', :mode => 02750 the s-bit is silently ignored, because the mkdir libc function and thus Dir::mkdir ignores some bits depending on the used operation system. I've made a patch (attached) to chmod the file in FileUtils::mkdir(_p) to the given mode, and also changed the Dir::mkdir comment to warn people about the libc behaviour. Perhaps Dir::mkdir should be portable in Ruby and not rely on the operating system's behaviour? Or is it more important to make the original libc mkdir available in Dir class? -- Florian Frank
Attachments (1)
Index: dir.c
===================================================================
RCS file: /src/ruby/dir.c,v
retrieving revision 1.134
diff -u -p -r1.134 dir.c
--- dir.c 22 Nov 2004 15:26:02 -0000 1.134
+++ dir.c 3 Dec 2004 12:36:08 -0000
@@ -870,8 +870,9 @@ dir_s_chroot(dir, path)
* Dir.mkdir( string [, integer] ) => 0
*
* Makes a new directory named by <i>string</i>, with permissions
- * specified by the optional parameter <i>anInteger</i>. The
- * permissions may be modified by the value of
+ * specified by the optional parameter <i>anInteger</i>; the
+ * bits are interpreted exactly as the operating system's mkdir libc ibrary
+ * call does. The permissions may be modified by the value of
* <code>File::umask</code>, and are ignored on NT. Raises a
* <code>SystemCallError</code> if the directory cannot be created. See
* also the discussion of permissions in the class documentation for
Index: lib/fileutils.rb
===================================================================
RCS file: /src/ruby/lib/fileutils.rb,v
retrieving revision 1.46
diff -u -p -r1.46 fileutils.rb
--- lib/fileutils.rb 8 Oct 2004 12:37:19 -0000 1.46
+++ lib/fileutils.rb 3 Dec 2004 12:36:13 -0000
@@ -131,6 +131,15 @@ module FileUtils
true
end
+ def create_dir(path, mode)
+ if mode
+ Dir.mkdir path.sub(%r</\z>, ''), mode
+ File.chmod mode, path
+ else
+ Dir.mkdir path.sub(%r</\z>, ''), 0777 & ~File.umask
+ end
+ end
+ private :create_dir
#
# Options: mode noop verbose
@@ -147,10 +156,8 @@ module FileUtils
list = fu_list(list)
fu_output_message "mkdir #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
return if options[:noop]
-
- mode = options[:mode] || (0777 & ~File.umask)
list.each do |dir|
- Dir.mkdir dir.sub(%r</\z>, ''), mode
+ create_dir dir, options[:mode]
end
end
@@ -176,11 +183,10 @@ module FileUtils
fu_output_message "mkdir -p #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
return *list if options[:noop]
- mode = options[:mode] || (0777 & ~File.umask)
list.map {|path| path.sub(%r</\z>, '') }.each do |path|
# optimize for the most common case
begin
- Dir.mkdir path, mode
+ create_dir path, options[:mode]
next
rescue SystemCallError
next if File.directory?(path)
@@ -193,7 +199,7 @@ module FileUtils
end
stack.reverse_each do |path|
begin
- Dir.mkdir path, mode
+ create_dir path, options[:mode]
rescue SystemCallError => err
raise unless File.directory?(path)
end