ruby-changes:22696
From: akr <ko1@a...>
Date: Wed, 22 Feb 2012 20:44:36 +0900 (JST)
Subject: [ruby-changes:22696] akr:r34745 (trunk): * ext/curses/extconf.rb: try to distinguish curses_version is a
akr 2012-02-22 20:44:26 +0900 (Wed, 22 Feb 2012) New Revision: 34745 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34745 Log: * ext/curses/extconf.rb: try to distinguish curses_version is a function or variable. Modified files: trunk/ChangeLog trunk/ext/curses/curses.c trunk/ext/curses/extconf.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 34744) +++ ChangeLog (revision 34745) @@ -1,3 +1,10 @@ +Wed Feb 22 20:42:28 2012 Tanaka Akira <akr@f...> + + * ext/curses/extconf.rb: try to distinguish curses_version is a + function or variable. + + * ext/curses/curses.c (Init_curses): refine Curses::VERSION. + Wed Feb 22 19:47:03 2012 Tanaka Akira <akr@f...> * ext/curses/extconf.rb: show the chosen header and library. Index: ext/curses/curses.c =================================================================== --- ext/curses/curses.c (revision 34744) +++ ext/curses/curses.c (revision 34745) @@ -2768,8 +2768,14 @@ rb_define_module_function(mCurses, "def_prog_mode", curses_def_prog_mode, 0); rb_define_module_function(mCurses, "reset_prog_mode", curses_reset_prog_mode, 0); -#ifdef NCURSES_VERSION +#ifdef HAVE_FUNC_CURSES_VERSION rb_define_const(mCurses, "VERSION", rb_str_new2(curses_version())); +#elif HAVE_VAR_CURSES_VERSION + { + /* SVR4 curses has an undocumented and undeclared variable, curses_version. */ + RUBY_EXTERN char *curses_version; + rb_define_const(mCurses, "VERSION", rb_sprintf("curses (%s)", curses_version)); + } #else rb_define_const(mCurses, "VERSION", rb_str_new2("unknown")); #endif Index: ext/curses/extconf.rb =================================================================== --- ext/curses/extconf.rb (revision 34744) +++ ext/curses/extconf.rb (revision 34745) @@ -72,5 +72,44 @@ have_var("TABSIZE", curses) have_var("COLORS", curses) have_var("COLOR_PAIRS", curses) + + # SVR4 curses has a (undocumented) variable char *curses_version. + # ncurses and PDcurses has a function char *curses_version(). + # Note that the original BSD curses doesn't provide version information. + + prolog = cpp_include(curses) + if checking_for(checking_message('function curses_version', curses)) { + try_run(<<-"End") + #{prolog} + int main(int argc, char *argv[]) + { + curses_version(); + return EXIT_SUCCESS; + } + End + } + $defs << '-DHAVE_FUNC_CURSES_VERSION' + end + + if checking_for(checking_message('variable curses_version', curses)) { + try_run(<<-"End") + #{prolog} + extern char *curses_version; + int main(int argc, char *argv[]) + { + int i = 0; + for (i = 0; i < 100; i++) { + if (curses_version[i] == 0) + return 0 < i ? EXIT_SUCCESS : EXIT_FAILURE; + if (curses_version[i] & 0x80) + return EXIT_FAILURE; + } + return EXIT_FAILURE; + } + End + } + $defs << '-DHAVE_VAR_CURSES_VERSION' + end + create_makefile("curses") end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/