From: Eric Wong Date: Wed, 22 Jun 2011 20:55:25 +0000 (-0700) Subject: ext: fix portability defines for some installs X-Git-Tag: v1.0.1~1 X-Git-Url: https://repo.or.cz/w/clogger.git/commitdiff_plain/7e3694c6de13fc3d635473d3150412cbda287e75 ext: fix portability defines for some installs Some Ruby installs muck up headers/#defines and cause weirdness. We now explicitly define _BSD_SOURCE and include #stdio.h --- diff --git a/ext/clogger_ext/clogger.c b/ext/clogger_ext/clogger.c index eb1605b..e8cbfdc 100644 --- a/ext/clogger_ext/clogger.c +++ b/ext/clogger_ext/clogger.c @@ -18,6 +18,7 @@ #endif #include #include +#include /* snprintf */ #include "ruby_1_9_compat.h" #include "broken_system_compat.h" #include "blocking_helpers.h" @@ -453,7 +454,12 @@ static long local_gmtoffset(struct tm *tm) tzset(); localtime_r(&t, tm); -#if defined(HAVE_STRUCT_TM_TM_GMTOFF) + +/* + * HAVE_STRUCT_TM_TM_GMTOFF may be defined in Ruby headers + * HAVE_ST_TM_GMTOFF is defined ourselves. + */ +#if defined(HAVE_STRUCT_TM_TM_GMTOFF) || defined(HAVE_ST_TM_GMTOFF) return tm->tm_gmtoff / 60; #else return -(tm->tm_isdst ? timezone - 3600 : timezone) / 60; diff --git a/ext/clogger_ext/extconf.rb b/ext/clogger_ext/extconf.rb index 03ecd2d..1a28319 100644 --- a/ext/clogger_ext/extconf.rb +++ b/ext/clogger_ext/extconf.rb @@ -1,5 +1,6 @@ begin require 'mkmf' + $CPPFLAGS += " -D_BSD_SOURCE=1 " # XXX let me know if this works for you... if ! defined?(RUBY_VERSION) || RUBY_VERSION !~ /\A1\.[89]\./ @@ -21,6 +22,7 @@ begin have_func('clock_gettime', 'time.h') have_func('localtime_r', 'time.h') or raise "localtime_r needed" have_func('gmtime_r', 'time.h') or raise "gmtime_r needed" + have_struct_member('struct tm', 'tm_gmtoff', 'time.h') have_func('rb_str_set_len', 'ruby.h') have_func('rb_thread_blocking_region', 'ruby.h') have_func('rb_thread_io_blocking_region', 'ruby.h')