From: Daniel Berger Date: 2008-04-16T11:26:15+09:00 Subject: Re: umask vs umask On Apr 14, 7:11 pm, Park Heesob wrote: > Hi, > > > Date: Tue, 15 Apr 2008 04:14:15 +0900> From: djber...@gmail.com> Subject: Re: umask vs umask> To: ruby-t...@ruby-lang.org> > On Apr 13, 11:45 pm, Heesob Park wrote:> > Hi,> > > Daniel Berger wrote:> > > On Apr 13, 7:43�am, "Park Heesob" wrote:> > >> > Hi,> >> > >> > � � � omask = Umask.call(0)> > >> > p umask(S_IREAD) # 0> > >> > p umask � � � � �# 256 (ok)> > >> > p umask � � � � �# 256 (double check, ok)> >> > >> > p File.umask � � # 0 - wtf?> >> > >> > Why isn't Ruby's File.umask picking up the change? I see the same thing> > >> > if I set it with File.umask and try to read the changes with my own umask.> >> > >> In my Windows XP Home & Pro, with ruby 1.8.6 p111,> > >> the File.umask works fine.> >> > > I noticed that it works as expected when I use the one click installer> > > but not when I use a Ruby built with VC++ 8.> >> > > Are you seeing the same thing?> >> > Yes, I tested with VC++ 9.> > It fails as same as your test.> > I guess "msvcrt" is valid for VC++ 6.> > The situation became more complex since VC++ 8.> >> > Refer tohttp://msdn2.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx> >> > You should modify the line> >> > Umask = API.new('_umask', 'I', 'I', 'msvcrt')> >> > to> >> > Umask = API.new('_umask', 'I', 'I', 'msvcr80')> >> > It requires Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)http://www.microsoft.com/downloads/details.aspx?FamilyID=200B2FD9-AE1...> > When I try to link against msvcr80 I get:> > umask_test.rb:4:in `initialize': LoadLibrary() function failed for> 'msvcr80': A dynamic link library (DLL) initialization routine failed.> (Win32::API::Error)> from umask_test.rb:4:in `new'> from umask_test.rb:4> > The first line of a build shows the options being used:> > cl -W3 -nologo -MD -O2b2xty- -DRUBY_EXPORT -I. -I. -I./> missing -D_CRT_SECURE_NO> _DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -c -Tcarray.c> > Do I need to use a different build switch?> > The download link you mentioned suggests that I only need that patch> if I don't already have Visual C++ installed. But, I do have it> installed.> > I'm afraid that even after reading the first article I'm still not> sure what I'm supposed to do to make this work properly.> > > First copy "msvcr80.dll" and "Microsoft.VC80.CRT.manifest" to the folder where ruby.exe runs. > > And make "ruby.exe.manifest" in the the folder where ruby.exe runs with the following content: > > I gave this a shot, copying msvcr80.dll and Microsoft.VC80.CRT.manifest from C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT into my CONFIG['bindir'] directory, and created the ruby.exe.manifest as you suggested. Unfortunately, that still didn't work for me. I also just tried copying the Microsoft.VC80.CRT.manifest to ruby.exe.manifest, but that didn't work either. I'm not really sure where to go from here. Regards, Dan