山本です。

>ちょっと今、個々のパッチの中身まで見ている余裕がないのですが、
>一時的でも警告が出るのはあまりうれしくないので、そういう微妙
>なケースは元のまま、というわけにはいきませんでしょうか。上記
>の(1)および(2)は徐々に直せば良いと思うので問題ありません。

部分的に戻すのはちょっと・・・ミスが入りそうで怖いです。警告はほとんど

./ruby/dln.c(1622) : warning C4090: 'function' : 'const' 修飾子は異なります。
./ruby/dln.c(1622) : warning C4024: 'dln_find_1' : の型が 1 の仮引数および実引
数と異なります。

といった const に関係するもので、は下のパッチで消せました。こういうパッチは
別にコミットしたかったので、十分チェックしてそれなりに信頼できるものを
まずコミットしたかったのです。

# 個人的には、移行に伴ってバグが入るのはまずいですが、警告が出るぐらいは
# しかたないと思います。

Index: dln.c
===================================================================
--- dln.c	(revision 3)
+++ dln.c	(working copy)
@@ -1603,7 +1603,7 @@
     return 0;			/* dummy return */
 }
 
-static char *dln_find_1(char *fname, char *path, int exe_flag);
+static char *dln_find_1(const char *fname, const char *path, int exe_flag);
 
 char *
 dln_find_exe(const char *fname, const char *path)
@@ -1665,31 +1665,33 @@
 static char fbuf[MAXPATHLEN];
 
 static char *
-dln_find_1(char *fname, char *path, int exe_flag /* non 0 if looking for executable. */)
+dln_find_1(const char *fname, const char *path, int exe_flag /* non 0 if looking for executable. */)
 {
-    register char *dp;
-    register char *ep;
+    register const char *dp;
+    register const char *ep;
     register char *bp;
     struct stat st;
 #ifdef __MACOS__
     const char* mac_fullpath;
 #endif
 
-    if (!fname) return fname;
-    if (fname[0] == '/') return fname;
-    if (strncmp("./", fname, 2) == 0 || strncmp("../", fname, 3) == 0)
-      return fname;
-    if (exe_flag && strchr(fname, '/')) return fname;
+#define RETURN_IF(expr) if (expr) return (char *)fname;
+
+    RETURN_IF(!fname);
+    RETURN_IF(fname[0] == '/');
+    RETURN_IF(strncmp("./", fname, 2) == 0 || strncmp("../", fname, 3) == 0);
+    RETURN_IF(exe_flag && strchr(fname, '/'));
 #ifdef DOSISH
-    if (fname[0] == '\\') return fname;
+    RETURN_IF(fname[0] == '\\');
 # ifdef DOSISH_DRIVE_LETTER
-    if (strlen(fname) > 2 && fname[1] == ':') return fname;
+    RETURN_IF(strlen(fname) > 2 && fname[1] == ':');
 # endif
-    if (strncmp(".\\", fname, 2) == 0 || strncmp("..\\", fname, 3) == 0)
-      return fname;
-    if (exe_flag && strchr(fname, '\\')) return fname;
+    RETURN_IF(strncmp(".\\", fname, 2) == 0 || strncmp("..\\", fname, 3) == 0);
+    RETURN_IF(exe_flag && strchr(fname, '\\'));
 #endif
 
+#undef RETURN_IF
+
     for (dp = path;; dp = ++ep) {
 	register int l;
 	int i;
Index: eval.c
===================================================================
--- eval.c	(revision 8)
+++ eval.c	(working copy)
@@ -1043,7 +1043,7 @@
 
 static VALUE massign _((VALUE,NODE*,VALUE,int));
 static void assign _((VALUE,NODE*,VALUE,int));
-static int formal_assign _((VALUE, NODE*, int, VALUE*, VALUE*));
+static int formal_assign _((VALUE, NODE*, int, const VALUE*, VALUE*));
 
 typedef struct event_hook {
     rb_event_hook_func_t func;
@@ -5335,7 +5335,7 @@
  */
 
 static VALUE
-rb_method_missing(int argc, VALUE *argv, VALUE obj)
+rb_method_missing(int argc, const VALUE *argv, VALUE obj)
 {
     ID id;
     VALUE exc = rb_eNoMethodError;
@@ -5410,7 +5410,7 @@
 }
 
 static inline VALUE
-call_cfunc(VALUE (*func) (/* ??? */), VALUE recv, int len, int argc, VALUE *argv)
+call_cfunc(VALUE (*func) (/* ??? */), VALUE recv, int len, int argc, const VALUE *argv)
 {
     if (len >= 0 && argc != len) {
 	rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)",
@@ -5494,7 +5494,7 @@
 }
 
 static int
-formal_assign(VALUE recv, NODE *node, int argc, VALUE *argv, VALUE *local_vars)
+formal_assign(VALUE recv, NODE *node, int argc, const VALUE *argv, VALUE *local_vars)
 {
     int i;
     int nopt = 0;
@@ -5567,7 +5567,7 @@
 
 static VALUE
 rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
-    int argc /* OK */, VALUE *argv /* OK */, NODE *volatile body, int flags)
+    int argc /* OK */, const VALUE *argv /* OK */, NODE *volatile body, int flags)
 {
     NODE *b2;		/* OK */
     volatile VALUE result = Qnil;
Index: io.c
===================================================================
--- io.c	(revision 7)
+++ io.c	(working copy)
@@ -2632,7 +2632,7 @@
 }
 
 static VALUE
-rb_file_sysopen_internal(VALUE io, char *fname, int flags, int mode)
+rb_file_sysopen_internal(VALUE io, const char *fname, int flags, int mode)
 {
     OpenFile *fptr;
 
Index: ruby.c
===================================================================
--- ruby.c	(revision 7)
+++ ruby.c	(working copy)
@@ -118,7 +118,7 @@
 
 #if defined _WIN32 || defined __CYGWIN__ || defined __DJGPP__
 static char *
-rubylib_mangle(char *s, unsigned int l)
+rubylib_mangle(const char *s, unsigned int l)
 {
     static char *newp, *oldp;
     static int newl, oldl, notfound;