| #serial 2 |
| |
| AC_PREREQ([2.61]) |
| |
| # The EILSEQ errno value ought to be defined in <errno.h>, according to |
| # ISO C 99 and POSIX. But some systems (like SunOS 4) don't define it, |
| # and some systems (like BSD/OS) define it in <wchar.h> not <errno.h>. |
| |
| # Define EILSEQ as a C macro and as a substituted macro in such a way that |
| # 1. on all systems, after inclusion of <errno.h>, EILSEQ is usable, |
| # 2. on systems where EILSEQ is defined elsewhere, we use the same numeric |
| # value. |
| |
| AC_DEFUN([AC_EILSEQ], |
| [ |
| AC_REQUIRE([AC_PROG_CC])dnl |
| |
| dnl Check for any extra headers that could define EILSEQ. |
| AC_CHECK_HEADERS([wchar.h]) |
| |
| AC_CACHE_CHECK([for EILSEQ], [ac_cv_decl_EILSEQ], [ |
| AC_EGREP_CPP([yes],[ |
| #include <errno.h> |
| #ifdef EILSEQ |
| yes |
| #endif |
| ], [have_eilseq=1]) |
| if test -n "$have_eilseq"; then |
| dnl EILSEQ exists in <errno.h>. Don't need to define EILSEQ ourselves. |
| ac_cv_decl_EILSEQ=yes |
| else |
| AC_EGREP_CPP([yes],[ |
| #include <errno.h> |
| #if HAVE_WCHAR_H |
| #include <wchar.h> |
| #endif |
| #ifdef EILSEQ |
| yes |
| #endif |
| ], [have_eilseq=1]) |
| if test -n "$have_eilseq"; then |
| dnl EILSEQ exists in some other system header. |
| dnl Define it to the same value. |
| AC_COMPUTE_INT([ac_cv_decl_EILSEQ], [EILSEQ], [ |
| #include <errno.h> |
| #if HAVE_WCHAR_H |
| #include <wchar.h> |
| #endif |
| /* The following two lines are a workaround against an autoconf-2.52 bug. */ |
| #include <stdio.h> |
| #include <stdlib.h> |
| ]) |
| else |
| dnl EILSEQ isn't defined by the system. Define EILSEQ ourselves, but |
| dnl don't define it as EINVAL, because iconv() callers want to |
| dnl distinguish EINVAL and EILSEQ. |
| ac_cv_decl_EILSEQ=ENOENT |
| fi |
| fi |
| ]) |
| if test "$ac_cv_decl_EILSEQ" != yes; then |
| AC_DEFINE_UNQUOTED([EILSEQ], [$ac_cv_decl_EILSEQ], |
| [Define as good substitute value for EILSEQ.]) |
| EILSEQ="$ac_cv_decl_EILSEQ" |
| AC_SUBST([EILSEQ]) |
| fi |
| ]) |