windowsのvimでrubyのネットワーク機能がちゃんと動かないのはvim側のバグらしいのでパッチ作った

経緯:vim,windows,rubyコマンドでネットワーク関係のコードが失敗する - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
NtInitializeを呼ぶようにしたらうまくいったやないけ。vimのバグ(windows環境ではrubyの初期化時にNtInitializeを呼ぶ必要がある)と結論。

Index: if_ruby.c
===================================================================
--- if_ruby.c	(revision 1076)
+++ if_ruby.c	(working copy)
@@ -69,6 +69,9 @@
 # define RUBY_DATA_FUNC int
 #endif
 
+static int dummy_argc=1;
+static char *dummy_argv[]={"gvim.exe"};
+
 static int ruby_initialized = 0;
 static VALUE objtbl;
 
@@ -186,6 +189,7 @@
 static VALUE *dll_ruby_errinfo;
 static void (*dll_ruby_init) (void);
 static void (*dll_ruby_init_loadpath) (void);
+static void (*dll_NtInitialize) (int*,char**);
 #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
 static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
 #endif
@@ -248,6 +252,7 @@
     {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
     {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
     {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
+    {"NtInitialize",(RUBY_PROC*)&dll_NtInitialize},
 #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
     {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
 #endif
@@ -414,6 +419,9 @@
 	if (ruby_enabled(TRUE))
 	{
 #endif
+#ifdef _WIN32
+	    NtInitialize(&dummy_argc,&dummy_argv);
+#endif
 	    ruby_init();
 	    ruby_init_loadpath();
 	    ruby_io_init();

これで正常に動くことを確認。したはいいがパッチってどこにどうやって投げればいいんだ←いまここ