Subject: bug#21872: [PATCH] guile fails to build on illumos

From: Andy Stormont <[email-masked]>
Date: Tue, 10 Nov 2015 16:16:39 +0000

The patch below allows Guile to build on illumos, which does not have full support for the GNU locale extensions.  For more information on what’s missing see here: https://www.illumos.org/issues/5346

diff --git a/configure.ac b/configure.ac
index 9e639d6..408643b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -765,8 +765,8 @@ AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid             \
   strdup system usleep atexit on_exit chown link fcntl ttyname getpwent        \
   getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp \
   index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron    \
-  strcoll strcoll_l newlocale uselocale utimensat sched_getaffinity    \
-  sched_setaffinity sendfile])
+  strcoll strcoll_l strtod_l strtol_l newlocale uselocale utimensat    \
+  sched_getaffinity sched_setaffinity sendfile])
 
 # Reasons for testing:
 #   netdb.h - not in mingw
diff --git a/libguile/i18n.c b/libguile/i18n.c
index f0e3443..bd0b5a2 100644
--- a/libguile/i18n.c
+++ b/libguile/i18n.c
@@ -1373,7 +1373,7 @@ SCM_DEFINE (scm_locale_string_to_integer, "locale-string->integer",
 
   if (c_locale != NULL)
     {
-#ifdef USE_GNU_LOCALE_API
+#if defined USE_GNU_LOCALE_API && defined HAVE_STRTOL_L
       c_result = strtol_l (c_str, &c_endptr, c_base, c_locale);
 #else
       RUN_IN_LOCALE_SECTION (c_locale,
@@ -1417,7 +1417,7 @@ SCM_DEFINE (scm_locale_string_to_inexact, "locale-string->inexact",
 
   if (c_locale != NULL)
     {
-#ifdef USE_GNU_LOCALE_API
+#if defined USE_GNU_LOCALE_API && defined HAVE_STRTOD_L
       c_result = strtod_l (c_str, &c_endptr, c_locale);
 #else
       RUN_IN_LOCALE_SECTION (c_locale,

- Andy.