[#3861] super — ts <decoux@...>
[#3862] Marshal.dump'ing OpenStruct objects — Mauricio Fern疣dez <batsman.geo@...>
Hi,
[#3881] mkdir, mkdir_p in FileUtils and mode — Florian Frank <flori@...>
Hello,
[#3907] Obtaining mode information on an IO object — Jos Backus <jos@...>
The attached patch implements IO#mode. This method returns the mode the IO
Hi,
On Tue, Dec 07, 2004 at 09:25:13AM +0900, nobu.nokada@softhome.net wrote:
Jos Backus wrote:
Hi,
On Thu, Dec 09, 2004 at 10:47:48AM +0900, nobu.nokada@softhome.net wrote:
On Thu, Dec 09, 2004 at 02:40:33PM +0900, James Britt wrote:
[#3914] Pathname needs a makeover — "Berger, Daniel" <Daniel.Berger@...>
Hi all,
[#3922] Incorrect escaping in strings produced by String::inspect — noreply@...
Bugs item #1173, was opened at 2004-12-08 17:35
[#3966] unknown node type 0 — Andrew Walrond <andrew@...>
I still get this happening a lot with my Rubyx linux ruby script.
This is a long standing bug in Ruby, and has been reported hundreds of times
Hi,
[#3975] Patches to test/unit — Ryan Davis <ryand-ruby@...>
I believe these are the minimal patches needed to make it possible to
[#3982] Win32: rb_sys_fail() - errno == 0 — Florian Gro<florgro@...>
Moin!
[#4000] 1.8.2 preview4 — Yukihiro Matsumoto <matz@...>
Hello,
[#4009] cgi.rb -- more GET/POST stuff — mde@...26.com
First of all, I think it would be great, as Eustaquio suggests, to
GETs and POSTs are defined to be fairly different actions. I'd read
-----BEGIN PGP SIGNED MESSAGE-----
Francis Hwang wrote:
-----BEGIN PGP SIGNED MESSAGE-----
First of all, the entire discussion of when GET is appropriate
mde@state26.com wrote:
[#4027] Allowing custom number literal suffixes? — Florian Gro<florgro@...>
Moin!
Hi,
Mathieu Bouchard wrote:
Mathieu Bouchard wrote:
I'm not sure I would advocate making Ruby's grammar even more
>
Brent Roman wrote:
> Brent Roman wrote:
Brent Roman wrote:
> Florian Gross wrote:
Mathieu Bouchard wrote:
Mathieu Bouchard wrote:
[#4033] Garbage collection trouble — Christian Neukirchen <chneukirchen@...>
Hello,
>>>>> "C" == Christian Neukirchen <chneukirchen@gmail.com> writes:
ts <decoux@moulon.inra.fr> writes:
>>>>> "C" == Christian Neukirchen <chneukirchen@gmail.com> writes:
[#4040] Extensions, Internal — Jgen Mangler <juergen.mangler@...>
Hi,
mkmf enhancement for Win32
Hi all,
It turns out that some Win32 functions, such as AttachConsole(), are
only conditionally available, and depend on the values of specific
macros.
From
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog
/winprog/using_the_windows_headers.asp
"Certain functions that depend on a particular version of Windows are
declared using conditional code. This enables you to use the compiler to
detect whether your application uses functions that are not supported on
its target version(s) of Windows. To compile an application that uses
these functions, you must define the appropriate macros. Otherwise, you
will receive the C2065 error message."
This will be more of an issue when 64-bit Windows becomes more popular,
though I am even hitting it currently with some of the Win32Utils
extensions I've been working on.
Now, we could leave it up to individual extension authors to set this
themselves manually, but that's a pain, and error prone (it's easy to
forget, and some may not know to do it in the first place). I thought
it would be nice if mkmf would set it for us. So, I submit the
following patch for consideration:
--- mkmf.orig Fri Dec 10 14:13:25 2004
+++ mkmf.rb Fri Dec 10 14:54:46 2004
@@ -956,6 +956,58 @@
mfile.close if mfile
end
+def set_win32_macro
+ require "Win32API"
+
+ # We need to modify $CPPFLAGS based on the platform so that we can
see
+ # certain functions.
+
+ GetVersionEx = Win32API.new('kernel32','GetVersionEx','P','I')
+ swCSDVersion = "\0" * 128
+ OSVERSIONINFO = [148,0,0,0,0,swCSDVersion].pack("LLLLLa128")
+ GetVersionEx.call(OSVERSIONINFO)
+ info = OSVERSIONINFO.unpack("LLLLLa128")
+
+ major, minor = info[1,2]
+ platform = info[4]
+
+ # Default to NT
+ macro = "_WIN32_WINNT="
+
+ # Change if needed, or skip
+ if platform == 1 # Windows 95, 98 and ME
+ macro = "_WIN32_WINDOWS="
+ elsif platform == 0 # Windows 3.51 or earlier
+ macro = nil
+ end
+
+ # Skipped if Windows 3.51 or earlier
+ if macro
+ case major
+ when 5
+ case minor
+ when 2 # 2003
+ macro += "0x0502"
+ when 1 # XP
+ macro += "0x0501"
+ else # 2000
+ macro += "0x0500"
+ end
+ when 4
+ case minor
+ when 0 # NT or 95
+ macro += "0x0400"
+ when 90 # ME
+ macro += "0x0500"
+ when 10 # 98
+ macro += "0x0410"
+ end
+ end
+
+ $CPPFLAGS += " -D#{macro}"
+ end
+end
+
def init_mkmf(config = CONFIG)
$enable_shared = config['ENABLE_SHARED'] == 'yes'
$defs = []
@@ -982,6 +1034,10 @@
$LOCAL_LIBS = ""
+ if File::ALT_SEPARATOR
+ set_win32_macro
+ end
+
$cleanfiles = []
$distcleanfiles = []
I realize that there are times when authors may still need to set
$CPPFLAGS manually (see the example near the bottom of the link I've
provided), but I think it's reasonable to put the onus on the extension
developer in such uncommon situations. A note in the README for Win32
could be added to point out this possibility.
Regards,
Dan