[Top][All Lists]
[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