From: pegacorn Date: 2007-07-15T14:45:58+09:00 Subject: [ruby-dev:31232] Re: trunk: バグを指摘している警告(mswin32) From: pegacorn Date: Sat, 14 Jul 2007 20:00:01 +0900 Message-Id: <20070714.195544.63132606.subscriber.jp@gmail.com> /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > trunk で -Wall を付けてコンパイルしてみると、バグを指摘している警告が > いくつか見付かりました。 今度は、mswin32 環境で -W3 を付けてコンパイルしてみました。 cl -nologo -MD -Zi -W3 -O2b2xty- -DRUBY_EXPORT -I. -I.ext/include/i386-mswin32_80 -I./../include -I./.. -I./../missing -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -c -Tc./../util.c util.c ./../util.c(630) : warning C4013: 関数 'rb_w32_getcwd' は定義されていません。int 型の値を返す外部関数と見なします。 cl -nologo -MD -Zi -W3 -O2b2xty- -DRUBY_EXPORT -I. -I.ext/include/i386-mswin32_80 -I./../include -I./.. -I./../missing -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -c -Tcwin32.c win32.c win32.c(3369) : warning C4013: 関数 '_mbspbrk' は定義されていません。int 型の値を返す外部関数と見なします。 cl -nologo -I. -I../../.ext/include/i386-mswin32_80 -I../.././../include -I../.././../ext/sdbm -MD -Zi -W3 -O2b2xty- -DRUBY_EXTCONF_H=\"extconf.h\" -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -c -Tc../.././../ext/sdbm/_sdbm.c _sdbm.c ../.././../ext/sdbm/_sdbm.c(201) : warning C4013: 関数 'open' は定義されていません。int 型の値を返す外部関数と見なします。 ../.././../ext/sdbm/_sdbm.c(222) : warning C4013: 関数 'close' は定義されていません。int 型の値を返す外部関数と見なします。 ../.././../ext/sdbm/_sdbm.c(268) : warning C4013: 関数 'lseek' は定義されていません。int 型の値を返す外部関数と見なします。 ../.././../ext/sdbm/_sdbm.c(269) : warning C4013: 関数 'write' は定義されていません。int 型の値を返す外部関数と見なします。 ../.././../ext/sdbm/_sdbm.c(443) : warning C4013: 関数 'read' は定義されていません。int 型の値を返す外部関数と見なします。 cl -nologo -I. -I../../.ext/include/i386-mswin32_80 -I../.././../include -I../.././../ext/syck -MD -Zi -W3 -O2b2xty- -DRUBY_EXTCONF_H=\"extconf.h\" -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -c -Tc../.././../ext/syck/gram.c gram.c gram.c(1066) : warning C4013: 関数 'malloc' は定義されていません。int 型の値を返す外部関数と見なします。 gram.c(1074) : warning C4013: 関数 'free' は定義されていません。int 型の値を返す外部関数と見なします。 ext/syck/gram.c での警告は、以下の部分で が #include されないことが原因ですが、ソースが見当たらないのでパッチは作成していません。 また、mswin64 環境には対応していません。 >|c| # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # else # if defined (__STDC__) || defined (__cplusplus) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # endif # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # endif #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ ||< # http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclang/html/_PREDIR_Predefined_Macros.asp # >> # __STDC__ Indicates full conformance with the ANSI C standard. # Defined as the integer constant 1 only if # the /Za compiler option is given and # you are not compiling C++ code; otherwise is undefined. # << Index: ext/sdbm/_sdbm.c =================================================================== --- ext/sdbm/_sdbm.c (revision 12788) +++ ext/sdbm/_sdbm.c (working copy) @@ -71,7 +71,7 @@ #include #include -#ifdef MSDOS +#if defined MSDOS || (defined _WIN32 && !defined __CYGWIN__) #include #endif #include Index: include/ruby/win32.h =================================================================== --- include/ruby/win32.h (revision 12788) +++ include/ruby/win32.h (working copy) @@ -237,6 +237,7 @@ extern struct servent *WSAAPI rb_w32_getservbyname(const char *, const char *); extern struct servent *WSAAPI rb_w32_getservbyport(int, const char *); extern int rb_w32_socketpair(int, int, int, int *); +extern char * rb_w32_getcwd(char *, int); extern char * rb_w32_getenv(const char *); extern int rb_w32_rename(const char *, const char *); extern char **rb_w32_get_environ(void); Index: win32/win32.c =================================================================== --- win32/win32.c (revision 12788) +++ win32/win32.c (working copy) @@ -27,6 +27,7 @@ #include #include #include +#include #ifdef __MINGW32__ #include #endif -- pegacorn