From 8296cd0fff593364698e3a8ca3905103eee131ee Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 1 Oct 2021 03:09:18 +0000 Subject: extconf.rb: get rid of unnecessary checks SIZEOF_*, *2NUM and NUM2* should all be defined by ruby.h and dependencies it pulls in since Ruby 2.0 and possibly earlier. INT_MAX and LLONG_MAX are in limits.h which is POSIX. HAVE_GMTIME_R is already defined by ruby/config.h, so we shouldn't have to check for it, either. Combined, these changes speed up extconf.rb by several seconds. --- ext/unicorn_http/c_util.h | 18 +++++------------- ext/unicorn_http/ext_help.h | 24 ------------------------ ext/unicorn_http/extconf.rb | 5 ----- ext/unicorn_http/httpdate.c | 1 + 4 files changed, 6 insertions(+), 42 deletions(-) diff --git a/ext/unicorn_http/c_util.h b/ext/unicorn_http/c_util.h index ab1fc0e..5774615 100644 --- a/ext/unicorn_http/c_util.h +++ b/ext/unicorn_http/c_util.h @@ -8,23 +8,15 @@ #include #include +#include #define MIN(a,b) (a < b ? a : b) #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) -#ifndef SIZEOF_OFF_T -# define SIZEOF_OFF_T 4 -# warning SIZEOF_OFF_T not defined, guessing 4. Did you run extconf.rb? -#endif - -#if SIZEOF_OFF_T == 4 -# define UH_OFF_T_MAX 0x7fffffff -#elif SIZEOF_OFF_T == 8 -# if SIZEOF_LONG == 4 -# define UH_OFF_T_MAX 0x7fffffffffffffffLL -# else -# define UH_OFF_T_MAX 0x7fffffffffffffff -# endif +#if SIZEOF_OFF_T == SIZEOF_INT +# define UH_OFF_T_MAX INT_MAX +#elif SIZEOF_OFF_T == SIZEOF_LONG_LONG +# define UH_OFF_T_MAX LLONG_MAX #else # error off_t size unknown for this platform! #endif /* SIZEOF_OFF_T check */ diff --git a/ext/unicorn_http/ext_help.h b/ext/unicorn_http/ext_help.h index 747c36c..86a187e 100644 --- a/ext/unicorn_http/ext_help.h +++ b/ext/unicorn_http/ext_help.h @@ -8,30 +8,6 @@ # define assert_frozen(f) do {} while (0) #endif /* !defined(OBJ_FROZEN) */ -#if !defined(OFFT2NUM) -# if SIZEOF_OFF_T == SIZEOF_LONG -# define OFFT2NUM(n) LONG2NUM(n) -# else -# define OFFT2NUM(n) LL2NUM(n) -# endif -#endif /* ! defined(OFFT2NUM) */ - -#if !defined(SIZET2NUM) -# if SIZEOF_SIZE_T == SIZEOF_LONG -# define SIZET2NUM(n) ULONG2NUM(n) -# else -# define SIZET2NUM(n) ULL2NUM(n) -# endif -#endif /* ! defined(SIZET2NUM) */ - -#if !defined(NUM2SIZET) -# if SIZEOF_SIZE_T == SIZEOF_LONG -# define NUM2SIZET(n) ((size_t)NUM2ULONG(n)) -# else -# define NUM2SIZET(n) ((size_t)NUM2ULL(n)) -# endif -#endif /* ! defined(NUM2SIZET) */ - static inline int str_cstr_eq(VALUE val, const char *ptr, long len) { return (RSTRING_LEN(val) == len && !memcmp(ptr, RSTRING_PTR(val), len)); diff --git a/ext/unicorn_http/extconf.rb b/ext/unicorn_http/extconf.rb index 8bdc1c9..46070a7 100644 --- a/ext/unicorn_http/extconf.rb +++ b/ext/unicorn_http/extconf.rb @@ -6,12 +6,7 @@ unless RUBY_VERSION < '3.1' "It might not properly work with #{RUBY_VERSION}" end -have_macro("SIZEOF_OFF_T", "ruby.h") or check_sizeof("off_t", "sys/types.h") -have_macro("SIZEOF_SIZE_T", "ruby.h") or check_sizeof("size_t", "sys/types.h") -have_macro("SIZEOF_LONG", "ruby.h") or check_sizeof("long", "sys/types.h") -have_func("rb_str_set_len", "ruby.h") or abort 'Ruby 2.0+ required' have_func("rb_hash_clear", "ruby.h") or abort 'Ruby 2.0+ required' -have_func("gmtime_r", "time.h") message('checking if String#-@ (str_uminus) dedupes... ') begin diff --git a/ext/unicorn_http/httpdate.c b/ext/unicorn_http/httpdate.c index b59d038..3f512dd 100644 --- a/ext/unicorn_http/httpdate.c +++ b/ext/unicorn_http/httpdate.c @@ -11,6 +11,7 @@ static const char months[] = "Jan\0Feb\0Mar\0Apr\0May\0Jun\0" /* for people on wonky systems only */ #ifndef HAVE_GMTIME_R +# warning using fake gmtime_r static struct tm * my_gmtime_r(time_t *now, struct tm *tm) { struct tm *global = gmtime(now); -- cgit v1.2.3-24-ge0c7