On Apr 13, 11:45pm, Heesob Park <pha... / gmail.com> wrote:
> Hi,

> Daniel Berger wrote:
> > On Apr 13, 7:43am, "Park Heesob" <phasi... / hotmail.com> 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