guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CVS guile build error on MacOS X.


From: Ludovic Courtès
Subject: Re: CVS guile build error on MacOS X.
Date: Mon, 12 Mar 2007 10:29:19 +0100
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux)

Hi,

Steven Wu <address@hidden> writes:

> It seems like the on MacOS X 10.4, the configure decided guile need
> locale.h, but certain definitions are missing. I got the following
> errors:
>
> i18n.c: In function 'scm_nl_langinfo':
> i18n.c:1449: error: 'GROUPING' undeclared (first use in this function)
> i18n.c:1449: error: (Each undeclared identifier is reported only once
> i18n.c:1449: error: for each function it appears in.)
> i18n.c:1450: error: 'MON_GROUPING' undeclared (first use in this
> function)

These constants are all GNU extensions to `nl_langinfo ()' [0,1].  Thus,
they ought to be conditionalized.  The attached patch (also committed to
CVS HEAD) should solve this problem.

Thanks,
Ludovic.

[0] http://www.opengroup.org/onlinepubs/009695399/basedefs/langinfo.h.html
[1] 
http://www.gnu.org/software/libc/manual/html_node/The-Elegant-and-Fast-Way.html#The-Elegant-and-Fast-Way

--- orig/libguile/i18n.c
+++ mod/libguile/i18n.c
@@ -1442,35 +1442,40 @@
     result = SCM_BOOL_F;
   else
     {
-      char *p;
-
       switch (c_item)
        {
+#if (defined GROUPING) && (defined MON_GROUPING)
        case GROUPING:
        case MON_GROUPING:
-         /* In this cases, the result is to be interpreted as a list of
-            numbers.  If the last item is `CHARS_MAX', it has the special
-            meaning "no more grouping".  */
-         result = SCM_EOL;
-         for (p = c_result; (*p != '\0') && (*p != CHAR_MAX); p++)
-           result = scm_cons (SCM_I_MAKINUM ((int) *p), result);
-
          {
-           SCM last_pair = result;
+           char *p;
 
-           result = scm_reverse_x (result, SCM_EOL);
+           /* In this cases, the result is to be interpreted as a list of
+              numbers.  If the last item is `CHARS_MAX', it has the special
+              meaning "no more grouping".  */
+           result = SCM_EOL;
+           for (p = c_result; (*p != '\0') && (*p != CHAR_MAX); p++)
+             result = scm_cons (SCM_I_MAKINUM ((int) *p), result);
 
-           if (*p != CHAR_MAX)
-             {
-               /* Cyclic grouping information.  */
-               if (last_pair != SCM_EOL)
-                 SCM_SETCDR (last_pair, result);
-             }
-         }
+           {
+             SCM last_pair = result;
 
-         free (c_result);
-         break;
+             result = scm_reverse_x (result, SCM_EOL);
+
+             if (*p != CHAR_MAX)
+               {
+                 /* Cyclic grouping information.  */
+                 if (last_pair != SCM_EOL)
+                   SCM_SETCDR (last_pair, result);
+               }
+           }
 
+           free (c_result);
+           break;
+         }
+#endif
+
+#if (defined FRAC_DIGITS) && (defined INT_FRAC_DIGITS)
        case FRAC_DIGITS:
        case INT_FRAC_DIGITS:
          /* This is to be interpreted as a single integer.  */
@@ -1482,19 +1487,25 @@
 
          free (c_result);
          break;
+#endif
 
+#if (defined P_CS_PRECEDES) && (defined INT_N_CS_PRECEDES)
        case P_CS_PRECEDES:
        case N_CS_PRECEDES:
        case INT_P_CS_PRECEDES:
        case INT_N_CS_PRECEDES:
+#if (defined P_SEP_BY_SPACE) && (defined N_SEP_BY_SPACE)
        case P_SEP_BY_SPACE:
        case N_SEP_BY_SPACE:
+#endif
          /* This is to be interpreted as a boolean.  */
          result = scm_from_bool (*c_result);
 
          free (c_result);
          break;
+#endif
 
+#if (defined P_SIGN_POSN) && (defined INT_N_SIGN_POSN)
        case P_SIGN_POSN:
        case N_SIGN_POSN:
        case INT_P_SIGN_POSN:
@@ -1527,6 +1538,7 @@
              result = scm_from_locale_symbol ("unspecified");
            }
          break;
+#endif
 
        default:
          /* FIXME: `locale_string ()' is not appropriate here because of


reply via email to

[Prev in Thread] Current Thread [Next in Thread]