Hi all,
I think Dir.pwd should return a normalized uniform path name
regardless of short or long path name.
Current behaviour:
C:\work>irb
irb(main):001:0> Dir.chdir(''c:/PROGRA~1'')
=> 0
irb(main):002:0> Dir.pwd
=> "c:/PROGRA~1"
irb(main):003:0> Dir.chdir(''c:/PROGRAM FILES'')
=> 0
irb(main):004:0> Dir.pwd
=> "c:/PROGRAM FILES"
irb(main):005:0> Dir.chdir(''c:/Program Files'')
=> 0
irb(main):006:0> Dir.pwd
=> "c:/Program Files"
Suggested behaviour:
C:\work>irb -r ''win32/dir''
irb(main):001:0> Dir.chdir(''c:/PROGRA~1'')
=> 0
irb(main):002:0> Dir.pwd
=> "c:\\Program Files"
irb(main):003:0> Dir.chdir(''c:/PROGRAM FILES'')
=> 0
irb(main):004:0> Dir.pwd
=> c:\\Program Files"
irb(main):005:0> Dir.chdir(''c:/Program Files'')
=> 0
irb(main):006:0> Dir.pwd
=> c:\\Program Files"
Here is a draft pwd for win32/dir
def self.pwd()
path = 0.chr * MAXPATH
path2 = 0.chr * MAXPATH
path3 = 0.chr * MAXPATH
GetCurrentDirectory(MAXPATH,path)
GetShortPathName(path,path2,MAXPATH)
GetLongPathName(path2,path3,MAXPATH)
path3[/^[^\0]*/]
end
What do you think about this?
Regards,
Park Heesob
On Mon, May 4, 2009 at 12:48 AM, Heesob Park <phasis at gmail.com> wrote:> Hi all, > > I think Dir.pwd should return a normalized uniform path name > regardless of short or long path name. > > Current behaviour: > > C:\work>irb > irb(main):001:0> Dir.chdir(''c:/PROGRA~1'') > => 0 > irb(main):002:0> Dir.pwd > => "c:/PROGRA~1" > irb(main):003:0> Dir.chdir(''c:/PROGRAM FILES'') > => 0 > irb(main):004:0> Dir.pwd > => "c:/PROGRAM FILES" > irb(main):005:0> Dir.chdir(''c:/Program Files'') > => 0 > irb(main):006:0> Dir.pwd > => "c:/Program Files" > > Suggested behaviour: > > C:\work>irb -r ''win32/dir'' > irb(main):001:0> Dir.chdir(''c:/PROGRA~1'') > => 0 > irb(main):002:0> Dir.pwd > => "c:\\Program Files" > irb(main):003:0> Dir.chdir(''c:/PROGRAM FILES'') > => 0 > irb(main):004:0> Dir.pwd > => c:\\Program Files" > irb(main):005:0> Dir.chdir(''c:/Program Files'') > => 0 > irb(main):006:0> Dir.pwd > => c:\\Program Files" > > Here is a draft pwd for win32/dir > > ? def self.pwd() > ? ? ?path ? ?= 0.chr * MAXPATH > ? ? ?path2 ? = 0.chr * MAXPATH > ? ? ?path3 ? = 0.chr * MAXPATH > ? ? ?GetCurrentDirectory(MAXPATH,path) > ? ? ? ? ?GetShortPathName(path,path2,MAXPATH) > ? ? ? ? ?GetLongPathName(path2,path3,MAXPATH) > ? ? ? ? ?path3[/^[^\0]*/] > ? end > > What do you think about this?Looks good to me. Please create a feature request and I''ll add the change for the next version. :) Speaking of win32-dir, do you have any idea regarding this issue? http://rubyforge.org/tracker/index.php?func=detail&aid=21110&group_id=85&atid=412 Regards, Dan
2009/5/5 Daniel Berger <djberg96 at gmail.com>:> On Mon, May 4, 2009 at 12:48 AM, Heesob Park <phasis at gmail.com> wrote: >> Hi all, > > Looks good to me. Please create a feature request and I''ll add the > change for the next version. :) >I did.> Speaking of win32-dir, do you have any idea regarding this issue? > > http://rubyforge.org/tracker/index.php?func=detail&aid=21110&group_id=85&atid=412In NTFS Junction Points, junction point target must be local path. Refer to http://support.microsoft.com/kb/205524/en-us Regards, Park Heesob