From: Daniel Berger Date: 2009-01-09T03:35:09+09:00 Subject: Re: Ruby & Windows and Dir() EINVAL bug? On Jan 8, 10:44 am, bdezo...@wisc.edu wrote: > Hello, > > I am using Ruby 1.8.6-26 on Windows. I have this little test script: > > ***************************************************************************­*************** > system("dir x:\\.\\Radeloff\\Projects\\DATA\\NLCD_2001\\landcover\ > \nlcd_fg11") > > serverDirName = "x:/./Radeloff/Projects/DATA_NLCD_2001/landcover/ > nlcd_fg11" > > Dir.new(serverDirName).each do | dirEntry | >   if inHere.nil? >     print "Found the directory #{serverDirName} just fine!\n" >     inHere = true >   end > end > ***************************************************************************­*************** > > The first line succeeds. The Dir.new() line bombs out with > Errno::EINVAL.Note that the Dir.new() code was taken out of a working > script that works for millions of files and directories except this > one. The funky "x:/./..." stuff works all the time. I have looked at > file permissions on the directory in question and it matches other > directories in the same place that work fine. > > Can anyone tell me what could be wrong here? Could this be a Ruby bug? It's not being caused by the '.'. I just tried it: irb(main):002:0> Dir.new("C:/staging").each{ |f| p f } "." ".." "ptools-1.1.6" "windows-pr-0.9.8" "windows-pr-0.9.8.zip" => # irb(main):003:0> Dir.new("C:/./staging").each{ |f| p f } "." ".." "ptools-1.1.6" "windows-pr-0.9.8" "windows-pr-0.9.8.zip" => # BTW, you can shortcut Dir.new(dir).each with Dir.foreach(dir), although I don't think it will solve your problem. Regards, Dan