Issue #6748 has been updated by pedz (Perry Smith).


It may work to change ruby/ruby.h to first include string.h if the platform has it and then include strings.h if the platform has it rather than one or the other.  Note that time.c already includes both if both are defined so including both should be ok.

----------------------------------------
Backport #6748: bignum.c does not compile
https://bugs.ruby-lang.org/issues/6748#change-28281

Author: pedz (Perry Smith)
Status: Assigned
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category: 
Target version: 


I'm using the ruby_1_9_3 branch of ruby/ruby on github and bignum.c does not compile with an error that ffs is not defined.

I'm on AIX 6.1 TL07 SP03.

I assume HAVE_STRING_H is set (because AIX has string.h and strings.h) so ruby/ruby.h includes string.h but ffs is defined in strings.h.

I noticed that time.c also uses ffs and it simply includes strings.h from within a #if construct.

Adding:
diff --git a/bignum.c b/bignum.c
index 8d024fe..0439062 100644
--- a/bignum.c
+++ b/bignum.c
@@ -13,6 +13,9 @@
 #include "ruby/util.h"
 #include "internal.h"
 
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
 #include <math.h>
 #include <float.h>
 #include <ctype.h>

resolves the issue.



-- 
http://bugs.ruby-lang.org/