Mercurial > hg > octave-nkf > gnulib-hg
annotate m4/strtok_r.m4 @ 11961:53f6a3c1d867
For NULL, include <stdlib.h>, not <stdio.h>.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 06 Sep 2009 21:15:41 +0200 |
parents | bc6846876d71 |
children | c2cbabec01dd |
rev | line source |
---|---|
11960
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
1 # strtok_r.m4 serial 9 |
11007
f6cba5a556ce
many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents:
9264
diff
changeset
|
2 dnl Copyright (C) 2002, 2003, 2004, 2007, 2009 Free Software Foundation, Inc. |
5611
87c42e194f4a
Use an all-permissive copyright notice, recommended by RMS.
Paul Eggert <eggert@cs.ucla.edu>
parents:
5434
diff
changeset
|
3 dnl This file is free software; the Free Software Foundation |
87c42e194f4a
Use an all-permissive copyright notice, recommended by RMS.
Paul Eggert <eggert@cs.ucla.edu>
parents:
5434
diff
changeset
|
4 dnl gives unlimited permission to copy and/or distribute it, |
87c42e194f4a
Use an all-permissive copyright notice, recommended by RMS.
Paul Eggert <eggert@cs.ucla.edu>
parents:
5434
diff
changeset
|
5 dnl with or without modifications, as long as this notice is preserved. |
5434 | 6 |
7 AC_DEFUN([gl_FUNC_STRTOK_R], | |
8 [ | |
9264
a1355710e330
Rename string_.h to string.in.h.
Bruno Haible <bruno@clisp.org>
parents:
8814
diff
changeset
|
9 dnl The strtok_r() declaration in lib/string.in.h uses 'restrict'. |
8814
04b21457982b
Ensure AC_C_RESTRICT is invoked.
Bruno Haible <bruno@clisp.org>
parents:
7982
diff
changeset
|
10 AC_REQUIRE([AC_C_RESTRICT]) |
04b21457982b
Ensure AC_C_RESTRICT is invoked.
Bruno Haible <bruno@clisp.org>
parents:
7982
diff
changeset
|
11 |
7982
6b61aba76343
Enforce ordering constraints between gl_HEADER_STRING_H_DEFAULTS and the
Bruno Haible <bruno@clisp.org>
parents:
7944
diff
changeset
|
12 AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) |
11960
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
13 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
14 AC_CHECK_FUNCS([strtok_r]) |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
15 if test $ac_cv_func_strtok_r = yes; then |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
16 dnl glibc 2.7 has a bug in strtok_r that causes a segmentation fault |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
17 dnl when the second argument to strtok_r is a constant string that has |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
18 dnl exactly one byte and compiling with optimization. This bug is, for |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
19 dnl example, present in the glibc 2.7-18 package in Debian "lenny". |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
20 dnl See <http://sources.redhat.com/bugzilla/show_bug.cgi?id=5614>. |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
21 AC_CACHE_CHECK([whether strtok_r works], [gl_cv_func_strtok_r_works], |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
22 [AC_RUN_IFELSE( |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
23 [AC_LANG_PROGRAM([[ |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
24 #ifndef __OPTIMIZE__ |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
25 # define __OPTIMIZE__ 1 |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
26 #endif |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
27 #undef __OPTIMIZE_SIZE__ |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
28 #undef __NO_INLINE__ |
11961
53f6a3c1d867
For NULL, include <stdlib.h>, not <stdio.h>.
Bruno Haible <bruno@clisp.org>
parents:
11960
diff
changeset
|
29 #include <stdlib.h> |
11960
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
30 #include <string.h> |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
31 ]], |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
32 [[char delimiters[] = "xxxxxxxx"; |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
33 char *save_ptr = (char *) 0xd0d0; |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
34 strtok_r (delimiters, "x", &save_ptr); |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
35 strtok_r (NULL, "x", &save_ptr); |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
36 return 0; |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
37 ]]) |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
38 ], |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
39 [gl_cv_func_strtok_r_works=yes], |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
40 [gl_cv_func_strtok_r_works=no], |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
41 [ |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
42 changequote(,)dnl |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
43 case "$host_os" in |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
44 # Guess no on glibc systems. |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
45 *-gnu*) gl_cv_func_strtok_r_works="guessing no";; |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
46 *) gl_cv_func_strtok_r_works="guessing yes";; |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
47 esac |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
48 changequote([,])dnl |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
49 ]) |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
50 ]) |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
51 case "$gl_cv_func_strtok_r_works" in |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
52 *no) |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
53 dnl We could set REPLACE_STRTOK_R=1 and AC_LIBOBJ([strtok_r]) here, |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
54 dnl but it's only the macro version in <bits/string2.h> which is wrong. |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
55 dnl The code compiled into libc is fine. |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
56 UNDEFINE_STRTOK_R=1 |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
57 ;; |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
58 esac |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
59 else |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
60 AC_LIBOBJ([strtok_r]) |
bc6846876d71
Work around a glibc bug in strtok_r.
Ben Pfaff <blp@gnu.org>
parents:
11007
diff
changeset
|
61 fi |
11007
f6cba5a556ce
many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents:
9264
diff
changeset
|
62 AC_CHECK_DECLS_ONCE([strtok_r]) |
7944
a1d177cd9523
* doc/gnulib-tool.texi (Initial import): Update to match current
Paul Eggert <eggert@cs.ucla.edu>
parents:
7099
diff
changeset
|
63 if test $ac_cv_have_decl_strtok_r = no; then |
a1d177cd9523
* doc/gnulib-tool.texi (Initial import): Update to match current
Paul Eggert <eggert@cs.ucla.edu>
parents:
7099
diff
changeset
|
64 HAVE_DECL_STRTOK_R=0 |
a1d177cd9523
* doc/gnulib-tool.texi (Initial import): Update to match current
Paul Eggert <eggert@cs.ucla.edu>
parents:
7099
diff
changeset
|
65 fi |
5434 | 66 gl_PREREQ_STRTOK_R |
67 ]) | |
68 | |
7944
a1d177cd9523
* doc/gnulib-tool.texi (Initial import): Update to match current
Paul Eggert <eggert@cs.ucla.edu>
parents:
7099
diff
changeset
|
69 # Prerequisites of lib/strtok_r.c. |
5434 | 70 AC_DEFUN([gl_PREREQ_STRTOK_R], [ |
8814
04b21457982b
Ensure AC_C_RESTRICT is invoked.
Bruno Haible <bruno@clisp.org>
parents:
7982
diff
changeset
|
71 : |
5434 | 72 ]) |