nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | # wcwidth.m4 serial 23 |
2 | dnl Copyright (C) 2006-2016 Free Software Foundation, Inc. |
||
3 | dnl This file is free software; the Free Software Foundation |
||
4 | dnl gives unlimited permission to copy and/or distribute it, |
||
5 | dnl with or without modifications, as long as this notice is preserved. |
||
6 | |||
7 | AC_DEFUN([gl_FUNC_WCWIDTH], |
||
8 | [ |
||
9 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) |
||
10 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
||
11 | |||
12 | dnl Persuade glibc <wchar.h> to declare wcwidth(). |
||
13 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) |
||
14 | |||
15 | AC_REQUIRE([gt_TYPE_WCHAR_T]) |
||
16 | AC_REQUIRE([gt_TYPE_WINT_T]) |
||
17 | |||
18 | AC_CHECK_HEADERS_ONCE([wchar.h]) |
||
19 | AC_CHECK_FUNCS_ONCE([wcwidth]) |
||
20 | |||
21 | AC_CHECK_DECLS([wcwidth], [], [], [[ |
||
22 | /* AIX 3.2.5 declares wcwidth in <string.h>. */ |
||
23 | #include <string.h> |
||
24 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before |
||
25 | <wchar.h>. |
||
26 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included |
||
27 | before <wchar.h>. */ |
||
28 | #include <stddef.h> |
||
29 | #include <stdio.h> |
||
30 | #include <time.h> |
||
31 | #include <wchar.h> |
||
32 | ]]) |
||
33 | if test $ac_cv_have_decl_wcwidth != yes; then |
||
34 | HAVE_DECL_WCWIDTH=0 |
||
35 | fi |
||
36 | |||
37 | if test $ac_cv_func_wcwidth = yes; then |
||
38 | HAVE_WCWIDTH=1 |
||
39 | dnl On Mac OS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1. |
||
40 | dnl On OpenBSD 5.0, wcwidth(0x05B0) (HEBREW POINT SHEVA) returns 1. |
||
41 | dnl On OSF/1 5.1, wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1. |
||
42 | dnl On OpenBSD 5.8, wcwidth(0xFF1A) (FULLWIDTH COLON) returns 0. |
||
43 | dnl This leads to bugs in 'ls' (coreutils). |
||
44 | AC_CACHE_CHECK([whether wcwidth works reasonably in UTF-8 locales], |
||
45 | [gl_cv_func_wcwidth_works], |
||
46 | [ |
||
47 | AC_RUN_IFELSE( |
||
48 | [AC_LANG_SOURCE([[ |
||
49 | #include <locale.h> |
||
50 | /* AIX 3.2.5 declares wcwidth in <string.h>. */ |
||
51 | #include <string.h> |
||
52 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before |
||
53 | <wchar.h>. |
||
54 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included |
||
55 | before <wchar.h>. */ |
||
56 | #include <stddef.h> |
||
57 | #include <stdio.h> |
||
58 | #include <time.h> |
||
59 | #include <wchar.h> |
||
60 | #if !HAVE_DECL_WCWIDTH |
||
61 | extern |
||
62 | # ifdef __cplusplus |
||
63 | "C" |
||
64 | # endif |
||
65 | int wcwidth (int); |
||
66 | #endif |
||
67 | int main () |
||
68 | { |
||
69 | int result = 0; |
||
70 | if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL) |
||
71 | { |
||
72 | if (wcwidth (0x0301) > 0) |
||
73 | result |= 1; |
||
74 | if (wcwidth (0x05B0) > 0) |
||
75 | result |= 2; |
||
76 | if (wcwidth (0x200B) > 0) |
||
77 | result |= 4; |
||
78 | if (wcwidth (0xFF1A) == 0) |
||
79 | result |= 8; |
||
80 | } |
||
81 | return result; |
||
82 | }]])], |
||
83 | [gl_cv_func_wcwidth_works=yes], |
||
84 | [gl_cv_func_wcwidth_works=no], |
||
85 | [ |
||
86 | changequote(,)dnl |
||
87 | case "$host_os" in |
||
88 | # Guess yes on glibc and AIX 7 systems. |
||
89 | *-gnu* | aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";; |
||
90 | *) gl_cv_func_wcwidth_works="guessing no";; |
||
91 | esac |
||
92 | changequote([,])dnl |
||
93 | ]) |
||
94 | ]) |
||
95 | case "$gl_cv_func_wcwidth_works" in |
||
96 | *yes) ;; |
||
97 | *no) REPLACE_WCWIDTH=1 ;; |
||
98 | esac |
||
99 | else |
||
100 | HAVE_WCWIDTH=0 |
||
101 | fi |
||
102 | dnl We don't substitute HAVE_WCWIDTH. We assume that if the system does not |
||
103 | dnl have the wcwidth function, then it does not declare it. |
||
104 | ]) |