From: Daniel Berger Date: 2008-04-15T04:14:15+09:00 Subject: Re: umask vs umask 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. Regards, Dan