FileUtils.mv raises Errno::EPERM

e$BLn8}$H?=$7$^$9!#e(B

File.renamee$B$,e(BErrno::EXDEVe$B$K$J$k>u67$G%G%#%l%/%H%j$r0\F0$9$k$He(B
e$B%G%#%l%/%H%j$KBP$7$Fe(BFile.unlinke$B$7$h$&$H$7$F!"e(BFileUtils.mve$B$,e(B
e$B%(%i!<$K$J$j$^$9!#e(B

$ cd ~
$ mkdir foo
$ touch foo/1
home/ruby/local/ruby185/bin/ruby -rfileutils -ve ‘FileUtils.mv(“foo”,
“/tmp”)’
ruby 1.8.5 (2007-02-14 patchlevel 20) [i386-freebsd6.1]
$ /home/ruby/local/ruby185/lib/ruby/1.8/fileutils.rb:504:in unlink': Operation not permitted - foo (Errno::EPERM) from /home/ruby/local/ruby185/lib/ruby/1.8/fileutils.rb:504:in mv’
from /home/ruby/local/ruby185/lib/ruby/1.8/fileutils.rb:1379:in
fu_each_src_dest' from /home/ruby/local/ruby185/lib/ruby/1.8/fileutils.rb:1393:in fu_each_src_dest0’
from /home/ruby/local/ruby185/lib/ruby/1.8/fileutils.rb:1377:in
fu_each_src_dest' from /home/ruby/local/ruby185/lib/ruby/1.8/fileutils.rb:490:in mv’
from -e:1

e$BBEEv$+$I$&$+$o$+$j$^$;$s$,!"0l1~%Q%C%A$r$D$1$F$*$-$^$9!#e(B

— fileutils.rb.orig Sun Feb 25 14:46:44 2007
+++ fileutils.rb Sun Feb 25 14:53:16 2007
@@ -484,7 +484,7 @@

FileUtils.mv Dir.glob(‘test*.rb’), ‘test’, :noop => true,

:verbose => true

def mv(src, dest, options = {})

  • fu_check_options options, :force, :noop, :verbose
  • fu_check_options options, :force, :noop, :verbose, :secure
    fu_output_message “mv#{options[:force] ? ’ -f’ : ‘’}
    #{[src,dest].flatten.join ’ '}” if options[:verbose]
    return if options[:noop]
    fu_each_src_dest(src, dest) do |s, d|
    @@ -501,7 +501,11 @@
    File.rename s, d
    rescue Errno::EXDEV
    copy_entry s, d, true
  •      File.unlink s
    
  •      if options[:secure]
    
  •        remove_entry_secure s, options[:force]
    
  •      else
    
  •        remove_entry s, options[:force]
    
  •      end
       end
     rescue SystemCallError
       raise unless options[:force]
    

@@ -514,7 +518,7 @@
module_function :move

OPT_TABLE[‘mv’] =

  • OPT_TABLE[‘move’] = %w( noop verbose force )
  • OPT_TABLE[‘move’] = %w( noop verbose force secure )

    def rename_cannot_overwrite_file? #:nodoc:
    /djgpp|cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM


GO Noguchi[email protected]

 青木さん、この件はどうでしょうか。

At Sun, 25 Feb 2007 15:06:26 +0900,
GO Noguchi wrote:

ruby 1.8.5 (2007-02-14 patchlevel 20) [i386-freebsd6.1]
from -e:1

  • fu_check_options options, :force, :noop, :verbose
  •      if options[:secure]
    
    OPT_TABLE[‘mv’] =
  • OPT_TABLE[‘move’] = %w( noop verbose force )
  • OPT_TABLE[‘move’] = %w( noop verbose force secure )

def rename_cannot_overwrite_file? #:nodoc:
/djgpp|cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM


GO Noguchi[email protected]


/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp

“Different eyes see different things,
Different hearts beat on different strings –
But there are times for you and me when all such things agree”

e$B@DLZ$G$9!#$&$C$+$j8D?M08$KJV?.$7$F$^$7$?!#=E$M=E$M$9$_$^$;$s!#e(B

On 2007/03/03, at 21:50, Akinori MUSHA wrote:

e$B!!@DLZ$5$s!"$3$N7o$O$I$&$G$7$g$&$+!#e(B

File.renamee$B$,e(BErrno::EXDEVe$B$K$J$k>u67$G%G%#%l%/%H%j$r0\F0e(B
e$B$9$k$He(B
e$B%G%#%l%/%H%j$KBP$7$Fe(BFile.unlinke$B$7$h$&$H$7$F!"e(B
FileUtils.mve$B$,e(B
e$B%(%i!<$K$J$j$^$9!#e(B

e$B$9$$^$;$s!"$9$C$+$jK:$l$F$^$7$?!#e(B
trunk, 1.8 branch e$B$H$b:#%3%
%C%H$7$^$7$?!#e(B