f74b50e380
Signed-off-by: Peter Jones <pjones@redhat.com>
29454 lines
1.1 MiB
29454 lines
1.1 MiB
From b4dc7c544885995fe4b33549216495cced7b87e4 Mon Sep 17 00:00:00 2001
|
||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||
Date: Thu, 11 Apr 2013 21:12:46 +0200
|
||
Subject: [PATCH 280/482] Import new gnulib.
|
||
|
||
---
|
||
ChangeLog | 4 +
|
||
build-aux/arg-nonnull.h | 26 -
|
||
build-aux/c++defs.h | 271 ---------
|
||
build-aux/config.rpath | 228 +++++---
|
||
build-aux/warn-on-use.h | 109 ----
|
||
config.h.in | 2 +
|
||
grub-core/Makefile.core.def | 2 +-
|
||
grub-core/gnulib-fix-null-deref.diff | 13 +
|
||
grub-core/gnulib-fix-width.diff | 231 ++++++++
|
||
grub-core/gnulib-no-abort.diff | 30 +
|
||
grub-core/gnulib-no-gets.diff | 10 +
|
||
grub-core/gnulib/Makefile.am | 1020 +++++++++++++++++++++++-----------
|
||
grub-core/gnulib/alloca.c | 31 +-
|
||
grub-core/gnulib/alloca.in.h | 15 +-
|
||
grub-core/gnulib/argp-ba.c | 8 +-
|
||
grub-core/gnulib/argp-eexst.c | 2 +-
|
||
grub-core/gnulib/argp-fmtstream.c | 71 ++-
|
||
grub-core/gnulib/argp-fmtstream.h | 34 +-
|
||
grub-core/gnulib/argp-fs-xinl.c | 8 +-
|
||
grub-core/gnulib/argp-help.c | 71 +--
|
||
grub-core/gnulib/argp-namefrob.h | 28 +-
|
||
grub-core/gnulib/argp-parse.c | 29 +-
|
||
grub-core/gnulib/argp-pin.c | 3 +-
|
||
grub-core/gnulib/argp-pv.c | 4 +-
|
||
grub-core/gnulib/argp-pvh.c | 2 +-
|
||
grub-core/gnulib/argp-xinl.c | 8 +-
|
||
grub-core/gnulib/argp.h | 71 +--
|
||
grub-core/gnulib/asnprintf.c | 5 +-
|
||
grub-core/gnulib/basename-lgpl.c | 2 +-
|
||
grub-core/gnulib/btowc.c | 2 +-
|
||
grub-core/gnulib/config.charset | 7 +-
|
||
grub-core/gnulib/dirname-lgpl.c | 8 +-
|
||
grub-core/gnulib/dirname.h | 38 +-
|
||
grub-core/gnulib/dosname.h | 53 ++
|
||
grub-core/gnulib/errno.in.h | 195 +++++--
|
||
grub-core/gnulib/error.c | 27 +-
|
||
grub-core/gnulib/error.h | 24 +-
|
||
grub-core/gnulib/float+.h | 11 +-
|
||
grub-core/gnulib/float.c | 33 ++
|
||
grub-core/gnulib/float.in.h | 138 ++++-
|
||
grub-core/gnulib/fnmatch.c | 16 +-
|
||
grub-core/gnulib/fnmatch.in.h | 19 +-
|
||
grub-core/gnulib/fnmatch_loop.c | 28 +-
|
||
grub-core/gnulib/getdelim.c | 12 +-
|
||
grub-core/gnulib/getline.c | 6 +-
|
||
grub-core/gnulib/getopt.c | 159 ++++--
|
||
grub-core/gnulib/getopt.in.h | 70 +--
|
||
grub-core/gnulib/getopt1.c | 8 +-
|
||
grub-core/gnulib/getopt_int.h | 18 +-
|
||
grub-core/gnulib/gettext.h | 22 +-
|
||
grub-core/gnulib/intprops.h | 318 +++++++++--
|
||
grub-core/gnulib/itold.c | 28 +
|
||
grub-core/gnulib/langinfo.in.h | 19 +-
|
||
grub-core/gnulib/localcharset.c | 45 +-
|
||
grub-core/gnulib/localcharset.h | 5 +-
|
||
grub-core/gnulib/locale.in.h | 216 +++++++
|
||
grub-core/gnulib/localeconv.c | 103 ++++
|
||
grub-core/gnulib/malloc.c | 10 +-
|
||
grub-core/gnulib/mbrtowc.c | 48 +-
|
||
grub-core/gnulib/mbsinit.c | 18 +-
|
||
grub-core/gnulib/mbsrtowcs-impl.h | 122 ++++
|
||
grub-core/gnulib/mbsrtowcs-state.c | 4 +-
|
||
grub-core/gnulib/mbsrtowcs.c | 108 +---
|
||
grub-core/gnulib/mbswidth.c | 199 +++++++
|
||
grub-core/gnulib/mbswidth.h | 63 +++
|
||
grub-core/gnulib/mbtowc-impl.h | 44 ++
|
||
grub-core/gnulib/mbtowc.c | 26 +
|
||
grub-core/gnulib/memchr.c | 2 +-
|
||
grub-core/gnulib/mempcpy.c | 5 +-
|
||
grub-core/gnulib/msvc-inval.c | 129 +++++
|
||
grub-core/gnulib/msvc-inval.h | 222 ++++++++
|
||
grub-core/gnulib/msvc-nothrow.c | 49 ++
|
||
grub-core/gnulib/msvc-nothrow.h | 43 ++
|
||
grub-core/gnulib/nl_langinfo.c | 7 +-
|
||
grub-core/gnulib/printf-args.c | 5 +-
|
||
grub-core/gnulib/printf-args.h | 9 +-
|
||
grub-core/gnulib/printf-parse.c | 55 +-
|
||
grub-core/gnulib/printf-parse.h | 19 +-
|
||
grub-core/gnulib/progname.c | 2 +-
|
||
grub-core/gnulib/progname.h | 2 +-
|
||
grub-core/gnulib/rawmemchr.c | 2 +-
|
||
grub-core/gnulib/realloc.c | 16 +-
|
||
grub-core/gnulib/ref-add.sin | 5 +-
|
||
grub-core/gnulib/ref-del.sin | 5 +-
|
||
grub-core/gnulib/regcomp.c | 348 ++++++------
|
||
grub-core/gnulib/regex.c | 37 +-
|
||
grub-core/gnulib/regex.h | 252 ++++-----
|
||
grub-core/gnulib/regex_internal.c | 99 ++--
|
||
grub-core/gnulib/regex_internal.h | 148 ++---
|
||
grub-core/gnulib/regexec.c | 202 ++++---
|
||
grub-core/gnulib/size_max.h | 5 +-
|
||
grub-core/gnulib/sleep.c | 11 +-
|
||
grub-core/gnulib/stdalign.in.h | 90 +++
|
||
grub-core/gnulib/stdbool.in.h | 56 +-
|
||
grub-core/gnulib/stddef.in.h | 20 +-
|
||
grub-core/gnulib/stdint.in.h | 286 ++++++----
|
||
grub-core/gnulib/stdio-write.c | 148 -----
|
||
grub-core/gnulib/stdio.in.h | 450 +++++++++++----
|
||
grub-core/gnulib/stdlib.in.h | 327 +++++++++--
|
||
grub-core/gnulib/strcasecmp.c | 5 +-
|
||
grub-core/gnulib/strchrnul.c | 2 +-
|
||
grub-core/gnulib/streq.h | 12 +-
|
||
grub-core/gnulib/strerror-override.c | 302 ++++++++++
|
||
grub-core/gnulib/strerror-override.h | 56 ++
|
||
grub-core/gnulib/strerror.c | 354 ++----------
|
||
grub-core/gnulib/string.in.h | 144 ++++-
|
||
grub-core/gnulib/strings.in.h | 47 +-
|
||
grub-core/gnulib/stripslash.c | 4 +-
|
||
grub-core/gnulib/strncasecmp.c | 5 +-
|
||
grub-core/gnulib/strndup.c | 7 +-
|
||
grub-core/gnulib/strnlen.c | 5 +-
|
||
grub-core/gnulib/strnlen1.c | 2 +-
|
||
grub-core/gnulib/strnlen1.h | 5 +-
|
||
grub-core/gnulib/sys_types.in.h | 51 ++
|
||
grub-core/gnulib/sys_wait.in.h | 106 ----
|
||
grub-core/gnulib/sysexits.in.h | 13 +-
|
||
grub-core/gnulib/unistd.c | 3 +
|
||
grub-core/gnulib/unistd.in.h | 508 ++++++++++++-----
|
||
grub-core/gnulib/unitypes.in.h | 46 ++
|
||
grub-core/gnulib/uniwidth.in.h | 72 +++
|
||
grub-core/gnulib/uniwidth/cjk.h | 37 ++
|
||
grub-core/gnulib/uniwidth/width.c | 368 ++++++++++++
|
||
grub-core/gnulib/vasnprintf.c | 137 +++--
|
||
grub-core/gnulib/vasnprintf.h | 19 +-
|
||
grub-core/gnulib/verify.h | 150 +++--
|
||
grub-core/gnulib/vsnprintf.c | 5 +-
|
||
grub-core/gnulib/wchar.in.h | 636 ++++++++++++++++++++-
|
||
grub-core/gnulib/wcrtomb.c | 2 +-
|
||
grub-core/gnulib/wctype-h.c | 4 +
|
||
grub-core/gnulib/wctype.in.h | 372 ++++++++-----
|
||
grub-core/gnulib/wcwidth.c | 50 ++
|
||
grub-core/gnulib/xsize.c | 3 +
|
||
grub-core/gnulib/xsize.h | 22 +-
|
||
grub-core/kern/emu/argp_common.c | 1 +
|
||
grub-core/kern/emu/error.c | 2 +
|
||
grub-core/kern/emu/hostdisk.c | 2 +
|
||
grub-core/kern/emu/hostfs.c | 3 +
|
||
grub-core/kern/emu/main.c | 3 +
|
||
grub-core/lib/posix_wrap/limits.h | 1 +
|
||
grub-core/lib/posix_wrap/sys/types.h | 2 +
|
||
include/grub/types.h | 4 +
|
||
m4/00gnulib.m4 | 2 +-
|
||
m4/alloca.m4 | 86 ++-
|
||
m4/argp.m4 | 32 +-
|
||
m4/asm-underscore.m4 | 48 --
|
||
m4/btowc.m4 | 25 +-
|
||
m4/codeset.m4 | 2 +-
|
||
m4/configmake.m4 | 50 ++
|
||
m4/dirname.m4 | 11 +-
|
||
m4/dos.m4 | 71 ---
|
||
m4/double-slash-root.m4 | 2 +-
|
||
m4/eealloc.m4 | 31 ++
|
||
m4/errno_h.m4 | 28 +-
|
||
m4/error.m4 | 20 +-
|
||
m4/exponentd.m4 | 116 ++++
|
||
m4/extensions.m4 | 54 +-
|
||
m4/extern-inline.m4 | 65 +++
|
||
m4/fcntl-o.m4 | 89 ++-
|
||
m4/float_h.m4 | 87 ++-
|
||
m4/fnmatch.m4 | 117 ++--
|
||
m4/getdelim.m4 | 30 +-
|
||
m4/getline.m4 | 33 +-
|
||
m4/getopt.m4 | 382 +++++++------
|
||
m4/gettext.m4 | 8 +-
|
||
m4/glibc2.m4 | 7 +-
|
||
m4/glibc21.m4 | 14 +-
|
||
m4/gnulib-cache.m4 | 25 +-
|
||
m4/gnulib-common.m4 | 192 ++++++-
|
||
m4/gnulib-comp.m4 | 329 ++++++++---
|
||
m4/gnulib-tool.m4 | 2 +-
|
||
m4/iconv.m4 | 30 +-
|
||
m4/include_next.m4 | 158 ++++--
|
||
m4/intdiv0.m4 | 8 +-
|
||
m4/intl.m4 | 14 +-
|
||
m4/intldir.m4 | 2 +-
|
||
m4/intlmacosx.m4 | 14 +-
|
||
m4/intmax.m4 | 2 +-
|
||
m4/intmax_t.m4 | 2 +-
|
||
m4/inttypes-pri.m4 | 2 +-
|
||
m4/inttypes_h.m4 | 2 +-
|
||
m4/langinfo_h.m4 | 2 +-
|
||
m4/lcmessage.m4 | 2 +-
|
||
m4/lib-ld.m4 | 60 +-
|
||
m4/lib-link.m4 | 6 +-
|
||
m4/lib-prefix.m4 | 2 +-
|
||
m4/libunistring-base.m4 | 141 +++++
|
||
m4/localcharset.m4 | 2 +-
|
||
m4/locale-fr.m4 | 161 ++++--
|
||
m4/locale-ja.m4 | 97 ++--
|
||
m4/locale-zh.m4 | 80 ++-
|
||
m4/locale_h.m4 | 122 ++++
|
||
m4/localeconv.m4 | 22 +
|
||
m4/lock.m4 | 12 +-
|
||
m4/longlong.m4 | 87 +--
|
||
m4/malloc.m4 | 52 +-
|
||
m4/math_h.m4 | 353 ++++++++++++
|
||
m4/mbrtowc.m4 | 249 +++++++--
|
||
m4/mbsinit.m4 | 33 +-
|
||
m4/mbsrtowcs.m4 | 66 ++-
|
||
m4/mbstate_t.m4 | 13 +-
|
||
m4/mbswidth.m4 | 46 ++
|
||
m4/mbtowc.m4 | 19 +
|
||
m4/memchr.m4 | 31 +-
|
||
m4/mempcpy.m4 | 7 +-
|
||
m4/mmap-anon.m4 | 18 +-
|
||
m4/msvc-inval.m4 | 19 +
|
||
m4/msvc-nothrow.m4 | 10 +
|
||
m4/multiarch.m4 | 11 +-
|
||
m4/nl_langinfo.m4 | 35 +-
|
||
m4/nls.m4 | 2 +-
|
||
m4/nocrash.m4 | 130 +++++
|
||
m4/off_t.m4 | 18 +
|
||
m4/po.m4 | 35 +-
|
||
m4/printf-posix.m4 | 2 +-
|
||
m4/printf.m4 | 370 +++++++-----
|
||
m4/progtest.m4 | 2 +-
|
||
m4/rawmemchr.m4 | 7 +-
|
||
m4/realloc.m4 | 52 +-
|
||
m4/regex.m4 | 134 +++--
|
||
m4/size_max.m4 | 2 +-
|
||
m4/sleep.m4 | 33 +-
|
||
m4/ssize_t.m4 | 2 +-
|
||
m4/stdalign.m4 | 52 ++
|
||
m4/stdbool.m4 | 17 +-
|
||
m4/stddef_h.m4 | 10 +-
|
||
m4/stdint.m4 | 40 +-
|
||
m4/stdint_h.m4 | 2 +-
|
||
m4/stdio_h.m4 | 95 +++-
|
||
m4/stdlib_h.m4 | 49 +-
|
||
m4/strcase.m4 | 15 +-
|
||
m4/strchrnul.m4 | 37 +-
|
||
m4/strerror.m4 | 116 ++--
|
||
m4/string_h.m4 | 20 +-
|
||
m4/strings_h.m4 | 23 +-
|
||
m4/strndup.m4 | 20 +-
|
||
m4/strnlen.m4 | 12 +-
|
||
m4/sys_socket_h.m4 | 176 ++++++
|
||
m4/sys_types_h.m4 | 24 +
|
||
m4/sys_wait_h.m4 | 25 -
|
||
m4/sysexits.m4 | 5 +-
|
||
m4/threadlib.m4 | 97 ++--
|
||
m4/uintmax_t.m4 | 2 +-
|
||
m4/unistd_h.m4 | 137 +++--
|
||
m4/vasnprintf.m4 | 15 +-
|
||
m4/visibility.m4 | 6 +-
|
||
m4/vsnprintf.m4 | 20 +-
|
||
m4/warn-on-use.m4 | 14 +-
|
||
m4/wchar_h.m4 | 123 +++-
|
||
m4/wchar_t.m4 | 2 +-
|
||
m4/wcrtomb.m4 | 44 +-
|
||
m4/wctype_h.m4 | 190 +++++--
|
||
m4/wcwidth.m4 | 101 ++++
|
||
m4/wint_t.m4 | 2 +-
|
||
m4/xsize.m4 | 5 +-
|
||
po/POTFILES.in | 39 +-
|
||
255 files changed, 12570 insertions(+), 4940 deletions(-)
|
||
delete mode 100644 build-aux/arg-nonnull.h
|
||
delete mode 100644 build-aux/c++defs.h
|
||
delete mode 100644 build-aux/warn-on-use.h
|
||
create mode 100644 grub-core/gnulib-fix-null-deref.diff
|
||
create mode 100644 grub-core/gnulib-fix-width.diff
|
||
create mode 100644 grub-core/gnulib-no-abort.diff
|
||
create mode 100644 grub-core/gnulib-no-gets.diff
|
||
create mode 100644 grub-core/gnulib/dosname.h
|
||
create mode 100644 grub-core/gnulib/float.c
|
||
create mode 100644 grub-core/gnulib/itold.c
|
||
create mode 100644 grub-core/gnulib/locale.in.h
|
||
create mode 100644 grub-core/gnulib/localeconv.c
|
||
create mode 100644 grub-core/gnulib/mbsrtowcs-impl.h
|
||
create mode 100644 grub-core/gnulib/mbswidth.c
|
||
create mode 100644 grub-core/gnulib/mbswidth.h
|
||
create mode 100644 grub-core/gnulib/mbtowc-impl.h
|
||
create mode 100644 grub-core/gnulib/mbtowc.c
|
||
create mode 100644 grub-core/gnulib/msvc-inval.c
|
||
create mode 100644 grub-core/gnulib/msvc-inval.h
|
||
create mode 100644 grub-core/gnulib/msvc-nothrow.c
|
||
create mode 100644 grub-core/gnulib/msvc-nothrow.h
|
||
create mode 100644 grub-core/gnulib/stdalign.in.h
|
||
delete mode 100644 grub-core/gnulib/stdio-write.c
|
||
create mode 100644 grub-core/gnulib/strerror-override.c
|
||
create mode 100644 grub-core/gnulib/strerror-override.h
|
||
create mode 100644 grub-core/gnulib/sys_types.in.h
|
||
delete mode 100644 grub-core/gnulib/sys_wait.in.h
|
||
create mode 100644 grub-core/gnulib/unistd.c
|
||
create mode 100644 grub-core/gnulib/unitypes.in.h
|
||
create mode 100644 grub-core/gnulib/uniwidth.in.h
|
||
create mode 100644 grub-core/gnulib/uniwidth/cjk.h
|
||
create mode 100644 grub-core/gnulib/uniwidth/width.c
|
||
create mode 100644 grub-core/gnulib/wctype-h.c
|
||
create mode 100644 grub-core/gnulib/wcwidth.c
|
||
create mode 100644 grub-core/gnulib/xsize.c
|
||
create mode 100644 grub-core/kern/emu/error.c
|
||
delete mode 100644 m4/asm-underscore.m4
|
||
create mode 100644 m4/configmake.m4
|
||
delete mode 100644 m4/dos.m4
|
||
create mode 100644 m4/eealloc.m4
|
||
create mode 100644 m4/exponentd.m4
|
||
create mode 100644 m4/extern-inline.m4
|
||
create mode 100644 m4/libunistring-base.m4
|
||
create mode 100644 m4/locale_h.m4
|
||
create mode 100644 m4/localeconv.m4
|
||
create mode 100644 m4/math_h.m4
|
||
create mode 100644 m4/mbswidth.m4
|
||
create mode 100644 m4/mbtowc.m4
|
||
create mode 100644 m4/msvc-inval.m4
|
||
create mode 100644 m4/msvc-nothrow.m4
|
||
create mode 100644 m4/nocrash.m4
|
||
create mode 100644 m4/off_t.m4
|
||
create mode 100644 m4/stdalign.m4
|
||
create mode 100644 m4/sys_socket_h.m4
|
||
create mode 100644 m4/sys_types_h.m4
|
||
delete mode 100644 m4/sys_wait_h.m4
|
||
create mode 100644 m4/wcwidth.m4
|
||
|
||
diff --git a/ChangeLog b/ChangeLog
|
||
index 614748a..90aacbe 100644
|
||
--- a/ChangeLog
|
||
+++ b/ChangeLog
|
||
@@ -1,5 +1,9 @@
|
||
2013-04-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||
|
||
+ Import new gnulib.
|
||
+
|
||
+2013-04-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||
+
|
||
Use ACPI shutdown intests as traditional port was removed.
|
||
|
||
2013-04-11 Andrey Borzenkov <arvidjaar@gmail.com>
|
||
diff --git a/build-aux/arg-nonnull.h b/build-aux/arg-nonnull.h
|
||
deleted file mode 100644
|
||
index 7e3e2db..0000000
|
||
--- a/build-aux/arg-nonnull.h
|
||
+++ /dev/null
|
||
@@ -1,26 +0,0 @@
|
||
-/* A C macro for declaring that specific arguments must not be NULL.
|
||
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
|
||
-
|
||
- This program is free software: you can redistribute it and/or modify it
|
||
- under the terms of the GNU General Public License as published
|
||
- by the Free Software Foundation; either version 3 of the License, or
|
||
- (at your option) any later version.
|
||
-
|
||
- This program is distributed in the hope that it will be useful,
|
||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
- Lesser General Public License for more details.
|
||
-
|
||
- You should have received a copy of the GNU General Public License
|
||
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
-
|
||
-/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
|
||
- that the values passed as arguments n, ..., m must be non-NULL pointers.
|
||
- n = 1 stands for the first argument, n = 2 for the second argument etc. */
|
||
-#ifndef _GL_ARG_NONNULL
|
||
-# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
|
||
-# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
|
||
-# else
|
||
-# define _GL_ARG_NONNULL(params)
|
||
-# endif
|
||
-#endif
|
||
diff --git a/build-aux/c++defs.h b/build-aux/c++defs.h
|
||
deleted file mode 100644
|
||
index 0c2fad7..0000000
|
||
--- a/build-aux/c++defs.h
|
||
+++ /dev/null
|
||
@@ -1,271 +0,0 @@
|
||
-/* C++ compatible function declaration macros.
|
||
- Copyright (C) 2010 Free Software Foundation, Inc.
|
||
-
|
||
- This program is free software: you can redistribute it and/or modify it
|
||
- under the terms of the GNU General Public License as published
|
||
- by the Free Software Foundation; either version 3 of the License, or
|
||
- (at your option) any later version.
|
||
-
|
||
- This program is distributed in the hope that it will be useful,
|
||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
- Lesser General Public License for more details.
|
||
-
|
||
- You should have received a copy of the GNU General Public License
|
||
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
-
|
||
-#ifndef _GL_CXXDEFS_H
|
||
-#define _GL_CXXDEFS_H
|
||
-
|
||
-/* The three most frequent use cases of these macros are:
|
||
-
|
||
- * For providing a substitute for a function that is missing on some
|
||
- platforms, but is declared and works fine on the platforms on which
|
||
- it exists:
|
||
-
|
||
- #if @GNULIB_FOO@
|
||
- # if !@HAVE_FOO@
|
||
- _GL_FUNCDECL_SYS (foo, ...);
|
||
- # endif
|
||
- _GL_CXXALIAS_SYS (foo, ...);
|
||
- _GL_CXXALIASWARN (foo);
|
||
- #elif defined GNULIB_POSIXCHECK
|
||
- ...
|
||
- #endif
|
||
-
|
||
- * For providing a replacement for a function that exists on all platforms,
|
||
- but is broken/insufficient and needs to be replaced on some platforms:
|
||
-
|
||
- #if @GNULIB_FOO@
|
||
- # if @REPLACE_FOO@
|
||
- # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
- # undef foo
|
||
- # define foo rpl_foo
|
||
- # endif
|
||
- _GL_FUNCDECL_RPL (foo, ...);
|
||
- _GL_CXXALIAS_RPL (foo, ...);
|
||
- # else
|
||
- _GL_CXXALIAS_SYS (foo, ...);
|
||
- # endif
|
||
- _GL_CXXALIASWARN (foo);
|
||
- #elif defined GNULIB_POSIXCHECK
|
||
- ...
|
||
- #endif
|
||
-
|
||
- * For providing a replacement for a function that exists on some platforms
|
||
- but is broken/insufficient and needs to be replaced on some of them and
|
||
- is additionally either missing or undeclared on some other platforms:
|
||
-
|
||
- #if @GNULIB_FOO@
|
||
- # if @REPLACE_FOO@
|
||
- # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
- # undef foo
|
||
- # define foo rpl_foo
|
||
- # endif
|
||
- _GL_FUNCDECL_RPL (foo, ...);
|
||
- _GL_CXXALIAS_RPL (foo, ...);
|
||
- # else
|
||
- # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@
|
||
- _GL_FUNCDECL_SYS (foo, ...);
|
||
- # endif
|
||
- _GL_CXXALIAS_SYS (foo, ...);
|
||
- # endif
|
||
- _GL_CXXALIASWARN (foo);
|
||
- #elif defined GNULIB_POSIXCHECK
|
||
- ...
|
||
- #endif
|
||
-*/
|
||
-
|
||
-/* _GL_EXTERN_C declaration;
|
||
- performs the declaration with C linkage. */
|
||
-#if defined __cplusplus
|
||
-# define _GL_EXTERN_C extern "C"
|
||
-#else
|
||
-# define _GL_EXTERN_C extern
|
||
-#endif
|
||
-
|
||
-/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
|
||
- declares a replacement function, named rpl_func, with the given prototype,
|
||
- consisting of return type, parameters, and attributes.
|
||
- Example:
|
||
- _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
|
||
- _GL_ARG_NONNULL ((1)));
|
||
- */
|
||
-#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
|
||
- _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
|
||
-#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
|
||
- _GL_EXTERN_C rettype rpl_func parameters_and_attributes
|
||
-
|
||
-/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
|
||
- declares the system function, named func, with the given prototype,
|
||
- consisting of return type, parameters, and attributes.
|
||
- Example:
|
||
- _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
|
||
- _GL_ARG_NONNULL ((1)));
|
||
- */
|
||
-#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
|
||
- _GL_EXTERN_C rettype func parameters_and_attributes
|
||
-
|
||
-/* _GL_CXXALIAS_RPL (func, rettype, parameters);
|
||
- declares a C++ alias called GNULIB_NAMESPACE::func
|
||
- that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
|
||
- Example:
|
||
- _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
|
||
- */
|
||
-#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
|
||
- _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
|
||
-#if defined __cplusplus && defined GNULIB_NAMESPACE
|
||
-# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
|
||
- namespace GNULIB_NAMESPACE \
|
||
- { \
|
||
- rettype (*const func) parameters = ::rpl_func; \
|
||
- } \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#else
|
||
-# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#endif
|
||
-
|
||
-/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
|
||
- is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
|
||
- except that the C function rpl_func may have a slightly different
|
||
- declaration. A cast is used to silence the "invalid conversion" error
|
||
- that would otherwise occur. */
|
||
-#if defined __cplusplus && defined GNULIB_NAMESPACE
|
||
-# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
|
||
- namespace GNULIB_NAMESPACE \
|
||
- { \
|
||
- rettype (*const func) parameters = \
|
||
- reinterpret_cast<rettype(*)parameters>(::rpl_func); \
|
||
- } \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#else
|
||
-# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#endif
|
||
-
|
||
-/* _GL_CXXALIAS_SYS (func, rettype, parameters);
|
||
- declares a C++ alias called GNULIB_NAMESPACE::func
|
||
- that redirects to the system provided function func, if GNULIB_NAMESPACE
|
||
- is defined.
|
||
- Example:
|
||
- _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
|
||
- */
|
||
-#if defined __cplusplus && defined GNULIB_NAMESPACE
|
||
- /* If we were to write
|
||
- rettype (*const func) parameters = ::func;
|
||
- like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
|
||
- better (remove an indirection through a 'static' pointer variable),
|
||
- but then the _GL_CXXALIASWARN macro below would cause a warning not only
|
||
- for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */
|
||
-# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
|
||
- namespace GNULIB_NAMESPACE \
|
||
- { \
|
||
- static rettype (*func) parameters = ::func; \
|
||
- } \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#else
|
||
-# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#endif
|
||
-
|
||
-/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
|
||
- is like _GL_CXXALIAS_SYS (func, rettype, parameters);
|
||
- except that the C function func may have a slightly different declaration.
|
||
- A cast is used to silence the "invalid conversion" error that would
|
||
- otherwise occur. */
|
||
-#if defined __cplusplus && defined GNULIB_NAMESPACE
|
||
-# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
|
||
- namespace GNULIB_NAMESPACE \
|
||
- { \
|
||
- static rettype (*func) parameters = \
|
||
- reinterpret_cast<rettype(*)parameters>(::func); \
|
||
- } \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#else
|
||
-# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#endif
|
||
-
|
||
-/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
|
||
- is like _GL_CXXALIAS_SYS (func, rettype, parameters);
|
||
- except that the C function is picked among a set of overloaded functions,
|
||
- namely the one with rettype2 and parameters2. Two consecutive casts
|
||
- are used to silence the "cannot find a match" and "invalid conversion"
|
||
- errors that would otherwise occur. */
|
||
-#if defined __cplusplus && defined GNULIB_NAMESPACE
|
||
- /* The outer cast must be a reinterpret_cast.
|
||
- The inner cast: When the function is defined as a set of overloaded
|
||
- functions, it works as a static_cast<>, choosing the designated variant.
|
||
- When the function is defined as a single variant, it works as a
|
||
- reinterpret_cast<>. The parenthesized cast syntax works both ways. */
|
||
-# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
|
||
- namespace GNULIB_NAMESPACE \
|
||
- { \
|
||
- static rettype (*func) parameters = \
|
||
- reinterpret_cast<rettype(*)parameters>( \
|
||
- (rettype2(*)parameters2)(::func)); \
|
||
- } \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#else
|
||
-# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#endif
|
||
-
|
||
-/* _GL_CXXALIASWARN (func);
|
||
- causes a warning to be emitted when ::func is used but not when
|
||
- GNULIB_NAMESPACE::func is used. func must be defined without overloaded
|
||
- variants. */
|
||
-#if defined __cplusplus && defined GNULIB_NAMESPACE
|
||
-# define _GL_CXXALIASWARN(func) \
|
||
- _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
|
||
-# define _GL_CXXALIASWARN_1(func,namespace) \
|
||
- _GL_CXXALIASWARN_2 (func, namespace)
|
||
-/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
|
||
- we enable the warning only when not optimizing. */
|
||
-# if !__OPTIMIZE__
|
||
-# define _GL_CXXALIASWARN_2(func,namespace) \
|
||
- _GL_WARN_ON_USE (func, \
|
||
- "The symbol ::" #func " refers to the system function. " \
|
||
- "Use " #namespace "::" #func " instead.")
|
||
-# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
|
||
-# define _GL_CXXALIASWARN_2(func,namespace) \
|
||
- extern __typeof__ (func) func
|
||
-# else
|
||
-# define _GL_CXXALIASWARN_2(func,namespace) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-# endif
|
||
-#else
|
||
-# define _GL_CXXALIASWARN(func) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#endif
|
||
-
|
||
-/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
|
||
- causes a warning to be emitted when the given overloaded variant of ::func
|
||
- is used but not when GNULIB_NAMESPACE::func is used. */
|
||
-#if defined __cplusplus && defined GNULIB_NAMESPACE
|
||
-# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
|
||
- _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
|
||
- GNULIB_NAMESPACE)
|
||
-# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
|
||
- _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
|
||
-/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
|
||
- we enable the warning only when not optimizing. */
|
||
-# if !__OPTIMIZE__
|
||
-# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
|
||
- _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
|
||
- "The symbol ::" #func " refers to the system function. " \
|
||
- "Use " #namespace "::" #func " instead.")
|
||
-# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
|
||
-# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
|
||
- extern __typeof__ (func) func
|
||
-# else
|
||
-# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-# endif
|
||
-#else
|
||
-# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
|
||
- _GL_EXTERN_C int _gl_cxxalias_dummy
|
||
-#endif
|
||
-
|
||
-#endif /* _GL_CXXDEFS_H */
|
||
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
|
||
index c492a93..c38b914 100755
|
||
--- a/build-aux/config.rpath
|
||
+++ b/build-aux/config.rpath
|
||
@@ -2,7 +2,7 @@
|
||
# Output a system dependent set of variables, describing how to set the
|
||
# run time search path of shared libraries in an executable.
|
||
#
|
||
-# Copyright 1996-2006 Free Software Foundation, Inc.
|
||
+# Copyright 1996-2013 Free Software Foundation, Inc.
|
||
# Taken from GNU libtool, 2001
|
||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||
#
|
||
@@ -25,7 +25,7 @@
|
||
# known workaround is to choose shorter directory names for the build
|
||
# directory and/or the installation directory.
|
||
|
||
-# All known linkers require a `.a' archive for static linking (except MSVC,
|
||
+# All known linkers require a '.a' archive for static linking (except MSVC,
|
||
# which needs '.lib').
|
||
libext=a
|
||
shrext=.so
|
||
@@ -47,7 +47,7 @@ for cc_temp in $CC""; do
|
||
done
|
||
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
||
|
||
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
|
||
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
|
||
|
||
wl=
|
||
if test "$GCC" = yes; then
|
||
@@ -57,14 +57,7 @@ else
|
||
aix*)
|
||
wl='-Wl,'
|
||
;;
|
||
- darwin*)
|
||
- case $cc_basename in
|
||
- xlc*)
|
||
- wl='-Wl,'
|
||
- ;;
|
||
- esac
|
||
- ;;
|
||
- mingw* | pw32* | os2*)
|
||
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
|
||
;;
|
||
hpux9* | hpux10* | hpux11*)
|
||
wl='-Wl,'
|
||
@@ -72,24 +65,37 @@ else
|
||
irix5* | irix6* | nonstopux*)
|
||
wl='-Wl,'
|
||
;;
|
||
- newsos6)
|
||
- ;;
|
||
- linux*)
|
||
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||
case $cc_basename in
|
||
- icc* | ecc*)
|
||
+ ecc*)
|
||
wl='-Wl,'
|
||
;;
|
||
- pgcc | pgf77 | pgf90)
|
||
+ icc* | ifort*)
|
||
+ wl='-Wl,'
|
||
+ ;;
|
||
+ lf95*)
|
||
+ wl='-Wl,'
|
||
+ ;;
|
||
+ nagfor*)
|
||
+ wl='-Wl,-Wl,,'
|
||
+ ;;
|
||
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
|
||
wl='-Wl,'
|
||
;;
|
||
ccc*)
|
||
wl='-Wl,'
|
||
;;
|
||
+ xl* | bgxl* | bgf* | mpixl*)
|
||
+ wl='-Wl,'
|
||
+ ;;
|
||
como)
|
||
wl='-lopt='
|
||
;;
|
||
*)
|
||
case `$CC -V 2>&1 | sed 5q` in
|
||
+ *Sun\ F* | *Sun*Fortran*)
|
||
+ wl=
|
||
+ ;;
|
||
*Sun\ C*)
|
||
wl='-Wl,'
|
||
;;
|
||
@@ -97,22 +103,36 @@ else
|
||
;;
|
||
esac
|
||
;;
|
||
+ newsos6)
|
||
+ ;;
|
||
+ *nto* | *qnx*)
|
||
+ ;;
|
||
osf3* | osf4* | osf5*)
|
||
wl='-Wl,'
|
||
;;
|
||
- sco3.2v5*)
|
||
+ rdos*)
|
||
;;
|
||
solaris*)
|
||
- wl='-Wl,'
|
||
+ case $cc_basename in
|
||
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
|
||
+ wl='-Qoption ld '
|
||
+ ;;
|
||
+ *)
|
||
+ wl='-Wl,'
|
||
+ ;;
|
||
+ esac
|
||
;;
|
||
sunos4*)
|
||
wl='-Qoption ld '
|
||
;;
|
||
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||
+ sysv4 | sysv4.2uw2* | sysv4.3*)
|
||
wl='-Wl,'
|
||
;;
|
||
sysv4*MP*)
|
||
;;
|
||
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
|
||
+ wl='-Wl,'
|
||
+ ;;
|
||
unicos*)
|
||
wl='-Wl,'
|
||
;;
|
||
@@ -121,7 +141,7 @@ else
|
||
esac
|
||
fi
|
||
|
||
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
|
||
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
|
||
|
||
hardcode_libdir_flag_spec=
|
||
hardcode_libdir_separator=
|
||
@@ -129,7 +149,7 @@ hardcode_direct=no
|
||
hardcode_minus_L=no
|
||
|
||
case "$host_os" in
|
||
- cygwin* | mingw* | pw32*)
|
||
+ cygwin* | mingw* | pw32* | cegcc*)
|
||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||
# When not using gcc, we currently assume that we are using
|
||
# Microsoft Visual C++.
|
||
@@ -155,22 +175,21 @@ if test "$with_gnu_ld" = yes; then
|
||
# option of GNU ld is called -rpath, not --rpath.
|
||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||
case "$host_os" in
|
||
- aix3* | aix4* | aix5*)
|
||
+ aix[3-9]*)
|
||
# On AIX/PPC, the GNU linker is very broken
|
||
if test "$host_cpu" != ia64; then
|
||
ld_shlibs=no
|
||
fi
|
||
;;
|
||
amigaos*)
|
||
- hardcode_libdir_flag_spec='-L$libdir'
|
||
- hardcode_minus_L=yes
|
||
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||
- # that the semantics of dynamic libraries on AmigaOS, at least up
|
||
- # to version 4, is to share data among multiple programs linked
|
||
- # with the same dynamic library. Since this doesn't match the
|
||
- # behavior of shared libraries on other platforms, we cannot use
|
||
- # them.
|
||
- ld_shlibs=no
|
||
+ case "$host_cpu" in
|
||
+ powerpc)
|
||
+ ;;
|
||
+ m68k)
|
||
+ hardcode_libdir_flag_spec='-L$libdir'
|
||
+ hardcode_minus_L=yes
|
||
+ ;;
|
||
+ esac
|
||
;;
|
||
beos*)
|
||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||
@@ -179,7 +198,7 @@ if test "$with_gnu_ld" = yes; then
|
||
ld_shlibs=no
|
||
fi
|
||
;;
|
||
- cygwin* | mingw* | pw32*)
|
||
+ cygwin* | mingw* | pw32* | cegcc*)
|
||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||
# no search path for DLLs.
|
||
hardcode_libdir_flag_spec='-L$libdir'
|
||
@@ -189,11 +208,13 @@ if test "$with_gnu_ld" = yes; then
|
||
ld_shlibs=no
|
||
fi
|
||
;;
|
||
- interix3*)
|
||
+ haiku*)
|
||
+ ;;
|
||
+ interix[3-9]*)
|
||
hardcode_direct=no
|
||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||
;;
|
||
- linux*)
|
||
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
|
||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||
:
|
||
else
|
||
@@ -251,7 +272,7 @@ else
|
||
hardcode_direct=unsupported
|
||
fi
|
||
;;
|
||
- aix4* | aix5*)
|
||
+ aix[4-9]*)
|
||
if test "$host_cpu" = ia64; then
|
||
# On IA64, the linker does run time linking by default, so we don't
|
||
# have to do anything special.
|
||
@@ -261,7 +282,7 @@ else
|
||
# Test if we are trying to use run time linking or normal
|
||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||
# need to do runtime linking.
|
||
- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
|
||
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
|
||
for ld_flag in $LDFLAGS; do
|
||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||
aix_use_runtimelinking=yes
|
||
@@ -280,7 +301,7 @@ else
|
||
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
||
then
|
||
# We have reworked collect2
|
||
- hardcode_direct=yes
|
||
+ :
|
||
else
|
||
# We have old collect2
|
||
hardcode_direct=unsupported
|
||
@@ -316,14 +337,18 @@ else
|
||
fi
|
||
;;
|
||
amigaos*)
|
||
- hardcode_libdir_flag_spec='-L$libdir'
|
||
- hardcode_minus_L=yes
|
||
- # see comment about different semantics on the GNU ld section
|
||
- ld_shlibs=no
|
||
+ case "$host_cpu" in
|
||
+ powerpc)
|
||
+ ;;
|
||
+ m68k)
|
||
+ hardcode_libdir_flag_spec='-L$libdir'
|
||
+ hardcode_minus_L=yes
|
||
+ ;;
|
||
+ esac
|
||
;;
|
||
bsdi[45]*)
|
||
;;
|
||
- cygwin* | mingw* | pw32*)
|
||
+ cygwin* | mingw* | pw32* | cegcc*)
|
||
# When not using gcc, we currently assume that we are using
|
||
# Microsoft Visual C++.
|
||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||
@@ -333,24 +358,15 @@ else
|
||
;;
|
||
darwin* | rhapsody*)
|
||
hardcode_direct=no
|
||
- if test "$GCC" = yes ; then
|
||
+ if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
|
||
:
|
||
else
|
||
- case $cc_basename in
|
||
- xlc*)
|
||
- ;;
|
||
- *)
|
||
- ld_shlibs=no
|
||
- ;;
|
||
- esac
|
||
+ ld_shlibs=no
|
||
fi
|
||
;;
|
||
dgux*)
|
||
hardcode_libdir_flag_spec='-L$libdir'
|
||
;;
|
||
- freebsd1*)
|
||
- ld_shlibs=no
|
||
- ;;
|
||
freebsd2.2*)
|
||
hardcode_libdir_flag_spec='-R$libdir'
|
||
hardcode_direct=yes
|
||
@@ -359,7 +375,7 @@ else
|
||
hardcode_direct=yes
|
||
hardcode_minus_L=yes
|
||
;;
|
||
- freebsd* | kfreebsd*-gnu | dragonfly*)
|
||
+ freebsd* | dragonfly*)
|
||
hardcode_libdir_flag_spec='-R$libdir'
|
||
hardcode_direct=yes
|
||
;;
|
||
@@ -411,19 +427,25 @@ else
|
||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||
hardcode_libdir_separator=:
|
||
;;
|
||
+ *nto* | *qnx*)
|
||
+ ;;
|
||
openbsd*)
|
||
- hardcode_direct=yes
|
||
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||
+ if test -f /usr/libexec/ld.so; then
|
||
+ hardcode_direct=yes
|
||
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||
+ else
|
||
+ case "$host_os" in
|
||
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||
+ hardcode_libdir_flag_spec='-R$libdir'
|
||
+ ;;
|
||
+ *)
|
||
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||
+ ;;
|
||
+ esac
|
||
+ fi
|
||
else
|
||
- case "$host_os" in
|
||
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||
- hardcode_libdir_flag_spec='-R$libdir'
|
||
- ;;
|
||
- *)
|
||
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||
- ;;
|
||
- esac
|
||
+ ld_shlibs=no
|
||
fi
|
||
;;
|
||
os2*)
|
||
@@ -471,7 +493,7 @@ else
|
||
ld_shlibs=yes
|
||
fi
|
||
;;
|
||
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
|
||
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
|
||
;;
|
||
sysv5* | sco3.2v5* | sco5v6*)
|
||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
|
||
@@ -487,34 +509,58 @@ else
|
||
fi
|
||
|
||
# Check dynamic linker characteristics
|
||
-# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
|
||
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
|
||
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
|
||
+# only about the one the linker finds when passed -lNAME. This is the last
|
||
+# element of library_names_spec in libtool.m4, or possibly two of them if the
|
||
+# linker has special search rules.
|
||
+library_names_spec= # the last element of library_names_spec in libtool.m4
|
||
libname_spec='lib$name'
|
||
case "$host_os" in
|
||
aix3*)
|
||
+ library_names_spec='$libname.a'
|
||
;;
|
||
- aix4* | aix5*)
|
||
+ aix[4-9]*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
amigaos*)
|
||
+ case "$host_cpu" in
|
||
+ powerpc*)
|
||
+ library_names_spec='$libname$shrext' ;;
|
||
+ m68k)
|
||
+ library_names_spec='$libname.a' ;;
|
||
+ esac
|
||
;;
|
||
beos*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
bsdi[45]*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
- cygwin* | mingw* | pw32*)
|
||
+ cygwin* | mingw* | pw32* | cegcc*)
|
||
shrext=.dll
|
||
+ library_names_spec='$libname.dll.a $libname.lib'
|
||
;;
|
||
darwin* | rhapsody*)
|
||
shrext=.dylib
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
dgux*)
|
||
- ;;
|
||
- freebsd1*)
|
||
- ;;
|
||
- kfreebsd*-gnu)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
freebsd* | dragonfly*)
|
||
+ case "$host_os" in
|
||
+ freebsd[123]*)
|
||
+ library_names_spec='$libname$shrext$versuffix' ;;
|
||
+ *)
|
||
+ library_names_spec='$libname$shrext' ;;
|
||
+ esac
|
||
;;
|
||
gnu*)
|
||
+ library_names_spec='$libname$shrext'
|
||
+ ;;
|
||
+ haiku*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
hpux9* | hpux10* | hpux11*)
|
||
case $host_cpu in
|
||
@@ -528,10 +574,13 @@ case "$host_os" in
|
||
shrext=.sl
|
||
;;
|
||
esac
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
- interix3*)
|
||
+ interix[3-9]*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
irix5* | irix6* | nonstopux*)
|
||
+ library_names_spec='$libname$shrext'
|
||
case "$host_os" in
|
||
irix5* | nonstopux*)
|
||
libsuff= shlibsuff=
|
||
@@ -548,41 +597,62 @@ case "$host_os" in
|
||
;;
|
||
linux*oldld* | linux*aout* | linux*coff*)
|
||
;;
|
||
- linux*)
|
||
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
knetbsd*-gnu)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
netbsd*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
newsos6)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
- nto-qnx*)
|
||
+ *nto* | *qnx*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
openbsd*)
|
||
+ library_names_spec='$libname$shrext$versuffix'
|
||
;;
|
||
os2*)
|
||
libname_spec='$name'
|
||
shrext=.dll
|
||
+ library_names_spec='$libname.a'
|
||
;;
|
||
osf3* | osf4* | osf5*)
|
||
+ library_names_spec='$libname$shrext'
|
||
+ ;;
|
||
+ rdos*)
|
||
;;
|
||
solaris*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
sunos4*)
|
||
+ library_names_spec='$libname$shrext$versuffix'
|
||
;;
|
||
sysv4 | sysv4.3*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
sysv4*MP*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
||
+ library_names_spec='$libname$shrext'
|
||
+ ;;
|
||
+ tpf*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
uts4*)
|
||
+ library_names_spec='$libname$shrext'
|
||
;;
|
||
esac
|
||
|
||
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
||
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
|
||
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||
|
||
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
||
@@ -596,6 +666,12 @@ libext="$libext"
|
||
# Shared library suffix (normally "so").
|
||
shlibext="$shlibext"
|
||
|
||
+# Format of library name prefix.
|
||
+libname_spec="$escaped_libname_spec"
|
||
+
|
||
+# Library names that the linker finds when passed -lNAME.
|
||
+library_names_spec="$escaped_library_names_spec"
|
||
+
|
||
# Flag to hardcode \$libdir into a binary during linking.
|
||
# This must work even if \$libdir does not exist.
|
||
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
||
diff --git a/build-aux/warn-on-use.h b/build-aux/warn-on-use.h
|
||
deleted file mode 100644
|
||
index 171e599..0000000
|
||
--- a/build-aux/warn-on-use.h
|
||
+++ /dev/null
|
||
@@ -1,109 +0,0 @@
|
||
-/* A C macro for emitting warnings if a function is used.
|
||
- Copyright (C) 2010 Free Software Foundation, Inc.
|
||
-
|
||
- This program is free software: you can redistribute it and/or modify it
|
||
- under the terms of the GNU General Public License as published
|
||
- by the Free Software Foundation; either version 3 of the License, or
|
||
- (at your option) any later version.
|
||
-
|
||
- This program is distributed in the hope that it will be useful,
|
||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
- Lesser General Public License for more details.
|
||
-
|
||
- You should have received a copy of the GNU General Public License
|
||
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
-
|
||
-/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
|
||
- for FUNCTION which will then trigger a compiler warning containing
|
||
- the text of "literal string" anywhere that function is called, if
|
||
- supported by the compiler. If the compiler does not support this
|
||
- feature, the macro expands to an unused extern declaration.
|
||
-
|
||
- This macro is useful for marking a function as a potential
|
||
- portability trap, with the intent that "literal string" include
|
||
- instructions on the replacement function that should be used
|
||
- instead. However, one of the reasons that a function is a
|
||
- portability trap is if it has the wrong signature. Declaring
|
||
- FUNCTION with a different signature in C is a compilation error, so
|
||
- this macro must use the same type as any existing declaration so
|
||
- that programs that avoid the problematic FUNCTION do not fail to
|
||
- compile merely because they included a header that poisoned the
|
||
- function. But this implies that _GL_WARN_ON_USE is only safe to
|
||
- use if FUNCTION is known to already have a declaration. Use of
|
||
- this macro implies that there must not be any other macro hiding
|
||
- the declaration of FUNCTION; but undefining FUNCTION first is part
|
||
- of the poisoning process anyway (although for symbols that are
|
||
- provided only via a macro, the result is a compilation error rather
|
||
- than a warning containing "literal string"). Also note that in
|
||
- C++, it is only safe to use if FUNCTION has no overloads.
|
||
-
|
||
- For an example, it is possible to poison 'getline' by:
|
||
- - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
|
||
- [getline]) in configure.ac, which potentially defines
|
||
- HAVE_RAW_DECL_GETLINE
|
||
- - adding this code to a header that wraps the system <stdio.h>:
|
||
- #undef getline
|
||
- #if HAVE_RAW_DECL_GETLINE
|
||
- _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
|
||
- "not universally present; use the gnulib module getline");
|
||
- #endif
|
||
-
|
||
- It is not possible to directly poison global variables. But it is
|
||
- possible to write a wrapper accessor function, and poison that
|
||
- (less common usage, like &environ, will cause a compilation error
|
||
- rather than issue the nice warning, but the end result of informing
|
||
- the developer about their portability problem is still achieved):
|
||
- #if HAVE_RAW_DECL_ENVIRON
|
||
- static inline char ***rpl_environ (void) { return &environ; }
|
||
- _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
|
||
- # undef environ
|
||
- # define environ (*rpl_environ ())
|
||
- #endif
|
||
- */
|
||
-#ifndef _GL_WARN_ON_USE
|
||
-
|
||
-# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
|
||
-/* A compiler attribute is available in gcc versions 4.3.0 and later. */
|
||
-# define _GL_WARN_ON_USE(function, message) \
|
||
-extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
|
||
-# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
|
||
-/* Verify the existence of the function. */
|
||
-# define _GL_WARN_ON_USE(function, message) \
|
||
-extern __typeof__ (function) function
|
||
-# else /* Unsupported. */
|
||
-# define _GL_WARN_ON_USE(function, message) \
|
||
-_GL_WARN_EXTERN_C int _gl_warn_on_use
|
||
-# endif
|
||
-#endif
|
||
-
|
||
-/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
|
||
- is like _GL_WARN_ON_USE (function, "string"), except that the function is
|
||
- declared with the given prototype, consisting of return type, parameters,
|
||
- and attributes.
|
||
- This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
|
||
- not work in this case. */
|
||
-#ifndef _GL_WARN_ON_USE_CXX
|
||
-# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
|
||
-# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
|
||
-extern rettype function parameters_and_attributes \
|
||
- __attribute__ ((__warning__ (msg)))
|
||
-# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
|
||
-/* Verify the existence of the function. */
|
||
-# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
|
||
-extern rettype function parameters_and_attributes
|
||
-# else /* Unsupported. */
|
||
-# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
|
||
-_GL_WARN_EXTERN_C int _gl_warn_on_use
|
||
-# endif
|
||
-#endif
|
||
-
|
||
-/* _GL_WARN_EXTERN_C declaration;
|
||
- performs the declaration with C linkage. */
|
||
-#ifndef _GL_WARN_EXTERN_C
|
||
-# if defined __cplusplus
|
||
-# define _GL_WARN_EXTERN_C extern "C"
|
||
-# else
|
||
-# define _GL_WARN_EXTERN_C extern
|
||
-# endif
|
||
-#endif
|
||
diff --git a/config.h.in b/config.h.in
|
||
index 2e1f459..065db78 100644
|
||
--- a/config.h.in
|
||
+++ b/config.h.in
|
||
@@ -49,4 +49,6 @@
|
||
|
||
#define RE_ENABLE_I18N 1
|
||
|
||
+#define __USE_GNU 1
|
||
+
|
||
#endif
|
||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||
index fece882..4c8e947 100644
|
||
--- a/grub-core/Makefile.core.def
|
||
+++ b/grub-core/Makefile.core.def
|
||
@@ -194,7 +194,7 @@ kernel = {
|
||
|
||
emu = disk/host.c;
|
||
emu = gnulib/progname.c;
|
||
- emu = gnulib/error.c;
|
||
+ emu = kern/emu/error.c;
|
||
emu = kern/emu/cache_s.S;
|
||
emu = kern/emu/hostdisk.c;
|
||
emu = kern/emu/hostfs.c;
|
||
diff --git a/grub-core/gnulib-fix-null-deref.diff b/grub-core/gnulib-fix-null-deref.diff
|
||
new file mode 100644
|
||
index 0000000..a2fba8c
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib-fix-null-deref.diff
|
||
@@ -0,0 +1,13 @@
|
||
+=== modified file 'grub-core/gnulib/argp-parse.c'
|
||
+--- grub-core/gnulib/argp-parse.c 2010-04-02 22:45:01 +0000
|
||
++++ grub-core/gnulib/argp-parse.c 2011-04-10 13:25:52 +0000
|
||
+@@ -935,7 +935,7 @@
|
||
+ void *
|
||
+ __argp_input (const struct argp *argp, const struct argp_state *state)
|
||
+ {
|
||
+- if (state)
|
||
++ if (state && state->pstate)
|
||
+ {
|
||
+ struct group *group;
|
||
+ struct parser *parser = state->pstate;
|
||
+
|
||
diff --git a/grub-core/gnulib-fix-width.diff b/grub-core/gnulib-fix-width.diff
|
||
new file mode 100644
|
||
index 0000000..ae77af6
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib-fix-width.diff
|
||
@@ -0,0 +1,231 @@
|
||
+diff --git a/lib/argp-fmtstream.c b/lib/argp-fmtstream.c
|
||
+index 7aa317c..02406ff 100644
|
||
+--- a/lib/argp-fmtstream.c
|
||
++++ b/lib/argp-fmtstream.c
|
||
+@@ -29,9 +29,11 @@
|
||
+ #include <errno.h>
|
||
+ #include <stdarg.h>
|
||
+ #include <ctype.h>
|
||
++#include <wchar.h>
|
||
+
|
||
+ #include "argp-fmtstream.h"
|
||
+ #include "argp-namefrob.h"
|
||
++#include "mbswidth.h"
|
||
+
|
||
+ #ifndef ARGP_FMTSTREAM_USE_LINEWRAP
|
||
+
|
||
+@@ -116,6 +118,51 @@ weak_alias (__argp_fmtstream_free, argp_fmtstream_free)
|
||
+ #endif
|
||
+ #endif
|
||
+
|
||
++
|
||
++/* Return the pointer to the first character that doesn't fit in l columns. */
|
||
++static inline const ptrdiff_t
|
||
++add_width (const char *ptr, const char *end, size_t l)
|
||
++{
|
||
++ mbstate_t ps;
|
||
++ const char *ptr0 = ptr;
|
||
++
|
||
++ memset (&ps, 0, sizeof (ps));
|
||
++
|
||
++ while (ptr < end)
|
||
++ {
|
||
++ wchar_t wc;
|
||
++ size_t s, k;
|
||
++
|
||
++ s = mbrtowc (&wc, ptr, end - ptr, &ps);
|
||
++ if (s == (size_t) -1)
|
||
++ break;
|
||
++ if (s == (size_t) -2)
|
||
++ {
|
||
++ if (1 >= l)
|
||
++ break;
|
||
++ l--;
|
||
++ ptr++;
|
||
++ continue;
|
||
++ }
|
||
++
|
||
++ if (wc == '\e' && ptr + 3 < end
|
||
++ && ptr[1] == '[' && (ptr[2] == '0' || ptr[2] == '1')
|
||
++ && ptr[3] == 'm')
|
||
++ {
|
||
++ ptr += 4;
|
||
++ continue;
|
||
++ }
|
||
++
|
||
++ k = wcwidth (wc);
|
||
++
|
||
++ if (k >= l)
|
||
++ break;
|
||
++ l -= k;
|
||
++ ptr += s;
|
||
++ }
|
||
++ return ptr - ptr0;
|
||
++}
|
||
++
|
||
+ /* Process FS's buffer so that line wrapping is done from POINT_OFFS to the
|
||
+ end of its buffer. This code is mostly from glibc stdio/linewrap.c. */
|
||
+ void
|
||
+@@ -168,14 +215,15 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
+
|
||
+ if (!nl)
|
||
+ {
|
||
++ size_t display_width = mbsnwidth (buf, fs->p - buf, MBSW_STOP_AT_NUL);
|
||
+ /* The buffer ends in a partial line. */
|
||
+
|
||
+- if (fs->point_col + len < fs->rmargin)
|
||
++ if (fs->point_col + display_width < fs->rmargin)
|
||
+ {
|
||
+ /* The remaining buffer text is a partial line and fits
|
||
+ within the maximum line width. Advance point for the
|
||
+ characters to be written and stop scanning. */
|
||
+- fs->point_col += len;
|
||
++ fs->point_col += display_width;
|
||
+ break;
|
||
+ }
|
||
+ else
|
||
+@@ -183,14 +231,18 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
+ the end of the buffer. */
|
||
+ nl = fs->p;
|
||
+ }
|
||
+- else if (fs->point_col + (nl - buf) < (ssize_t) fs->rmargin)
|
||
+- {
|
||
+- /* The buffer contains a full line that fits within the maximum
|
||
+- line width. Reset point and scan the next line. */
|
||
+- fs->point_col = 0;
|
||
+- buf = nl + 1;
|
||
+- continue;
|
||
+- }
|
||
++ else
|
||
++ {
|
||
++ size_t display_width = mbsnwidth (buf, nl - buf, MBSW_STOP_AT_NUL);
|
||
++ if (display_width < (ssize_t) fs->rmargin)
|
||
++ {
|
||
++ /* The buffer contains a full line that fits within the maximum
|
||
++ line width. Reset point and scan the next line. */
|
||
++ fs->point_col = 0;
|
||
++ buf = nl + 1;
|
||
++ continue;
|
||
++ }
|
||
++ }
|
||
+
|
||
+ /* This line is too long. */
|
||
+ r = fs->rmargin - 1;
|
||
+@@ -226,7 +278,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
+ char *p, *nextline;
|
||
+ int i;
|
||
+
|
||
+- p = buf + (r + 1 - fs->point_col);
|
||
++ p = buf + add_width (buf, fs->p, (r + 1 - fs->point_col));
|
||
+ while (p >= buf && !isblank ((unsigned char) *p))
|
||
+ --p;
|
||
+ nextline = p + 1; /* This will begin the next line. */
|
||
+@@ -244,7 +296,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
+ {
|
||
+ /* A single word that is greater than the maximum line width.
|
||
+ Oh well. Put it on an overlong line by itself. */
|
||
+- p = buf + (r + 1 - fs->point_col);
|
||
++ p = buf + add_width (buf, fs->p, (r + 1 - fs->point_col));
|
||
+ /* Find the end of the long word. */
|
||
+ if (p < nl)
|
||
+ do
|
||
+@@ -278,7 +330,8 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
+ && fs->p > nextline)
|
||
+ {
|
||
+ /* The margin needs more blanks than we removed. */
|
||
+- if (fs->end - fs->p > fs->wmargin + 1)
|
||
++ if (mbsnwidth (fs->p, fs->end - fs->p, MBSW_STOP_AT_NUL)
|
||
++ > fs->wmargin + 1)
|
||
+ /* Make some space for them. */
|
||
+ {
|
||
+ size_t mv = fs->p - nextline;
|
||
+diff --git a/lib/argp-help.c b/lib/argp-help.c
|
||
+index 354f1e2..2914f47 100644
|
||
+--- a/lib/argp-help.c
|
||
++++ b/lib/argp-help.c
|
||
+@@ -50,6 +50,7 @@
|
||
+ #include "argp.h"
|
||
+ #include "argp-fmtstream.h"
|
||
+ #include "argp-namefrob.h"
|
||
++#include "mbswidth.h"
|
||
+
|
||
+ #ifndef SIZE_MAX
|
||
+ # define SIZE_MAX ((size_t) -1)
|
||
+@@ -1452,7 +1453,7 @@ argp_args_usage (const struct argp *argp, const struct argp_state *state,
|
||
+
|
||
+ /* Manually do line wrapping so that it (probably) won't get wrapped at
|
||
+ any embedded spaces. */
|
||
+- space (stream, 1 + nl - cp);
|
||
++ space (stream, 1 + mbsnwidth (cp, nl - cp, MBSW_STOP_AT_NUL));
|
||
+
|
||
+ __argp_fmtstream_write (stream, cp, nl - cp);
|
||
+ }
|
||
+diff --git a/lib/mbswidth.c b/lib/mbswidth.c
|
||
+index 7c2dfce..baa4f27 100644
|
||
+--- a/lib/mbswidth.c
|
||
++++ b/lib/mbswidth.c
|
||
+@@ -90,6 +90,9 @@ mbsnwidth (const char *string, size_t nbytes, int flags)
|
||
+ p++;
|
||
+ width++;
|
||
+ break;
|
||
++ case '\0':
|
||
++ if (flags & MBSW_STOP_AT_NUL)
|
||
++ return width;
|
||
+ default:
|
||
+ /* If we have a multibyte sequence, scan it up to its end. */
|
||
+ {
|
||
+@@ -168,6 +171,9 @@ mbsnwidth (const char *string, size_t nbytes, int flags)
|
||
+ {
|
||
+ unsigned char c = (unsigned char) *p++;
|
||
+
|
||
++ if (c == 0 && (flags & MBSW_STOP_AT_NUL))
|
||
++ return width;
|
||
++
|
||
+ if (isprint (c))
|
||
+ {
|
||
+ if (width == INT_MAX)
|
||
+diff --git a/lib/mbswidth.h b/lib/mbswidth.h
|
||
+index e9c0b03..d7207c5 100644
|
||
+--- a/lib/mbswidth.h
|
||
++++ b/lib/mbswidth.h
|
||
+@@ -45,6 +45,9 @@ extern "C" {
|
||
+ control characters and 1 otherwise. */
|
||
+ #define MBSW_REJECT_UNPRINTABLE 2
|
||
+
|
||
++/* If this bit is set \0 is treated as the end of string.
|
||
++ Otherwise it's treated as a normal one column width character. */
|
||
++#define MBSW_STOP_AT_NUL 4
|
||
+
|
||
+ /* Returns the number of screen columns needed for STRING. */
|
||
+ #define mbswidth gnu_mbswidth /* avoid clash with UnixWare 7.1.1 function */
|
||
+diff --git a/modules/argp b/modules/argp
|
||
+index 125046a..6f14d10 100644
|
||
+--- a/modules/argp
|
||
++++ b/modules/argp
|
||
+@@ -40,6 +40,7 @@ stdalign
|
||
+ strerror
|
||
+ memchr
|
||
+ memmove
|
||
++mbswidth
|
||
+
|
||
+ configure.ac:
|
||
+ gl_ARGP
|
||
+diff --git a/modules/argp-tests b/modules/argp-tests
|
||
+index 8f92a4d..0463927 100644
|
||
+--- a/modules/argp-tests
|
||
++++ b/modules/argp-tests
|
||
+@@ -1,11 +1,13 @@
|
||
+ Files:
|
||
+ tests/test-argp.c
|
||
+ tests/test-argp-2.sh
|
||
++tests/test-argp-2-utf.sh
|
||
+
|
||
+ Depends-on:
|
||
+ progname
|
||
+
|
||
+ Makefile.am:
|
||
+ TESTS += test-argp test-argp-2.sh
|
||
+-check_PROGRAMS += test-argp
|
||
++TESTS += test-argp test-argp-2.sh test-argp-2-utf.sh
|
||
++check_PROGRAMS += test-argp test-argp-utf8
|
||
+ test_argp_LDADD = $(LDADD) @LIBINTL@
|
||
diff --git a/grub-core/gnulib-no-abort.diff b/grub-core/gnulib-no-abort.diff
|
||
new file mode 100644
|
||
index 0000000..8377338
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib-no-abort.diff
|
||
@@ -0,0 +1,30 @@
|
||
+=== modified file 'grub-core/gnulib/regcomp.c'
|
||
+--- grub-core/gnulib/regcomp.c 2010-09-20 10:35:33 +0000
|
||
++++ grub-core/gnulib/regcomp.c 2012-03-10 11:31:42 +0000
|
||
+@@ -549,13 +549,9 @@ regerror (int errcode, const regex_t *_R
|
||
+ if (BE (errcode < 0
|
||
+ || errcode >= (int) (sizeof (__re_error_msgid_idx)
|
||
+ / sizeof (__re_error_msgid_idx[0])), 0))
|
||
+- /* Only error codes returned by the rest of the code should be passed
|
||
+- to this routine. If we are given anything else, or if other regex
|
||
+- code generates an invalid error code, then the program has a bug.
|
||
+- Dump core so we can fix it. */
|
||
+- abort ();
|
||
+-
|
||
+- msg = gettext (__re_error_msgid + __re_error_msgid_idx[errcode]);
|
||
++ msg = gettext ("unknown regexp error");
|
||
++ else
|
||
++ msg = gettext (__re_error_msgid + __re_error_msgid_idx[errcode]);
|
||
+
|
||
+ msg_size = strlen (msg) + 1; /* Includes the null. */
|
||
+
|
||
+@@ -1119,7 +1119,7 @@
|
||
+ }
|
||
+ break;
|
||
+ default:
|
||
+- abort ();
|
||
++ break;
|
||
+ }
|
||
+
|
||
+ if (mb_chars || has_period)
|
||
+
|
||
diff --git a/grub-core/gnulib-no-gets.diff b/grub-core/gnulib-no-gets.diff
|
||
new file mode 100644
|
||
index 0000000..1a9487e
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib-no-gets.diff
|
||
@@ -0,0 +1,10 @@
|
||
+--- /tmp/x.diff 2013-04-11 16:51:42.777873536 +0200
|
||
++++ grub-core/gnulib/stdio.in.h 2013-04-11 16:51:49.917873298 +0200
|
||
+@@ -700,7 +700,6 @@
|
||
+ removed it. */
|
||
+ #undef gets
|
||
+ #if HAVE_RAW_DECL_GETS
|
||
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
|
||
+ #endif
|
||
+
|
||
+
|
||
diff --git a/grub-core/gnulib/Makefile.am b/grub-core/gnulib/Makefile.am
|
||
index fb1525f..3444397 100644
|
||
--- a/grub-core/gnulib/Makefile.am
|
||
+++ b/grub-core/gnulib/Makefile.am
|
||
@@ -1,17 +1,29 @@
|
||
## DO NOT EDIT! GENERATED AUTOMATICALLY!
|
||
## Process this file with automake to produce Makefile.in.
|
||
-# Copyright (C) 2002-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||
#
|
||
-# This file is free software, distributed under the terms of the GNU
|
||
-# General Public License. As a special exception to the GNU General
|
||
-# Public License, this file may be distributed as part of a program
|
||
-# that contains a configuration script generated by Autoconf, under
|
||
+# This file is free software; you can redistribute it and/or modify
|
||
+# it under the terms of the GNU General Public License as published by
|
||
+# the Free Software Foundation; either version 3 of the License, or
|
||
+# (at your option) any later version.
|
||
+#
|
||
+# This file is distributed in the hope that it will be useful,
|
||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+# GNU General Public License for more details.
|
||
+#
|
||
+# You should have received a copy of the GNU General Public License
|
||
+# along with this file. If not, see <http://www.gnu.org/licenses/>.
|
||
+#
|
||
+# As a special exception to the GNU General Public License,
|
||
+# this file may be distributed as part of a program that
|
||
+# contains a configuration script generated by Autoconf, under
|
||
# the same distribution terms as the rest of that program.
|
||
#
|
||
# Generated by gnulib-tool.
|
||
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=grub-core/gnulib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=gl --no-vc-files argp error fnmatch getdelim getline gettext progname regex
|
||
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=grub-core/gnulib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files argp error fnmatch getdelim getline gettext progname regex
|
||
|
||
-AUTOMAKE_OPTIONS = 1.5 gnits
|
||
+AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
|
||
|
||
SUBDIRS =
|
||
noinst_HEADERS =
|
||
@@ -39,12 +51,12 @@ EXTRA_libgnu_a_SOURCES =
|
||
## begin gnulib module alloca
|
||
|
||
|
||
+libgnu_a_LIBADD += @ALLOCA@
|
||
+libgnu_a_DEPENDENCIES += @ALLOCA@
|
||
EXTRA_DIST += alloca.c
|
||
|
||
EXTRA_libgnu_a_SOURCES += alloca.c
|
||
|
||
-libgnu_a_LIBADD += @ALLOCA@
|
||
-libgnu_a_DEPENDENCIES += @ALLOCA@
|
||
## end gnulib module alloca
|
||
|
||
## begin gnulib module alloca-opt
|
||
@@ -53,42 +65,23 @@ BUILT_SOURCES += $(ALLOCA_H)
|
||
|
||
# We need the following in order to create <alloca.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-alloca.h: alloca.in.h
|
||
+if GL_GENERATE_ALLOCA_H
|
||
+alloca.h: alloca.in.h $(top_builddir)/config.status
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
cat $(srcdir)/alloca.in.h; \
|
||
} > $@-t && \
|
||
mv -f $@-t $@
|
||
+else
|
||
+alloca.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
MOSTLYCLEANFILES += alloca.h alloca.h-t
|
||
|
||
EXTRA_DIST += alloca.in.h
|
||
|
||
## end gnulib module alloca-opt
|
||
|
||
-## begin gnulib module arg-nonnull
|
||
-
|
||
-# The BUILT_SOURCES created by this Makefile snippet are not used via #include
|
||
-# statements but through direct file reference. Therefore this snippet must be
|
||
-# present in all Makefile.am that need it. This is ensured by the applicability
|
||
-# 'all' defined above.
|
||
-
|
||
-BUILT_SOURCES += arg-nonnull.h
|
||
-# The arg-nonnull.h that gets inserted into generated .h files is the same as
|
||
-# build-aux/arg-nonnull.h, except that it has the copyright header cut off.
|
||
-arg-nonnull.h: $(top_srcdir)/build-aux/arg-nonnull.h
|
||
- $(AM_V_GEN)rm -f $@-t $@ && \
|
||
- sed -n -e '/GL_ARG_NONNULL/,$$p' \
|
||
- < $(top_srcdir)/build-aux/arg-nonnull.h \
|
||
- > $@-t && \
|
||
- mv $@-t $@
|
||
-MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t
|
||
-
|
||
-ARG_NONNULL_H=arg-nonnull.h
|
||
-
|
||
-EXTRA_DIST += $(top_srcdir)/build-aux/arg-nonnull.h
|
||
-
|
||
-## end gnulib module arg-nonnull
|
||
-
|
||
## begin gnulib module argp
|
||
|
||
libgnu_a_SOURCES += argp.h argp-ba.c argp-eexst.c \
|
||
@@ -107,47 +100,10 @@ EXTRA_libgnu_a_SOURCES += btowc.c
|
||
|
||
## end gnulib module btowc
|
||
|
||
-## begin gnulib module c++defs
|
||
-
|
||
-# The BUILT_SOURCES created by this Makefile snippet are not used via #include
|
||
-# statements but through direct file reference. Therefore this snippet must be
|
||
-# present in all Makefile.am that need it. This is ensured by the applicability
|
||
-# 'all' defined above.
|
||
-
|
||
-BUILT_SOURCES += c++defs.h
|
||
-# The c++defs.h that gets inserted into generated .h files is the same as
|
||
-# build-aux/c++defs.h, except that it has the copyright header cut off.
|
||
-c++defs.h: $(top_srcdir)/build-aux/c++defs.h
|
||
- $(AM_V_GEN)rm -f $@-t $@ && \
|
||
- sed -n -e '/_GL_CXXDEFS/,$$p' \
|
||
- < $(top_srcdir)/build-aux/c++defs.h \
|
||
- > $@-t && \
|
||
- mv $@-t $@
|
||
-MOSTLYCLEANFILES += c++defs.h c++defs.h-t
|
||
-
|
||
-CXXDEFS_H=c++defs.h
|
||
-
|
||
-EXTRA_DIST += $(top_srcdir)/build-aux/c++defs.h
|
||
-
|
||
-## end gnulib module c++defs
|
||
-
|
||
## begin gnulib module configmake
|
||
|
||
-# Retrieve values of the variables through 'configure' followed by
|
||
-# 'make', not directly through 'configure', so that a user who
|
||
-# sets some of these variables consistently on the 'make' command
|
||
-# line gets correct results.
|
||
-#
|
||
-# One advantage of this approach, compared to the classical
|
||
-# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
|
||
-# is that it protects against the use of undefined variables.
|
||
-# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
|
||
-# defined by this module, and code using LIBDIR gives a
|
||
-# compilation error.
|
||
-#
|
||
-# Another advantage is that 'make' output is shorter.
|
||
-#
|
||
-# Listed in the same order as the GNU makefile conventions.
|
||
+# Listed in the same order as the GNU makefile conventions, and
|
||
+# provided by autoconf 2.59c+.
|
||
# The Automake-defined pkg* macros are appended, in the order
|
||
# listed in the Automake 1.10a+ documentation.
|
||
configmake.h: Makefile
|
||
@@ -181,11 +137,7 @@ configmake.h: Makefile
|
||
echo '#define PKGLIBDIR "$(pkglibdir)"'; \
|
||
echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
|
||
} | sed '/""/d' > $@-t && \
|
||
- if test -f $@ && cmp $@-t $@ > /dev/null; then \
|
||
- rm -f $@-t; \
|
||
- else \
|
||
- rm -f $@; mv $@-t $@; \
|
||
- fi
|
||
+ mv -f $@-t $@
|
||
|
||
BUILT_SOURCES += configmake.h
|
||
CLEANFILES += configmake.h configmake.h-t
|
||
@@ -194,24 +146,33 @@ CLEANFILES += configmake.h configmake.h-t
|
||
|
||
## begin gnulib module dirname-lgpl
|
||
|
||
+libgnu_a_SOURCES += dirname-lgpl.c basename-lgpl.c stripslash.c
|
||
|
||
-EXTRA_DIST += basename-lgpl.c dirname-lgpl.c dirname.h stripslash.c
|
||
-
|
||
-EXTRA_libgnu_a_SOURCES += basename-lgpl.c dirname-lgpl.c stripslash.c
|
||
+EXTRA_DIST += dirname.h
|
||
|
||
## end gnulib module dirname-lgpl
|
||
|
||
+## begin gnulib module dosname
|
||
+
|
||
+
|
||
+EXTRA_DIST += dosname.h
|
||
+
|
||
+## end gnulib module dosname
|
||
+
|
||
## begin gnulib module errno
|
||
|
||
BUILT_SOURCES += $(ERRNO_H)
|
||
|
||
# We need the following in order to create <errno.h> when the system
|
||
# doesn't have one that is POSIX compliant.
|
||
-errno.h: errno.in.h
|
||
+if GL_GENERATE_ERRNO_H
|
||
+errno.h: errno.in.h $(top_builddir)/config.status
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
|
||
-e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
|
||
-e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
|
||
@@ -222,6 +183,10 @@ errno.h: errno.in.h
|
||
< $(srcdir)/errno.in.h; \
|
||
} > $@-t && \
|
||
mv $@-t $@
|
||
+else
|
||
+errno.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
MOSTLYCLEANFILES += errno.h errno.h-t
|
||
|
||
EXTRA_DIST += errno.in.h
|
||
@@ -243,18 +208,28 @@ BUILT_SOURCES += $(FLOAT_H)
|
||
|
||
# We need the following in order to create <float.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-float.h: float.in.h
|
||
+if GL_GENERATE_FLOAT_H
|
||
+float.h: float.in.h $(top_builddir)/config.status
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
|
||
+ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
|
||
< $(srcdir)/float.in.h; \
|
||
} > $@-t && \
|
||
mv $@-t $@
|
||
+else
|
||
+float.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
MOSTLYCLEANFILES += float.h float.h-t
|
||
|
||
-EXTRA_DIST += float.in.h
|
||
+EXTRA_DIST += float.c float.in.h itold.c
|
||
+
|
||
+EXTRA_libgnu_a_SOURCES += float.c itold.c
|
||
|
||
## end gnulib module float
|
||
|
||
@@ -264,13 +239,18 @@ BUILT_SOURCES += $(FNMATCH_H)
|
||
|
||
# We need the following in order to create <fnmatch.h> when the system
|
||
# doesn't have one that supports the required API.
|
||
-fnmatch.h: fnmatch.in.h $(ARG_NONNULL_H)
|
||
+if GL_GENERATE_FNMATCH_H
|
||
+fnmatch.h: fnmatch.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
sed -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
|
||
< $(srcdir)/fnmatch.in.h; \
|
||
} > $@-t && \
|
||
mv -f $@-t $@
|
||
+else
|
||
+fnmatch.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
MOSTLYCLEANFILES += fnmatch.h fnmatch.h-t
|
||
|
||
EXTRA_DIST += fnmatch.c fnmatch.in.h fnmatch_loop.c
|
||
@@ -303,12 +283,14 @@ BUILT_SOURCES += $(GETOPT_H)
|
||
|
||
# We need the following in order to create <getopt.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-getopt.h: getopt.in.h $(ARG_NONNULL_H)
|
||
+getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
- sed -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
|
||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
|
||
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
|
||
< $(srcdir)/getopt.in.h; \
|
||
@@ -364,14 +346,16 @@ BUILT_SOURCES += langinfo.h
|
||
|
||
# We need the following in order to create an empty placeholder for
|
||
# <langinfo.h> when the system doesn't have one.
|
||
-langinfo.h: langinfo.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
|
||
+langinfo.h: langinfo.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
- sed -e 's|@''HAVE_LANGINFO_H''@|$(HAVE_LANGINFO_H)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''HAVE_LANGINFO_H''@|$(HAVE_LANGINFO_H)|g' \
|
||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_LANGINFO_H''@|$(NEXT_LANGINFO_H)|g' \
|
||
- -e 's|@''GNULIB_NL_LANGINFO''@|$(GNULIB_NL_LANGINFO)|g' \
|
||
+ -e 's/@''GNULIB_NL_LANGINFO''@/$(GNULIB_NL_LANGINFO)/g' \
|
||
-e 's|@''HAVE_LANGINFO_CODESET''@|$(HAVE_LANGINFO_CODESET)|g' \
|
||
-e 's|@''HAVE_LANGINFO_T_FMT_AMPM''@|$(HAVE_LANGINFO_T_FMT_AMPM)|g' \
|
||
-e 's|@''HAVE_LANGINFO_ERA''@|$(HAVE_LANGINFO_ERA)|g' \
|
||
@@ -463,6 +447,50 @@ EXTRA_DIST += config.charset ref-add.sin ref-del.sin
|
||
|
||
## end gnulib module localcharset
|
||
|
||
+## begin gnulib module locale
|
||
+
|
||
+BUILT_SOURCES += locale.h
|
||
+
|
||
+# We need the following in order to create <locale.h> when the system
|
||
+# doesn't have one that provides all definitions.
|
||
+locale.h: locale.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
+ $(AM_V_GEN)rm -f $@-t $@ && \
|
||
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
+ -e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \
|
||
+ -e 's/@''GNULIB_LOCALECONV''@/$(GNULIB_LOCALECONV)/g' \
|
||
+ -e 's/@''GNULIB_SETLOCALE''@/$(GNULIB_SETLOCALE)/g' \
|
||
+ -e 's/@''GNULIB_DUPLOCALE''@/$(GNULIB_DUPLOCALE)/g' \
|
||
+ -e 's|@''HAVE_DUPLOCALE''@|$(HAVE_DUPLOCALE)|g' \
|
||
+ -e 's|@''HAVE_XLOCALE_H''@|$(HAVE_XLOCALE_H)|g' \
|
||
+ -e 's|@''REPLACE_LOCALECONV''@|$(REPLACE_LOCALECONV)|g' \
|
||
+ -e 's|@''REPLACE_SETLOCALE''@|$(REPLACE_SETLOCALE)|g' \
|
||
+ -e 's|@''REPLACE_DUPLOCALE''@|$(REPLACE_DUPLOCALE)|g' \
|
||
+ -e 's|@''REPLACE_STRUCT_LCONV''@|$(REPLACE_STRUCT_LCONV)|g' \
|
||
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
|
||
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
|
||
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
|
||
+ < $(srcdir)/locale.in.h; \
|
||
+ } > $@-t && \
|
||
+ mv $@-t $@
|
||
+MOSTLYCLEANFILES += locale.h locale.h-t
|
||
+
|
||
+EXTRA_DIST += locale.in.h
|
||
+
|
||
+## end gnulib module locale
|
||
+
|
||
+## begin gnulib module localeconv
|
||
+
|
||
+
|
||
+EXTRA_DIST += localeconv.c
|
||
+
|
||
+EXTRA_libgnu_a_SOURCES += localeconv.c
|
||
+
|
||
+## end gnulib module localeconv
|
||
+
|
||
## begin gnulib module malloc-gnu
|
||
|
||
|
||
@@ -502,12 +530,27 @@ EXTRA_libgnu_a_SOURCES += mbsinit.c
|
||
## begin gnulib module mbsrtowcs
|
||
|
||
|
||
-EXTRA_DIST += mbsrtowcs-state.c mbsrtowcs.c
|
||
+EXTRA_DIST += mbsrtowcs-impl.h mbsrtowcs-state.c mbsrtowcs.c
|
||
|
||
EXTRA_libgnu_a_SOURCES += mbsrtowcs-state.c mbsrtowcs.c
|
||
|
||
## end gnulib module mbsrtowcs
|
||
|
||
+## begin gnulib module mbswidth
|
||
+
|
||
+libgnu_a_SOURCES += mbswidth.h mbswidth.c
|
||
+
|
||
+## end gnulib module mbswidth
|
||
+
|
||
+## begin gnulib module mbtowc
|
||
+
|
||
+
|
||
+EXTRA_DIST += mbtowc-impl.h mbtowc.c
|
||
+
|
||
+EXTRA_libgnu_a_SOURCES += mbtowc.c
|
||
+
|
||
+## end gnulib module mbtowc
|
||
+
|
||
## begin gnulib module memchr
|
||
|
||
|
||
@@ -526,6 +569,24 @@ EXTRA_libgnu_a_SOURCES += mempcpy.c
|
||
|
||
## end gnulib module mempcpy
|
||
|
||
+## begin gnulib module msvc-inval
|
||
+
|
||
+
|
||
+EXTRA_DIST += msvc-inval.c msvc-inval.h
|
||
+
|
||
+EXTRA_libgnu_a_SOURCES += msvc-inval.c
|
||
+
|
||
+## end gnulib module msvc-inval
|
||
+
|
||
+## begin gnulib module msvc-nothrow
|
||
+
|
||
+
|
||
+EXTRA_DIST += msvc-nothrow.c msvc-nothrow.h
|
||
+
|
||
+EXTRA_libgnu_a_SOURCES += msvc-nothrow.c
|
||
+
|
||
+## end gnulib module msvc-nothrow
|
||
+
|
||
## begin gnulib module nl_langinfo
|
||
|
||
|
||
@@ -583,18 +644,127 @@ EXTRA_libgnu_a_SOURCES += sleep.c
|
||
|
||
## end gnulib module sleep
|
||
|
||
+## begin gnulib module snippet/_Noreturn
|
||
+
|
||
+# Because this Makefile snippet defines a variable used by other
|
||
+# gnulib Makefile snippets, it must be present in all Makefile.am that
|
||
+# need it. This is ensured by the applicability 'all' defined above.
|
||
+
|
||
+_NORETURN_H=$(top_srcdir)/build-aux/snippet/_Noreturn.h
|
||
+
|
||
+EXTRA_DIST += $(top_srcdir)/build-aux/snippet/_Noreturn.h
|
||
+
|
||
+## end gnulib module snippet/_Noreturn
|
||
+
|
||
+## begin gnulib module snippet/arg-nonnull
|
||
+
|
||
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
|
||
+# statements but through direct file reference. Therefore this snippet must be
|
||
+# present in all Makefile.am that need it. This is ensured by the applicability
|
||
+# 'all' defined above.
|
||
+
|
||
+BUILT_SOURCES += arg-nonnull.h
|
||
+# The arg-nonnull.h that gets inserted into generated .h files is the same as
|
||
+# build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut
|
||
+# off.
|
||
+arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h
|
||
+ $(AM_V_GEN)rm -f $@-t $@ && \
|
||
+ sed -n -e '/GL_ARG_NONNULL/,$$p' \
|
||
+ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
|
||
+ > $@-t && \
|
||
+ mv $@-t $@
|
||
+MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t
|
||
+
|
||
+ARG_NONNULL_H=arg-nonnull.h
|
||
+
|
||
+EXTRA_DIST += $(top_srcdir)/build-aux/snippet/arg-nonnull.h
|
||
+
|
||
+## end gnulib module snippet/arg-nonnull
|
||
+
|
||
+## begin gnulib module snippet/c++defs
|
||
+
|
||
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
|
||
+# statements but through direct file reference. Therefore this snippet must be
|
||
+# present in all Makefile.am that need it. This is ensured by the applicability
|
||
+# 'all' defined above.
|
||
+
|
||
+BUILT_SOURCES += c++defs.h
|
||
+# The c++defs.h that gets inserted into generated .h files is the same as
|
||
+# build-aux/snippet/c++defs.h, except that it has the copyright header cut off.
|
||
+c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h
|
||
+ $(AM_V_GEN)rm -f $@-t $@ && \
|
||
+ sed -n -e '/_GL_CXXDEFS/,$$p' \
|
||
+ < $(top_srcdir)/build-aux/snippet/c++defs.h \
|
||
+ > $@-t && \
|
||
+ mv $@-t $@
|
||
+MOSTLYCLEANFILES += c++defs.h c++defs.h-t
|
||
+
|
||
+CXXDEFS_H=c++defs.h
|
||
+
|
||
+EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h
|
||
+
|
||
+## end gnulib module snippet/c++defs
|
||
+
|
||
+## begin gnulib module snippet/warn-on-use
|
||
+
|
||
+BUILT_SOURCES += warn-on-use.h
|
||
+# The warn-on-use.h that gets inserted into generated .h files is the same as
|
||
+# build-aux/snippet/warn-on-use.h, except that it has the copyright header cut
|
||
+# off.
|
||
+warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h
|
||
+ $(AM_V_GEN)rm -f $@-t $@ && \
|
||
+ sed -n -e '/^.ifndef/,$$p' \
|
||
+ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \
|
||
+ > $@-t && \
|
||
+ mv $@-t $@
|
||
+MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t
|
||
+
|
||
+WARN_ON_USE_H=warn-on-use.h
|
||
+
|
||
+EXTRA_DIST += $(top_srcdir)/build-aux/snippet/warn-on-use.h
|
||
+
|
||
+## end gnulib module snippet/warn-on-use
|
||
+
|
||
+## begin gnulib module stdalign
|
||
+
|
||
+BUILT_SOURCES += $(STDALIGN_H)
|
||
+
|
||
+# We need the following in order to create <stdalign.h> when the system
|
||
+# doesn't have one that works.
|
||
+if GL_GENERATE_STDALIGN_H
|
||
+stdalign.h: stdalign.in.h $(top_builddir)/config.status
|
||
+ $(AM_V_GEN)rm -f $@-t $@ && \
|
||
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
+ cat $(srcdir)/stdalign.in.h; \
|
||
+ } > $@-t && \
|
||
+ mv $@-t $@
|
||
+else
|
||
+stdalign.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
+MOSTLYCLEANFILES += stdalign.h stdalign.h-t
|
||
+
|
||
+EXTRA_DIST += stdalign.in.h
|
||
+
|
||
+## end gnulib module stdalign
|
||
+
|
||
## begin gnulib module stdbool
|
||
|
||
BUILT_SOURCES += $(STDBOOL_H)
|
||
|
||
# We need the following in order to create <stdbool.h> when the system
|
||
# doesn't have one that works.
|
||
-stdbool.h: stdbool.in.h
|
||
+if GL_GENERATE_STDBOOL_H
|
||
+stdbool.h: stdbool.in.h $(top_builddir)/config.status
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
|
||
} > $@-t && \
|
||
mv $@-t $@
|
||
+else
|
||
+stdbool.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
MOSTLYCLEANFILES += stdbool.h stdbool.h-t
|
||
|
||
EXTRA_DIST += stdbool.in.h
|
||
@@ -607,17 +777,24 @@ BUILT_SOURCES += $(STDDEF_H)
|
||
|
||
# We need the following in order to create <stddef.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-stddef.h: stddef.in.h
|
||
+if GL_GENERATE_STDDEF_H
|
||
+stddef.h: stddef.in.h $(top_builddir)/config.status
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
|
||
-e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
|
||
-e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
|
||
< $(srcdir)/stddef.in.h; \
|
||
} > $@-t && \
|
||
mv $@-t $@
|
||
+else
|
||
+stddef.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
MOSTLYCLEANFILES += stddef.h stddef.h-t
|
||
|
||
EXTRA_DIST += stddef.in.h
|
||
@@ -630,17 +807,21 @@ BUILT_SOURCES += $(STDINT_H)
|
||
|
||
# We need the following in order to create <stdint.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-stdint.h: stdint.in.h
|
||
+if GL_GENERATE_STDINT_H
|
||
+stdint.h: stdint.in.h $(top_builddir)/config.status
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
- sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
|
||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
|
||
-e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
|
||
-e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
|
||
-e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
|
||
-e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
|
||
+ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
|
||
-e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
|
||
-e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
|
||
-e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
|
||
@@ -660,6 +841,10 @@ stdint.h: stdint.in.h
|
||
< $(srcdir)/stdint.in.h; \
|
||
} > $@-t && \
|
||
mv $@-t $@
|
||
+else
|
||
+stdint.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
MOSTLYCLEANFILES += stdint.h stdint.h-t
|
||
|
||
EXTRA_DIST += stdint.in.h
|
||
@@ -672,55 +857,71 @@ BUILT_SOURCES += stdio.h
|
||
|
||
# We need the following in order to create <stdio.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
+stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
|
||
- -e 's|@''GNULIB_DPRINTF''@|$(GNULIB_DPRINTF)|g' \
|
||
- -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
|
||
- -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
|
||
- -e 's|@''GNULIB_FOPEN''@|$(GNULIB_FOPEN)|g' \
|
||
- -e 's|@''GNULIB_FPRINTF''@|$(GNULIB_FPRINTF)|g' \
|
||
- -e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
|
||
- -e 's|@''GNULIB_FPURGE''@|$(GNULIB_FPURGE)|g' \
|
||
- -e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
|
||
- -e 's|@''GNULIB_FPUTS''@|$(GNULIB_FPUTS)|g' \
|
||
- -e 's|@''GNULIB_FREOPEN''@|$(GNULIB_FREOPEN)|g' \
|
||
- -e 's|@''GNULIB_FSEEK''@|$(GNULIB_FSEEK)|g' \
|
||
- -e 's|@''GNULIB_FSEEKO''@|$(GNULIB_FSEEKO)|g' \
|
||
- -e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
|
||
- -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
|
||
- -e 's|@''GNULIB_FWRITE''@|$(GNULIB_FWRITE)|g' \
|
||
- -e 's|@''GNULIB_GETDELIM''@|$(GNULIB_GETDELIM)|g' \
|
||
- -e 's|@''GNULIB_GETLINE''@|$(GNULIB_GETLINE)|g' \
|
||
- -e 's|@''GNULIB_OBSTACK_PRINTF''@|$(GNULIB_OBSTACK_PRINTF)|g' \
|
||
- -e 's|@''GNULIB_OBSTACK_PRINTF_POSIX''@|$(GNULIB_OBSTACK_PRINTF_POSIX)|g' \
|
||
- -e 's|@''GNULIB_PERROR''@|$(GNULIB_PERROR)|g' \
|
||
- -e 's|@''GNULIB_POPEN''@|$(GNULIB_POPEN)|g' \
|
||
- -e 's|@''GNULIB_PRINTF''@|$(GNULIB_PRINTF)|g' \
|
||
- -e 's|@''GNULIB_PRINTF_POSIX''@|$(GNULIB_PRINTF_POSIX)|g' \
|
||
- -e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \
|
||
- -e 's|@''GNULIB_PUTCHAR''@|$(GNULIB_PUTCHAR)|g' \
|
||
- -e 's|@''GNULIB_PUTS''@|$(GNULIB_PUTS)|g' \
|
||
- -e 's|@''GNULIB_REMOVE''@|$(GNULIB_REMOVE)|g' \
|
||
- -e 's|@''GNULIB_RENAME''@|$(GNULIB_RENAME)|g' \
|
||
- -e 's|@''GNULIB_RENAMEAT''@|$(GNULIB_RENAMEAT)|g' \
|
||
- -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
|
||
- -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
|
||
- -e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
|
||
- -e 's|@''GNULIB_TMPFILE''@|$(GNULIB_TMPFILE)|g' \
|
||
- -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
|
||
- -e 's|@''GNULIB_VDPRINTF''@|$(GNULIB_VDPRINTF)|g' \
|
||
- -e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
|
||
- -e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
|
||
- -e 's|@''GNULIB_VPRINTF''@|$(GNULIB_VPRINTF)|g' \
|
||
- -e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
|
||
- -e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
|
||
- -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
|
||
+ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \
|
||
+ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \
|
||
+ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \
|
||
+ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \
|
||
+ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \
|
||
+ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \
|
||
+ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \
|
||
+ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \
|
||
+ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \
|
||
+ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \
|
||
+ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \
|
||
+ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \
|
||
+ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \
|
||
+ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \
|
||
+ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \
|
||
+ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \
|
||
+ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \
|
||
+ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \
|
||
+ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \
|
||
+ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \
|
||
+ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \
|
||
+ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \
|
||
+ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \
|
||
+ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
|
||
+ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
|
||
+ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \
|
||
+ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \
|
||
+ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \
|
||
+ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \
|
||
+ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \
|
||
+ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \
|
||
+ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \
|
||
+ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \
|
||
+ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \
|
||
+ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \
|
||
+ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \
|
||
+ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \
|
||
+ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \
|
||
+ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \
|
||
+ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \
|
||
+ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \
|
||
+ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \
|
||
+ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \
|
||
+ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \
|
||
+ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \
|
||
+ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \
|
||
+ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \
|
||
< $(srcdir)/stdio.in.h | \
|
||
sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
|
||
+ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
|
||
+ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
|
||
-e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
|
||
-e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
|
||
-e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
|
||
@@ -729,11 +930,14 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
-e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
|
||
-e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
|
||
-e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
|
||
+ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \
|
||
+ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \
|
||
-e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
|
||
-e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
|
||
-e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
|
||
-e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
|
||
-e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
|
||
+ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
|
||
-e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
|
||
-e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
|
||
-e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
|
||
@@ -754,6 +958,7 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
-e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \
|
||
-e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
|
||
-e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
|
||
+ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \
|
||
-e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
|
||
-e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
|
||
-e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
|
||
@@ -770,9 +975,7 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
mv $@-t $@
|
||
MOSTLYCLEANFILES += stdio.h stdio.h-t
|
||
|
||
-EXTRA_DIST += stdio-write.c stdio.in.h
|
||
-
|
||
-EXTRA_libgnu_a_SOURCES += stdio-write.c
|
||
+EXTRA_DIST += stdio.in.h
|
||
|
||
## end gnulib module stdio
|
||
|
||
@@ -782,38 +985,49 @@ BUILT_SOURCES += stdlib.h
|
||
|
||
# We need the following in order to create <stdlib.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
+stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
|
||
+ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
|
||
- -e 's|@''GNULIB__EXIT''@|$(GNULIB__EXIT)|g' \
|
||
- -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
|
||
- -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
|
||
- -e 's|@''GNULIB_CANONICALIZE_FILE_NAME''@|$(GNULIB_CANONICALIZE_FILE_NAME)|g' \
|
||
- -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
|
||
- -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
|
||
- -e 's|@''GNULIB_GRANTPT''@|$(GNULIB_GRANTPT)|g' \
|
||
- -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
|
||
- -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
|
||
- -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
|
||
- -e 's|@''GNULIB_MKOSTEMPS''@|$(GNULIB_MKOSTEMPS)|g' \
|
||
- -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
|
||
- -e 's|@''GNULIB_MKSTEMPS''@|$(GNULIB_MKSTEMPS)|g' \
|
||
- -e 's|@''GNULIB_PTSNAME''@|$(GNULIB_PTSNAME)|g' \
|
||
- -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
|
||
- -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
|
||
- -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
|
||
- -e 's|@''GNULIB_REALPATH''@|$(GNULIB_REALPATH)|g' \
|
||
- -e 's|@''GNULIB_RPMATCH''@|$(GNULIB_RPMATCH)|g' \
|
||
- -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \
|
||
- -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
|
||
- -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
|
||
- -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
|
||
- -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
|
||
- -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
|
||
- -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
|
||
+ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \
|
||
+ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \
|
||
+ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \
|
||
+ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \
|
||
+ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \
|
||
+ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \
|
||
+ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \
|
||
+ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \
|
||
+ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \
|
||
+ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
|
||
+ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
|
||
+ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
|
||
+ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
|
||
+ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
|
||
+ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
|
||
+ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
|
||
+ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \
|
||
+ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
|
||
+ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \
|
||
+ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \
|
||
+ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
|
||
+ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
|
||
+ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
|
||
+ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
|
||
+ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \
|
||
+ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \
|
||
+ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \
|
||
+ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \
|
||
+ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \
|
||
+ < $(srcdir)/stdlib.in.h | \
|
||
+ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
|
||
-e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
|
||
-e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
|
||
-e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
|
||
@@ -824,33 +1038,42 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
-e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
|
||
-e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
|
||
-e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
|
||
+ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \
|
||
-e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
|
||
+ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \
|
||
+ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \
|
||
-e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
|
||
-e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
|
||
-e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
|
||
-e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
|
||
- -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \
|
||
+ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \
|
||
+ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
|
||
-e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
|
||
-e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
|
||
-e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
|
||
-e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
|
||
-e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
|
||
-e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
|
||
- -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
|
||
+ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
|
||
-e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
|
||
-e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
|
||
-e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
|
||
+ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
|
||
-e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
|
||
+ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \
|
||
+ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
|
||
-e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
|
||
+ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
|
||
-e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
|
||
-e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
|
||
-e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
|
||
-e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
|
||
-e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
|
||
+ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
|
||
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
|
||
+ -e '/definition of _Noreturn/r $(_NORETURN_H)' \
|
||
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
|
||
- -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
|
||
- < $(srcdir)/stdlib.in.h; \
|
||
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
|
||
} > $@-t && \
|
||
mv $@-t $@
|
||
MOSTLYCLEANFILES += stdlib.h stdlib.h-t
|
||
@@ -893,54 +1116,70 @@ EXTRA_libgnu_a_SOURCES += strerror.c
|
||
|
||
## end gnulib module strerror
|
||
|
||
+## begin gnulib module strerror-override
|
||
+
|
||
+
|
||
+EXTRA_DIST += strerror-override.c strerror-override.h
|
||
+
|
||
+EXTRA_libgnu_a_SOURCES += strerror-override.c
|
||
+
|
||
+## end gnulib module strerror-override
|
||
+
|
||
## begin gnulib module string
|
||
|
||
BUILT_SOURCES += string.h
|
||
|
||
# We need the following in order to create <string.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
+string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
|
||
- -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
|
||
- -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
|
||
- -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
|
||
- -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
|
||
- -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
|
||
- -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
|
||
- -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
|
||
- -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
|
||
- -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
|
||
- -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
|
||
- -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
|
||
- -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
|
||
- -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
|
||
- -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
|
||
- -e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
|
||
- -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
|
||
- -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
|
||
- -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
|
||
- -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
|
||
- -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
|
||
- -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
|
||
- -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
|
||
- -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
|
||
- -e 's|@''GNULIB_STRNCAT''@|$(GNULIB_STRNCAT)|g' \
|
||
- -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
|
||
- -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
|
||
- -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
|
||
- -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
|
||
- -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
|
||
- -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
|
||
- -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
|
||
- -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
|
||
- -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
|
||
- -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
|
||
+ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
|
||
+ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
|
||
+ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
|
||
+ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
|
||
+ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
|
||
+ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
|
||
+ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
|
||
+ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
|
||
+ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
|
||
+ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
|
||
+ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
|
||
+ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
|
||
+ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
|
||
+ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
|
||
+ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
|
||
+ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
|
||
+ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
|
||
+ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
|
||
+ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
|
||
+ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
|
||
+ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
|
||
+ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
|
||
+ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
|
||
+ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
|
||
+ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
|
||
+ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
|
||
+ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
|
||
+ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
|
||
+ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
|
||
+ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
|
||
+ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
|
||
+ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
|
||
+ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
|
||
+ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
|
||
+ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
|
||
+ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
|
||
+ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
|
||
< $(srcdir)/string.in.h | \
|
||
- sed -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
|
||
+ sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
|
||
+ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
|
||
+ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
|
||
-e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
|
||
-e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
|
||
-e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
|
||
@@ -956,15 +1195,18 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
-e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
|
||
-e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
|
||
-e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
|
||
+ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
|
||
-e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
|
||
-e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
|
||
-e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
|
||
-e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
|
||
-e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
|
||
-e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
|
||
+ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
|
||
-e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
|
||
-e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
|
||
-e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
|
||
+ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
|
||
-e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
|
||
-e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
|
||
-e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
|
||
@@ -989,14 +1231,20 @@ BUILT_SOURCES += strings.h
|
||
|
||
# We need the following in order to create <strings.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-strings.h: strings.in.h $(WARN_ON_USE_H) $(ARG_NONNULL_H)
|
||
+strings.h: strings.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''HAVE_STRINGS_H''@|$(HAVE_STRINGS_H)|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
|
||
+ -e 's|@''GNULIB_FFS''@|$(GNULIB_FFS)|g' \
|
||
+ -e 's|@''HAVE_FFS''@|$(HAVE_FFS)|g' \
|
||
-e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
|
||
-e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
|
||
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
|
||
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
|
||
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
|
||
< $(srcdir)/strings.in.h; \
|
||
@@ -1032,28 +1280,30 @@ libgnu_a_SOURCES += strnlen1.h strnlen1.c
|
||
|
||
## end gnulib module strnlen1
|
||
|
||
-## begin gnulib module sys_wait
|
||
+## begin gnulib module sys_types
|
||
|
||
-BUILT_SOURCES += sys/wait.h
|
||
+BUILT_SOURCES += sys/types.h
|
||
|
||
-# We need the following in order to create <sys/wait.h> when the system
|
||
-# has one that is incomplete.
|
||
-sys/wait.h: sys_wait.in.h
|
||
+# We need the following in order to create <sys/types.h> when the system
|
||
+# doesn't have one that works with the given compiler.
|
||
+sys/types.h: sys_types.in.h $(top_builddir)/config.status
|
||
$(AM_V_at)$(MKDIR_P) sys
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
- -e 's|@''NEXT_SYS_WAIT_H''@|$(NEXT_SYS_WAIT_H)|g' \
|
||
- < $(srcdir)/sys_wait.in.h; \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
+ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \
|
||
+ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
|
||
+ < $(srcdir)/sys_types.in.h; \
|
||
} > $@-t && \
|
||
mv $@-t $@
|
||
-MOSTLYCLEANFILES += sys/wait.h sys/wait.h-t
|
||
-MOSTLYCLEANDIRS += sys
|
||
+MOSTLYCLEANFILES += sys/types.h sys/types.h-t
|
||
|
||
-EXTRA_DIST += sys_wait.in.h
|
||
+EXTRA_DIST += sys_types.in.h
|
||
|
||
-## end gnulib module sys_wait
|
||
+## end gnulib module sys_types
|
||
|
||
## begin gnulib module sysexits
|
||
|
||
@@ -1061,16 +1311,23 @@ BUILT_SOURCES += $(SYSEXITS_H)
|
||
|
||
# We need the following in order to create <sysexits.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-sysexits.h: sysexits.in.h
|
||
+if GL_GENERATE_SYSEXITS_H
|
||
+sysexits.h: sysexits.in.h $(top_builddir)/config.status
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
- sed -e 's|@''HAVE_SYSEXITS_H''@|$(HAVE_SYSEXITS_H)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''HAVE_SYSEXITS_H''@|$(HAVE_SYSEXITS_H)|g' \
|
||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_SYSEXITS_H''@|$(NEXT_SYSEXITS_H)|g' \
|
||
< $(srcdir)/sysexits.in.h; \
|
||
} > $@-t && \
|
||
mv -f $@-t $@
|
||
+else
|
||
+sysexits.h: $(top_builddir)/config.status
|
||
+ rm -f $@
|
||
+endif
|
||
MOSTLYCLEANFILES += sysexits.h sysexits.h-t
|
||
|
||
EXTRA_DIST += sysexits.in.h
|
||
@@ -1080,56 +1337,69 @@ EXTRA_DIST += sysexits.in.h
|
||
## begin gnulib module unistd
|
||
|
||
BUILT_SOURCES += unistd.h
|
||
+libgnu_a_SOURCES += unistd.c
|
||
|
||
# We need the following in order to create an empty placeholder for
|
||
# <unistd.h> when the system doesn't have one.
|
||
-unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
+unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
- sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
|
||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
|
||
- -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
|
||
- -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
|
||
- -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
|
||
- -e 's|@''GNULIB_DUP3''@|$(GNULIB_DUP3)|g' \
|
||
- -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
|
||
- -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
|
||
- -e 's|@''GNULIB_FACCESSAT''@|$(GNULIB_FACCESSAT)|g' \
|
||
- -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
|
||
- -e 's|@''GNULIB_FCHOWNAT''@|$(GNULIB_FCHOWNAT)|g' \
|
||
- -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
|
||
- -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
|
||
- -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
|
||
- -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
|
||
- -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
|
||
- -e 's|@''GNULIB_GETGROUPS''@|$(GNULIB_GETGROUPS)|g' \
|
||
- -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
|
||
- -e 's|@''GNULIB_GETLOGIN''@|$(GNULIB_GETLOGIN)|g' \
|
||
- -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
|
||
- -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
|
||
- -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
|
||
- -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
|
||
- -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
|
||
- -e 's|@''GNULIB_LINKAT''@|$(GNULIB_LINKAT)|g' \
|
||
- -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
|
||
- -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
|
||
- -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \
|
||
- -e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \
|
||
- -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
|
||
- -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
|
||
- -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
|
||
- -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
|
||
- -e 's|@''GNULIB_SYMLINK''@|$(GNULIB_SYMLINK)|g' \
|
||
- -e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
|
||
- -e 's|@''GNULIB_TTYNAME_R''@|$(GNULIB_TTYNAME_R)|g' \
|
||
- -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
|
||
- -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
|
||
- -e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
|
||
- -e 's|@''GNULIB_UNLINKAT''@|$(GNULIB_UNLINKAT)|g' \
|
||
- -e 's|@''GNULIB_USLEEP''@|$(GNULIB_USLEEP)|g' \
|
||
- -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
|
||
+ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
|
||
+ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \
|
||
+ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \
|
||
+ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \
|
||
+ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \
|
||
+ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \
|
||
+ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \
|
||
+ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \
|
||
+ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \
|
||
+ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \
|
||
+ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \
|
||
+ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \
|
||
+ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \
|
||
+ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \
|
||
+ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \
|
||
+ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \
|
||
+ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \
|
||
+ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \
|
||
+ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \
|
||
+ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \
|
||
+ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \
|
||
+ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \
|
||
+ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \
|
||
+ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \
|
||
+ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \
|
||
+ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \
|
||
+ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \
|
||
+ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \
|
||
+ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \
|
||
+ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \
|
||
+ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \
|
||
+ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \
|
||
+ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \
|
||
+ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \
|
||
+ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \
|
||
+ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \
|
||
+ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \
|
||
+ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \
|
||
+ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \
|
||
+ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \
|
||
+ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \
|
||
+ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \
|
||
+ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \
|
||
+ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \
|
||
+ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \
|
||
+ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \
|
||
+ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \
|
||
+ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \
|
||
+ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \
|
||
+ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \
|
||
< $(srcdir)/unistd.in.h | \
|
||
sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
|
||
-e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
|
||
@@ -1138,48 +1408,61 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
-e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
|
||
-e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
|
||
-e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
|
||
+ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \
|
||
-e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
|
||
-e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
|
||
- -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \
|
||
-e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
|
||
-e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \
|
||
-e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
|
||
-e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \
|
||
-e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
|
||
+ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \
|
||
-e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
|
||
-e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
|
||
-e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
|
||
+ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \
|
||
-e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
|
||
-e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
|
||
-e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
|
||
-e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
|
||
-e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
|
||
+ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \
|
||
-e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
|
||
-e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
|
||
-e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
|
||
- -e 's|@''HAVE_TTYNAME_R''@|$(HAVE_TTYNAME_R)|g' \
|
||
-e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
|
||
-e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
|
||
-e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
|
||
+ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
|
||
+ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \
|
||
+ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \
|
||
-e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
|
||
-e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
|
||
-e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
|
||
+ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \
|
||
+ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
|
||
-e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
|
||
-e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
|
||
- -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
|
||
+ | \
|
||
+ sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
|
||
-e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
|
||
-e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
|
||
-e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
|
||
-e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
|
||
+ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \
|
||
-e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
|
||
+ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \
|
||
+ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \
|
||
-e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
|
||
-e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
|
||
+ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \
|
||
-e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
|
||
-e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
|
||
-e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
|
||
-e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
|
||
-e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
|
||
-e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
|
||
+ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \
|
||
-e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
|
||
-e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
|
||
-e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
|
||
@@ -1202,6 +1485,48 @@ EXTRA_DIST += unistd.in.h
|
||
|
||
## end gnulib module unistd
|
||
|
||
+## begin gnulib module unitypes
|
||
+
|
||
+BUILT_SOURCES += $(LIBUNISTRING_UNITYPES_H)
|
||
+
|
||
+unitypes.h: unitypes.in.h
|
||
+ $(AM_V_GEN)rm -f $@-t $@ && \
|
||
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
+ cat $(srcdir)/unitypes.in.h; \
|
||
+ } > $@-t && \
|
||
+ mv -f $@-t $@
|
||
+MOSTLYCLEANFILES += unitypes.h unitypes.h-t
|
||
+
|
||
+EXTRA_DIST += unitypes.in.h
|
||
+
|
||
+## end gnulib module unitypes
|
||
+
|
||
+## begin gnulib module uniwidth/base
|
||
+
|
||
+BUILT_SOURCES += $(LIBUNISTRING_UNIWIDTH_H)
|
||
+
|
||
+uniwidth.h: uniwidth.in.h
|
||
+ $(AM_V_GEN)rm -f $@-t $@ && \
|
||
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
+ cat $(srcdir)/uniwidth.in.h; \
|
||
+ } > $@-t && \
|
||
+ mv -f $@-t $@
|
||
+MOSTLYCLEANFILES += uniwidth.h uniwidth.h-t
|
||
+
|
||
+EXTRA_DIST += localcharset.h uniwidth.in.h
|
||
+
|
||
+## end gnulib module uniwidth/base
|
||
+
|
||
+## begin gnulib module uniwidth/width
|
||
+
|
||
+if LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH
|
||
+libgnu_a_SOURCES += uniwidth/width.c
|
||
+endif
|
||
+
|
||
+EXTRA_DIST += uniwidth/cjk.h
|
||
+
|
||
+## end gnulib module uniwidth/width
|
||
+
|
||
## begin gnulib module vasnprintf
|
||
|
||
|
||
@@ -1213,7 +1538,8 @@ EXTRA_libgnu_a_SOURCES += asnprintf.c printf-args.c printf-parse.c vasnprintf.c
|
||
|
||
## begin gnulib module verify
|
||
|
||
-libgnu_a_SOURCES += verify.h
|
||
+
|
||
+EXTRA_DIST += verify.h
|
||
|
||
## end gnulib module verify
|
||
|
||
@@ -1226,50 +1552,63 @@ EXTRA_libgnu_a_SOURCES += vsnprintf.c
|
||
|
||
## end gnulib module vsnprintf
|
||
|
||
-## begin gnulib module warn-on-use
|
||
-
|
||
-BUILT_SOURCES += warn-on-use.h
|
||
-# The warn-on-use.h that gets inserted into generated .h files is the same as
|
||
-# build-aux/warn-on-use.h, except that it has the copyright header cut off.
|
||
-warn-on-use.h: $(top_srcdir)/build-aux/warn-on-use.h
|
||
- $(AM_V_GEN)rm -f $@-t $@ && \
|
||
- sed -n -e '/^.ifndef/,$$p' \
|
||
- < $(top_srcdir)/build-aux/warn-on-use.h \
|
||
- > $@-t && \
|
||
- mv $@-t $@
|
||
-MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t
|
||
-
|
||
-WARN_ON_USE_H=warn-on-use.h
|
||
-
|
||
-EXTRA_DIST += $(top_srcdir)/build-aux/warn-on-use.h
|
||
-
|
||
-## end gnulib module warn-on-use
|
||
-
|
||
## begin gnulib module wchar
|
||
|
||
BUILT_SOURCES += wchar.h
|
||
|
||
# We need the following in order to create <wchar.h> when the system
|
||
# version does not work standalone.
|
||
-wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
+wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
+ -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
|
||
-e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
|
||
-e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
|
||
- -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
|
||
- -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
|
||
- -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
|
||
- -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
|
||
- -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
|
||
- -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
|
||
- -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
|
||
- -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
|
||
- -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
|
||
- -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
|
||
- -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
|
||
- -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
|
||
+ -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
|
||
+ -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
|
||
+ -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
|
||
+ -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
|
||
+ -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
|
||
+ -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
|
||
+ -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
|
||
+ -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
|
||
+ -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
|
||
+ -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
|
||
+ -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
|
||
+ -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
|
||
+ -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
|
||
+ -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
|
||
+ -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
|
||
+ -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
|
||
+ -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
|
||
+ -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
|
||
+ -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
|
||
+ -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
|
||
+ -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
|
||
+ -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
|
||
+ -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
|
||
+ -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
|
||
+ -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
|
||
+ -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
|
||
+ -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
|
||
+ -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
|
||
+ -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
|
||
+ -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
|
||
+ -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
|
||
+ -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
|
||
+ -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
|
||
+ -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
|
||
+ -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
|
||
+ -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
|
||
+ -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
|
||
+ -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
|
||
+ -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
|
||
+ < $(srcdir)/wchar.in.h | \
|
||
+ sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
|
||
-e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
|
||
-e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
|
||
-e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
|
||
@@ -1279,9 +1618,38 @@ wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
-e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
|
||
-e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
|
||
-e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
|
||
+ -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
|
||
+ -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
|
||
+ -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
|
||
+ -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
|
||
+ -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
|
||
+ -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
|
||
+ -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
|
||
+ -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
|
||
+ -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
|
||
+ -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
|
||
+ -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
|
||
+ -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
|
||
+ -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
|
||
+ -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
|
||
+ -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
|
||
+ -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
|
||
+ -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
|
||
+ -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
|
||
+ -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
|
||
+ -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
|
||
+ -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
|
||
+ -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
|
||
+ -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
|
||
+ -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
|
||
+ -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
|
||
+ -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
|
||
+ -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
|
||
+ -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
|
||
-e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
|
||
-e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
|
||
- -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
|
||
+ | \
|
||
+ sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
|
||
-e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
|
||
-e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
|
||
-e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
|
||
@@ -1293,10 +1661,10 @@ wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
||
-e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
|
||
-e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
|
||
-e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
|
||
+ -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
|
||
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
|
||
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
|
||
- -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
|
||
- < $(srcdir)/wchar.in.h; \
|
||
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
|
||
} > $@-t && \
|
||
mv $@-t $@
|
||
MOSTLYCLEANFILES += wchar.h wchar.h-t
|
||
@@ -1314,24 +1682,35 @@ EXTRA_libgnu_a_SOURCES += wcrtomb.c
|
||
|
||
## end gnulib module wcrtomb
|
||
|
||
-## begin gnulib module wctype
|
||
+## begin gnulib module wctype-h
|
||
|
||
BUILT_SOURCES += wctype.h
|
||
+libgnu_a_SOURCES += wctype-h.c
|
||
|
||
# We need the following in order to create <wctype.h> when the system
|
||
# doesn't have one that works with the given compiler.
|
||
-wctype.h: wctype.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
|
||
+wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
|
||
$(AM_V_GEN)rm -f $@-t $@ && \
|
||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||
- sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
|
||
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
|
||
+ -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
|
||
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||
-e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
|
||
+ -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
|
||
+ -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
|
||
+ -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
|
||
+ -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
|
||
+ -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
|
||
-e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
|
||
-e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
|
||
+ -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
|
||
+ -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
|
||
-e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
|
||
-e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
|
||
-e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
|
||
+ -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \
|
||
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
|
||
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
|
||
< $(srcdir)/wctype.in.h; \
|
||
@@ -1341,11 +1720,20 @@ MOSTLYCLEANFILES += wctype.h wctype.h-t
|
||
|
||
EXTRA_DIST += wctype.in.h
|
||
|
||
-## end gnulib module wctype
|
||
+## end gnulib module wctype-h
|
||
+
|
||
+## begin gnulib module wcwidth
|
||
+
|
||
+
|
||
+EXTRA_DIST += wcwidth.c
|
||
+
|
||
+EXTRA_libgnu_a_SOURCES += wcwidth.c
|
||
+
|
||
+## end gnulib module wcwidth
|
||
|
||
## begin gnulib module xsize
|
||
|
||
-libgnu_a_SOURCES += xsize.h
|
||
+libgnu_a_SOURCES += xsize.h xsize.c
|
||
|
||
## end gnulib module xsize
|
||
|
||
diff --git a/grub-core/gnulib/alloca.c b/grub-core/gnulib/alloca.c
|
||
index 75afdb9..ee0f018 100644
|
||
--- a/grub-core/gnulib/alloca.c
|
||
+++ b/grub-core/gnulib/alloca.c
|
||
@@ -93,26 +93,15 @@ long i00afunc ();
|
||
static int stack_dir; /* 1 or -1 once known. */
|
||
# define STACK_DIR stack_dir
|
||
|
||
-static void
|
||
-find_stack_direction (void)
|
||
+static int
|
||
+find_stack_direction (int *addr, int depth)
|
||
{
|
||
- static char *addr = NULL; /* Address of first `dummy', once known. */
|
||
- auto char dummy; /* To get stack address. */
|
||
-
|
||
- if (addr == NULL)
|
||
- { /* Initial entry. */
|
||
- addr = ADDRESS_FUNCTION (dummy);
|
||
-
|
||
- find_stack_direction (); /* Recurse once. */
|
||
- }
|
||
- else
|
||
- {
|
||
- /* Second entry. */
|
||
- if (ADDRESS_FUNCTION (dummy) > addr)
|
||
- stack_dir = 1; /* Stack grew upward. */
|
||
- else
|
||
- stack_dir = -1; /* Stack grew downward. */
|
||
- }
|
||
+ int dir, dummy = 0;
|
||
+ if (! addr)
|
||
+ addr = &dummy;
|
||
+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
|
||
+ dir = depth ? find_stack_direction (addr, depth - 1) : 0;
|
||
+ return dir + dummy;
|
||
}
|
||
|
||
# endif /* STACK_DIRECTION == 0 */
|
||
@@ -155,7 +144,7 @@ alloca (size_t size)
|
||
|
||
# if STACK_DIRECTION == 0
|
||
if (STACK_DIR == 0) /* Unknown growth direction. */
|
||
- find_stack_direction ();
|
||
+ STACK_DIR = find_stack_direction (NULL, (size & 1) + 20);
|
||
# endif
|
||
|
||
/* Reclaim garbage, defined as all alloca'd storage that
|
||
@@ -486,4 +475,4 @@ i00afunc (long address)
|
||
# endif /* CRAY */
|
||
|
||
# endif /* no alloca */
|
||
-#endif /* not GCC version 3 */
|
||
+#endif /* not GCC 2 */
|
||
diff --git a/grub-core/gnulib/alloca.in.h b/grub-core/gnulib/alloca.in.h
|
||
index 44f20b7..72d28ee 100644
|
||
--- a/grub-core/gnulib/alloca.in.h
|
||
+++ b/grub-core/gnulib/alloca.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* Memory allocation on the stack.
|
||
|
||
- Copyright (C) 1995, 1999, 2001-2004, 2006-2010 Free Software Foundation,
|
||
+ Copyright (C) 1995, 1999, 2001-2004, 2006-2013 Free Software Foundation,
|
||
Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify it
|
||
@@ -14,9 +14,9 @@
|
||
General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public
|
||
- License along with this program; if not, write to the Free Software
|
||
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||
- USA. */
|
||
+ License along with this program; if not, see
|
||
+ <http://www.gnu.org/licenses/>.
|
||
+ */
|
||
|
||
/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
|
||
means there is a real alloca function. */
|
||
@@ -44,6 +44,13 @@
|
||
# define alloca _alloca
|
||
# elif defined __DECC && defined __VMS
|
||
# define alloca __ALLOCA
|
||
+# elif defined __TANDEM && defined _TNS_E_TARGET
|
||
+# ifdef __cplusplus
|
||
+extern "C"
|
||
+# endif
|
||
+void *_alloca (unsigned short);
|
||
+# pragma intrinsic (_alloca)
|
||
+# define alloca _alloca
|
||
# else
|
||
# include <stddef.h>
|
||
# ifdef __cplusplus
|
||
diff --git a/grub-core/gnulib/argp-ba.c b/grub-core/gnulib/argp-ba.c
|
||
index 95feabb..5abc9d0 100644
|
||
--- a/grub-core/gnulib/argp-ba.c
|
||
+++ b/grub-core/gnulib/argp-ba.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Default definition for ARGP_PROGRAM_BUG_ADDRESS.
|
||
- Copyright (C) 1996, 1997, 1999, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1996-1997, 1999, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
@@ -19,11 +19,11 @@
|
||
/* If set by the user program, it should point to string that is the
|
||
bug-reporting address for the program. It will be printed by argp_help if
|
||
the ARGP_HELP_BUG_ADDR flag is set (as it is by various standard help
|
||
- messages), embedded in a sentence that says something like `Report bugs to
|
||
- ADDR.'. */
|
||
+ messages), embedded in a sentence that says something like "Report bugs to
|
||
+ ADDR." */
|
||
const char *argp_program_bug_address
|
||
/* This variable should be zero-initialized. On most systems, putting it into
|
||
- BSS is sufficient. Not so on MacOS X 10.3 and 10.4, see
|
||
+ BSS is sufficient. Not so on Mac OS X 10.3 and 10.4, see
|
||
<http://lists.gnu.org/archive/html/bug-gnulib/2009-01/msg00329.html>
|
||
<http://lists.gnu.org/archive/html/bug-gnulib/2009-08/msg00096.html>. */
|
||
#if defined __ELF__
|
||
diff --git a/grub-core/gnulib/argp-eexst.c b/grub-core/gnulib/argp-eexst.c
|
||
index 115a8cd..a8bb77f 100644
|
||
--- a/grub-core/gnulib/argp-eexst.c
|
||
+++ b/grub-core/gnulib/argp-eexst.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Default definition for ARGP_ERR_EXIT_STATUS
|
||
- Copyright (C) 1997, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1997, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
diff --git a/grub-core/gnulib/argp-fmtstream.c b/grub-core/gnulib/argp-fmtstream.c
|
||
index 248a09a..02406ff 100644
|
||
--- a/grub-core/gnulib/argp-fmtstream.c
|
||
+++ b/grub-core/gnulib/argp-fmtstream.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Word-wrapping and line-truncating streams
|
||
- Copyright (C) 1997-1999, 2001-2003, 2005, 2009-2010 Free Software
|
||
+ Copyright (C) 1997-1999, 2001-2003, 2005, 2009-2013 Free Software
|
||
Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
@@ -17,7 +17,7 @@
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
-/* This package emulates glibc `line_wrap_stream' semantics for systems that
|
||
+/* This package emulates glibc 'line_wrap_stream' semantics for systems that
|
||
don't have that. */
|
||
|
||
#ifdef HAVE_CONFIG_H
|
||
@@ -33,6 +33,7 @@
|
||
|
||
#include "argp-fmtstream.h"
|
||
#include "argp-namefrob.h"
|
||
+#include "mbswidth.h"
|
||
|
||
#ifndef ARGP_FMTSTREAM_USE_LINEWRAP
|
||
|
||
@@ -118,51 +119,48 @@ weak_alias (__argp_fmtstream_free, argp_fmtstream_free)
|
||
#endif
|
||
|
||
|
||
-size_t
|
||
-__argp_get_display_len (const char *beg, const char *end)
|
||
+/* Return the pointer to the first character that doesn't fit in l columns. */
|
||
+static inline const ptrdiff_t
|
||
+add_width (const char *ptr, const char *end, size_t l)
|
||
{
|
||
- const char *ptr;
|
||
- size_t r = 0;
|
||
mbstate_t ps;
|
||
+ const char *ptr0 = ptr;
|
||
|
||
memset (&ps, 0, sizeof (ps));
|
||
|
||
- for (ptr = beg; ptr < end && *ptr; )
|
||
+ while (ptr < end)
|
||
{
|
||
wchar_t wc;
|
||
- size_t s;
|
||
+ size_t s, k;
|
||
|
||
s = mbrtowc (&wc, ptr, end - ptr, &ps);
|
||
if (s == (size_t) -1)
|
||
break;
|
||
- r += wcwidth (wc);
|
||
- ptr += s;
|
||
- }
|
||
- return r;
|
||
-}
|
||
-
|
||
-static inline char *
|
||
-add_length (char *ptr, char *end, size_t l)
|
||
-{
|
||
- mbstate_t ps;
|
||
-
|
||
- memset (&ps, 0, sizeof (ps));
|
||
+ if (s == (size_t) -2)
|
||
+ {
|
||
+ if (1 >= l)
|
||
+ break;
|
||
+ l--;
|
||
+ ptr++;
|
||
+ continue;
|
||
+ }
|
||
|
||
- while (ptr < end && *ptr)
|
||
- {
|
||
- wchar_t wc;
|
||
- size_t s, k;
|
||
+ if (wc == '\e' && ptr + 3 < end
|
||
+ && ptr[1] == '[' && (ptr[2] == '0' || ptr[2] == '1')
|
||
+ && ptr[3] == 'm')
|
||
+ {
|
||
+ ptr += 4;
|
||
+ continue;
|
||
+ }
|
||
|
||
- s = mbrtowc (&wc, ptr, end - ptr, &ps);
|
||
- if (s == (size_t) -1)
|
||
- break;
|
||
k = wcwidth (wc);
|
||
+
|
||
if (k >= l)
|
||
break;
|
||
l -= k;
|
||
ptr += s;
|
||
}
|
||
- return ptr;
|
||
+ return ptr - ptr0;
|
||
}
|
||
|
||
/* Process FS's buffer so that line wrapping is done from POINT_OFFS to the
|
||
@@ -217,15 +215,15 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
|
||
if (!nl)
|
||
{
|
||
- size_t display_len = __argp_get_display_len (buf, fs->p);
|
||
+ size_t display_width = mbsnwidth (buf, fs->p - buf, MBSW_STOP_AT_NUL);
|
||
/* The buffer ends in a partial line. */
|
||
|
||
- if (fs->point_col + display_len < fs->rmargin)
|
||
+ if (fs->point_col + display_width < fs->rmargin)
|
||
{
|
||
/* The remaining buffer text is a partial line and fits
|
||
within the maximum line width. Advance point for the
|
||
characters to be written and stop scanning. */
|
||
- fs->point_col += display_len;
|
||
+ fs->point_col += display_width;
|
||
break;
|
||
}
|
||
else
|
||
@@ -235,8 +233,8 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
}
|
||
else
|
||
{
|
||
- size_t display_len = __argp_get_display_len (buf, nl);
|
||
- if (display_len < (ssize_t) fs->rmargin)
|
||
+ size_t display_width = mbsnwidth (buf, nl - buf, MBSW_STOP_AT_NUL);
|
||
+ if (display_width < (ssize_t) fs->rmargin)
|
||
{
|
||
/* The buffer contains a full line that fits within the maximum
|
||
line width. Reset point and scan the next line. */
|
||
@@ -280,7 +278,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
char *p, *nextline;
|
||
int i;
|
||
|
||
- p = add_length (buf, fs->p, (r + 1 - fs->point_col));
|
||
+ p = buf + add_width (buf, fs->p, (r + 1 - fs->point_col));
|
||
while (p >= buf && !isblank ((unsigned char) *p))
|
||
--p;
|
||
nextline = p + 1; /* This will begin the next line. */
|
||
@@ -298,7 +296,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
{
|
||
/* A single word that is greater than the maximum line width.
|
||
Oh well. Put it on an overlong line by itself. */
|
||
- p = add_length (buf, fs->p, (r + 1 - fs->point_col));
|
||
+ p = buf + add_width (buf, fs->p, (r + 1 - fs->point_col));
|
||
/* Find the end of the long word. */
|
||
if (p < nl)
|
||
do
|
||
@@ -332,7 +330,8 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
|
||
&& fs->p > nextline)
|
||
{
|
||
/* The margin needs more blanks than we removed. */
|
||
- if (__argp_get_display_len (fs->p, fs->end) > fs->wmargin + 1)
|
||
+ if (mbsnwidth (fs->p, fs->end - fs->p, MBSW_STOP_AT_NUL)
|
||
+ > fs->wmargin + 1)
|
||
/* Make some space for them. */
|
||
{
|
||
size_t mv = fs->p - nextline;
|
||
diff --git a/grub-core/gnulib/argp-fmtstream.h b/grub-core/gnulib/argp-fmtstream.h
|
||
index 8a67817..000090e 100644
|
||
--- a/grub-core/gnulib/argp-fmtstream.h
|
||
+++ b/grub-core/gnulib/argp-fmtstream.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Word-wrapping and line-truncating streams.
|
||
- Copyright (C) 1997, 2006-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1997, 2006-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
@@ -16,7 +16,7 @@
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
-/* This package emulates glibc `line_wrap_stream' semantics for systems that
|
||
+/* This package emulates glibc 'line_wrap_stream' semantics for systems that
|
||
don't have that. If the system does have it, it is just a wrapper for
|
||
that. This header file is only used internally while compiling argp, and
|
||
shouldn't be installed. */
|
||
@@ -28,16 +28,16 @@
|
||
#include <string.h>
|
||
#include <unistd.h>
|
||
|
||
-#ifndef __attribute__
|
||
/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
||
The __-protected variants of the attributes 'format' and 'printf' are
|
||
accepted by gcc versions 2.6.4 (effectively 2.7) and later.
|
||
- We enable __attribute__ only if these are supported too, because
|
||
+ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
|
||
gnulib and libintl do '#define printf __printf__' when they override
|
||
the 'printf' function. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
|
||
#endif
|
||
|
||
#if (_LIBC - 0 && !defined (USE_IN_LIBIO)) \
|
||
@@ -128,12 +128,12 @@ extern void argp_fmtstream_free (argp_fmtstream_t __fs);
|
||
|
||
extern ssize_t __argp_fmtstream_printf (argp_fmtstream_t __fs,
|
||
const char *__fmt, ...)
|
||
- __attribute__ ((__format__ (printf, 2, 3)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((printf, 2, 3));
|
||
extern ssize_t argp_fmtstream_printf (argp_fmtstream_t __fs,
|
||
const char *__fmt, ...)
|
||
- __attribute__ ((__format__ (printf, 2, 3)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((printf, 2, 3));
|
||
|
||
-#if _LIBC || !defined __OPTIMIZE__
|
||
+#if _LIBC
|
||
extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);
|
||
extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);
|
||
|
||
@@ -154,7 +154,7 @@ extern size_t argp_fmtstream_write (argp_fmtstream_t __fs,
|
||
#define __argp_fmtstream_rmargin argp_fmtstream_rmargin
|
||
#define __argp_fmtstream_wmargin argp_fmtstream_wmargin
|
||
|
||
-#if _LIBC || !defined __OPTIMIZE__
|
||
+#if _LIBC
|
||
/* Set __FS's left margin to LMARGIN and return the old value. */
|
||
extern size_t argp_fmtstream_set_lmargin (argp_fmtstream_t __fs,
|
||
size_t __lmargin);
|
||
@@ -184,7 +184,7 @@ extern void __argp_fmtstream_update (argp_fmtstream_t __fs);
|
||
extern int _argp_fmtstream_ensure (argp_fmtstream_t __fs, size_t __amount);
|
||
extern int __argp_fmtstream_ensure (argp_fmtstream_t __fs, size_t __amount);
|
||
|
||
-#ifdef __OPTIMIZE__
|
||
+#if !_LIBC || defined __OPTIMIZE__
|
||
/* Inline versions of above routines. */
|
||
|
||
#if !_LIBC
|
||
@@ -197,6 +197,10 @@ extern int __argp_fmtstream_ensure (argp_fmtstream_t __fs, size_t __amount);
|
||
#define __argp_fmtstream_point argp_fmtstream_point
|
||
#define __argp_fmtstream_update _argp_fmtstream_update
|
||
#define __argp_fmtstream_ensure _argp_fmtstream_ensure
|
||
+_GL_INLINE_HEADER_BEGIN
|
||
+#ifndef ARGP_FS_EI
|
||
+# define ARGP_FS_EI _GL_INLINE
|
||
+#endif
|
||
#endif
|
||
|
||
#ifndef ARGP_FS_EI
|
||
@@ -335,9 +339,6 @@ __argp_fmtstream_point (argp_fmtstream_t __fs)
|
||
return __fs->point_col >= 0 ? __fs->point_col : 0;
|
||
}
|
||
|
||
-size_t
|
||
-__argp_get_display_len (const char *beg, const char *end);
|
||
-
|
||
#if !_LIBC
|
||
#undef __argp_fmtstream_putc
|
||
#undef __argp_fmtstream_puts
|
||
@@ -348,9 +349,10 @@ __argp_get_display_len (const char *beg, const char *end);
|
||
#undef __argp_fmtstream_point
|
||
#undef __argp_fmtstream_update
|
||
#undef __argp_fmtstream_ensure
|
||
+_GL_INLINE_HEADER_END
|
||
#endif
|
||
|
||
-#endif /* __OPTIMIZE__ */
|
||
+#endif /* !_LIBC || __OPTIMIZE__ */
|
||
|
||
#endif /* ARGP_FMTSTREAM_USE_LINEWRAP */
|
||
|
||
diff --git a/grub-core/gnulib/argp-fs-xinl.c b/grub-core/gnulib/argp-fs-xinl.c
|
||
index 2c683f9..35547d9 100644
|
||
--- a/grub-core/gnulib/argp-fs-xinl.c
|
||
+++ b/grub-core/gnulib/argp-fs-xinl.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Real definitions for extern inline functions in argp-fmtstream.h
|
||
- Copyright (C) 1997, 2003, 2004, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1997, 2003-2004, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
@@ -20,7 +20,11 @@
|
||
# include <config.h>
|
||
#endif
|
||
|
||
-#define ARGP_FS_EI
|
||
+#ifdef _LIBC
|
||
+# define ARGP_FS_EI
|
||
+#else
|
||
+# define ARGP_FS_EI _GL_EXTERN_INLINE
|
||
+#endif
|
||
#undef __OPTIMIZE__
|
||
#define __OPTIMIZE__ 1
|
||
#include "argp-fmtstream.h"
|
||
diff --git a/grub-core/gnulib/argp-help.c b/grub-core/gnulib/argp-help.c
|
||
index c82e38e..2914f47 100644
|
||
--- a/grub-core/gnulib/argp-help.c
|
||
+++ b/grub-core/gnulib/argp-help.c
|
||
@@ -1,5 +1,5 @@
|
||
-/* Hierarchial argument parsing help output
|
||
- Copyright (C) 1995-2005, 2007, 2009-2010 Free Software Foundation, Inc.
|
||
+/* Hierarchical argument parsing help output
|
||
+ Copyright (C) 1995-2005, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
@@ -29,6 +29,7 @@
|
||
#include <stddef.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
+#include <strings.h>
|
||
#include <assert.h>
|
||
#include <stdarg.h>
|
||
#include <ctype.h>
|
||
@@ -49,6 +50,7 @@
|
||
#include "argp.h"
|
||
#include "argp-fmtstream.h"
|
||
#include "argp-namefrob.h"
|
||
+#include "mbswidth.h"
|
||
|
||
#ifndef SIZE_MAX
|
||
# define SIZE_MAX ((size_t) -1)
|
||
@@ -56,7 +58,7 @@
|
||
|
||
/* User-selectable (using an environment variable) formatting parameters.
|
||
|
||
- These may be specified in an environment variable called `ARGP_HELP_FMT',
|
||
+ These may be specified in an environment variable called 'ARGP_HELP_FMT',
|
||
with a contents like: VAR1=VAL1,VAR2=VAL2,BOOLVAR2,no-BOOLVAR2
|
||
Where VALn must be a positive integer. The list of variables is in the
|
||
UPARAM_NAMES vector, below. */
|
||
@@ -73,13 +75,13 @@
|
||
#define RMARGIN 79 /* right margin used for wrapping */
|
||
|
||
/* User-selectable (using an environment variable) formatting parameters.
|
||
- They must all be of type `int' for the parsing code to work. */
|
||
+ They must all be of type 'int' for the parsing code to work. */
|
||
struct uparams
|
||
{
|
||
/* If true, arguments for an option are shown with both short and long
|
||
- options, even when a given option has both, e.g. `-x ARG, --longx=ARG'.
|
||
+ options, even when a given option has both, e.g. '-x ARG, --longx=ARG'.
|
||
If false, then if an option has both, the argument is only shown with
|
||
- the long one, e.g., `-x, --longx=ARG', and a message indicating that
|
||
+ the long one, e.g., '-x, --longx=ARG', and a message indicating that
|
||
this really means both is printed below the options. */
|
||
int dup_args;
|
||
|
||
@@ -111,7 +113,7 @@ static struct uparams uparams = {
|
||
struct uparam_name
|
||
{
|
||
const char *name; /* User name. */
|
||
- int is_bool; /* Whether it's `boolean'. */
|
||
+ int is_bool; /* Whether it's 'boolean'. */
|
||
size_t uparams_offs; /* Location of the (int) field in UPARAMS. */
|
||
};
|
||
|
||
@@ -154,7 +156,7 @@ ARGP_HELP_FMT: %s value is less than or equal to %s"),
|
||
uparams.valid = 1;
|
||
}
|
||
|
||
-/* Read user options from the environment, and fill in UPARAMS appropiately. */
|
||
+/* Read user options from the environment, and fill in UPARAMS appropriately. */
|
||
static void
|
||
fill_in_uparams (const struct argp_state *state)
|
||
{
|
||
@@ -259,7 +261,7 @@ fill_in_uparams (const struct argp_state *state)
|
||
/* Returns true if OPT is an alias for an earlier option. */
|
||
#define oalias(opt) ((opt)->flags & OPTION_ALIAS)
|
||
|
||
-/* Returns true if OPT is an documentation-only entry. */
|
||
+/* Returns true if OPT is a documentation-only entry. */
|
||
#define odoc(opt) ((opt)->flags & OPTION_DOC)
|
||
|
||
/* Returns true if OPT should not be translated */
|
||
@@ -277,11 +279,11 @@ fill_in_uparams (const struct argp_state *state)
|
||
-xARG, -yARG, --long1=ARG, --long2=ARG Documentation...
|
||
|
||
Where ARG will be omitted if there's no argument, for this option, or
|
||
- will be surrounded by "[" and "]" appropiately if the argument is
|
||
- optional. The documentation string is word-wrapped appropiately, and if
|
||
+ will be surrounded by "[" and "]" appropriately if the argument is
|
||
+ optional. The documentation string is word-wrapped appropriately, and if
|
||
the list of options is long enough, it will be started on a separate line.
|
||
If there are no short options for a given option, the first long option is
|
||
- indented slighly in a way that's supposed to make most long options appear
|
||
+ indented slightly in a way that's supposed to make most long options appear
|
||
to be in a separate column.
|
||
|
||
For example, the following output (from ps):
|
||
@@ -359,7 +361,7 @@ struct hol_entry
|
||
/* A pointers into the HOL's short_options field, to the first short option
|
||
letter for this entry. The order of the characters following this point
|
||
corresponds to the order of options pointed to by OPT, and there are at
|
||
- most NUM. A short option recorded in a option following OPT is only
|
||
+ most NUM. A short option recorded in an option following OPT is only
|
||
valid if it occurs in the right place in SHORT_OPTIONS (otherwise it's
|
||
probably been shadowed by some other entry). */
|
||
char *short_options;
|
||
@@ -570,7 +572,9 @@ hol_entry_short_iterate (const struct hol_entry *entry,
|
||
}
|
||
|
||
static inline int
|
||
+#if __GNUC__ >= 3
|
||
__attribute__ ((always_inline))
|
||
+#endif
|
||
hol_entry_long_iterate (const struct hol_entry *entry,
|
||
int (*func)(const struct argp_option *opt,
|
||
const struct argp_option *real,
|
||
@@ -711,7 +715,7 @@ hol_cluster_is_child (const struct hol_cluster *cl1,
|
||
return cl1 == cl2;
|
||
}
|
||
|
||
-/* Given the name of a OPTION_DOC option, modifies NAME to start at the tail
|
||
+/* Given the name of an OPTION_DOC option, modifies NAME to start at the tail
|
||
that should be used for comparisons, and returns true iff it should be
|
||
treated as a non-option. */
|
||
static int
|
||
@@ -726,7 +730,7 @@ canon_doc_option (const char **name)
|
||
/* Skip initial whitespace. */
|
||
while (isspace ((unsigned char) **name))
|
||
(*name)++;
|
||
- /* Decide whether this looks like an option (leading `-') or not. */
|
||
+ /* Decide whether this looks like an option (leading '-') or not. */
|
||
non_opt = (**name != '-');
|
||
/* Skip until part of name used for sorting. */
|
||
while (**name && !isalnum ((unsigned char) **name))
|
||
@@ -751,9 +755,9 @@ hol_entry_cmp (const struct hol_entry *entry1,
|
||
if (entry1->cluster != entry2->cluster)
|
||
{
|
||
/* The entries are not within the same cluster, so we can't compare them
|
||
- directly, we have to use the appropiate clustering level too. */
|
||
+ directly, we have to use the appropriate clustering level too. */
|
||
if (! entry1->cluster)
|
||
- /* ENTRY1 is at the `base level', not in a cluster, so we have to
|
||
+ /* ENTRY1 is at the "base level", not in a cluster, so we have to
|
||
compare it's group number with that of the base cluster in which
|
||
ENTRY2 resides. Note that if they're in the same group, the
|
||
clustered option always comes laster. */
|
||
@@ -783,7 +787,7 @@ hol_entry_cmp (const struct hol_entry *entry1,
|
||
doc2 = canon_doc_option (&long2);
|
||
|
||
if (doc1 != doc2)
|
||
- /* `documentation' options always follow normal options (or
|
||
+ /* "documentation" options always follow normal options (or
|
||
documentation options that *look* like normal options). */
|
||
return doc1 - doc2;
|
||
else if (!short1 && !short2 && long1 && long2)
|
||
@@ -889,7 +893,8 @@ hol_append (struct hol *hol, struct hol *more)
|
||
|
||
/* Fix up the short options pointers from HOL. */
|
||
for (e = entries, left = hol->num_entries; left > 0; e++, left--)
|
||
- e->short_options += (short_options - hol->short_options);
|
||
+ e->short_options =
|
||
+ short_options + (e->short_options - hol->short_options);
|
||
|
||
/* Now add the short options from MORE, fixing up its entries
|
||
too. */
|
||
@@ -1020,7 +1025,7 @@ filter_doc (const char *doc, int key, const struct argp *argp,
|
||
return doc;
|
||
}
|
||
|
||
-/* Prints STR as a header line, with the margin lines set appropiately, and
|
||
+/* Prints STR as a header line, with the margin lines set appropriately, and
|
||
notes the fact that groups should be separated with a blank line. ARGP is
|
||
the argp that should dictate any user doc filtering to take place. Note
|
||
that the previous wrap margin isn't restored, but the left margin is reset
|
||
@@ -1142,7 +1147,7 @@ hol_entry_help (struct hol_entry *entry, const struct argp_state *state,
|
||
|
||
/* Now, long options. */
|
||
if (odoc (real))
|
||
- /* A `documentation' option. */
|
||
+ /* A "documentation" option. */
|
||
{
|
||
__argp_fmtstream_set_wmargin (stream, uparams.doc_opt_col);
|
||
for (opt = real, num = entry->num; num > 0; opt++, num--)
|
||
@@ -1436,7 +1441,7 @@ argp_args_usage (const struct argp *argp, const struct argp_state *state,
|
||
const char *cp = fdoc;
|
||
nl = __strchrnul (cp, '\n');
|
||
if (*nl != '\0')
|
||
- /* This is a `multi-level' args doc; advance to the correct position
|
||
+ /* This is a "multi-level" args doc; advance to the correct position
|
||
as determined by our state in LEVELS, and update LEVELS. */
|
||
{
|
||
int i;
|
||
@@ -1448,7 +1453,7 @@ argp_args_usage (const struct argp *argp, const struct argp_state *state,
|
||
|
||
/* Manually do line wrapping so that it (probably) won't get wrapped at
|
||
any embedded spaces. */
|
||
- space (stream, 1 + __argp_get_display_len (cp, nl));
|
||
+ space (stream, 1 + mbsnwidth (cp, nl - cp, MBSW_STOP_AT_NUL));
|
||
|
||
__argp_fmtstream_write (stream, cp, nl - cp);
|
||
}
|
||
@@ -1477,9 +1482,9 @@ argp_args_usage (const struct argp *argp, const struct argp_state *state,
|
||
}
|
||
|
||
/* Print the documentation for ARGP to STREAM; if POST is false, then
|
||
- everything preceeding a `\v' character in the documentation strings (or
|
||
+ everything preceding a '\v' character in the documentation strings (or
|
||
the whole string, for those with none) is printed, otherwise, everything
|
||
- following the `\v' character (nothing for strings without). Each separate
|
||
+ following the '\v' character (nothing for strings without). Each separate
|
||
bit of documentation is separated a blank line, and if PRE_BLANK is true,
|
||
then the first is as well. If FIRST_ONLY is true, only the first
|
||
occurrence is output. Returns true if anything was output. */
|
||
@@ -1549,7 +1554,7 @@ argp_doc (const struct argp *argp, const struct argp_state *state,
|
||
free ((char *) inp_text); /* We copied INP_TEXT, so free it now. */
|
||
|
||
if (post && argp->help_filter)
|
||
- /* Now see if we have to output a ARGP_KEY_HELP_EXTRA text. */
|
||
+ /* Now see if we have to output an ARGP_KEY_HELP_EXTRA text. */
|
||
{
|
||
text = (*argp->help_filter) (ARGP_KEY_HELP_EXTRA, 0, input);
|
||
if (text)
|
||
@@ -1576,8 +1581,8 @@ argp_doc (const struct argp *argp, const struct argp_state *state,
|
||
}
|
||
|
||
/* Output a usage message for ARGP to STREAM. If called from
|
||
- argp_state_help, STATE is the relevent parsing state. FLAGS are from the
|
||
- set ARGP_HELP_*. NAME is what to use wherever a `program name' is
|
||
+ argp_state_help, STATE is the relevant parsing state. FLAGS are from the
|
||
+ set ARGP_HELP_*. NAME is what to use wherever a "program name" is
|
||
needed. */
|
||
static void
|
||
_help (const struct argp *argp, const struct argp_state *state, FILE *stream,
|
||
@@ -1618,7 +1623,7 @@ _help (const struct argp *argp, const struct argp_state *state, FILE *stream,
|
||
}
|
||
|
||
if (flags & (ARGP_HELP_USAGE | ARGP_HELP_SHORT_USAGE))
|
||
- /* Print a short `Usage:' message. */
|
||
+ /* Print a short "Usage:" message. */
|
||
{
|
||
int first_pattern = 1, more_patterns;
|
||
size_t num_pattern_levels = argp_args_levels (argp);
|
||
@@ -1678,7 +1683,7 @@ _help (const struct argp *argp, const struct argp_state *state, FILE *stream,
|
||
if (flags & ARGP_HELP_SEE)
|
||
{
|
||
__argp_fmtstream_printf (fs, dgettext (argp->argp_domain, "\
|
||
-Try `%s --help' or `%s --usage' for more information.\n"),
|
||
+Try '%s --help' or '%s --usage' for more information.\n"),
|
||
name, name);
|
||
anything = 1;
|
||
}
|
||
@@ -1721,7 +1726,7 @@ Try `%s --help' or `%s --usage' for more information.\n"),
|
||
}
|
||
|
||
/* Output a usage message for ARGP to STREAM. FLAGS are from the set
|
||
- ARGP_HELP_*. NAME is what to use wherever a `program name' is needed. */
|
||
+ ARGP_HELP_*. NAME is what to use wherever a "program name" is needed. */
|
||
void __argp_help (const struct argp *argp, FILE *stream,
|
||
unsigned flags, char *name)
|
||
{
|
||
@@ -1779,7 +1784,7 @@ weak_alias (__argp_state_help, argp_state_help)
|
||
#endif
|
||
|
||
/* If appropriate, print the printf string FMT and following args, preceded
|
||
- by the program name and `:', to stderr, and followed by a `Try ... --help'
|
||
+ by the program name and ':', to stderr, and followed by a "Try ... --help"
|
||
message, then exit (1). */
|
||
void
|
||
__argp_error (const struct argp_state *state, const char *fmt, ...)
|
||
@@ -1915,7 +1920,7 @@ __argp_failure (const struct argp_state *state, int status, int errnum,
|
||
char const *s = NULL;
|
||
putc_unlocked (':', stream);
|
||
putc_unlocked (' ', stream);
|
||
-#if _LIBC || (HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P)
|
||
+#if _LIBC || (HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P && !defined strerror_r)
|
||
s = __strerror_r (errnum, buf, sizeof buf);
|
||
#elif HAVE_DECL_STRERROR_R
|
||
if (__strerror_r (errnum, buf, sizeof buf) == 0)
|
||
diff --git a/grub-core/gnulib/argp-namefrob.h b/grub-core/gnulib/argp-namefrob.h
|
||
index 24581a6..6333958 100644
|
||
--- a/grub-core/gnulib/argp-namefrob.h
|
||
+++ b/grub-core/gnulib/argp-namefrob.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Name frobnication for compiling argp outside of glibc
|
||
- Copyright (C) 1997, 2003, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1997, 2003, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
@@ -100,45 +100,45 @@
|
||
#endif
|
||
#if defined(HAVE_DECL_FEOF_UNLOCKED) && !HAVE_DECL_FEOF_UNLOCKED
|
||
# define feof_unlocked(x) feof (x)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_FERROR_UNLOCKED) && !HAVE_DECL_FERROR_UNLOCKED
|
||
# define ferror_unlocked(x) ferror (x)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_FFLUSH_UNLOCKED) && !HAVE_DECL_FFLUSH_UNLOCKED
|
||
# define fflush_unlocked(x) fflush (x)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_FGETS_UNLOCKED) && !HAVE_DECL_FGETS_UNLOCKED
|
||
# define fgets_unlocked(x,y,z) fgets (x,y,z)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_FPUTC_UNLOCKED) && !HAVE_DECL_FPUTC_UNLOCKED
|
||
# define fputc_unlocked(x,y) fputc (x,y)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_FPUTS_UNLOCKED) && !HAVE_DECL_FPUTS_UNLOCKED
|
||
# define fputs_unlocked(x,y) fputs (x,y)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_FREAD_UNLOCKED) && !HAVE_DECL_FREAD_UNLOCKED
|
||
# define fread_unlocked(w,x,y,z) fread (w,x,y,z)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_FWRITE_UNLOCKED) && !HAVE_DECL_FWRITE_UNLOCKED
|
||
# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_GETC_UNLOCKED) && !HAVE_DECL_GETC_UNLOCKED
|
||
# define getc_unlocked(x) getc (x)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_GETCHAR_UNLOCKED) && !HAVE_DECL_GETCHAR_UNLOCKED
|
||
# define getchar_unlocked() getchar ()
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_PUTC_UNLOCKED) && !HAVE_DECL_PUTC_UNLOCKED
|
||
# define putc_unlocked(x,y) putc (x,y)
|
||
-# endif
|
||
+#endif
|
||
#if defined(HAVE_DECL_PUTCHAR_UNLOCKED) && !HAVE_DECL_PUTCHAR_UNLOCKED
|
||
# define putchar_unlocked(x) putchar (x)
|
||
-# endif
|
||
+#endif
|
||
|
||
#endif /* !_LIBC */
|
||
|
||
#ifndef __set_errno
|
||
-#define __set_errno(e) (errno = (e))
|
||
+# define __set_errno(e) (errno = (e))
|
||
#endif
|
||
|
||
#if defined GNULIB_ARGP_DISABLE_DIRNAME
|
||
diff --git a/grub-core/gnulib/argp-parse.c b/grub-core/gnulib/argp-parse.c
|
||
index 9c05465..67ea32c 100644
|
||
--- a/grub-core/gnulib/argp-parse.c
|
||
+++ b/grub-core/gnulib/argp-parse.c
|
||
@@ -1,5 +1,5 @@
|
||
-/* Hierarchial argument parsing, layered over getopt
|
||
- Copyright (C) 1995-2000, 2002-2004, 2009-2010 Free Software Foundation, Inc.
|
||
+/* Hierarchical argument parsing, layered over getopt
|
||
+ Copyright (C) 1995-2000, 2002-2004, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
@@ -21,6 +21,7 @@
|
||
#endif
|
||
|
||
#include <alloca.h>
|
||
+#include <stdalign.h>
|
||
#include <stddef.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
@@ -42,7 +43,6 @@
|
||
#include "argp.h"
|
||
#include "argp-namefrob.h"
|
||
|
||
-#define alignof(type) offsetof (struct { char c; type x; }, x)
|
||
#define alignto(n, d) ((((n) + (d) - 1) / (d)) * (d))
|
||
|
||
/* Getopt return values. */
|
||
@@ -154,8 +154,9 @@ argp_version_parser (int key, char *arg, struct argp_state *state)
|
||
else if (argp_program_version)
|
||
fprintf (state->out_stream, "%s\n", argp_program_version);
|
||
else
|
||
- __argp_error (state, dgettext (state->root_argp->argp_domain,
|
||
- "(PROGRAM ERROR) No version known!?"));
|
||
+ __argp_error (state, "%s",
|
||
+ dgettext (state->root_argp->argp_domain,
|
||
+ "(PROGRAM ERROR) No version known!?"));
|
||
if (! (state->flags & ARGP_NO_EXIT))
|
||
exit (0);
|
||
break;
|
||
@@ -187,7 +188,7 @@ find_long_option (struct option *long_options, const char *name)
|
||
}
|
||
|
||
|
||
-/* The state of a `group' during parsing. Each group corresponds to a
|
||
+/* The state of a "group" during parsing. Each group corresponds to a
|
||
particular argp structure from the tree of such descending from the top
|
||
level argp passed to argp_parse. */
|
||
struct group
|
||
@@ -203,7 +204,7 @@ struct group
|
||
particular short options is from. */
|
||
char *short_end;
|
||
|
||
- /* The number of non-option args sucessfully handled by this parser. */
|
||
+ /* The number of non-option args successfully handled by this parser. */
|
||
unsigned args_processed;
|
||
|
||
/* This group's parser's parent's group. */
|
||
@@ -254,7 +255,7 @@ struct parser
|
||
struct group *groups;
|
||
/* The end of the GROUPS array. */
|
||
struct group *egroup;
|
||
- /* An vector containing storage for the CHILD_INPUTS field in all groups. */
|
||
+ /* A vector containing storage for the CHILD_INPUTS field in all groups. */
|
||
void **child_inputs;
|
||
|
||
/* True if we think using getopt is still useful; if false, then
|
||
@@ -385,7 +386,7 @@ convert_options (const struct argp *argp,
|
||
return group;
|
||
}
|
||
|
||
-/* Find the merged set of getopt options, with keys appropiately prefixed. */
|
||
+/* Find the merged set of getopt options, with keys appropriately prefixed. */
|
||
static void
|
||
parser_convert (struct parser *parser, const struct argp *argp, int flags)
|
||
{
|
||
@@ -439,7 +440,7 @@ calc_sizes (const struct argp *argp, struct parser_sizes *szs)
|
||
int num_opts = 0;
|
||
while (!__option_is_end (opt++))
|
||
num_opts++;
|
||
- szs->short_len += num_opts * 3; /* opt + up to 2 `:'s */
|
||
+ szs->short_len += num_opts * 3; /* opt + up to 2 ':'s */
|
||
szs->long_len += num_opts;
|
||
}
|
||
}
|
||
@@ -781,7 +782,7 @@ parser_parse_next (struct parser *parser, int *arg_ebadkey)
|
||
|
||
if (parser->state.quoted && parser->state.next < parser->state.quoted)
|
||
/* The next argument pointer has been moved to before the quoted
|
||
- region, so pretend we never saw the quoting `--', and give getopt
|
||
+ region, so pretend we never saw the quoting "--", and give getopt
|
||
another chance. If the user hasn't removed it, getopt will just
|
||
process it again. */
|
||
parser->state.quoted = 0;
|
||
@@ -813,7 +814,7 @@ parser_parse_next (struct parser *parser, int *arg_ebadkey)
|
||
&& strcmp (parser->state.argv[parser->state.next - 1], QUOTE)
|
||
== 0)
|
||
/* Not only is this the end of the options, but it's a
|
||
- `quoted' region, which may have args that *look* like
|
||
+ "quoted" region, which may have args that *look* like
|
||
options, so we definitely shouldn't try to use getopt past
|
||
here, whatever happens. */
|
||
parser->state.quoted = parser->state.next;
|
||
@@ -879,11 +880,11 @@ __argp_parse (const struct argp *argp, int argc, char **argv, unsigned flags,
|
||
#ifndef _LIBC
|
||
if (!(flags & ARGP_PARSE_ARGV0))
|
||
{
|
||
-#ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME
|
||
+#if HAVE_DECL_PROGRAM_INVOCATION_NAME
|
||
if (!program_invocation_name)
|
||
program_invocation_name = argv[0];
|
||
#endif
|
||
-#ifdef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
|
||
+#if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
|
||
if (!program_invocation_short_name)
|
||
program_invocation_short_name = __argp_base_name (argv[0]);
|
||
#endif
|
||
diff --git a/grub-core/gnulib/argp-pin.c b/grub-core/gnulib/argp-pin.c
|
||
index eda4d95..78cbb35 100644
|
||
--- a/grub-core/gnulib/argp-pin.c
|
||
+++ b/grub-core/gnulib/argp-pin.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Full and short program names for argp module
|
||
- Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2005, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -24,4 +24,3 @@ char *program_invocation_short_name = 0;
|
||
#ifndef HAVE_PROGRAM_INVOCATION_NAME
|
||
char *program_invocation_name = 0;
|
||
#endif
|
||
-
|
||
diff --git a/grub-core/gnulib/argp-pv.c b/grub-core/gnulib/argp-pv.c
|
||
index e3227d3..c74070d 100644
|
||
--- a/grub-core/gnulib/argp-pv.c
|
||
+++ b/grub-core/gnulib/argp-pv.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Default definition for ARGP_PROGRAM_VERSION.
|
||
- Copyright (C) 1996, 1997, 1999, 2006, 2009, 2010 Free Software Foundation,
|
||
+ Copyright (C) 1996-1997, 1999, 2006, 2009-2013 Free Software Foundation,
|
||
Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
@@ -23,7 +23,7 @@
|
||
ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */
|
||
const char *argp_program_version
|
||
/* This variable should be zero-initialized. On most systems, putting it into
|
||
- BSS is sufficient. Not so on MacOS X 10.3 and 10.4, see
|
||
+ BSS is sufficient. Not so on Mac OS X 10.3 and 10.4, see
|
||
<http://lists.gnu.org/archive/html/bug-gnulib/2009-01/msg00329.html>
|
||
<http://lists.gnu.org/archive/html/bug-gnulib/2009-08/msg00096.html>. */
|
||
#if defined __ELF__
|
||
diff --git a/grub-core/gnulib/argp-pvh.c b/grub-core/gnulib/argp-pvh.c
|
||
index fb98fc2..885ff4b 100644
|
||
--- a/grub-core/gnulib/argp-pvh.c
|
||
+++ b/grub-core/gnulib/argp-pvh.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Default definition for ARGP_PROGRAM_VERSION_HOOK.
|
||
- Copyright (C) 1996, 1997, 1999, 2004, 2009, 2010 Free Software Foundation,
|
||
+ Copyright (C) 1996-1997, 1999, 2004, 2009-2013 Free Software Foundation,
|
||
Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
diff --git a/grub-core/gnulib/argp-xinl.c b/grub-core/gnulib/argp-xinl.c
|
||
index 6e7e20b..04d8cf7 100644
|
||
--- a/grub-core/gnulib/argp-xinl.c
|
||
+++ b/grub-core/gnulib/argp-xinl.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Real definitions for extern inline functions in argp.h
|
||
- Copyright (C) 1997, 1998, 2004, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1997-1998, 2004, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
@@ -27,7 +27,11 @@
|
||
#ifndef __USE_EXTERN_INLINES
|
||
# define __USE_EXTERN_INLINES 1
|
||
#endif
|
||
-#define ARGP_EI
|
||
+#ifdef _LIBC
|
||
+# define ARGP_EI
|
||
+#else
|
||
+# define ARGP_EI _GL_EXTERN_INLINE
|
||
+#endif
|
||
#undef __OPTIMIZE__
|
||
#define __OPTIMIZE__ 1
|
||
#include "argp.h"
|
||
diff --git a/grub-core/gnulib/argp.h b/grub-core/gnulib/argp.h
|
||
index 3667224..c4094a4 100644
|
||
--- a/grub-core/gnulib/argp.h
|
||
+++ b/grub-core/gnulib/argp.h
|
||
@@ -1,5 +1,5 @@
|
||
-/* Hierarchial argument parsing, layered over getopt.
|
||
- Copyright (C) 1995-1999, 2003-2010 Free Software Foundation, Inc.
|
||
+/* Hierarchical argument parsing, layered over getopt.
|
||
+ Copyright (C) 1995-1999, 2003-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||
|
||
@@ -34,16 +34,16 @@
|
||
# define __NTH(fct) fct __THROW
|
||
#endif
|
||
|
||
-#ifndef __attribute__
|
||
/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
||
The __-protected variants of the attributes 'format' and 'printf' are
|
||
accepted by gcc versions 2.6.4 (effectively 2.7) and later.
|
||
- We enable __attribute__ only if these are supported too, because
|
||
+ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
|
||
gnulib and libintl do '#define printf __printf__' when they override
|
||
the 'printf' function. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
|
||
#endif
|
||
|
||
/* GCC 2.95 and later have "__restrict"; C99 compilers have
|
||
@@ -94,7 +94,7 @@ struct argp_option
|
||
/* The doc string for this option. If both NAME and KEY are 0, This string
|
||
will be printed outdented from the normal option column, making it
|
||
useful as a group header (it will be the first thing printed in its
|
||
- group); in this usage, it's conventional to end the string with a `:'.
|
||
+ group); in this usage, it's conventional to end the string with a ':'.
|
||
|
||
Write the initial value as N_("TEXT") if you want xgettext to collect
|
||
it into a POT file. */
|
||
@@ -124,21 +124,21 @@ struct argp_option
|
||
/* This option isn't actually an option (and so should be ignored by the
|
||
actual option parser), but rather an arbitrary piece of documentation that
|
||
should be displayed in much the same manner as the options. If this flag
|
||
- is set, then the option NAME field is displayed unmodified (e.g., no `--'
|
||
+ is set, then the option NAME field is displayed unmodified (e.g., no '--'
|
||
prefix is added) at the left-margin (where a *short* option would normally
|
||
be displayed), and the documentation string in the normal place. The NAME
|
||
field will be translated using gettext, unless OPTION_NO_TRANS is set (see
|
||
below). For purposes of sorting, any leading whitespace and punctuation is
|
||
- ignored, except that if the first non-whitespace character is not `-', this
|
||
+ ignored, except that if the first non-whitespace character is not '-', this
|
||
entry is displayed after all options (and OPTION_DOC entries with a leading
|
||
- `-') in the same group. */
|
||
+ '-') in the same group. */
|
||
#define OPTION_DOC 0x8
|
||
|
||
-/* This option shouldn't be included in `long' usage messages (but is still
|
||
+/* This option shouldn't be included in "long" usage messages (but is still
|
||
included in help messages). This is mainly intended for options that are
|
||
completely documented in an argp's ARGS_DOC field, in which case including
|
||
the option in the generic usage list would be redundant. For instance,
|
||
- if ARGS_DOC is "FOO BAR\n-x BLAH", and the `-x' option's purpose is to
|
||
+ if ARGS_DOC is "FOO BAR\n-x BLAH", and the '-x' option's purpose is to
|
||
distinguish these two cases, -x should probably be marked
|
||
OPTION_NO_USAGE. */
|
||
#define OPTION_NO_USAGE 0x10
|
||
@@ -167,7 +167,7 @@ typedef error_t (*argp_parser_t) (int key, char *arg,
|
||
ARGP_ERR_UNKNOWN should be returned if they aren't understood.
|
||
|
||
The sequence of keys to a parsing function is either (where each
|
||
- uppercased word should be prefixed by `ARGP_KEY_' and opt is a user key):
|
||
+ uppercased word should be prefixed by 'ARGP_KEY_' and opt is a user key):
|
||
|
||
INIT opt... NO_ARGS END SUCCESS -- No non-option arguments at all
|
||
or INIT (opt | ARG)... END SUCCESS -- All non-option args parsed
|
||
@@ -238,15 +238,15 @@ struct argp
|
||
argp_parser_t parser;
|
||
|
||
/* A string describing what other arguments are wanted by this program. It
|
||
- is only used by argp_usage to print the `Usage:' message. If it
|
||
+ is only used by argp_usage to print the "Usage:" message. If it
|
||
contains newlines, the strings separated by them are considered
|
||
alternative usage patterns, and printed on separate lines (lines after
|
||
- the first are prefix by ` or: ' instead of `Usage:'). */
|
||
+ the first are prefix by " or: " instead of "Usage:"). */
|
||
const char *args_doc;
|
||
|
||
/* If non-NULL, a string containing extra text to be printed before and
|
||
after the options in a long help message (separated by a vertical tab
|
||
- `\v' character).
|
||
+ '\v' character).
|
||
Write the initial value as N_("BEFORE-TEXT") "\v" N_("AFTER-TEXT") if
|
||
you want xgettext to collect the two pieces of text into a POT file. */
|
||
const char *doc;
|
||
@@ -265,7 +265,7 @@ struct argp
|
||
defines, below, describing which other help text TEXT is. The function
|
||
should return either TEXT, if it should be used as-is, a replacement
|
||
string, which should be malloced, and will be freed by argp, or NULL,
|
||
- meaning `print nothing'. The value for TEXT is *after* any translation
|
||
+ meaning "print nothing". The value for TEXT is *after* any translation
|
||
has been done, so if any of the replacement text also needs translation,
|
||
that should be done by the filter function. INPUT is either the input
|
||
supplied to argp_parse, or NULL, if argp_help was called directly. */
|
||
@@ -278,7 +278,7 @@ struct argp
|
||
};
|
||
|
||
/* Possible KEY arguments to a help filter function. */
|
||
-#define ARGP_KEY_HELP_PRE_DOC 0x2000001 /* Help text preceeding options. */
|
||
+#define ARGP_KEY_HELP_PRE_DOC 0x2000001 /* Help text preceding options. */
|
||
#define ARGP_KEY_HELP_POST_DOC 0x2000002 /* Help text following options. */
|
||
#define ARGP_KEY_HELP_HEADER 0x2000003 /* Option header string. */
|
||
#define ARGP_KEY_HELP_EXTRA 0x2000004 /* After all other documentation;
|
||
@@ -304,7 +304,7 @@ struct argp_child
|
||
printing a header string, use a value of "". */
|
||
const char *header;
|
||
|
||
- /* Where to group the child options relative to the other (`consolidated')
|
||
+ /* Where to group the child options relative to the other ("consolidated")
|
||
options in the parent argp; the values are the same as the GROUP field
|
||
in argp_option structs, but all child-groupings follow parent options at
|
||
a particular group level. If both this field and HEADER are zero, then
|
||
@@ -337,7 +337,7 @@ struct argp_state
|
||
unsigned arg_num;
|
||
|
||
/* If non-zero, the index in ARGV of the first argument following a special
|
||
- `--' argument (which prevents anything following being interpreted as an
|
||
+ '--' argument (which prevents anything following being interpreted as an
|
||
option). Only set once argument parsing has proceeded past this point. */
|
||
int quoted;
|
||
|
||
@@ -399,7 +399,7 @@ struct argp_state
|
||
/* Don't exit on errors (they may still result in error messages). */
|
||
#define ARGP_NO_EXIT 0x20
|
||
|
||
-/* Use the gnu getopt `long-only' rules for parsing arguments. */
|
||
+/* Use the gnu getopt "long-only" rules for parsing arguments. */
|
||
#define ARGP_LONG_ONLY 0x40
|
||
|
||
/* Turns off any message-printing/exiting options. */
|
||
@@ -456,7 +456,7 @@ extern void (*argp_program_version_hook) (FILE *__restrict __stream,
|
||
the bug-reporting address for the program. It will be printed by
|
||
argp_help if the ARGP_HELP_BUG_ADDR flag is set (as it is by various
|
||
standard help messages), embedded in a sentence that says something like
|
||
- `Report bugs to ADDR.'. */
|
||
+ "Report bugs to ADDR." */
|
||
extern const char *argp_program_bug_address;
|
||
|
||
/* The exit status that argp will use when exiting due to a parsing error.
|
||
@@ -467,7 +467,7 @@ extern error_t argp_err_exit_status;
|
||
/* Flags for argp_help. */
|
||
#define ARGP_HELP_USAGE 0x01 /* a Usage: message. */
|
||
#define ARGP_HELP_SHORT_USAGE 0x02 /* " but don't actually print options. */
|
||
-#define ARGP_HELP_SEE 0x04 /* a `Try ... for more help' message. */
|
||
+#define ARGP_HELP_SEE 0x04 /* a "Try ... for more help" message. */
|
||
#define ARGP_HELP_LONG 0x08 /* a long help message. */
|
||
#define ARGP_HELP_PRE_DOC 0x10 /* doc string preceding long help. */
|
||
#define ARGP_HELP_POST_DOC 0x20 /* doc string following long help. */
|
||
@@ -506,7 +506,7 @@ extern void __argp_help (const struct argp *__restrict __argp,
|
||
parsing routine (thus taking an argp_state structure as the first
|
||
argument). They may or may not print an error message and exit, depending
|
||
on the flags in STATE -- in any case, the caller should be prepared for
|
||
- them *not* to exit, and should return an appropiate error after calling
|
||
+ them *not* to exit, and should return an appropriate error after calling
|
||
them. [argp_usage & argp_error should probably be called argp_state_...,
|
||
but they're used often enough that they should be short] */
|
||
|
||
@@ -519,21 +519,21 @@ extern void __argp_state_help (const struct argp_state *__restrict __state,
|
||
FILE *__restrict __stream,
|
||
unsigned int __flags);
|
||
|
||
-#if _LIBC || !defined __USE_EXTERN_INLINES
|
||
+#if _LIBC
|
||
/* Possibly output the standard usage message for ARGP to stderr and exit. */
|
||
extern void argp_usage (const struct argp_state *__state);
|
||
extern void __argp_usage (const struct argp_state *__state);
|
||
#endif
|
||
|
||
/* If appropriate, print the printf string FMT and following args, preceded
|
||
- by the program name and `:', to stderr, and followed by a `Try ... --help'
|
||
+ by the program name and ':', to stderr, and followed by a "Try ... --help"
|
||
message, then exit (1). */
|
||
extern void argp_error (const struct argp_state *__restrict __state,
|
||
const char *__restrict __fmt, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, 2, 3));
|
||
extern void __argp_error (const struct argp_state *__restrict __state,
|
||
const char *__restrict __fmt, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, 2, 3));
|
||
|
||
/* Similar to the standard gnu error-reporting function error(), but will
|
||
respect the ARGP_NO_EXIT and ARGP_NO_ERRS flags in STATE, and will print
|
||
@@ -546,13 +546,13 @@ extern void __argp_error (const struct argp_state *__restrict __state,
|
||
extern void argp_failure (const struct argp_state *__restrict __state,
|
||
int __status, int __errnum,
|
||
const char *__restrict __fmt, ...)
|
||
- __attribute__ ((__format__ (__printf__, 4, 5)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, 4, 5));
|
||
extern void __argp_failure (const struct argp_state *__restrict __state,
|
||
int __status, int __errnum,
|
||
const char *__restrict __fmt, ...)
|
||
- __attribute__ ((__format__ (__printf__, 4, 5)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, 4, 5));
|
||
|
||
-#if _LIBC || !defined __USE_EXTERN_INLINES
|
||
+#if _LIBC
|
||
/* Returns true if the option OPT is a valid short option. */
|
||
extern int _option_is_short (const struct argp_option *__opt) __THROW;
|
||
extern int __option_is_short (const struct argp_option *__opt) __THROW;
|
||
@@ -572,13 +572,17 @@ extern void *__argp_input (const struct argp *__restrict __argp,
|
||
const struct argp_state *__restrict __state)
|
||
__THROW;
|
||
|
||
-#ifdef __USE_EXTERN_INLINES
|
||
+#if !_LIBC || defined __USE_EXTERN_INLINES
|
||
|
||
# if !_LIBC
|
||
# define __argp_usage argp_usage
|
||
# define __argp_state_help argp_state_help
|
||
# define __option_is_short _option_is_short
|
||
# define __option_is_end _option_is_end
|
||
+_GL_INLINE_HEADER_BEGIN
|
||
+# ifndef ARGP_EI
|
||
+# define ARGP_EI _GL_INLINE
|
||
+# endif
|
||
# endif
|
||
|
||
# ifndef ARGP_EI
|
||
@@ -635,6 +639,7 @@ __NTH (__option_is_end (const struct argp_option *__opt))
|
||
# undef __argp_state_help
|
||
# undef __option_is_short
|
||
# undef __option_is_end
|
||
+_GL_INLINE_HEADER_END
|
||
# endif
|
||
#endif /* Use extern inlines. */
|
||
|
||
diff --git a/grub-core/gnulib/asnprintf.c b/grub-core/gnulib/asnprintf.c
|
||
index 3bd2229..76e228d 100644
|
||
--- a/grub-core/gnulib/asnprintf.c
|
||
+++ b/grub-core/gnulib/asnprintf.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Formatted output to strings.
|
||
- Copyright (C) 1999, 2002, 2006, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1999, 2002, 2006, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#include <config.h>
|
||
|
||
diff --git a/grub-core/gnulib/basename-lgpl.c b/grub-core/gnulib/basename-lgpl.c
|
||
index a35ff01..9307e83 100644
|
||
--- a/grub-core/gnulib/basename-lgpl.c
|
||
+++ b/grub-core/gnulib/basename-lgpl.c
|
||
@@ -1,6 +1,6 @@
|
||
/* basename.c -- return the last element in a file name
|
||
|
||
- Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2010 Free Software
|
||
+ Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2013 Free Software
|
||
Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
diff --git a/grub-core/gnulib/btowc.c b/grub-core/gnulib/btowc.c
|
||
index 8744602..6c7cbec 100644
|
||
--- a/grub-core/gnulib/btowc.c
|
||
+++ b/grub-core/gnulib/btowc.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Convert unibyte character to wide character.
|
||
- Copyright (C) 2008, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2008, 2010-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
diff --git a/grub-core/gnulib/config.charset b/grub-core/gnulib/config.charset
|
||
index aa7d00d..a991419 100644
|
||
--- a/grub-core/gnulib/config.charset
|
||
+++ b/grub-core/gnulib/config.charset
|
||
@@ -1,7 +1,7 @@
|
||
#! /bin/sh
|
||
# Output a system dependent table of character encoding aliases.
|
||
#
|
||
-# Copyright (C) 2000-2004, 2006-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2000-2004, 2006-2013 Free Software Foundation, Inc.
|
||
#
|
||
# This program is free software; you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
@@ -14,8 +14,7 @@
|
||
# GNU General Public License for more details.
|
||
#
|
||
# You should have received a copy of the GNU General Public License along
|
||
-# with this program; if not, write to the Free Software Foundation,
|
||
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
+# with this program; if not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
# The table consists of lines of the form
|
||
# ALIAS CANONICAL
|
||
@@ -30,6 +29,8 @@
|
||
# The current list of GNU canonical charset names is as follows.
|
||
#
|
||
# name MIME? used by which systems
|
||
+# (darwin = Mac OS X, woe32 = native Windows)
|
||
+#
|
||
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin cygwin
|
||
# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
|
||
# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
|
||
diff --git a/grub-core/gnulib/dirname-lgpl.c b/grub-core/gnulib/dirname-lgpl.c
|
||
index d4506e0..82f6630 100644
|
||
--- a/grub-core/gnulib/dirname-lgpl.c
|
||
+++ b/grub-core/gnulib/dirname-lgpl.c
|
||
@@ -1,6 +1,6 @@
|
||
/* dirname.c -- return all but the last element in a file name
|
||
|
||
- Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2010 Free Software
|
||
+ Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2013 Free Software
|
||
Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -25,7 +25,7 @@
|
||
|
||
/* Return the length of the prefix of FILE that will be used by
|
||
dir_name. If FILE is in the working directory, this returns zero
|
||
- even though `dir_name (FILE)' will return ".". Works properly even
|
||
+ even though 'dir_name (FILE)' will return ".". Works properly even
|
||
if there are trailing slashes (by effectively ignoring them). */
|
||
|
||
size_t
|
||
@@ -53,9 +53,9 @@ dir_len (char const *file)
|
||
}
|
||
|
||
|
||
-/* In general, we can't use the builtin `dirname' function if available,
|
||
+/* In general, we can't use the builtin 'dirname' function if available,
|
||
since it has different meanings in different environments.
|
||
- In some environments the builtin `dirname' modifies its argument.
|
||
+ In some environments the builtin 'dirname' modifies its argument.
|
||
|
||
Return the leading directories part of FILE, allocated with malloc.
|
||
Works properly even if there are trailing slashes (by effectively
|
||
diff --git a/grub-core/gnulib/dirname.h b/grub-core/gnulib/dirname.h
|
||
index fb19508..4ad0312 100644
|
||
--- a/grub-core/gnulib/dirname.h
|
||
+++ b/grub-core/gnulib/dirname.h
|
||
@@ -1,6 +1,6 @@
|
||
/* Take file names apart into directory and base names.
|
||
|
||
- Copyright (C) 1998, 2001, 2003-2006, 2009-2010 Free Software Foundation,
|
||
+ Copyright (C) 1998, 2001, 2003-2006, 2009-2013 Free Software Foundation,
|
||
Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -21,53 +21,25 @@
|
||
|
||
# include <stdbool.h>
|
||
# include <stddef.h>
|
||
+# include "dosname.h"
|
||
|
||
# ifndef DIRECTORY_SEPARATOR
|
||
# define DIRECTORY_SEPARATOR '/'
|
||
# endif
|
||
|
||
-# ifndef ISSLASH
|
||
-# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
|
||
-# endif
|
||
-
|
||
-# ifndef FILE_SYSTEM_PREFIX_LEN
|
||
-# if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
|
||
- /* This internal macro assumes ASCII, but all hosts that support drive
|
||
- letters use ASCII. */
|
||
-# define _IS_DRIVE_LETTER(c) (((unsigned int) (c) | ('a' - 'A')) - 'a' \
|
||
- <= 'z' - 'a')
|
||
-# define FILE_SYSTEM_PREFIX_LEN(Filename) \
|
||
- (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0)
|
||
-# else
|
||
-# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
|
||
-# endif
|
||
-# endif
|
||
-
|
||
-# ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||
-# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0
|
||
-# endif
|
||
-
|
||
# ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
|
||
# define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
|
||
# endif
|
||
|
||
-# if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||
-# define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)])
|
||
-# else
|
||
-# define IS_ABSOLUTE_FILE_NAME(F) \
|
||
- (ISSLASH ((F)[0]) || 0 < FILE_SYSTEM_PREFIX_LEN (F))
|
||
-# endif
|
||
-# define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F))
|
||
-
|
||
# if GNULIB_DIRNAME
|
||
char *base_name (char const *file);
|
||
char *dir_name (char const *file);
|
||
# endif
|
||
|
||
char *mdir_name (char const *file);
|
||
-size_t base_len (char const *file);
|
||
-size_t dir_len (char const *file);
|
||
-char *last_component (char const *file);
|
||
+size_t base_len (char const *file) _GL_ATTRIBUTE_PURE;
|
||
+size_t dir_len (char const *file) _GL_ATTRIBUTE_PURE;
|
||
+char *last_component (char const *file) _GL_ATTRIBUTE_PURE;
|
||
|
||
bool strip_trailing_slashes (char *file);
|
||
|
||
diff --git a/grub-core/gnulib/dosname.h b/grub-core/gnulib/dosname.h
|
||
new file mode 100644
|
||
index 0000000..ba63ce4
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/dosname.h
|
||
@@ -0,0 +1,53 @@
|
||
+/* File names on MS-DOS/Windows systems.
|
||
+
|
||
+ Copyright (C) 2000-2001, 2004-2006, 2009-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
+
|
||
+ From Paul Eggert and Jim Meyering. */
|
||
+
|
||
+#ifndef _DOSNAME_H
|
||
+#define _DOSNAME_H
|
||
+
|
||
+#if (defined _WIN32 || defined __WIN32__ || \
|
||
+ defined __MSDOS__ || defined __CYGWIN__ || \
|
||
+ defined __EMX__ || defined __DJGPP__)
|
||
+ /* This internal macro assumes ASCII, but all hosts that support drive
|
||
+ letters use ASCII. */
|
||
+# define _IS_DRIVE_LETTER(C) (((unsigned int) (C) | ('a' - 'A')) - 'a' \
|
||
+ <= 'z' - 'a')
|
||
+# define FILE_SYSTEM_PREFIX_LEN(Filename) \
|
||
+ (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0)
|
||
+# ifndef __CYGWIN__
|
||
+# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1
|
||
+# endif
|
||
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
|
||
+#else
|
||
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
|
||
+# define ISSLASH(C) ((C) == '/')
|
||
+#endif
|
||
+
|
||
+#ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||
+# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0
|
||
+#endif
|
||
+
|
||
+#if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||
+# define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)])
|
||
+# else
|
||
+# define IS_ABSOLUTE_FILE_NAME(F) \
|
||
+ (ISSLASH ((F)[0]) || FILE_SYSTEM_PREFIX_LEN (F) != 0)
|
||
+#endif
|
||
+#define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F))
|
||
+
|
||
+#endif /* DOSNAME_H_ */
|
||
diff --git a/grub-core/gnulib/errno.in.h b/grub-core/gnulib/errno.in.h
|
||
index 140e5d1..49b3546 100644
|
||
--- a/grub-core/gnulib/errno.in.h
|
||
+++ b/grub-core/gnulib/errno.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A POSIX-like <errno.h>.
|
||
|
||
- Copyright (C) 2008-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,69 +13,137 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
-#ifndef _GL_ERRNO_H
|
||
+#ifndef _@GUARD_PREFIX@_ERRNO_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
#@INCLUDE_NEXT@ @NEXT_ERRNO_H@
|
||
|
||
-#ifndef _GL_ERRNO_H
|
||
-#define _GL_ERRNO_H
|
||
+#ifndef _@GUARD_PREFIX@_ERRNO_H
|
||
+#define _@GUARD_PREFIX@_ERRNO_H
|
||
|
||
|
||
/* On native Windows platforms, many macros are not defined. */
|
||
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||
|
||
-/* POSIX says that EAGAIN and EWOULDBLOCK may have the same value. */
|
||
-# define EWOULDBLOCK EAGAIN
|
||
+/* These are the same values as defined by MSVC 10, for interoperability. */
|
||
|
||
-/* Values >= 100 seem safe to use. */
|
||
-# define ETXTBSY 100
|
||
-# define GNULIB_defined_ETXTBSY 1
|
||
+# ifndef ENOMSG
|
||
+# define ENOMSG 122
|
||
+# define GNULIB_defined_ENOMSG 1
|
||
+# endif
|
||
+
|
||
+# ifndef EIDRM
|
||
+# define EIDRM 111
|
||
+# define GNULIB_defined_EIDRM 1
|
||
+# endif
|
||
+
|
||
+# ifndef ENOLINK
|
||
+# define ENOLINK 121
|
||
+# define GNULIB_defined_ENOLINK 1
|
||
+# endif
|
||
+
|
||
+# ifndef EPROTO
|
||
+# define EPROTO 134
|
||
+# define GNULIB_defined_EPROTO 1
|
||
+# endif
|
||
+
|
||
+# ifndef EBADMSG
|
||
+# define EBADMSG 104
|
||
+# define GNULIB_defined_EBADMSG 1
|
||
+# endif
|
||
+
|
||
+# ifndef EOVERFLOW
|
||
+# define EOVERFLOW 132
|
||
+# define GNULIB_defined_EOVERFLOW 1
|
||
+# endif
|
||
+
|
||
+# ifndef ENOTSUP
|
||
+# define ENOTSUP 129
|
||
+# define GNULIB_defined_ENOTSUP 1
|
||
+# endif
|
||
+
|
||
+# ifndef ENETRESET
|
||
+# define ENETRESET 117
|
||
+# define GNULIB_defined_ENETRESET 1
|
||
+# endif
|
||
+
|
||
+# ifndef ECONNABORTED
|
||
+# define ECONNABORTED 106
|
||
+# define GNULIB_defined_ECONNABORTED 1
|
||
+# endif
|
||
+
|
||
+# ifndef ECANCELED
|
||
+# define ECANCELED 105
|
||
+# define GNULIB_defined_ECANCELED 1
|
||
+# endif
|
||
+
|
||
+# ifndef EOWNERDEAD
|
||
+# define EOWNERDEAD 133
|
||
+# define GNULIB_defined_EOWNERDEAD 1
|
||
+# endif
|
||
+
|
||
+# ifndef ENOTRECOVERABLE
|
||
+# define ENOTRECOVERABLE 127
|
||
+# define GNULIB_defined_ENOTRECOVERABLE 1
|
||
+# endif
|
||
+
|
||
+# ifndef EINPROGRESS
|
||
+# define EINPROGRESS 112
|
||
+# define EALREADY 103
|
||
+# define ENOTSOCK 128
|
||
+# define EDESTADDRREQ 109
|
||
+# define EMSGSIZE 115
|
||
+# define EPROTOTYPE 136
|
||
+# define ENOPROTOOPT 123
|
||
+# define EPROTONOSUPPORT 135
|
||
+# define EOPNOTSUPP 130
|
||
+# define EAFNOSUPPORT 102
|
||
+# define EADDRINUSE 100
|
||
+# define EADDRNOTAVAIL 101
|
||
+# define ENETDOWN 116
|
||
+# define ENETUNREACH 118
|
||
+# define ECONNRESET 108
|
||
+# define ENOBUFS 119
|
||
+# define EISCONN 113
|
||
+# define ENOTCONN 126
|
||
+# define ETIMEDOUT 138
|
||
+# define ECONNREFUSED 107
|
||
+# define ELOOP 114
|
||
+# define EHOSTUNREACH 110
|
||
+# define EWOULDBLOCK 140
|
||
+# define GNULIB_defined_ESOCK 1
|
||
+# endif
|
||
+
|
||
+# ifndef ETXTBSY
|
||
+# define ETXTBSY 139
|
||
+# define ENODATA 120 /* not required by POSIX */
|
||
+# define ENOSR 124 /* not required by POSIX */
|
||
+# define ENOSTR 125 /* not required by POSIX */
|
||
+# define ETIME 137 /* not required by POSIX */
|
||
+# define EOTHER 131 /* not required by POSIX */
|
||
+# define GNULIB_defined_ESTREAMS 1
|
||
+# endif
|
||
|
||
/* These are intentionally the same values as the WSA* error numbers, defined
|
||
in <winsock2.h>. */
|
||
-# define EINPROGRESS 10036
|
||
-# define EALREADY 10037
|
||
-# define ENOTSOCK 10038
|
||
-# define EDESTADDRREQ 10039
|
||
-# define EMSGSIZE 10040
|
||
-# define EPROTOTYPE 10041
|
||
-# define ENOPROTOOPT 10042
|
||
-# define EPROTONOSUPPORT 10043
|
||
# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */
|
||
-# define EOPNOTSUPP 10045
|
||
# define EPFNOSUPPORT 10046 /* not required by POSIX */
|
||
-# define EAFNOSUPPORT 10047
|
||
-# define EADDRINUSE 10048
|
||
-# define EADDRNOTAVAIL 10049
|
||
-# define ENETDOWN 10050
|
||
-# define ENETUNREACH 10051
|
||
-# define ENETRESET 10052
|
||
-# define ECONNABORTED 10053
|
||
-# define ECONNRESET 10054
|
||
-# define ENOBUFS 10055
|
||
-# define EISCONN 10056
|
||
-# define ENOTCONN 10057
|
||
# define ESHUTDOWN 10058 /* not required by POSIX */
|
||
# define ETOOMANYREFS 10059 /* not required by POSIX */
|
||
-# define ETIMEDOUT 10060
|
||
-# define ECONNREFUSED 10061
|
||
-# define ELOOP 10062
|
||
# define EHOSTDOWN 10064 /* not required by POSIX */
|
||
-# define EHOSTUNREACH 10065
|
||
# define EPROCLIM 10067 /* not required by POSIX */
|
||
# define EUSERS 10068 /* not required by POSIX */
|
||
# define EDQUOT 10069
|
||
# define ESTALE 10070
|
||
# define EREMOTE 10071 /* not required by POSIX */
|
||
-# define GNULIB_defined_ESOCK 1
|
||
+# define GNULIB_defined_EWINSOCK 1
|
||
|
||
# endif
|
||
|
||
@@ -98,6 +166,7 @@
|
||
|
||
/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
|
||
EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
|
||
+ Likewise, on NonStop Kernel, EDQUOT is not defined.
|
||
Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151,
|
||
HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.
|
||
|
||
@@ -145,16 +214,66 @@
|
||
# define GNULIB_defined_ENOTSUP 1
|
||
# endif
|
||
|
||
+# ifndef ENETRESET
|
||
+# define ENETRESET 2011
|
||
+# define GNULIB_defined_ENETRESET 1
|
||
+# endif
|
||
+
|
||
+# ifndef ECONNABORTED
|
||
+# define ECONNABORTED 2012
|
||
+# define GNULIB_defined_ECONNABORTED 1
|
||
+# endif
|
||
+
|
||
# ifndef ESTALE
|
||
# define ESTALE 2009
|
||
# define GNULIB_defined_ESTALE 1
|
||
# endif
|
||
|
||
+# ifndef EDQUOT
|
||
+# define EDQUOT 2010
|
||
+# define GNULIB_defined_EDQUOT 1
|
||
+# endif
|
||
+
|
||
# ifndef ECANCELED
|
||
# define ECANCELED 2008
|
||
# define GNULIB_defined_ECANCELED 1
|
||
# endif
|
||
|
||
+/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not
|
||
+ defined. */
|
||
+
|
||
+# ifndef EOWNERDEAD
|
||
+# if defined __sun
|
||
+ /* Use the same values as defined for Solaris >= 8, for
|
||
+ interoperability. */
|
||
+# define EOWNERDEAD 58
|
||
+# define ENOTRECOVERABLE 59
|
||
+# elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||
+ /* We have a conflict here: pthreads-win32 defines these values
|
||
+ differently than MSVC 10. It's hairy to decide which one to use. */
|
||
+# if defined __MINGW32__ && !defined USE_WINDOWS_THREADS
|
||
+ /* Use the same values as defined by pthreads-win32, for
|
||
+ interoperability. */
|
||
+# define EOWNERDEAD 43
|
||
+# define ENOTRECOVERABLE 44
|
||
+# else
|
||
+ /* Use the same values as defined by MSVC 10, for
|
||
+ interoperability. */
|
||
+# define EOWNERDEAD 133
|
||
+# define ENOTRECOVERABLE 127
|
||
+# endif
|
||
+# else
|
||
+# define EOWNERDEAD 2013
|
||
+# define ENOTRECOVERABLE 2014
|
||
+# endif
|
||
+# define GNULIB_defined_EOWNERDEAD 1
|
||
+# define GNULIB_defined_ENOTRECOVERABLE 1
|
||
+# endif
|
||
+
|
||
+# ifndef EILSEQ
|
||
+# define EILSEQ 2015
|
||
+# define GNULIB_defined_EILSEQ 1
|
||
+# endif
|
||
|
||
-#endif /* _GL_ERRNO_H */
|
||
-#endif /* _GL_ERRNO_H */
|
||
+#endif /* _@GUARD_PREFIX@_ERRNO_H */
|
||
+#endif /* _@GUARD_PREFIX@_ERRNO_H */
|
||
diff --git a/grub-core/gnulib/error.c b/grub-core/gnulib/error.c
|
||
index ed9dba0..865b293 100644
|
||
--- a/grub-core/gnulib/error.c
|
||
+++ b/grub-core/gnulib/error.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Error handler for noninteractive utilities
|
||
- Copyright (C) 1990-1998, 2000-2007, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1990-1998, 2000-2007, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -54,7 +54,7 @@
|
||
function without parameters instead. */
|
||
void (*error_print_progname) (void);
|
||
|
||
-/* This variable is incremented each time `error' is called. */
|
||
+/* This variable is incremented each time 'error' is called. */
|
||
unsigned int error_message_count;
|
||
|
||
#ifdef _LIBC
|
||
@@ -65,7 +65,7 @@ unsigned int error_message_count;
|
||
# include <limits.h>
|
||
# include <libio/libioP.h>
|
||
|
||
-/* In GNU libc we want do not want to use the common name `error' directly.
|
||
+/* In GNU libc we want do not want to use the common name 'error' directly.
|
||
Instead make it a weak alias. */
|
||
extern void __error (int status, int errnum, const char *message, ...)
|
||
__attribute__ ((__format__ (__printf__, 3, 4)));
|
||
@@ -89,19 +89,25 @@ extern void __error_at_line (int status, int errnum, const char *file_name,
|
||
# include <unistd.h>
|
||
|
||
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||
-/* Get declarations of the Win32 API functions. */
|
||
+/* Get declarations of the native Windows API functions. */
|
||
# define WIN32_LEAN_AND_MEAN
|
||
# include <windows.h>
|
||
+/* Get _get_osfhandle. */
|
||
+# include "msvc-nothrow.h"
|
||
# endif
|
||
|
||
/* The gnulib override of fcntl is not needed in this file. */
|
||
# undef fcntl
|
||
|
||
-# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
|
||
+# if !HAVE_DECL_STRERROR_R
|
||
# ifndef HAVE_DECL_STRERROR_R
|
||
"this configure-time declaration test was not run"
|
||
# endif
|
||
+# if STRERROR_R_CHAR_P
|
||
char *strerror_r ();
|
||
+# else
|
||
+int strerror_r ();
|
||
+# endif
|
||
# endif
|
||
|
||
/* The calling program should define program_name and set it to the
|
||
@@ -115,13 +121,14 @@ extern char *program_name;
|
||
|
||
#if !_LIBC
|
||
/* Return non-zero if FD is open. */
|
||
-static inline int
|
||
+static int
|
||
is_open (int fd)
|
||
{
|
||
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||
- /* On Win32: The initial state of unassigned standard file descriptors is
|
||
- that they are open but point to an INVALID_HANDLE_VALUE. There is no
|
||
- fcntl, and the gnulib replacement fcntl does not support F_GETFL. */
|
||
+ /* On native Windows: The initial state of unassigned standard file
|
||
+ descriptors is that they are open but point to an INVALID_HANDLE_VALUE.
|
||
+ There is no fcntl, and the gnulib replacement fcntl does not support
|
||
+ F_GETFL. */
|
||
return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE;
|
||
# else
|
||
# ifndef F_GETFL
|
||
@@ -132,7 +139,7 @@ is_open (int fd)
|
||
}
|
||
#endif
|
||
|
||
-static inline void
|
||
+static void
|
||
flush_stdout (void)
|
||
{
|
||
#if !_LIBC
|
||
diff --git a/grub-core/gnulib/error.h b/grub-core/gnulib/error.h
|
||
index 9deef02..afcb0e1 100644
|
||
--- a/grub-core/gnulib/error.h
|
||
+++ b/grub-core/gnulib/error.h
|
||
@@ -1,6 +1,6 @@
|
||
/* Declaration for error-reporting function
|
||
- Copyright (C) 1995, 1996, 1997, 2003, 2006, 2008, 2009, 2010 Free Software
|
||
- Foundation, Inc.
|
||
+ Copyright (C) 1995-1997, 2003, 2006, 2008-2013 Free Software Foundation,
|
||
+ Inc.
|
||
This file is part of the GNU C Library.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -19,39 +19,39 @@
|
||
#ifndef _ERROR_H
|
||
#define _ERROR_H 1
|
||
|
||
-#ifndef __attribute__
|
||
/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
||
The __-protected variants of the attributes 'format' and 'printf' are
|
||
accepted by gcc versions 2.6.4 (effectively 2.7) and later.
|
||
- We enable __attribute__ only if these are supported too, because
|
||
+ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
|
||
gnulib and libintl do '#define printf __printf__' when they override
|
||
the 'printf' function. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
|
||
#endif
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
-/* Print a message with `fprintf (stderr, FORMAT, ...)';
|
||
+/* Print a message with 'fprintf (stderr, FORMAT, ...)';
|
||
if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
|
||
- If STATUS is nonzero, terminate the program with `exit (STATUS)'. */
|
||
+ If STATUS is nonzero, terminate the program with 'exit (STATUS)'. */
|
||
|
||
extern void error (int __status, int __errnum, const char *__format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 3, 4)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4));
|
||
|
||
extern void error_at_line (int __status, int __errnum, const char *__fname,
|
||
unsigned int __lineno, const char *__format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 5, 6)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, 5, 6));
|
||
|
||
/* If NULL, error will flush stdout, then print on stderr the program
|
||
name, a colon and a space. Otherwise, error will call this
|
||
function without parameters instead. */
|
||
extern void (*error_print_progname) (void);
|
||
|
||
-/* This variable is incremented each time `error' is called. */
|
||
+/* This variable is incremented each time 'error' is called. */
|
||
extern unsigned int error_message_count;
|
||
|
||
/* Sometimes we want to have at most one error per line. This
|
||
diff --git a/grub-core/gnulib/float+.h b/grub-core/gnulib/float+.h
|
||
index b55e5e6..32fb790 100644
|
||
--- a/grub-core/gnulib/float+.h
|
||
+++ b/grub-core/gnulib/float+.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Supplemental information about the floating-point formats.
|
||
- Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2007.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _FLOATPLUS_H
|
||
#define _FLOATPLUS_H
|
||
@@ -141,8 +140,8 @@
|
||
#define SIZEOF_LDBL ((LDBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
|
||
|
||
/* Verify that SIZEOF_FLT <= sizeof (float) etc. */
|
||
-typedef int verify_sizeof_flt[2 * (SIZEOF_FLT <= sizeof (float)) - 1];
|
||
-typedef int verify_sizeof_dbl[2 * (SIZEOF_DBL <= sizeof (double)) - 1];
|
||
-typedef int verify_sizeof_ldbl[2 * (SIZEOF_LDBL <= sizeof (long double)) - 1];
|
||
+typedef int verify_sizeof_flt[SIZEOF_FLT <= sizeof (float) ? 1 : -1];
|
||
+typedef int verify_sizeof_dbl[SIZEOF_DBL <= sizeof (double) ? 1 : - 1];
|
||
+typedef int verify_sizeof_ldbl[SIZEOF_LDBL <= sizeof (long double) ? 1 : - 1];
|
||
|
||
#endif /* _FLOATPLUS_H */
|
||
diff --git a/grub-core/gnulib/float.c b/grub-core/gnulib/float.c
|
||
new file mode 100644
|
||
index 0000000..366945f
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/float.c
|
||
@@ -0,0 +1,33 @@
|
||
+/* Auxiliary definitions for <float.h>.
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+/* Specification. */
|
||
+#include <float.h>
|
||
+
|
||
+#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
|
||
+const union gl_long_double_union gl_LDBL_MAX =
|
||
+ { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } };
|
||
+#elif defined __i386__
|
||
+const union gl_long_double_union gl_LDBL_MAX =
|
||
+ { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } };
|
||
+#else
|
||
+/* This declaration is solely to ensure that after preprocessing
|
||
+ this file is never empty. */
|
||
+typedef int dummy;
|
||
+#endif
|
||
diff --git a/grub-core/gnulib/float.in.h b/grub-core/gnulib/float.in.h
|
||
index caf822f..84e1950 100644
|
||
--- a/grub-core/gnulib/float.in.h
|
||
+++ b/grub-core/gnulib/float.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A correct <float.h>.
|
||
|
||
- Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -15,19 +15,21 @@
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
-#ifndef _GL_FLOAT_H
|
||
+#ifndef _@GUARD_PREFIX@_FLOAT_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
#@INCLUDE_NEXT@ @NEXT_FLOAT_H@
|
||
|
||
-#ifndef _GL_FLOAT_H
|
||
-#define _GL_FLOAT_H
|
||
+#ifndef _@GUARD_PREFIX@_FLOAT_H
|
||
+#define _@GUARD_PREFIX@_FLOAT_H
|
||
|
||
/* 'long double' properties. */
|
||
+
|
||
#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
|
||
/* Number of mantissa units, in base FLT_RADIX. */
|
||
# undef LDBL_MANT_DIG
|
||
@@ -58,5 +60,129 @@
|
||
# define LDBL_MAX_10_EXP 4932
|
||
#endif
|
||
|
||
-#endif /* _GL_FLOAT_H */
|
||
-#endif /* _GL_FLOAT_H */
|
||
+/* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of
|
||
+ precision in the compiler but 64 bits of precision at runtime. See
|
||
+ <http://lists.gnu.org/archive/html/bug-gnulib/2008-07/msg00063.html>. */
|
||
+#if defined __i386__ && defined __FreeBSD__
|
||
+/* Number of mantissa units, in base FLT_RADIX. */
|
||
+# undef LDBL_MANT_DIG
|
||
+# define LDBL_MANT_DIG 64
|
||
+/* Number of decimal digits that is sufficient for representing a number. */
|
||
+# undef LDBL_DIG
|
||
+# define LDBL_DIG 18
|
||
+/* x-1 where x is the smallest representable number > 1. */
|
||
+# undef LDBL_EPSILON
|
||
+# define LDBL_EPSILON 1.084202172485504434007452800869941711426e-19L /* 2^-63 */
|
||
+/* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */
|
||
+# undef LDBL_MIN_EXP
|
||
+# define LDBL_MIN_EXP (-16381)
|
||
+/* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */
|
||
+# undef LDBL_MAX_EXP
|
||
+# define LDBL_MAX_EXP 16384
|
||
+/* Minimum positive normalized number. */
|
||
+# undef LDBL_MIN
|
||
+# define LDBL_MIN 3.3621031431120935E-4932L /* = 0x1p-16382L */
|
||
+/* Maximum representable finite number. */
|
||
+# undef LDBL_MAX
|
||
+/* LDBL_MAX is represented as { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }.
|
||
+ But the largest literal that GCC allows us to write is
|
||
+ 0x0.fffffffffffff8p16384L = { 0xFFFFF800, 0xFFFFFFFF, 32766 }.
|
||
+ So, define it like this through a reference to an external variable
|
||
+
|
||
+ const unsigned int LDBL_MAX[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 32766 };
|
||
+ extern const long double LDBL_MAX;
|
||
+
|
||
+ Unfortunately, this is not a constant expression. */
|
||
+union gl_long_double_union
|
||
+ {
|
||
+ struct { unsigned int lo; unsigned int hi; unsigned int exponent; } xd;
|
||
+ long double ld;
|
||
+ };
|
||
+extern const union gl_long_double_union gl_LDBL_MAX;
|
||
+# define LDBL_MAX (gl_LDBL_MAX.ld)
|
||
+/* Minimum e such that 10^e is in the range of normalized numbers. */
|
||
+# undef LDBL_MIN_10_EXP
|
||
+# define LDBL_MIN_10_EXP (-4931)
|
||
+/* Maximum e such that 10^e is in the range of representable finite numbers. */
|
||
+# undef LDBL_MAX_10_EXP
|
||
+# define LDBL_MAX_10_EXP 4932
|
||
+#endif
|
||
+
|
||
+/* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are
|
||
+ wrong.
|
||
+ On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong. */
|
||
+#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
|
||
+# undef LDBL_MIN_EXP
|
||
+# define LDBL_MIN_EXP DBL_MIN_EXP
|
||
+# undef LDBL_MIN_10_EXP
|
||
+# define LDBL_MIN_10_EXP DBL_MIN_10_EXP
|
||
+# undef LDBL_MIN
|
||
+# define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */
|
||
+#endif
|
||
+#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
|
||
+# undef LDBL_MAX
|
||
+/* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }.
|
||
+ It is not easy to define:
|
||
+ #define LDBL_MAX 1.79769313486231580793728971405302307166e308L
|
||
+ is too small, whereas
|
||
+ #define LDBL_MAX 1.79769313486231580793728971405302307167e308L
|
||
+ is too large. Apparently a bug in GCC decimal-to-binary conversion.
|
||
+ Also, I can't get values larger than
|
||
+ #define LDBL63 ((long double) (1ULL << 63))
|
||
+ #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
|
||
+ #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
|
||
+ #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
|
||
+ #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL)
|
||
+ which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }.
|
||
+ So, define it like this through a reference to an external variable
|
||
+
|
||
+ const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL };
|
||
+ extern const long double LDBL_MAX;
|
||
+
|
||
+ or through a pointer cast
|
||
+
|
||
+ #define LDBL_MAX \
|
||
+ (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL })
|
||
+
|
||
+ Unfortunately, this is not a constant expression, and the latter expression
|
||
+ does not work well when GCC is optimizing.. */
|
||
+union gl_long_double_union
|
||
+ {
|
||
+ struct { double hi; double lo; } dd;
|
||
+ long double ld;
|
||
+ };
|
||
+extern const union gl_long_double_union gl_LDBL_MAX;
|
||
+# define LDBL_MAX (gl_LDBL_MAX.ld)
|
||
+#endif
|
||
+
|
||
+/* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong.
|
||
+ On IRIX 6.5, with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_EPSILON
|
||
+ are wrong. */
|
||
+#if defined __sgi && (LDBL_MANT_DIG >= 106)
|
||
+# undef LDBL_MANT_DIG
|
||
+# define LDBL_MANT_DIG 106
|
||
+# if defined __GNUC__
|
||
+# undef LDBL_MIN_EXP
|
||
+# define LDBL_MIN_EXP DBL_MIN_EXP
|
||
+# undef LDBL_MIN_10_EXP
|
||
+# define LDBL_MIN_10_EXP DBL_MIN_10_EXP
|
||
+# undef LDBL_MIN
|
||
+# define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */
|
||
+# undef LDBL_EPSILON
|
||
+# define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#if @REPLACE_ITOLD@
|
||
+/* Pull in a function that fixes the 'int' to 'long double' conversion
|
||
+ of glibc 2.7. */
|
||
+extern
|
||
+# ifdef __cplusplus
|
||
+"C"
|
||
+# endif
|
||
+void _Qp_itoq (long double *, int);
|
||
+static void (*_gl_float_fix_itold) (long double *, int) = _Qp_itoq;
|
||
+#endif
|
||
+
|
||
+#endif /* _@GUARD_PREFIX@_FLOAT_H */
|
||
+#endif /* _@GUARD_PREFIX@_FLOAT_H */
|
||
diff --git a/grub-core/gnulib/fnmatch.c b/grub-core/gnulib/fnmatch.c
|
||
index d73e47d..6a09e1a 100644
|
||
--- a/grub-core/gnulib/fnmatch.c
|
||
+++ b/grub-core/gnulib/fnmatch.c
|
||
@@ -1,5 +1,4 @@
|
||
-/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||
- 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+/* Copyright (C) 1991-1993, 1996-2007, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,8 +11,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _LIBC
|
||
# include <config.h>
|
||
@@ -43,7 +41,7 @@
|
||
(HAVE_WCTYPE_H && HAVE_BTOWC && HAVE_ISWCTYPE \
|
||
&& HAVE_WMEMCHR && (HAVE_WMEMCPY || HAVE_WMEMPCPY))
|
||
|
||
-/* For platform which support the ISO C amendement 1 functionality we
|
||
+/* For platform which support the ISO C amendment 1 functionality we
|
||
support user defined character classes. */
|
||
#if defined _LIBC || WIDE_CHAR_SUPPORT
|
||
# include <wctype.h>
|
||
@@ -79,7 +77,7 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
|
||
Library, but also included in many other GNU distributions. Compiling
|
||
and linking in this code is a waste when using the GNU C library
|
||
(especially if it is a shared library). Rather than having every GNU
|
||
- program understand `configure --with-gnu-libc' and omit the object files,
|
||
+ program understand 'configure --with-gnu-libc' and omit the object files,
|
||
it is simpler to just do this in the source for each such file. */
|
||
|
||
#if defined _LIBC || !defined __GNU_LIBRARY__ || !HAVE_FNMATCH_GNU
|
||
@@ -93,7 +91,7 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
|
||
|
||
# if defined _LIBC || WIDE_CHAR_SUPPORT
|
||
/* The GNU C library provides support for user-defined character classes
|
||
- and the functions from ISO C amendement 1. */
|
||
+ and the functions from ISO C amendment 1. */
|
||
# ifdef CHARCLASS_NAME_MAX
|
||
# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
|
||
# else
|
||
@@ -120,7 +118,7 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
|
||
# endif
|
||
|
||
# else
|
||
-# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */
|
||
+# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, 'xdigit'. */
|
||
|
||
# define IS_CHAR_CLASS(string) \
|
||
(STREQ (string, "alpha") || STREQ (string, "upper") \
|
||
@@ -169,7 +167,6 @@ static int posixly_correct;
|
||
# endif
|
||
# endif
|
||
# define MEMCHR(S, C, N) memchr (S, C, N)
|
||
-# define STRCOLL(S1, S2) strcoll (S1, S2)
|
||
# include "fnmatch_loop.c"
|
||
|
||
|
||
@@ -197,7 +194,6 @@ static int posixly_correct;
|
||
# endif
|
||
# endif
|
||
# define MEMCHR(S, C, N) wmemchr (S, C, N)
|
||
-# define STRCOLL(S1, S2) wcscoll (S1, S2)
|
||
# define WIDE_CHAR_VERSION 1
|
||
|
||
# undef IS_CHAR_CLASS
|
||
diff --git a/grub-core/gnulib/fnmatch.in.h b/grub-core/gnulib/fnmatch.in.h
|
||
index 8caab19..d39ce2f 100644
|
||
--- a/grub-core/gnulib/fnmatch.in.h
|
||
+++ b/grub-core/gnulib/fnmatch.in.h
|
||
@@ -1,5 +1,5 @@
|
||
-/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
|
||
- 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+/* Copyright (C) 1991-1993, 1996-1999, 2001-2003, 2005, 2007, 2009-2013 Free
|
||
+ Software Foundation, Inc.
|
||
|
||
This file is part of the GNU C Library.
|
||
|
||
@@ -14,8 +14,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _FNMATCH_H
|
||
#define _FNMATCH_H 1
|
||
@@ -32,23 +31,23 @@ extern "C" {
|
||
#undef FNM_NOESCAPE
|
||
#undef FNM_PERIOD
|
||
|
||
-/* Bits set in the FLAGS argument to `fnmatch'. */
|
||
-#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */
|
||
+/* Bits set in the FLAGS argument to 'fnmatch'. */
|
||
+#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match '/'. */
|
||
#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
|
||
-#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */
|
||
+#define FNM_PERIOD (1 << 2) /* Leading '.' is matched only explicitly. */
|
||
|
||
#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE
|
||
# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */
|
||
-# define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */
|
||
+# define FNM_LEADING_DIR (1 << 3) /* Ignore '/...' after a match. */
|
||
# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
|
||
# define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */
|
||
#endif
|
||
|
||
-/* Value returned by `fnmatch' if STRING does not match PATTERN. */
|
||
+/* Value returned by 'fnmatch' if STRING does not match PATTERN. */
|
||
#define FNM_NOMATCH 1
|
||
|
||
/* This value is returned if the implementation does not support
|
||
- `fnmatch'. Since this is not the case here it will never be
|
||
+ 'fnmatch'. Since this is not the case here it will never be
|
||
returned but the conformance test suites still require the symbol
|
||
to be defined. */
|
||
#ifdef _XOPEN_SOURCE
|
||
diff --git a/grub-core/gnulib/fnmatch_loop.c b/grub-core/gnulib/fnmatch_loop.c
|
||
index 741c993..f57cd63 100644
|
||
--- a/grub-core/gnulib/fnmatch_loop.c
|
||
+++ b/grub-core/gnulib/fnmatch_loop.c
|
||
@@ -1,5 +1,4 @@
|
||
-/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||
- 2003, 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
|
||
+/* Copyright (C) 1991-1993, 1996-2006, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* Match STRING against the file name pattern PATTERN, returning zero if
|
||
it matches, nonzero if not. */
|
||
@@ -201,6 +199,8 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||
case L_('['):
|
||
{
|
||
/* Nonzero if the sense of the character class is inverted. */
|
||
+ const CHAR *p_init = p;
|
||
+ const CHAR *n_init = n;
|
||
register bool not;
|
||
CHAR cold;
|
||
UCHAR fn;
|
||
@@ -215,7 +215,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||
return FNM_NOMATCH;
|
||
|
||
if (*n == L_('/') && (flags & FNM_FILE_NAME))
|
||
- /* `/' cannot be matched. */
|
||
+ /* '/' cannot be matched. */
|
||
return FNM_NOMATCH;
|
||
|
||
not = (*p == L_('!') || (posixly_correct < 0 && *p == L_('^')));
|
||
@@ -381,7 +381,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||
{
|
||
/* We found a table entry. Now see whether the
|
||
character we are currently at has the same
|
||
- equivalance class value. */
|
||
+ equivalence class value. */
|
||
int len = weights[idx & 0xffffff];
|
||
int32_t idx2;
|
||
const UCHAR *np = (const UCHAR *) n;
|
||
@@ -411,8 +411,13 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||
}
|
||
#endif
|
||
else if (c == L_('\0'))
|
||
- /* [ (unterminated) loses. */
|
||
- return FNM_NOMATCH;
|
||
+ {
|
||
+ /* [ unterminated, treat as normal character. */
|
||
+ p = p_init;
|
||
+ n = n_init;
|
||
+ c = L_('[');
|
||
+ goto normal_match;
|
||
+ }
|
||
else
|
||
{
|
||
bool is_range = false;
|
||
@@ -630,7 +635,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||
UCHAR cend = *p++;
|
||
|
||
# ifdef WIDE_CHAR_VERSION
|
||
- /* Search in the `names' array for the characters. */
|
||
+ /* Search in the 'names' array for the characters. */
|
||
fcollseq = __collseq_table_lookup (collseq, fn);
|
||
if (fcollseq == ~((uint32_t) 0))
|
||
/* XXX We don't know anything about the character
|
||
@@ -833,7 +838,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||
#else
|
||
/* We use a boring value comparison of the character
|
||
values. This is better than comparing using
|
||
- `strcoll' since the latter would have surprising
|
||
+ 'strcoll' since the latter would have surprising
|
||
and sometimes fatal consequences. */
|
||
UCHAR cend = *p++;
|
||
|
||
@@ -1150,7 +1155,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||
|
||
case L_('@'):
|
||
do
|
||
- /* I cannot believe it but `strcat' is actually acceptable
|
||
+ /* I cannot believe it but 'strcat' is actually acceptable
|
||
here. Match the entire string with the prefix from the
|
||
pattern list and the rest of the pattern following the
|
||
pattern list. */
|
||
@@ -1208,7 +1213,6 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||
#undef END
|
||
#undef MEMPCPY
|
||
#undef MEMCHR
|
||
-#undef STRCOLL
|
||
#undef STRLEN
|
||
#undef STRCAT
|
||
#undef L_
|
||
diff --git a/grub-core/gnulib/getdelim.c b/grub-core/gnulib/getdelim.c
|
||
index 66d07b9..fdbcde2 100644
|
||
--- a/grub-core/gnulib/getdelim.c
|
||
+++ b/grub-core/gnulib/getdelim.c
|
||
@@ -1,6 +1,6 @@
|
||
/* getdelim.c --- Implementation of replacement getdelim function.
|
||
- Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006, 2007, 2008,
|
||
- 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1994, 1996-1998, 2001, 2003, 2005-2013 Free Software
|
||
+ Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or
|
||
modify it under the terms of the GNU General Public License as
|
||
@@ -13,18 +13,16 @@
|
||
General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software
|
||
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||
- 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* Ported from glibc by Simon Josefsson. */
|
||
|
||
-#include <config.h>
|
||
-
|
||
/* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc
|
||
optimizes away the lineptr == NULL || n == NULL || fp == NULL tests below. */
|
||
#define _GL_ARG_NONNULL(params)
|
||
|
||
+#include <config.h>
|
||
+
|
||
#include <stdio.h>
|
||
|
||
#include <limits.h>
|
||
diff --git a/grub-core/gnulib/getline.c b/grub-core/gnulib/getline.c
|
||
index 30c076e..1aa07b9 100644
|
||
--- a/grub-core/gnulib/getline.c
|
||
+++ b/grub-core/gnulib/getline.c
|
||
@@ -1,5 +1,5 @@
|
||
/* getline.c --- Implementation of replacement getline function.
|
||
- Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2005-2007, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or
|
||
modify it under the terms of the GNU General Public License as
|
||
@@ -12,9 +12,7 @@
|
||
General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software
|
||
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||
- 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* Written by Simon Josefsson. */
|
||
|
||
diff --git a/grub-core/gnulib/getopt.c b/grub-core/gnulib/getopt.c
|
||
index 3791f12..ef0f4ce 100644
|
||
--- a/grub-core/gnulib/getopt.c
|
||
+++ b/grub-core/gnulib/getopt.c
|
||
@@ -2,7 +2,7 @@
|
||
NOTE: getopt is part of the C library, so if you don't know what
|
||
"Keep this file name-space clean" means, talk to drepper@gnu.org
|
||
before changing it!
|
||
- Copyright (C) 1987-1996, 1998-2004, 2006, 2008-2010 Free Software
|
||
+ Copyright (C) 1987-1996, 1998-2004, 2006, 2008-2013 Free Software
|
||
Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
|
||
@@ -41,15 +41,15 @@
|
||
# include <wchar.h>
|
||
#endif
|
||
|
||
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
|
||
+/* This version of 'getopt' appears to the caller like standard Unix 'getopt'
|
||
but it behaves differently for the user, since it allows the user
|
||
to intersperse the options with the other arguments.
|
||
|
||
- As `getopt_long' works, it permutes the elements of ARGV so that,
|
||
+ As 'getopt_long' works, it permutes the elements of ARGV so that,
|
||
when it is done, all the options precede everything else. Thus
|
||
all application programs are extended to handle flexible argument order.
|
||
|
||
- Using `getopt' or setting the environment variable POSIXLY_CORRECT
|
||
+ Using 'getopt' or setting the environment variable POSIXLY_CORRECT
|
||
disables permutation.
|
||
Then the behavior is completely standard.
|
||
|
||
@@ -58,24 +58,24 @@
|
||
|
||
#include "getopt_int.h"
|
||
|
||
-/* For communication from `getopt' to the caller.
|
||
- When `getopt' finds an option that takes an argument,
|
||
+/* For communication from 'getopt' to the caller.
|
||
+ When 'getopt' finds an option that takes an argument,
|
||
the argument value is returned here.
|
||
- Also, when `ordering' is RETURN_IN_ORDER,
|
||
+ Also, when 'ordering' is RETURN_IN_ORDER,
|
||
each non-option ARGV-element is returned here. */
|
||
|
||
char *optarg;
|
||
|
||
/* Index in ARGV of the next element to be scanned.
|
||
This is used for communication to and from the caller
|
||
- and for communication between successive calls to `getopt'.
|
||
+ and for communication between successive calls to 'getopt'.
|
||
|
||
- On entry to `getopt', zero means this is the first call; initialize.
|
||
+ On entry to 'getopt', zero means this is the first call; initialize.
|
||
|
||
- When `getopt' returns -1, this is the index of the first of the
|
||
+ When 'getopt' returns -1, this is the index of the first of the
|
||
non-option elements that the caller should itself scan.
|
||
|
||
- Otherwise, `optind' communicates from one call to the next
|
||
+ Otherwise, 'optind' communicates from one call to the next
|
||
how much of ARGV has been scanned so far. */
|
||
|
||
/* 1003.2 says this must be 1 before any call. */
|
||
@@ -137,7 +137,7 @@ extern char *__getopt_nonoption_flags;
|
||
The other is elements [last_nonopt,optind), which contains all
|
||
the options processed since those non-options were skipped.
|
||
|
||
- `first_nonopt' and `last_nonopt' are relocated so that they describe
|
||
+ 'first_nonopt' and 'last_nonopt' are relocated so that they describe
|
||
the new indices of the non-options in ARGV after they are moved. */
|
||
|
||
static void
|
||
@@ -154,7 +154,7 @@ exchange (char **argv, struct _getopt_data *d)
|
||
but it consists of two parts that need to be swapped next. */
|
||
|
||
#if defined _LIBC && defined USE_NONOPTION_FLAGS
|
||
- /* First make sure the handling of the `__getopt_nonoption_flags'
|
||
+ /* First make sure the handling of the '__getopt_nonoption_flags'
|
||
string can work normally. Our top argument must be in the range
|
||
of the string. */
|
||
if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
|
||
@@ -291,48 +291,48 @@ _getopt_initialize (int argc _GL_UNUSED,
|
||
|
||
If an element of ARGV starts with '-', and is not exactly "-" or "--",
|
||
then it is an option element. The characters of this element
|
||
- (aside from the initial '-') are option characters. If `getopt'
|
||
+ (aside from the initial '-') are option characters. If 'getopt'
|
||
is called repeatedly, it returns successively each of the option characters
|
||
from each of the option elements.
|
||
|
||
- If `getopt' finds another option character, it returns that character,
|
||
- updating `optind' and `nextchar' so that the next call to `getopt' can
|
||
+ If 'getopt' finds another option character, it returns that character,
|
||
+ updating 'optind' and 'nextchar' so that the next call to 'getopt' can
|
||
resume the scan with the following option character or ARGV-element.
|
||
|
||
- If there are no more option characters, `getopt' returns -1.
|
||
- Then `optind' is the index in ARGV of the first ARGV-element
|
||
+ If there are no more option characters, 'getopt' returns -1.
|
||
+ Then 'optind' is the index in ARGV of the first ARGV-element
|
||
that is not an option. (The ARGV-elements have been permuted
|
||
so that those that are not options now come last.)
|
||
|
||
OPTSTRING is a string containing the legitimate option characters.
|
||
If an option character is seen that is not listed in OPTSTRING,
|
||
- return '?' after printing an error message. If you set `opterr' to
|
||
+ return '?' after printing an error message. If you set 'opterr' to
|
||
zero, the error message is suppressed but we still return '?'.
|
||
|
||
If a char in OPTSTRING is followed by a colon, that means it wants an arg,
|
||
so the following text in the same ARGV-element, or the text of the following
|
||
- ARGV-element, is returned in `optarg'. Two colons mean an option that
|
||
+ ARGV-element, is returned in 'optarg'. Two colons mean an option that
|
||
wants an optional arg; if there is text in the current ARGV-element,
|
||
- it is returned in `optarg', otherwise `optarg' is set to zero.
|
||
+ it is returned in 'optarg', otherwise 'optarg' is set to zero.
|
||
|
||
- If OPTSTRING starts with `-' or `+', it requests different methods of
|
||
+ If OPTSTRING starts with '-' or '+', it requests different methods of
|
||
handling the non-option ARGV-elements.
|
||
See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
|
||
|
||
- Long-named options begin with `--' instead of `-'.
|
||
+ Long-named options begin with '--' instead of '-'.
|
||
Their names may be abbreviated as long as the abbreviation is unique
|
||
or is an exact match for some defined option. If they have an
|
||
argument, it follows the option name in the same ARGV-element, separated
|
||
- from the option name by a `=', or else the in next ARGV-element.
|
||
- When `getopt' finds a long-named option, it returns 0 if that option's
|
||
- `flag' field is nonzero, the value of the option's `val' field
|
||
- if the `flag' field is zero.
|
||
+ from the option name by a '=', or else the in next ARGV-element.
|
||
+ When 'getopt' finds a long-named option, it returns 0 if that option's
|
||
+ 'flag' field is nonzero, the value of the option's 'val' field
|
||
+ if the 'flag' field is zero.
|
||
|
||
The elements of ARGV aren't really const, because we permute them.
|
||
But we pretend they're const in the prototype to be compatible
|
||
with other systems.
|
||
|
||
- LONGOPTS is a vector of `struct option' terminated by an
|
||
+ LONGOPTS is a vector of 'struct option' terminated by an
|
||
element containing a name which is zero.
|
||
|
||
LONGIND returns the index in LONGOPT of the long-named option found.
|
||
@@ -409,7 +409,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
d->__last_nonopt = d->optind;
|
||
}
|
||
|
||
- /* The special ARGV-element `--' means premature end of options.
|
||
+ /* The special ARGV-element '--' means premature end of options.
|
||
Skip it like a null option,
|
||
then exchange with previous non-options as if it were an option,
|
||
then skip everything else like a non-option. */
|
||
@@ -479,23 +479,28 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
|| !strchr (optstring, argv[d->optind][1])))))
|
||
{
|
||
char *nameend;
|
||
+ unsigned int namelen;
|
||
const struct option *p;
|
||
const struct option *pfound = NULL;
|
||
+ struct option_list
|
||
+ {
|
||
+ const struct option *p;
|
||
+ struct option_list *next;
|
||
+ } *ambig_list = NULL;
|
||
int exact = 0;
|
||
- int ambig = 0;
|
||
int indfound = -1;
|
||
int option_index;
|
||
|
||
for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
|
||
/* Do nothing. */ ;
|
||
+ namelen = nameend - d->__nextchar;
|
||
|
||
/* Test all long options for either exact match
|
||
or abbreviated matches. */
|
||
for (p = longopts, option_index = 0; p->name; p++, option_index++)
|
||
- if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
|
||
+ if (!strncmp (p->name, d->__nextchar, namelen))
|
||
{
|
||
- if ((unsigned int) (nameend - d->__nextchar)
|
||
- == (unsigned int) strlen (p->name))
|
||
+ if (namelen == (unsigned int) strlen (p->name))
|
||
{
|
||
/* Exact match found. */
|
||
pfound = p;
|
||
@@ -513,35 +518,71 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
|| pfound->has_arg != p->has_arg
|
||
|| pfound->flag != p->flag
|
||
|| pfound->val != p->val)
|
||
- /* Second or later nonexact match found. */
|
||
- ambig = 1;
|
||
+ {
|
||
+ /* Second or later nonexact match found. */
|
||
+ struct option_list *newp = malloc (sizeof (*newp));
|
||
+ newp->p = p;
|
||
+ newp->next = ambig_list;
|
||
+ ambig_list = newp;
|
||
+ }
|
||
}
|
||
|
||
- if (ambig && !exact)
|
||
+ if (ambig_list != NULL && !exact)
|
||
{
|
||
if (print_errors)
|
||
{
|
||
+ struct option_list first;
|
||
+ first.p = pfound;
|
||
+ first.next = ambig_list;
|
||
+ ambig_list = &first;
|
||
+
|
||
#if defined _LIBC && defined USE_IN_LIBIO
|
||
- char *buf;
|
||
+ char *buf = NULL;
|
||
+ size_t buflen = 0;
|
||
|
||
- if (__asprintf (&buf, _("%s: option '%s' is ambiguous\n"),
|
||
- argv[0], argv[d->optind]) >= 0)
|
||
+ FILE *fp = open_memstream (&buf, &buflen);
|
||
+ if (fp != NULL)
|
||
{
|
||
- _IO_flockfile (stderr);
|
||
+ fprintf (fp,
|
||
+ _("%s: option '%s' is ambiguous; possibilities:"),
|
||
+ argv[0], argv[d->optind]);
|
||
|
||
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
|
||
- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
|
||
+ do
|
||
+ {
|
||
+ fprintf (fp, " '--%s'", ambig_list->p->name);
|
||
+ ambig_list = ambig_list->next;
|
||
+ }
|
||
+ while (ambig_list != NULL);
|
||
|
||
- __fxprintf (NULL, "%s", buf);
|
||
+ fputc_unlocked ('\n', fp);
|
||
|
||
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
|
||
- _IO_funlockfile (stderr);
|
||
+ if (__builtin_expect (fclose (fp) != EOF, 1))
|
||
+ {
|
||
+ _IO_flockfile (stderr);
|
||
|
||
- free (buf);
|
||
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
|
||
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
|
||
+
|
||
+ __fxprintf (NULL, "%s", buf);
|
||
+
|
||
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
|
||
+ _IO_funlockfile (stderr);
|
||
+
|
||
+ free (buf);
|
||
+ }
|
||
}
|
||
#else
|
||
- fprintf (stderr, _("%s: option '%s' is ambiguous\n"),
|
||
+ fprintf (stderr,
|
||
+ _("%s: option '%s' is ambiguous; possibilities:"),
|
||
argv[0], argv[d->optind]);
|
||
+ do
|
||
+ {
|
||
+ fprintf (stderr, " '--%s'", ambig_list->p->name);
|
||
+ ambig_list = ambig_list->next;
|
||
+ }
|
||
+ while (ambig_list != NULL);
|
||
+
|
||
+ fputc ('\n', stderr);
|
||
#endif
|
||
}
|
||
d->__nextchar += strlen (d->__nextchar);
|
||
@@ -550,6 +591,13 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
return '?';
|
||
}
|
||
|
||
+ while (ambig_list != NULL)
|
||
+ {
|
||
+ struct option_list *pn = ambig_list->next;
|
||
+ free (ambig_list);
|
||
+ ambig_list = pn;
|
||
+ }
|
||
+
|
||
if (pfound != NULL)
|
||
{
|
||
option_index = indfound;
|
||
@@ -740,7 +788,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
char c = *d->__nextchar++;
|
||
const char *temp = strchr (optstring, c);
|
||
|
||
- /* Increment `optind' when we start to process its last character. */
|
||
+ /* Increment 'optind' when we start to process its last character. */
|
||
if (*d->__nextchar == '\0')
|
||
++d->optind;
|
||
|
||
@@ -791,6 +839,9 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
int indfound = 0;
|
||
int option_index;
|
||
|
||
+ if (longopts == NULL)
|
||
+ goto no_longs;
|
||
+
|
||
/* This is an option that requires an argument. */
|
||
if (*d->__nextchar != '\0')
|
||
{
|
||
@@ -836,7 +887,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
return c;
|
||
}
|
||
else
|
||
- /* We already incremented `d->optind' once;
|
||
+ /* We already incremented 'd->optind' once;
|
||
increment it again when taking next ARGV-elt as argument. */
|
||
d->optarg = argv[d->optind++];
|
||
|
||
@@ -998,8 +1049,10 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
}
|
||
return pfound->val;
|
||
}
|
||
- d->__nextchar = NULL;
|
||
- return 'W'; /* Let the application handle it. */
|
||
+
|
||
+ no_longs:
|
||
+ d->__nextchar = NULL;
|
||
+ return 'W'; /* Let the application handle it. */
|
||
}
|
||
if (temp[1] == ':')
|
||
{
|
||
@@ -1061,7 +1114,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
|
||
c = '?';
|
||
}
|
||
else
|
||
- /* We already incremented `optind' once;
|
||
+ /* We already incremented 'optind' once;
|
||
increment it again when taking next ARGV-elt as argument. */
|
||
d->optarg = argv[d->optind++];
|
||
d->__nextchar = NULL;
|
||
@@ -1124,7 +1177,7 @@ __posix_getopt (int argc, char *const *argv, const char *optstring)
|
||
#ifdef TEST
|
||
|
||
/* Compile with -DTEST to make an executable for use in testing
|
||
- the above definition of `getopt'. */
|
||
+ the above definition of 'getopt'. */
|
||
|
||
int
|
||
main (int argc, char **argv)
|
||
diff --git a/grub-core/gnulib/getopt.in.h b/grub-core/gnulib/getopt.in.h
|
||
index 57a8e89..d9c7d81 100644
|
||
--- a/grub-core/gnulib/getopt.in.h
|
||
+++ b/grub-core/gnulib/getopt.in.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Declarations for getopt.
|
||
- Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2010 Free Software
|
||
+ Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2013 Free Software
|
||
Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
|
||
@@ -16,11 +16,12 @@
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
-#ifndef _GL_GETOPT_H
|
||
+#ifndef _@GUARD_PREFIX@_GETOPT_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
/* The include_next requires a split double-inclusion guard. We must
|
||
also inform the replacement unistd.h to not recursively use
|
||
@@ -31,10 +32,10 @@
|
||
# undef _GL_SYSTEM_GETOPT
|
||
#endif
|
||
|
||
-#ifndef _GL_GETOPT_H
|
||
+#ifndef _@GUARD_PREFIX@_GETOPT_H
|
||
|
||
#ifndef __need_getopt
|
||
-# define _GL_GETOPT_H 1
|
||
+# define _@GUARD_PREFIX@_GETOPT_H 1
|
||
#endif
|
||
|
||
/* Standalone applications should #define __GETOPT_PREFIX to an
|
||
@@ -48,7 +49,9 @@
|
||
linkers. */
|
||
#if defined __GETOPT_PREFIX && !defined __need_getopt
|
||
# if !@HAVE_GETOPT_H@
|
||
+# define __need_system_stdlib_h
|
||
# include <stdlib.h>
|
||
+# undef __need_system_stdlib_h
|
||
# include <stdio.h>
|
||
# include <unistd.h>
|
||
# endif
|
||
@@ -81,7 +84,7 @@
|
||
getopt_long_only can permute argv; this is required for backward
|
||
compatibility (e.g., for LSB 2.0.1).
|
||
|
||
- This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
|
||
+ This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt',
|
||
but it caused redefinition warnings if both unistd.h and getopt.h were
|
||
included, since unistd.h includes getopt.h having previously defined
|
||
__need_getopt.
|
||
@@ -127,29 +130,29 @@
|
||
extern "C" {
|
||
#endif
|
||
|
||
-/* For communication from `getopt' to the caller.
|
||
- When `getopt' finds an option that takes an argument,
|
||
+/* For communication from 'getopt' to the caller.
|
||
+ When 'getopt' finds an option that takes an argument,
|
||
the argument value is returned here.
|
||
- Also, when `ordering' is RETURN_IN_ORDER,
|
||
+ Also, when 'ordering' is RETURN_IN_ORDER,
|
||
each non-option ARGV-element is returned here. */
|
||
|
||
extern char *optarg;
|
||
|
||
/* Index in ARGV of the next element to be scanned.
|
||
This is used for communication to and from the caller
|
||
- and for communication between successive calls to `getopt'.
|
||
+ and for communication between successive calls to 'getopt'.
|
||
|
||
- On entry to `getopt', zero means this is the first call; initialize.
|
||
+ On entry to 'getopt', zero means this is the first call; initialize.
|
||
|
||
- When `getopt' returns -1, this is the index of the first of the
|
||
+ When 'getopt' returns -1, this is the index of the first of the
|
||
non-option elements that the caller should itself scan.
|
||
|
||
- Otherwise, `optind' communicates from one call to the next
|
||
+ Otherwise, 'optind' communicates from one call to the next
|
||
how much of ARGV has been scanned so far. */
|
||
|
||
extern int optind;
|
||
|
||
-/* Callers store zero here to inhibit the error message `getopt' prints
|
||
+/* Callers store zero here to inhibit the error message 'getopt' prints
|
||
for unrecognized options. */
|
||
|
||
extern int opterr;
|
||
@@ -161,25 +164,26 @@ extern int optopt;
|
||
#ifndef __need_getopt
|
||
/* Describe the long-named options requested by the application.
|
||
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
|
||
- of `struct option' terminated by an element containing a name which is
|
||
+ of 'struct option' terminated by an element containing a name which is
|
||
zero.
|
||
|
||
- The field `has_arg' is:
|
||
+ The field 'has_arg' is:
|
||
no_argument (or 0) if the option does not take an argument,
|
||
required_argument (or 1) if the option requires an argument,
|
||
optional_argument (or 2) if the option takes an optional argument.
|
||
|
||
- If the field `flag' is not NULL, it points to a variable that is set
|
||
- to the value given in the field `val' when the option is found, but
|
||
+ If the field 'flag' is not NULL, it points to a variable that is set
|
||
+ to the value given in the field 'val' when the option is found, but
|
||
left unchanged if the option is not found.
|
||
|
||
- To have a long-named option do something other than set an `int' to
|
||
- a compiled-in constant, such as set a value from `optarg', set the
|
||
- option's `flag' field to zero and its `val' field to a nonzero
|
||
+ To have a long-named option do something other than set an 'int' to
|
||
+ a compiled-in constant, such as set a value from 'optarg', set the
|
||
+ option's 'flag' field to zero and its 'val' field to a nonzero
|
||
value (the equivalent single-letter option character, if there is
|
||
- one). For long options that have a zero `flag' field, `getopt'
|
||
- returns the contents of the `val' field. */
|
||
+ one). For long options that have a zero 'flag' field, 'getopt'
|
||
+ returns the contents of the 'val' field. */
|
||
|
||
+# if !GNULIB_defined_struct_option
|
||
struct option
|
||
{
|
||
const char *name;
|
||
@@ -189,8 +193,10 @@ struct option
|
||
int *flag;
|
||
int val;
|
||
};
|
||
+# define GNULIB_defined_struct_option 1
|
||
+# endif
|
||
|
||
-/* Names for the values of the `has_arg' field of `struct option'. */
|
||
+/* Names for the values of the 'has_arg' field of 'struct option'. */
|
||
|
||
# define no_argument 0
|
||
# define required_argument 1
|
||
@@ -204,23 +210,23 @@ struct option
|
||
|
||
Return the option character from OPTS just read. Return -1 when
|
||
there are no more options. For unrecognized options, or options
|
||
- missing arguments, `optopt' is set to the option letter, and '?' is
|
||
+ missing arguments, 'optopt' is set to the option letter, and '?' is
|
||
returned.
|
||
|
||
The OPTS string is a list of characters which are recognized option
|
||
letters, optionally followed by colons, specifying that that letter
|
||
- takes an argument, to be placed in `optarg'.
|
||
+ takes an argument, to be placed in 'optarg'.
|
||
|
||
If a letter in OPTS is followed by two colons, its argument is
|
||
- optional. This behavior is specific to the GNU `getopt'.
|
||
+ optional. This behavior is specific to the GNU 'getopt'.
|
||
|
||
- The argument `--' causes premature termination of argument
|
||
- scanning, explicitly telling `getopt' that there are no more
|
||
+ The argument '--' causes premature termination of argument
|
||
+ scanning, explicitly telling 'getopt' that there are no more
|
||
options.
|
||
|
||
- If OPTS begins with `-', then non-option arguments are treated as
|
||
+ If OPTS begins with '-', then non-option arguments are treated as
|
||
arguments to the option '\1'. This behavior is specific to the GNU
|
||
- `getopt'. If OPTS begins with `+', or POSIXLY_CORRECT is set in
|
||
+ 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in
|
||
the environment, then do not permute arguments. */
|
||
|
||
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
|
||
@@ -245,5 +251,5 @@ extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
|
||
/* Make sure we later can get all the definitions and declarations. */
|
||
#undef __need_getopt
|
||
|
||
-#endif /* getopt.h */
|
||
-#endif /* getopt.h */
|
||
+#endif /* _@GUARD_PREFIX@_GETOPT_H */
|
||
+#endif /* _@GUARD_PREFIX@_GETOPT_H */
|
||
diff --git a/grub-core/gnulib/getopt1.c b/grub-core/gnulib/getopt1.c
|
||
index 046d69f..55a6b4e 100644
|
||
--- a/grub-core/gnulib/getopt1.c
|
||
+++ b/grub-core/gnulib/getopt1.c
|
||
@@ -1,6 +1,6 @@
|
||
/* getopt_long and getopt_long_only entry points for GNU getopt.
|
||
- Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
|
||
- 1998, 2004, 2006, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1987-1994, 1996-1998, 2004, 2006, 2009-2013 Free Software
|
||
+ Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -141,11 +141,11 @@ main (int argc, char **argv)
|
||
break;
|
||
|
||
case 'c':
|
||
- printf ("option c with value `%s'\n", optarg);
|
||
+ printf ("option c with value '%s'\n", optarg);
|
||
break;
|
||
|
||
case 'd':
|
||
- printf ("option d with value `%s'\n", optarg);
|
||
+ printf ("option d with value '%s'\n", optarg);
|
||
break;
|
||
|
||
case '?':
|
||
diff --git a/grub-core/gnulib/getopt_int.h b/grub-core/gnulib/getopt_int.h
|
||
index 980b750..a6e4b9e 100644
|
||
--- a/grub-core/gnulib/getopt_int.h
|
||
+++ b/grub-core/gnulib/getopt_int.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Internal declarations for getopt.
|
||
- Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2010 Free Software
|
||
+ Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2013 Free Software
|
||
Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
|
||
@@ -40,7 +40,7 @@ extern int _getopt_internal (int ___argc, char **___argv,
|
||
stop option processing when the first non-option is seen.
|
||
This is what Unix does.
|
||
This mode of operation is selected by either setting the environment
|
||
- variable POSIXLY_CORRECT, or using `+' as the first character
|
||
+ variable POSIXLY_CORRECT, or using '+' as the first character
|
||
of the list of option characters, or by calling getopt.
|
||
|
||
PERMUTE is the default. We permute the contents of ARGV as we
|
||
@@ -52,12 +52,12 @@ extern int _getopt_internal (int ___argc, char **___argv,
|
||
written to expect options and other ARGV-elements in any order
|
||
and that care about the ordering of the two. We describe each
|
||
non-option ARGV-element as if it were the argument of an option
|
||
- with character code 1. Using `-' as the first character of the
|
||
+ with character code 1. Using '-' as the first character of the
|
||
list of option characters selects this mode of operation.
|
||
|
||
- The special argument `--' forces an end of option-scanning regardless
|
||
- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
|
||
- `--' can cause `getopt' to return -1 with `optind' != ARGC. */
|
||
+ The special argument '--' forces an end of option-scanning regardless
|
||
+ of the value of 'ordering'. In the case of RETURN_IN_ORDER, only
|
||
+ '--' can cause 'getopt' to return -1 with 'optind' != ARGC. */
|
||
|
||
enum __ord
|
||
{
|
||
@@ -99,8 +99,8 @@ struct _getopt_data
|
||
/* Handle permutation of arguments. */
|
||
|
||
/* Describe the part of ARGV that contains non-options that have
|
||
- been skipped. `first_nonopt' is the index in ARGV of the first
|
||
- of them; `last_nonopt' is the index after the last of them. */
|
||
+ been skipped. 'first_nonopt' is the index in ARGV of the first
|
||
+ of them; 'last_nonopt' is the index after the last of them. */
|
||
|
||
int __first_nonopt;
|
||
int __last_nonopt;
|
||
@@ -108,7 +108,7 @@ struct _getopt_data
|
||
#if defined _LIBC && defined USE_NONOPTION_FLAGS
|
||
int __nonoption_flags_max_len;
|
||
int __nonoption_flags_len;
|
||
-# endif
|
||
+#endif
|
||
};
|
||
|
||
/* The initializer is necessary to set OPTIND and OPTERR to their
|
||
diff --git a/grub-core/gnulib/gettext.h b/grub-core/gnulib/gettext.h
|
||
index 881ae33..d021571 100644
|
||
--- a/grub-core/gnulib/gettext.h
|
||
+++ b/grub-core/gnulib/gettext.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Convenience header for conditional use of GNU <libintl.h>.
|
||
- Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2010 Free Software
|
||
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2013 Free Software
|
||
Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _LIBGETTEXT_H
|
||
#define _LIBGETTEXT_H 1
|
||
@@ -54,7 +53,7 @@
|
||
it now, to make later inclusions of <libintl.h> a NOP. */
|
||
#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
|
||
# include <cstdlib>
|
||
-# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
|
||
+# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
|
||
# include <libintl.h>
|
||
# endif
|
||
#endif
|
||
@@ -93,6 +92,12 @@
|
||
|
||
#endif
|
||
|
||
+/* Prefer gnulib's setlocale override over libintl's setlocale override. */
|
||
+#ifdef GNULIB_defined_setlocale
|
||
+# undef setlocale
|
||
+# define setlocale rpl_setlocale
|
||
+#endif
|
||
+
|
||
/* A pseudo function call that serves as a marker for the automated
|
||
extraction of messages, but does not call gettext(). The run-time
|
||
translation is done at a different place in the code.
|
||
@@ -178,9 +183,12 @@ npgettext_aux (const char *domain,
|
||
|
||
#include <string.h>
|
||
|
||
-#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
|
||
- (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
|
||
- /* || __STDC_VERSION__ >= 199901L */ )
|
||
+#if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
|
||
+ /* || __STDC_VERSION__ >= 199901L */ )
|
||
+# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1
|
||
+#else
|
||
+# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0
|
||
+#endif
|
||
|
||
#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
|
||
#include <stdlib.h>
|
||
diff --git a/grub-core/gnulib/intprops.h b/grub-core/gnulib/intprops.h
|
||
index 46f4d47..b473052 100644
|
||
--- a/grub-core/gnulib/intprops.h
|
||
+++ b/grub-core/gnulib/intprops.h
|
||
@@ -1,7 +1,6 @@
|
||
/* intprops.h -- properties of integer types
|
||
|
||
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010 Free Software
|
||
- Foundation, Inc.
|
||
+ Copyright (C) 2001-2005, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -18,66 +17,303 @@
|
||
|
||
/* Written by Paul Eggert. */
|
||
|
||
-#ifndef GL_INTPROPS_H
|
||
-# define GL_INTPROPS_H
|
||
+#ifndef _GL_INTPROPS_H
|
||
+#define _GL_INTPROPS_H
|
||
|
||
-# include <limits.h>
|
||
+#include <limits.h>
|
||
+
|
||
+/* Return an integer value, converted to the same type as the integer
|
||
+ expression E after integer type promotion. V is the unconverted value. */
|
||
+#define _GL_INT_CONVERT(e, v) (0 * (e) + (v))
|
||
+
|
||
+/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
|
||
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>. */
|
||
+#define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v))
|
||
|
||
/* The extra casts in the following macros work around compiler bugs,
|
||
e.g., in Cray C 5.0.3.0. */
|
||
|
||
/* True if the arithmetic type T is an integer type. bool counts as
|
||
an integer. */
|
||
-# define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
|
||
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
|
||
|
||
/* True if negative values of the signed integer type T use two's
|
||
complement, ones' complement, or signed magnitude representation,
|
||
respectively. Much GNU code assumes two's complement, but some
|
||
people like to be portable to all possible C hosts. */
|
||
-# define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
|
||
-# define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
|
||
-# define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
|
||
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
|
||
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
|
||
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
|
||
+
|
||
+/* True if the signed integer expression E uses two's complement. */
|
||
+#define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1)
|
||
|
||
/* True if the arithmetic type T is signed. */
|
||
-# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
|
||
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
|
||
|
||
-/* The maximum and minimum values for the integer type T. These
|
||
+/* Return 1 if the integer expression E, after integer promotion, has
|
||
+ a signed type. */
|
||
+#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
|
||
+
|
||
+
|
||
+/* Minimum and maximum values for integer types and expressions. These
|
||
macros have undefined behavior if T is signed and has padding bits.
|
||
If this is a problem for you, please let us know how to fix it for
|
||
your host. */
|
||
-# define TYPE_MINIMUM(t) \
|
||
- ((t) (! TYPE_SIGNED (t) \
|
||
- ? (t) 0 \
|
||
- : TYPE_SIGNED_MAGNITUDE (t) \
|
||
- ? ~ (t) 0 \
|
||
- : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
|
||
-# define TYPE_MAXIMUM(t) \
|
||
- ((t) (! TYPE_SIGNED (t) \
|
||
- ? (t) -1 \
|
||
- : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
|
||
-
|
||
-/* Return zero if T can be determined to be an unsigned type.
|
||
- Otherwise, return 1.
|
||
- When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a
|
||
- tighter bound. Otherwise, it overestimates the true bound by one byte
|
||
- when applied to unsigned types of size 2, 4, 16, ... bytes.
|
||
- The symbol signed_type_or_expr__ is private to this header file. */
|
||
-# if __GNUC__ >= 2
|
||
-# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t))
|
||
-# else
|
||
-# define signed_type_or_expr__(t) 1
|
||
-# endif
|
||
+
|
||
+/* The maximum and minimum values for the integer type T. */
|
||
+#define TYPE_MINIMUM(t) \
|
||
+ ((t) (! TYPE_SIGNED (t) \
|
||
+ ? (t) 0 \
|
||
+ : TYPE_SIGNED_MAGNITUDE (t) \
|
||
+ ? ~ (t) 0 \
|
||
+ : ~ TYPE_MAXIMUM (t)))
|
||
+#define TYPE_MAXIMUM(t) \
|
||
+ ((t) (! TYPE_SIGNED (t) \
|
||
+ ? (t) -1 \
|
||
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
|
||
+
|
||
+/* The maximum and minimum values for the type of the expression E,
|
||
+ after integer promotion. E should not have side effects. */
|
||
+#define _GL_INT_MINIMUM(e) \
|
||
+ (_GL_INT_SIGNED (e) \
|
||
+ ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \
|
||
+ : _GL_INT_CONVERT (e, 0))
|
||
+#define _GL_INT_MAXIMUM(e) \
|
||
+ (_GL_INT_SIGNED (e) \
|
||
+ ? _GL_SIGNED_INT_MAXIMUM (e) \
|
||
+ : _GL_INT_NEGATE_CONVERT (e, 1))
|
||
+#define _GL_SIGNED_INT_MAXIMUM(e) \
|
||
+ (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1)
|
||
+
|
||
+
|
||
+/* Return 1 if the __typeof__ keyword works. This could be done by
|
||
+ 'configure', but for now it's easier to do it by hand. */
|
||
+#if 2 <= __GNUC__ || 0x5110 <= __SUNPRO_C
|
||
+# define _GL_HAVE___TYPEOF__ 1
|
||
+#else
|
||
+# define _GL_HAVE___TYPEOF__ 0
|
||
+#endif
|
||
+
|
||
+/* Return 1 if the integer type or expression T might be signed. Return 0
|
||
+ if it is definitely unsigned. This macro does not evaluate its argument,
|
||
+ and expands to an integer constant expression. */
|
||
+#if _GL_HAVE___TYPEOF__
|
||
+# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t))
|
||
+#else
|
||
+# define _GL_SIGNED_TYPE_OR_EXPR(t) 1
|
||
+#endif
|
||
+
|
||
+/* Bound on length of the string representing an unsigned integer
|
||
+ value representable in B bits. log10 (2.0) < 146/485. The
|
||
+ smallest value of B where this bound is not tight is 2621. */
|
||
+#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485)
|
||
|
||
/* Bound on length of the string representing an integer type or expression T.
|
||
- Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485;
|
||
- add 1 for integer division truncation; add 1 more for a minus sign
|
||
- if needed. */
|
||
-# define INT_STRLEN_BOUND(t) \
|
||
- ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \
|
||
- + signed_type_or_expr__ (t) + 1)
|
||
+ Subtract 1 for the sign bit if T is signed, and then add 1 more for
|
||
+ a minus sign if needed.
|
||
+
|
||
+ Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is
|
||
+ signed, this macro may overestimate the true bound by one byte when
|
||
+ applied to unsigned types of size 2, 4, 16, ... bytes. */
|
||
+#define INT_STRLEN_BOUND(t) \
|
||
+ (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \
|
||
+ - _GL_SIGNED_TYPE_OR_EXPR (t)) \
|
||
+ + _GL_SIGNED_TYPE_OR_EXPR (t))
|
||
|
||
/* Bound on buffer size needed to represent an integer type or expression T,
|
||
including the terminating null. */
|
||
-# define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
|
||
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
|
||
+
|
||
+
|
||
+/* Range overflow checks.
|
||
+
|
||
+ The INT_<op>_RANGE_OVERFLOW macros return 1 if the corresponding C
|
||
+ operators might not yield numerically correct answers due to
|
||
+ arithmetic overflow. They do not rely on undefined or
|
||
+ implementation-defined behavior. Their implementations are simple
|
||
+ and straightforward, but they are a bit harder to use than the
|
||
+ INT_<op>_OVERFLOW macros described below.
|
||
+
|
||
+ Example usage:
|
||
+
|
||
+ long int i = ...;
|
||
+ long int j = ...;
|
||
+ if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX))
|
||
+ printf ("multiply would overflow");
|
||
+ else
|
||
+ printf ("product is %ld", i * j);
|
||
+
|
||
+ Restrictions on *_RANGE_OVERFLOW macros:
|
||
+
|
||
+ These macros do not check for all possible numerical problems or
|
||
+ undefined or unspecified behavior: they do not check for division
|
||
+ by zero, for bad shift counts, or for shifting negative numbers.
|
||
+
|
||
+ These macros may evaluate their arguments zero or multiple times,
|
||
+ so the arguments should not have side effects. The arithmetic
|
||
+ arguments (including the MIN and MAX arguments) must be of the same
|
||
+ integer type after the usual arithmetic conversions, and the type
|
||
+ must have minimum value MIN and maximum MAX. Unsigned types should
|
||
+ use a zero MIN of the proper type.
|
||
+
|
||
+ These macros are tuned for constant MIN and MAX. For commutative
|
||
+ operations such as A + B, they are also tuned for constant B. */
|
||
+
|
||
+/* Return 1 if A + B would overflow in [MIN,MAX] arithmetic.
|
||
+ See above for restrictions. */
|
||
+#define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \
|
||
+ ((b) < 0 \
|
||
+ ? (a) < (min) - (b) \
|
||
+ : (max) - (b) < (a))
|
||
+
|
||
+/* Return 1 if A - B would overflow in [MIN,MAX] arithmetic.
|
||
+ See above for restrictions. */
|
||
+#define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \
|
||
+ ((b) < 0 \
|
||
+ ? (max) + (b) < (a) \
|
||
+ : (a) < (min) + (b))
|
||
+
|
||
+/* Return 1 if - A would overflow in [MIN,MAX] arithmetic.
|
||
+ See above for restrictions. */
|
||
+#define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \
|
||
+ ((min) < 0 \
|
||
+ ? (a) < - (max) \
|
||
+ : 0 < (a))
|
||
+
|
||
+/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
|
||
+ See above for restrictions. Avoid && and || as they tickle
|
||
+ bugs in Sun C 5.11 2010/08/13 and other compilers; see
|
||
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00401.html>. */
|
||
+#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \
|
||
+ ((b) < 0 \
|
||
+ ? ((a) < 0 \
|
||
+ ? (a) < (max) / (b) \
|
||
+ : (b) == -1 \
|
||
+ ? 0 \
|
||
+ : (min) / (b) < (a)) \
|
||
+ : (b) == 0 \
|
||
+ ? 0 \
|
||
+ : ((a) < 0 \
|
||
+ ? (a) < (min) / (b) \
|
||
+ : (max) / (b) < (a)))
|
||
+
|
||
+/* Return 1 if A / B would overflow in [MIN,MAX] arithmetic.
|
||
+ See above for restrictions. Do not check for division by zero. */
|
||
+#define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \
|
||
+ ((min) < 0 && (b) == -1 && (a) < - (max))
|
||
+
|
||
+/* Return 1 if A % B would overflow in [MIN,MAX] arithmetic.
|
||
+ See above for restrictions. Do not check for division by zero.
|
||
+ Mathematically, % should never overflow, but on x86-like hosts
|
||
+ INT_MIN % -1 traps, and the C standard permits this, so treat this
|
||
+ as an overflow too. */
|
||
+#define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \
|
||
+ INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max)
|
||
+
|
||
+/* Return 1 if A << B would overflow in [MIN,MAX] arithmetic.
|
||
+ See above for restrictions. Here, MIN and MAX are for A only, and B need
|
||
+ not be of the same type as the other arguments. The C standard says that
|
||
+ behavior is undefined for shifts unless 0 <= B < wordwidth, and that when
|
||
+ A is negative then A << B has undefined behavior and A >> B has
|
||
+ implementation-defined behavior, but do not check these other
|
||
+ restrictions. */
|
||
+#define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \
|
||
+ ((a) < 0 \
|
||
+ ? (a) < (min) >> (b) \
|
||
+ : (max) >> (b) < (a))
|
||
+
|
||
+
|
||
+/* The _GL*_OVERFLOW macros have the same restrictions as the
|
||
+ *_RANGE_OVERFLOW macros, except that they do not assume that operands
|
||
+ (e.g., A and B) have the same type as MIN and MAX. Instead, they assume
|
||
+ that the result (e.g., A + B) has that type. */
|
||
+#define _GL_ADD_OVERFLOW(a, b, min, max) \
|
||
+ ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
|
||
+ : (a) < 0 ? (b) <= (a) + (b) \
|
||
+ : (b) < 0 ? (a) <= (a) + (b) \
|
||
+ : (a) + (b) < (b))
|
||
+#define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
|
||
+ ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \
|
||
+ : (a) < 0 ? 1 \
|
||
+ : (b) < 0 ? (a) - (b) <= (a) \
|
||
+ : (a) < (b))
|
||
+#define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
|
||
+ (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \
|
||
+ || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
|
||
+#define _GL_DIVIDE_OVERFLOW(a, b, min, max) \
|
||
+ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
|
||
+ : (a) < 0 ? (b) <= (a) + (b) - 1 \
|
||
+ : (b) < 0 && (a) + (b) <= (a))
|
||
+#define _GL_REMAINDER_OVERFLOW(a, b, min, max) \
|
||
+ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
|
||
+ : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \
|
||
+ : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max))
|
||
+
|
||
+/* Return a nonzero value if A is a mathematical multiple of B, where
|
||
+ A is unsigned, B is negative, and MAX is the maximum value of A's
|
||
+ type. A's type must be the same as (A % B)'s type. Normally (A %
|
||
+ -B == 0) suffices, but things get tricky if -B would overflow. */
|
||
+#define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \
|
||
+ (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \
|
||
+ ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \
|
||
+ ? (a) \
|
||
+ : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \
|
||
+ : (a) % - (b)) \
|
||
+ == 0)
|
||
+
|
||
+
|
||
+/* Integer overflow checks.
|
||
+
|
||
+ The INT_<op>_OVERFLOW macros return 1 if the corresponding C operators
|
||
+ might not yield numerically correct answers due to arithmetic overflow.
|
||
+ They work correctly on all known practical hosts, and do not rely
|
||
+ on undefined behavior due to signed arithmetic overflow.
|
||
+
|
||
+ Example usage:
|
||
+
|
||
+ long int i = ...;
|
||
+ long int j = ...;
|
||
+ if (INT_MULTIPLY_OVERFLOW (i, j))
|
||
+ printf ("multiply would overflow");
|
||
+ else
|
||
+ printf ("product is %ld", i * j);
|
||
+
|
||
+ These macros do not check for all possible numerical problems or
|
||
+ undefined or unspecified behavior: they do not check for division
|
||
+ by zero, for bad shift counts, or for shifting negative numbers.
|
||
+
|
||
+ These macros may evaluate their arguments zero or multiple times, so the
|
||
+ arguments should not have side effects.
|
||
+
|
||
+ These macros are tuned for their last argument being a constant.
|
||
+
|
||
+ Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B,
|
||
+ A % B, and A << B would overflow, respectively. */
|
||
+
|
||
+#define INT_ADD_OVERFLOW(a, b) \
|
||
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
|
||
+#define INT_SUBTRACT_OVERFLOW(a, b) \
|
||
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
|
||
+#define INT_NEGATE_OVERFLOW(a) \
|
||
+ INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
|
||
+#define INT_MULTIPLY_OVERFLOW(a, b) \
|
||
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
|
||
+#define INT_DIVIDE_OVERFLOW(a, b) \
|
||
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW)
|
||
+#define INT_REMAINDER_OVERFLOW(a, b) \
|
||
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW)
|
||
+#define INT_LEFT_SHIFT_OVERFLOW(a, b) \
|
||
+ INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \
|
||
+ _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
|
||
+
|
||
+/* Return 1 if the expression A <op> B would overflow,
|
||
+ where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test,
|
||
+ assuming MIN and MAX are the minimum and maximum for the result type.
|
||
+ Arguments should be free of side effects. */
|
||
+#define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \
|
||
+ op_result_overflow (a, b, \
|
||
+ _GL_INT_MINIMUM (0 * (b) + (a)), \
|
||
+ _GL_INT_MAXIMUM (0 * (b) + (a)))
|
||
|
||
-#endif /* GL_INTPROPS_H */
|
||
+#endif /* _GL_INTPROPS_H */
|
||
diff --git a/grub-core/gnulib/itold.c b/grub-core/gnulib/itold.c
|
||
new file mode 100644
|
||
index 0000000..9aabc7e
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/itold.c
|
||
@@ -0,0 +1,28 @@
|
||
+/* Replacement for 'int' to 'long double' conversion routine.
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+/* Specification. */
|
||
+#include <float.h>
|
||
+
|
||
+void
|
||
+_Qp_itoq (long double *result, int a)
|
||
+{
|
||
+ /* Convert from 'int' to 'double', then from 'double' to 'long double'. */
|
||
+ *result = (double) a;
|
||
+}
|
||
diff --git a/grub-core/gnulib/langinfo.in.h b/grub-core/gnulib/langinfo.in.h
|
||
index 3a92647..5388ce6 100644
|
||
--- a/grub-core/gnulib/langinfo.in.h
|
||
+++ b/grub-core/gnulib/langinfo.in.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Substitute for and wrapper around <langinfo.h>.
|
||
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,27 +12,27 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/*
|
||
* POSIX <langinfo.h> for platforms that lack it or have an incomplete one.
|
||
* <http://www.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html>
|
||
*/
|
||
|
||
-#ifndef _GL_LANGINFO_H
|
||
+#ifndef _@GUARD_PREFIX@_LANGINFO_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
#if @HAVE_LANGINFO_H@
|
||
# @INCLUDE_NEXT@ @NEXT_LANGINFO_H@
|
||
#endif
|
||
|
||
-#ifndef _GL_LANGINFO_H
|
||
-#define _GL_LANGINFO_H
|
||
+#ifndef _@GUARD_PREFIX@_LANGINFO_H
|
||
+#define _@GUARD_PREFIX@_LANGINFO_H
|
||
|
||
|
||
#if !@HAVE_LANGINFO_H@
|
||
@@ -40,7 +40,10 @@
|
||
/* A platform that lacks <langinfo.h>. */
|
||
|
||
/* Assume that it also lacks <nl_types.h> and the nl_item type. */
|
||
+# if !GNULIB_defined_nl_item
|
||
typedef int nl_item;
|
||
+# define GNULIB_defined_nl_item 1
|
||
+# endif
|
||
|
||
/* nl_langinfo items of the LC_CTYPE category */
|
||
# define CODESET 10000
|
||
@@ -169,5 +172,5 @@ _GL_WARN_ON_USE (nl_langinfo, "nl_langinfo is not portable - "
|
||
#endif
|
||
|
||
|
||
-#endif /* _GL_LANGINFO_H */
|
||
-#endif /* _GL_LANGINFO_H */
|
||
+#endif /* _@GUARD_PREFIX@_LANGINFO_H */
|
||
+#endif /* _@GUARD_PREFIX@_LANGINFO_H */
|
||
diff --git a/grub-core/gnulib/localcharset.c b/grub-core/gnulib/localcharset.c
|
||
index fa2207f..953cc1e 100644
|
||
--- a/grub-core/gnulib/localcharset.c
|
||
+++ b/grub-core/gnulib/localcharset.c
|
||
@@ -1,6 +1,6 @@
|
||
/* Determine a canonical name for the current locale's character encoding.
|
||
|
||
- Copyright (C) 2000-2006, 2008-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2000-2006, 2008-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* Written by Bruno Haible <bruno@clisp.org>. */
|
||
|
||
@@ -30,11 +29,11 @@
|
||
#include <stdlib.h>
|
||
|
||
#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
|
||
-# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */
|
||
+# define DARWIN7 /* Darwin 7 or newer, i.e. Mac OS X 10.3 or newer */
|
||
#endif
|
||
|
||
#if defined _WIN32 || defined __WIN32__
|
||
-# define WIN32_NATIVE
|
||
+# define WINDOWS_NATIVE
|
||
#endif
|
||
|
||
#if defined __EMX__
|
||
@@ -44,7 +43,7 @@
|
||
# endif
|
||
#endif
|
||
|
||
-#if !defined WIN32_NATIVE
|
||
+#if !defined WINDOWS_NATIVE
|
||
# include <unistd.h>
|
||
# if HAVE_LANGINFO_CODESET
|
||
# include <langinfo.h>
|
||
@@ -57,7 +56,7 @@
|
||
# define WIN32_LEAN_AND_MEAN
|
||
# include <windows.h>
|
||
# endif
|
||
-#elif defined WIN32_NATIVE
|
||
+#elif defined WINDOWS_NATIVE
|
||
# define WIN32_LEAN_AND_MEAN
|
||
# include <windows.h>
|
||
#endif
|
||
@@ -83,7 +82,7 @@
|
||
#endif
|
||
|
||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
|
||
- /* Win32, Cygwin, OS/2, DOS */
|
||
+ /* Native Windows, Cygwin, OS/2, DOS */
|
||
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
|
||
#endif
|
||
|
||
@@ -123,7 +122,7 @@ get_charset_aliases (void)
|
||
cp = charset_aliases;
|
||
if (cp == NULL)
|
||
{
|
||
-#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
|
||
+#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__)
|
||
const char *dir;
|
||
const char *base = "charset.alias";
|
||
char *file_name;
|
||
@@ -228,8 +227,7 @@ get_charset_aliases (void)
|
||
{
|
||
/* Out of memory. */
|
||
res_size = 0;
|
||
- if (old_res_ptr != NULL)
|
||
- free (old_res_ptr);
|
||
+ free (old_res_ptr);
|
||
break;
|
||
}
|
||
strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
|
||
@@ -309,7 +307,7 @@ get_charset_aliases (void)
|
||
"DECKOREAN" "\0" "EUC-KR" "\0";
|
||
# endif
|
||
|
||
-# if defined WIN32_NATIVE || defined __CYGWIN__
|
||
+# if defined WINDOWS_NATIVE || defined __CYGWIN__
|
||
/* To avoid the troubles of installing a separate file in the same
|
||
directory as the DLL and of retrieving the DLL's directory at
|
||
runtime, simply inline the aliases here. */
|
||
@@ -361,7 +359,7 @@ locale_charset (void)
|
||
const char *codeset;
|
||
const char *aliases;
|
||
|
||
-#if !(defined WIN32_NATIVE || defined OS2)
|
||
+#if !(defined WINDOWS_NATIVE || defined OS2)
|
||
|
||
# if HAVE_LANGINFO_CODESET
|
||
|
||
@@ -408,10 +406,10 @@ locale_charset (void)
|
||
}
|
||
}
|
||
|
||
- /* Woe32 has a function returning the locale's codepage as a number:
|
||
- GetACP(). This encoding is used by Cygwin, unless the user has set
|
||
- the environment variable CYGWIN=codepage:oem (which very few people
|
||
- do).
|
||
+ /* The Windows API has a function returning the locale's codepage as a
|
||
+ number: GetACP(). This encoding is used by Cygwin, unless the user
|
||
+ has set the environment variable CYGWIN=codepage:oem (which very few
|
||
+ people do).
|
||
Output directed to console windows needs to be converted (to
|
||
GetOEMCP() if the console is using a raster font, or to
|
||
GetConsoleOutputCP() if it is using a TrueType font). Cygwin does
|
||
@@ -454,12 +452,12 @@ locale_charset (void)
|
||
|
||
# endif
|
||
|
||
-#elif defined WIN32_NATIVE
|
||
+#elif defined WINDOWS_NATIVE
|
||
|
||
static char buf[2 + 10 + 1];
|
||
|
||
- /* Woe32 has a function returning the locale's codepage as a number:
|
||
- GetACP().
|
||
+ /* The Windows API has a function returning the locale's codepage as a
|
||
+ number: GetACP().
|
||
When the output goes to a console window, it needs to be provided in
|
||
GetOEMCP() encoding if the console is using a raster font, or in
|
||
GetConsoleOutputCP() encoding if it is using a TrueType font.
|
||
@@ -544,5 +542,12 @@ locale_charset (void)
|
||
if (codeset[0] == '\0')
|
||
codeset = "ASCII";
|
||
|
||
+#ifdef DARWIN7
|
||
+ /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8"
|
||
+ (the default codeset) does not work when MB_CUR_MAX is 1. */
|
||
+ if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX <= 1)
|
||
+ codeset = "ASCII";
|
||
+#endif
|
||
+
|
||
return codeset;
|
||
}
|
||
diff --git a/grub-core/gnulib/localcharset.h b/grub-core/gnulib/localcharset.h
|
||
index 899b3ba..c209829 100644
|
||
--- a/grub-core/gnulib/localcharset.h
|
||
+++ b/grub-core/gnulib/localcharset.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Determine a canonical name for the current locale's character encoding.
|
||
- Copyright (C) 2000-2003, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2000-2003, 2009-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU CHARSET Library.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _LOCALCHARSET_H
|
||
#define _LOCALCHARSET_H
|
||
diff --git a/grub-core/gnulib/locale.in.h b/grub-core/gnulib/locale.in.h
|
||
new file mode 100644
|
||
index 0000000..264161a
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/locale.in.h
|
||
@@ -0,0 +1,216 @@
|
||
+/* A POSIX <locale.h>.
|
||
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#if __GNUC__ >= 3
|
||
+@PRAGMA_SYSTEM_HEADER@
|
||
+#endif
|
||
+@PRAGMA_COLUMNS@
|
||
+
|
||
+#ifdef _GL_ALREADY_INCLUDING_LOCALE_H
|
||
+
|
||
+/* Special invocation conventions to handle Solaris header files
|
||
+ (through Solaris 10) when combined with gettext's libintl.h. */
|
||
+
|
||
+#@INCLUDE_NEXT@ @NEXT_LOCALE_H@
|
||
+
|
||
+#else
|
||
+/* Normal invocation convention. */
|
||
+
|
||
+#ifndef _@GUARD_PREFIX@_LOCALE_H
|
||
+
|
||
+#define _GL_ALREADY_INCLUDING_LOCALE_H
|
||
+
|
||
+/* The include_next requires a split double-inclusion guard. */
|
||
+#@INCLUDE_NEXT@ @NEXT_LOCALE_H@
|
||
+
|
||
+#undef _GL_ALREADY_INCLUDING_LOCALE_H
|
||
+
|
||
+#ifndef _@GUARD_PREFIX@_LOCALE_H
|
||
+#define _@GUARD_PREFIX@_LOCALE_H
|
||
+
|
||
+/* NetBSD 5.0 mis-defines NULL. */
|
||
+#include <stddef.h>
|
||
+
|
||
+/* Mac OS X 10.5 defines the locale_t type in <xlocale.h>. */
|
||
+#if @HAVE_XLOCALE_H@
|
||
+# include <xlocale.h>
|
||
+#endif
|
||
+
|
||
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||
+
|
||
+/* The definition of _GL_ARG_NONNULL is copied here. */
|
||
+
|
||
+/* The definition of _GL_WARN_ON_USE is copied here. */
|
||
+
|
||
+/* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C.
|
||
+ On systems that don't define it, use the same value as GNU libintl. */
|
||
+#if !defined LC_MESSAGES
|
||
+# define LC_MESSAGES 1729
|
||
+#endif
|
||
+
|
||
+/* Bionic libc's 'struct lconv' is just a dummy. */
|
||
+#if @REPLACE_STRUCT_LCONV@
|
||
+# define lconv rpl_lconv
|
||
+struct lconv
|
||
+{
|
||
+ /* All 'char *' are actually 'const char *'. */
|
||
+
|
||
+ /* Members that depend on the LC_NUMERIC category of the locale. See
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */
|
||
+
|
||
+ /* Symbol used as decimal point. */
|
||
+ char *decimal_point;
|
||
+ /* Symbol used to separate groups of digits to the left of the decimal
|
||
+ point. */
|
||
+ char *thousands_sep;
|
||
+ /* Definition of the size of groups of digits to the left of the decimal
|
||
+ point. */
|
||
+ char *grouping;
|
||
+
|
||
+ /* Members that depend on the LC_MONETARY category of the locale. See
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */
|
||
+
|
||
+ /* Symbol used as decimal point. */
|
||
+ char *mon_decimal_point;
|
||
+ /* Symbol used to separate groups of digits to the left of the decimal
|
||
+ point. */
|
||
+ char *mon_thousands_sep;
|
||
+ /* Definition of the size of groups of digits to the left of the decimal
|
||
+ point. */
|
||
+ char *mon_grouping;
|
||
+ /* Sign used to indicate a value >= 0. */
|
||
+ char *positive_sign;
|
||
+ /* Sign used to indicate a value < 0. */
|
||
+ char *negative_sign;
|
||
+
|
||
+ /* For formatting local currency. */
|
||
+ /* Currency symbol (3 characters) followed by separator (1 character). */
|
||
+ char *currency_symbol;
|
||
+ /* Number of digits after the decimal point. */
|
||
+ char frac_digits;
|
||
+ /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
|
||
+ comes after the number. */
|
||
+ char p_cs_precedes;
|
||
+ /* For values >= 0: Position of the sign. */
|
||
+ char p_sign_posn;
|
||
+ /* For values >= 0: Placement of spaces between currency symbol, sign, and
|
||
+ number. */
|
||
+ char p_sep_by_space;
|
||
+ /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
|
||
+ comes after the number. */
|
||
+ char n_cs_precedes;
|
||
+ /* For values < 0: Position of the sign. */
|
||
+ char n_sign_posn;
|
||
+ /* For values < 0: Placement of spaces between currency symbol, sign, and
|
||
+ number. */
|
||
+ char n_sep_by_space;
|
||
+
|
||
+ /* For formatting international currency. */
|
||
+ /* Currency symbol (3 characters) followed by separator (1 character). */
|
||
+ char *int_curr_symbol;
|
||
+ /* Number of digits after the decimal point. */
|
||
+ char int_frac_digits;
|
||
+ /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
|
||
+ comes after the number. */
|
||
+ char int_p_cs_precedes;
|
||
+ /* For values >= 0: Position of the sign. */
|
||
+ char int_p_sign_posn;
|
||
+ /* For values >= 0: Placement of spaces between currency symbol, sign, and
|
||
+ number. */
|
||
+ char int_p_sep_by_space;
|
||
+ /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
|
||
+ comes after the number. */
|
||
+ char int_n_cs_precedes;
|
||
+ /* For values < 0: Position of the sign. */
|
||
+ char int_n_sign_posn;
|
||
+ /* For values < 0: Placement of spaces between currency symbol, sign, and
|
||
+ number. */
|
||
+ char int_n_sep_by_space;
|
||
+};
|
||
+#endif
|
||
+
|
||
+#if @GNULIB_LOCALECONV@
|
||
+# if @REPLACE_LOCALECONV@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef localeconv
|
||
+# define localeconv rpl_localeconv
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (localeconv, struct lconv *, (void));
|
||
+_GL_CXXALIAS_RPL (localeconv, struct lconv *, (void));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (localeconv, struct lconv *, (void));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (localeconv);
|
||
+#elif @REPLACE_STRUCT_LCONV@
|
||
+# undef localeconv
|
||
+# define localeconv localeconv_used_without_requesting_gnulib_module_localeconv
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef localeconv
|
||
+# if HAVE_RAW_DECL_LOCALECONV
|
||
+_GL_WARN_ON_USE (localeconv,
|
||
+ "localeconv returns too few information on some platforms - "
|
||
+ "use gnulib module localeconv for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#if @GNULIB_SETLOCALE@
|
||
+# if @REPLACE_SETLOCALE@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef setlocale
|
||
+# define setlocale rpl_setlocale
|
||
+# define GNULIB_defined_setlocale 1
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale));
|
||
+_GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (setlocale);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef setlocale
|
||
+# if HAVE_RAW_DECL_SETLOCALE
|
||
+_GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - "
|
||
+ "use gnulib module setlocale for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#if @GNULIB_DUPLOCALE@
|
||
+# if @REPLACE_DUPLOCALE@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef duplocale
|
||
+# define duplocale rpl_duplocale
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale));
|
||
+# else
|
||
+# if @HAVE_DUPLOCALE@
|
||
+_GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale));
|
||
+# endif
|
||
+# endif
|
||
+# if @HAVE_DUPLOCALE@
|
||
+_GL_CXXALIASWARN (duplocale);
|
||
+# endif
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef duplocale
|
||
+# if HAVE_RAW_DECL_DUPLOCALE
|
||
+_GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - "
|
||
+ "use gnulib module duplocale for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#endif /* _@GUARD_PREFIX@_LOCALE_H */
|
||
+#endif /* ! _GL_ALREADY_INCLUDING_LOCALE_H */
|
||
+#endif /* _@GUARD_PREFIX@_LOCALE_H */
|
||
diff --git a/grub-core/gnulib/localeconv.c b/grub-core/gnulib/localeconv.c
|
||
new file mode 100644
|
||
index 0000000..7c7c77c
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/localeconv.c
|
||
@@ -0,0 +1,103 @@
|
||
+/* Query locale dependent information for formatting numbers.
|
||
+ Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+/* Specification. */
|
||
+#include <locale.h>
|
||
+
|
||
+#if HAVE_STRUCT_LCONV_DECIMAL_POINT
|
||
+
|
||
+/* Override for platforms where 'struct lconv' lacks the int_p_*, int_n_*
|
||
+ members. */
|
||
+
|
||
+struct lconv *
|
||
+localeconv (void)
|
||
+{
|
||
+ static struct lconv result;
|
||
+# undef lconv
|
||
+# undef localeconv
|
||
+ struct lconv *sys_result = localeconv ();
|
||
+
|
||
+ result.decimal_point = sys_result->decimal_point;
|
||
+ result.thousands_sep = sys_result->thousands_sep;
|
||
+ result.grouping = sys_result->grouping;
|
||
+ result.mon_decimal_point = sys_result->mon_decimal_point;
|
||
+ result.mon_thousands_sep = sys_result->mon_thousands_sep;
|
||
+ result.mon_grouping = sys_result->mon_grouping;
|
||
+ result.positive_sign = sys_result->positive_sign;
|
||
+ result.negative_sign = sys_result->negative_sign;
|
||
+ result.currency_symbol = sys_result->currency_symbol;
|
||
+ result.frac_digits = sys_result->frac_digits;
|
||
+ result.p_cs_precedes = sys_result->p_cs_precedes;
|
||
+ result.p_sign_posn = sys_result->p_sign_posn;
|
||
+ result.p_sep_by_space = sys_result->p_sep_by_space;
|
||
+ result.n_cs_precedes = sys_result->n_cs_precedes;
|
||
+ result.n_sign_posn = sys_result->n_sign_posn;
|
||
+ result.n_sep_by_space = sys_result->n_sep_by_space;
|
||
+ result.int_curr_symbol = sys_result->int_curr_symbol;
|
||
+ result.int_frac_digits = sys_result->int_frac_digits;
|
||
+ result.int_p_cs_precedes = sys_result->p_cs_precedes;
|
||
+ result.int_p_sign_posn = sys_result->p_sign_posn;
|
||
+ result.int_p_sep_by_space = sys_result->p_sep_by_space;
|
||
+ result.int_n_cs_precedes = sys_result->n_cs_precedes;
|
||
+ result.int_n_sign_posn = sys_result->n_sign_posn;
|
||
+ result.int_n_sep_by_space = sys_result->n_sep_by_space;
|
||
+
|
||
+ return &result;
|
||
+}
|
||
+
|
||
+#else
|
||
+
|
||
+/* Override for platforms where 'struct lconv' is a dummy. */
|
||
+
|
||
+# include <limits.h>
|
||
+
|
||
+struct lconv *
|
||
+localeconv (void)
|
||
+{
|
||
+ static /*const*/ struct lconv result =
|
||
+ {
|
||
+ /* decimal_point */ ".",
|
||
+ /* thousands_sep */ "",
|
||
+ /* grouping */ "",
|
||
+ /* mon_decimal_point */ "",
|
||
+ /* mon_thousands_sep */ "",
|
||
+ /* mon_grouping */ "",
|
||
+ /* positive_sign */ "",
|
||
+ /* negative_sign */ "",
|
||
+ /* currency_symbol */ "",
|
||
+ /* frac_digits */ CHAR_MAX,
|
||
+ /* p_cs_precedes */ CHAR_MAX,
|
||
+ /* p_sign_posn */ CHAR_MAX,
|
||
+ /* p_sep_by_space */ CHAR_MAX,
|
||
+ /* n_cs_precedes */ CHAR_MAX,
|
||
+ /* n_sign_posn */ CHAR_MAX,
|
||
+ /* n_sep_by_space */ CHAR_MAX,
|
||
+ /* int_curr_symbol */ "",
|
||
+ /* int_frac_digits */ CHAR_MAX,
|
||
+ /* int_p_cs_precedes */ CHAR_MAX,
|
||
+ /* int_p_sign_posn */ CHAR_MAX,
|
||
+ /* int_p_sep_by_space */ CHAR_MAX,
|
||
+ /* int_n_cs_precedes */ CHAR_MAX,
|
||
+ /* int_n_sign_posn */ CHAR_MAX,
|
||
+ /* int_n_sep_by_space */ CHAR_MAX
|
||
+ };
|
||
+
|
||
+ return &result;
|
||
+}
|
||
+
|
||
+#endif
|
||
diff --git a/grub-core/gnulib/malloc.c b/grub-core/gnulib/malloc.c
|
||
index 4fa38ee..908735d 100644
|
||
--- a/grub-core/gnulib/malloc.c
|
||
+++ b/grub-core/gnulib/malloc.c
|
||
@@ -1,6 +1,6 @@
|
||
/* malloc() function that is glibc compatible.
|
||
|
||
- Copyright (C) 1997-1998, 2006-2007, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1997-1998, 2006-2007, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,11 +13,11 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* written by Jim Meyering and Bruno Haible */
|
||
|
||
+#define _GL_USE_STDLIB_ALLOC 1
|
||
#include <config.h>
|
||
/* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h. */
|
||
#ifdef malloc
|
||
@@ -28,14 +28,10 @@
|
||
# define NEED_MALLOC_GNU 1
|
||
#endif
|
||
|
||
-/* Specification. */
|
||
#include <stdlib.h>
|
||
|
||
#include <errno.h>
|
||
|
||
-/* Call the system's malloc below. */
|
||
-#undef malloc
|
||
-
|
||
/* Allocate an N-byte block of memory from the heap.
|
||
If N is zero, allocate a 1-byte block. */
|
||
|
||
diff --git a/grub-core/gnulib/mbrtowc.c b/grub-core/gnulib/mbrtowc.c
|
||
index 5c2650e..5ee44ae 100644
|
||
--- a/grub-core/gnulib/mbrtowc.c
|
||
+++ b/grub-core/gnulib/mbrtowc.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Convert multibyte character to wide character.
|
||
- Copyright (C) 1999-2002, 2005-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1999-2002, 2005-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -40,9 +40,6 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
{
|
||
char *pstate = (char *)ps;
|
||
|
||
- if (pstate == NULL)
|
||
- pstate = internal_state;
|
||
-
|
||
if (s == NULL)
|
||
{
|
||
pwc = NULL;
|
||
@@ -54,6 +51,10 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
return (size_t)(-2);
|
||
|
||
/* Here n > 0. */
|
||
+
|
||
+ if (pstate == NULL)
|
||
+ pstate = internal_state;
|
||
+
|
||
{
|
||
size_t nstate = pstate[0];
|
||
char buf[4];
|
||
@@ -91,7 +92,7 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
|
||
/* Here m > 0. */
|
||
|
||
-# if __GLIBC__
|
||
+# if __GLIBC__ || defined __UCLIBC__
|
||
/* Work around bug <http://sourceware.org/bugzilla/show_bug.cgi?id=9674> */
|
||
mbtowc (NULL, NULL, 0);
|
||
# endif
|
||
@@ -127,7 +128,7 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
{
|
||
const char *encoding = locale_charset ();
|
||
|
||
- if (STREQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
|
||
+ if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
|
||
{
|
||
/* Cf. unistr/u8-mblen.c. */
|
||
unsigned char c = (unsigned char) p[0];
|
||
@@ -184,7 +185,8 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
/* As a reference for this code, you can use the GNU libiconv
|
||
implementation. Look for uses of the RET_TOOFEW macro. */
|
||
|
||
- if (STREQ (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
|
||
+ if (STREQ_OPT (encoding,
|
||
+ "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
|
||
{
|
||
if (m == 1)
|
||
{
|
||
@@ -207,9 +209,12 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
}
|
||
goto invalid;
|
||
}
|
||
- if (STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
|
||
- || STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
|
||
- || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0))
|
||
+ if (STREQ_OPT (encoding,
|
||
+ "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
|
||
+ || STREQ_OPT (encoding,
|
||
+ "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
|
||
+ || STREQ_OPT (encoding,
|
||
+ "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0))
|
||
{
|
||
if (m == 1)
|
||
{
|
||
@@ -220,7 +225,8 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
}
|
||
goto invalid;
|
||
}
|
||
- if (STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
|
||
+ if (STREQ_OPT (encoding,
|
||
+ "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
|
||
{
|
||
if (m == 1)
|
||
{
|
||
@@ -238,7 +244,8 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
}
|
||
goto invalid;
|
||
}
|
||
- if (STREQ (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
|
||
+ if (STREQ_OPT (encoding,
|
||
+ "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
|
||
{
|
||
if (m == 1)
|
||
{
|
||
@@ -271,7 +278,7 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
}
|
||
goto invalid;
|
||
}
|
||
- if (STREQ (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
|
||
+ if (STREQ_OPT (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
|
||
{
|
||
if (m == 1)
|
||
{
|
||
@@ -321,7 +328,7 @@ mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
size_t
|
||
rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
{
|
||
-# if MBRTOWC_NULL_ARG_BUG || MBRTOWC_RETVAL_BUG
|
||
+# if MBRTOWC_NULL_ARG2_BUG || MBRTOWC_RETVAL_BUG
|
||
if (s == NULL)
|
||
{
|
||
pwc = NULL;
|
||
@@ -334,7 +341,7 @@ rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
{
|
||
static mbstate_t internal_state;
|
||
|
||
- /* Override mbrtowc's internal state. We can not call mbsinit() on the
|
||
+ /* Override mbrtowc's internal state. We cannot call mbsinit() on the
|
||
hidden internal state, but we can call it on our variable. */
|
||
if (ps == NULL)
|
||
ps = &internal_state;
|
||
@@ -379,7 +386,16 @@ rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||
return ret;
|
||
}
|
||
# else
|
||
- return mbrtowc (pwc, s, n, ps);
|
||
+ {
|
||
+# if MBRTOWC_NULL_ARG1_BUG
|
||
+ wchar_t dummy;
|
||
+
|
||
+ if (pwc == NULL)
|
||
+ pwc = &dummy;
|
||
+# endif
|
||
+
|
||
+ return mbrtowc (pwc, s, n, ps);
|
||
+ }
|
||
# endif
|
||
}
|
||
|
||
diff --git a/grub-core/gnulib/mbsinit.c b/grub-core/gnulib/mbsinit.c
|
||
index 066ddfe..26fbb7f 100644
|
||
--- a/grub-core/gnulib/mbsinit.c
|
||
+++ b/grub-core/gnulib/mbsinit.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Test for initial conversion state.
|
||
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -22,6 +22,18 @@
|
||
|
||
#include "verify.h"
|
||
|
||
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
|
||
+
|
||
+/* On native Windows, 'mbstate_t' is defined as 'int'. */
|
||
+
|
||
+int
|
||
+mbsinit (const mbstate_t *ps)
|
||
+{
|
||
+ return ps == NULL || *ps == 0;
|
||
+}
|
||
+
|
||
+#else
|
||
+
|
||
/* Platforms that lack mbsinit() also lack mbrlen(), mbrtowc(), mbsrtowcs()
|
||
and wcrtomb(), wcsrtombs().
|
||
We assume that
|
||
@@ -43,5 +55,7 @@ mbsinit (const mbstate_t *ps)
|
||
{
|
||
const char *pstate = (const char *)ps;
|
||
|
||
- return pstate[0] == 0;
|
||
+ return pstate == NULL || pstate[0] == 0;
|
||
}
|
||
+
|
||
+#endif
|
||
diff --git a/grub-core/gnulib/mbsrtowcs-impl.h b/grub-core/gnulib/mbsrtowcs-impl.h
|
||
new file mode 100644
|
||
index 0000000..b50e973
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/mbsrtowcs-impl.h
|
||
@@ -0,0 +1,122 @@
|
||
+/* Convert string to wide string.
|
||
+ Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+size_t
|
||
+mbsrtowcs (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
|
||
+{
|
||
+ if (ps == NULL)
|
||
+ ps = &_gl_mbsrtowcs_state;
|
||
+ {
|
||
+ const char *src = *srcp;
|
||
+
|
||
+ if (dest != NULL)
|
||
+ {
|
||
+ wchar_t *destptr = dest;
|
||
+
|
||
+ for (; len > 0; destptr++, len--)
|
||
+ {
|
||
+ size_t src_avail;
|
||
+ size_t ret;
|
||
+
|
||
+ /* An optimized variant of
|
||
+ src_avail = strnlen1 (src, MB_LEN_MAX); */
|
||
+ if (src[0] == '\0')
|
||
+ src_avail = 1;
|
||
+ else if (src[1] == '\0')
|
||
+ src_avail = 2;
|
||
+ else if (src[2] == '\0')
|
||
+ src_avail = 3;
|
||
+ else if (MB_LEN_MAX <= 4 || src[3] == '\0')
|
||
+ src_avail = 4;
|
||
+ else
|
||
+ src_avail = 4 + strnlen1 (src + 4, MB_LEN_MAX - 4);
|
||
+
|
||
+ /* Parse the next multibyte character. */
|
||
+ ret = mbrtowc (destptr, src, src_avail, ps);
|
||
+
|
||
+ if (ret == (size_t)(-2))
|
||
+ /* Encountered a multibyte character that extends past a '\0' byte
|
||
+ or that is longer than MB_LEN_MAX bytes. Cannot happen. */
|
||
+ abort ();
|
||
+
|
||
+ if (ret == (size_t)(-1))
|
||
+ goto bad_input;
|
||
+ if (ret == 0)
|
||
+ {
|
||
+ src = NULL;
|
||
+ /* Here mbsinit (ps). */
|
||
+ break;
|
||
+ }
|
||
+ src += ret;
|
||
+ }
|
||
+
|
||
+ *srcp = src;
|
||
+ return destptr - dest;
|
||
+ }
|
||
+ else
|
||
+ {
|
||
+ /* Ignore dest and len, don't store *srcp at the end, and
|
||
+ don't clobber *ps. */
|
||
+ mbstate_t state = *ps;
|
||
+ size_t totalcount = 0;
|
||
+
|
||
+ for (;; totalcount++)
|
||
+ {
|
||
+ size_t src_avail;
|
||
+ size_t ret;
|
||
+
|
||
+ /* An optimized variant of
|
||
+ src_avail = strnlen1 (src, MB_LEN_MAX); */
|
||
+ if (src[0] == '\0')
|
||
+ src_avail = 1;
|
||
+ else if (src[1] == '\0')
|
||
+ src_avail = 2;
|
||
+ else if (src[2] == '\0')
|
||
+ src_avail = 3;
|
||
+ else if (MB_LEN_MAX <= 4 || src[3] == '\0')
|
||
+ src_avail = 4;
|
||
+ else
|
||
+ src_avail = 4 + strnlen1 (src + 4, MB_LEN_MAX - 4);
|
||
+
|
||
+ /* Parse the next multibyte character. */
|
||
+ ret = mbrtowc (NULL, src, src_avail, &state);
|
||
+
|
||
+ if (ret == (size_t)(-2))
|
||
+ /* Encountered a multibyte character that extends past a '\0' byte
|
||
+ or that is longer than MB_LEN_MAX bytes. Cannot happen. */
|
||
+ abort ();
|
||
+
|
||
+ if (ret == (size_t)(-1))
|
||
+ goto bad_input2;
|
||
+ if (ret == 0)
|
||
+ {
|
||
+ /* Here mbsinit (&state). */
|
||
+ break;
|
||
+ }
|
||
+ src += ret;
|
||
+ }
|
||
+
|
||
+ return totalcount;
|
||
+ }
|
||
+
|
||
+ bad_input:
|
||
+ *srcp = src;
|
||
+ bad_input2:
|
||
+ errno = EILSEQ;
|
||
+ return (size_t)(-1);
|
||
+ }
|
||
+}
|
||
diff --git a/grub-core/gnulib/mbsrtowcs-state.c b/grub-core/gnulib/mbsrtowcs-state.c
|
||
index 35045f6..5a0b888 100644
|
||
--- a/grub-core/gnulib/mbsrtowcs-state.c
|
||
+++ b/grub-core/gnulib/mbsrtowcs-state.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Convert string to wide string.
|
||
- Copyright (C) 2008-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -22,7 +22,7 @@
|
||
/* Internal state used by the functions mbsrtowcs() and mbsnrtowcs(). */
|
||
mbstate_t _gl_mbsrtowcs_state
|
||
/* The state must initially be in the "initial state"; so, zero-initialize it.
|
||
- On most systems, putting it into BSS is sufficient. Not so on MacOS X 10.3,
|
||
+ On most systems, putting it into BSS is sufficient. Not so on Mac OS X 10.3,
|
||
see <http://lists.gnu.org/archive/html/bug-gnulib/2009-01/msg00329.html>.
|
||
When it needs an initializer, use 0 or {0} as initializer? 0 only works
|
||
when mbstate_t is a scalar type (such as when gnulib defines it, or on
|
||
diff --git a/grub-core/gnulib/mbsrtowcs.c b/grub-core/gnulib/mbsrtowcs.c
|
||
index c577f36..116ff49 100644
|
||
--- a/grub-core/gnulib/mbsrtowcs.c
|
||
+++ b/grub-core/gnulib/mbsrtowcs.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Convert string to wide string.
|
||
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -29,108 +29,4 @@
|
||
|
||
extern mbstate_t _gl_mbsrtowcs_state;
|
||
|
||
-size_t
|
||
-mbsrtowcs (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
|
||
-{
|
||
- if (ps == NULL)
|
||
- ps = &_gl_mbsrtowcs_state;
|
||
- {
|
||
- const char *src = *srcp;
|
||
-
|
||
- if (dest != NULL)
|
||
- {
|
||
- wchar_t *destptr = dest;
|
||
-
|
||
- for (; len > 0; destptr++, len--)
|
||
- {
|
||
- size_t src_avail;
|
||
- size_t ret;
|
||
-
|
||
- /* An optimized variant of
|
||
- src_avail = strnlen1 (src, MB_LEN_MAX); */
|
||
- if (src[0] == '\0')
|
||
- src_avail = 1;
|
||
- else if (src[1] == '\0')
|
||
- src_avail = 2;
|
||
- else if (src[2] == '\0')
|
||
- src_avail = 3;
|
||
- else if (MB_LEN_MAX <= 4 || src[3] == '\0')
|
||
- src_avail = 4;
|
||
- else
|
||
- src_avail = 4 + strnlen1 (src + 4, MB_LEN_MAX - 4);
|
||
-
|
||
- /* Parse the next multibyte character. */
|
||
- ret = mbrtowc (destptr, src, src_avail, ps);
|
||
-
|
||
- if (ret == (size_t)(-2))
|
||
- /* Encountered a multibyte character that extends past a '\0' byte
|
||
- or that is longer than MB_LEN_MAX bytes. Cannot happen. */
|
||
- abort ();
|
||
-
|
||
- if (ret == (size_t)(-1))
|
||
- goto bad_input;
|
||
- if (ret == 0)
|
||
- {
|
||
- src = NULL;
|
||
- /* Here mbsinit (ps). */
|
||
- break;
|
||
- }
|
||
- src += ret;
|
||
- }
|
||
-
|
||
- *srcp = src;
|
||
- return destptr - dest;
|
||
- }
|
||
- else
|
||
- {
|
||
- /* Ignore dest and len, don't store *srcp at the end, and
|
||
- don't clobber *ps. */
|
||
- mbstate_t state = *ps;
|
||
- size_t totalcount = 0;
|
||
-
|
||
- for (;; totalcount++)
|
||
- {
|
||
- size_t src_avail;
|
||
- size_t ret;
|
||
-
|
||
- /* An optimized variant of
|
||
- src_avail = strnlen1 (src, MB_LEN_MAX); */
|
||
- if (src[0] == '\0')
|
||
- src_avail = 1;
|
||
- else if (src[1] == '\0')
|
||
- src_avail = 2;
|
||
- else if (src[2] == '\0')
|
||
- src_avail = 3;
|
||
- else if (MB_LEN_MAX <= 4 || src[3] == '\0')
|
||
- src_avail = 4;
|
||
- else
|
||
- src_avail = 4 + strnlen1 (src + 4, MB_LEN_MAX - 4);
|
||
-
|
||
- /* Parse the next multibyte character. */
|
||
- ret = mbrtowc (NULL, src, src_avail, &state);
|
||
-
|
||
- if (ret == (size_t)(-2))
|
||
- /* Encountered a multibyte character that extends past a '\0' byte
|
||
- or that is longer than MB_LEN_MAX bytes. Cannot happen. */
|
||
- abort ();
|
||
-
|
||
- if (ret == (size_t)(-1))
|
||
- goto bad_input2;
|
||
- if (ret == 0)
|
||
- {
|
||
- /* Here mbsinit (&state). */
|
||
- break;
|
||
- }
|
||
- src += ret;
|
||
- }
|
||
-
|
||
- return totalcount;
|
||
- }
|
||
-
|
||
- bad_input:
|
||
- *srcp = src;
|
||
- bad_input2:
|
||
- errno = EILSEQ;
|
||
- return (size_t)(-1);
|
||
- }
|
||
-}
|
||
+#include "mbsrtowcs-impl.h"
|
||
diff --git a/grub-core/gnulib/mbswidth.c b/grub-core/gnulib/mbswidth.c
|
||
new file mode 100644
|
||
index 0000000..baa4f27
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/mbswidth.c
|
||
@@ -0,0 +1,199 @@
|
||
+/* Determine the number of screen columns needed for a string.
|
||
+ Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+/* Written by Bruno Haible <haible@clisp.cons.org>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+/* Specification. */
|
||
+#include "mbswidth.h"
|
||
+
|
||
+/* Get MB_CUR_MAX. */
|
||
+#include <stdlib.h>
|
||
+
|
||
+#include <string.h>
|
||
+
|
||
+/* Get isprint(). */
|
||
+#include <ctype.h>
|
||
+
|
||
+/* Get mbstate_t, mbrtowc(), mbsinit(), wcwidth(). */
|
||
+#include <wchar.h>
|
||
+
|
||
+/* Get iswcntrl(). */
|
||
+#include <wctype.h>
|
||
+
|
||
+/* Get INT_MAX. */
|
||
+#include <limits.h>
|
||
+
|
||
+/* Returns the number of columns needed to represent the multibyte
|
||
+ character string pointed to by STRING. If a non-printable character
|
||
+ occurs, and MBSW_REJECT_UNPRINTABLE is specified, -1 is returned.
|
||
+ With flags = MBSW_REJECT_INVALID | MBSW_REJECT_UNPRINTABLE, this is
|
||
+ the multibyte analogue of the wcswidth function. */
|
||
+int
|
||
+mbswidth (const char *string, int flags)
|
||
+{
|
||
+ return mbsnwidth (string, strlen (string), flags);
|
||
+}
|
||
+
|
||
+/* Returns the number of columns needed to represent the multibyte
|
||
+ character string pointed to by STRING of length NBYTES. If a
|
||
+ non-printable character occurs, and MBSW_REJECT_UNPRINTABLE is
|
||
+ specified, -1 is returned. */
|
||
+int
|
||
+mbsnwidth (const char *string, size_t nbytes, int flags)
|
||
+{
|
||
+ const char *p = string;
|
||
+ const char *plimit = p + nbytes;
|
||
+ int width;
|
||
+
|
||
+ width = 0;
|
||
+ if (MB_CUR_MAX > 1)
|
||
+ {
|
||
+ while (p < plimit)
|
||
+ switch (*p)
|
||
+ {
|
||
+ case ' ': case '!': case '"': case '#': case '%':
|
||
+ case '&': case '\'': case '(': case ')': case '*':
|
||
+ case '+': case ',': case '-': case '.': case '/':
|
||
+ case '0': case '1': case '2': case '3': case '4':
|
||
+ case '5': case '6': case '7': case '8': case '9':
|
||
+ case ':': case ';': case '<': case '=': case '>':
|
||
+ case '?':
|
||
+ case 'A': case 'B': case 'C': case 'D': case 'E':
|
||
+ case 'F': case 'G': case 'H': case 'I': case 'J':
|
||
+ case 'K': case 'L': case 'M': case 'N': case 'O':
|
||
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
|
||
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
|
||
+ case 'Z':
|
||
+ case '[': case '\\': case ']': case '^': case '_':
|
||
+ case 'a': case 'b': case 'c': case 'd': case 'e':
|
||
+ case 'f': case 'g': case 'h': case 'i': case 'j':
|
||
+ case 'k': case 'l': case 'm': case 'n': case 'o':
|
||
+ case 'p': case 'q': case 'r': case 's': case 't':
|
||
+ case 'u': case 'v': case 'w': case 'x': case 'y':
|
||
+ case 'z': case '{': case '|': case '}': case '~':
|
||
+ /* These characters are printable ASCII characters. */
|
||
+ p++;
|
||
+ width++;
|
||
+ break;
|
||
+ case '\0':
|
||
+ if (flags & MBSW_STOP_AT_NUL)
|
||
+ return width;
|
||
+ default:
|
||
+ /* If we have a multibyte sequence, scan it up to its end. */
|
||
+ {
|
||
+ mbstate_t mbstate;
|
||
+ memset (&mbstate, 0, sizeof mbstate);
|
||
+ do
|
||
+ {
|
||
+ wchar_t wc;
|
||
+ size_t bytes;
|
||
+ int w;
|
||
+
|
||
+ bytes = mbrtowc (&wc, p, plimit - p, &mbstate);
|
||
+
|
||
+ if (bytes == (size_t) -1)
|
||
+ /* An invalid multibyte sequence was encountered. */
|
||
+ {
|
||
+ if (!(flags & MBSW_REJECT_INVALID))
|
||
+ {
|
||
+ p++;
|
||
+ width++;
|
||
+ break;
|
||
+ }
|
||
+ else
|
||
+ return -1;
|
||
+ }
|
||
+
|
||
+ if (bytes == (size_t) -2)
|
||
+ /* An incomplete multibyte character at the end. */
|
||
+ {
|
||
+ if (!(flags & MBSW_REJECT_INVALID))
|
||
+ {
|
||
+ p = plimit;
|
||
+ width++;
|
||
+ break;
|
||
+ }
|
||
+ else
|
||
+ return -1;
|
||
+ }
|
||
+
|
||
+ if (bytes == 0)
|
||
+ /* A null wide character was encountered. */
|
||
+ bytes = 1;
|
||
+
|
||
+ w = wcwidth (wc);
|
||
+ if (w >= 0)
|
||
+ /* A printable multibyte character. */
|
||
+ {
|
||
+ if (w > INT_MAX - width)
|
||
+ goto overflow;
|
||
+ width += w;
|
||
+ }
|
||
+ else
|
||
+ /* An unprintable multibyte character. */
|
||
+ if (!(flags & MBSW_REJECT_UNPRINTABLE))
|
||
+ {
|
||
+ if (!iswcntrl (wc))
|
||
+ {
|
||
+ if (width == INT_MAX)
|
||
+ goto overflow;
|
||
+ width++;
|
||
+ }
|
||
+ }
|
||
+ else
|
||
+ return -1;
|
||
+
|
||
+ p += bytes;
|
||
+ }
|
||
+ while (! mbsinit (&mbstate));
|
||
+ }
|
||
+ break;
|
||
+ }
|
||
+ return width;
|
||
+ }
|
||
+
|
||
+ while (p < plimit)
|
||
+ {
|
||
+ unsigned char c = (unsigned char) *p++;
|
||
+
|
||
+ if (c == 0 && (flags & MBSW_STOP_AT_NUL))
|
||
+ return width;
|
||
+
|
||
+ if (isprint (c))
|
||
+ {
|
||
+ if (width == INT_MAX)
|
||
+ goto overflow;
|
||
+ width++;
|
||
+ }
|
||
+ else if (!(flags & MBSW_REJECT_UNPRINTABLE))
|
||
+ {
|
||
+ if (!iscntrl (c))
|
||
+ {
|
||
+ if (width == INT_MAX)
|
||
+ goto overflow;
|
||
+ width++;
|
||
+ }
|
||
+ }
|
||
+ else
|
||
+ return -1;
|
||
+ }
|
||
+ return width;
|
||
+
|
||
+ overflow:
|
||
+ return INT_MAX;
|
||
+}
|
||
diff --git a/grub-core/gnulib/mbswidth.h b/grub-core/gnulib/mbswidth.h
|
||
new file mode 100644
|
||
index 0000000..d7207c5
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/mbswidth.h
|
||
@@ -0,0 +1,63 @@
|
||
+/* Determine the number of screen columns needed for a string.
|
||
+ Copyright (C) 2000-2004, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <stddef.h>
|
||
+
|
||
+/* Avoid a clash of our mbswidth() with a function of the same name defined
|
||
+ in UnixWare 7.1.1 <wchar.h>. We need this #include before the #define
|
||
+ below.
|
||
+ However, we don't want to #include <wchar.h> on all platforms because
|
||
+ - Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ - BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before
|
||
+ <wchar.h>. */
|
||
+#if HAVE_DECL_MBSWIDTH_IN_WCHAR_H
|
||
+# include <wchar.h>
|
||
+#endif
|
||
+
|
||
+
|
||
+#ifdef __cplusplus
|
||
+extern "C" {
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Optional flags to influence mbswidth/mbsnwidth behavior. */
|
||
+
|
||
+/* If this bit is set, return -1 upon finding an invalid or incomplete
|
||
+ character. Otherwise, assume invalid characters have width 1. */
|
||
+#define MBSW_REJECT_INVALID 1
|
||
+
|
||
+/* If this bit is set, return -1 upon finding a non-printable character.
|
||
+ Otherwise, assume unprintable characters have width 0 if they are
|
||
+ control characters and 1 otherwise. */
|
||
+#define MBSW_REJECT_UNPRINTABLE 2
|
||
+
|
||
+/* If this bit is set \0 is treated as the end of string.
|
||
+ Otherwise it's treated as a normal one column width character. */
|
||
+#define MBSW_STOP_AT_NUL 4
|
||
+
|
||
+/* Returns the number of screen columns needed for STRING. */
|
||
+#define mbswidth gnu_mbswidth /* avoid clash with UnixWare 7.1.1 function */
|
||
+extern int mbswidth (const char *string, int flags);
|
||
+
|
||
+/* Returns the number of screen columns needed for the NBYTES bytes
|
||
+ starting at BUF. */
|
||
+extern int mbsnwidth (const char *buf, size_t nbytes, int flags);
|
||
+
|
||
+
|
||
+#ifdef __cplusplus
|
||
+}
|
||
+#endif
|
||
diff --git a/grub-core/gnulib/mbtowc-impl.h b/grub-core/gnulib/mbtowc-impl.h
|
||
new file mode 100644
|
||
index 0000000..767ab39
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/mbtowc-impl.h
|
||
@@ -0,0 +1,44 @@
|
||
+/* Convert multibyte character to wide character.
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+/* We don't need a static internal state, because the encoding is not state
|
||
+ dependent, and when mbrtowc returns (size_t)(-2). we throw the result
|
||
+ away. */
|
||
+
|
||
+int
|
||
+mbtowc (wchar_t *pwc, const char *s, size_t n)
|
||
+{
|
||
+ if (s == NULL)
|
||
+ return 0;
|
||
+ else
|
||
+ {
|
||
+ mbstate_t state;
|
||
+ wchar_t wc;
|
||
+ size_t result;
|
||
+
|
||
+ memset (&state, 0, sizeof (mbstate_t));
|
||
+ result = mbrtowc (&wc, s, n, &state);
|
||
+ if (result == (size_t)-1 || result == (size_t)-2)
|
||
+ {
|
||
+ errno = EILSEQ;
|
||
+ return -1;
|
||
+ }
|
||
+ if (pwc != NULL)
|
||
+ *pwc = wc;
|
||
+ return (wc == 0 ? 0 : result);
|
||
+ }
|
||
+}
|
||
diff --git a/grub-core/gnulib/mbtowc.c b/grub-core/gnulib/mbtowc.c
|
||
new file mode 100644
|
||
index 0000000..632f2e1
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/mbtowc.c
|
||
@@ -0,0 +1,26 @@
|
||
+/* Convert multibyte character to wide character.
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+#include <stdlib.h>
|
||
+
|
||
+#include <errno.h>
|
||
+#include <string.h>
|
||
+#include <wchar.h>
|
||
+
|
||
+#include "mbtowc-impl.h"
|
||
diff --git a/grub-core/gnulib/memchr.c b/grub-core/gnulib/memchr.c
|
||
index 6c2b2d6..3db38a9 100644
|
||
--- a/grub-core/gnulib/memchr.c
|
||
+++ b/grub-core/gnulib/memchr.c
|
||
@@ -1,4 +1,4 @@
|
||
-/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2010
|
||
+/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2013
|
||
Free Software Foundation, Inc.
|
||
|
||
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
|
||
diff --git a/grub-core/gnulib/mempcpy.c b/grub-core/gnulib/mempcpy.c
|
||
index b624d69..5582368 100644
|
||
--- a/grub-core/gnulib/mempcpy.c
|
||
+++ b/grub-core/gnulib/mempcpy.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Copy memory area and return pointer after last written byte.
|
||
- Copyright (C) 2003, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2003, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#include <config.h>
|
||
|
||
diff --git a/grub-core/gnulib/msvc-inval.c b/grub-core/gnulib/msvc-inval.c
|
||
new file mode 100644
|
||
index 0000000..72a6b6e
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/msvc-inval.c
|
||
@@ -0,0 +1,129 @@
|
||
+/* Invalid parameter handler for MSVC runtime libraries.
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software; you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3, or (at your option)
|
||
+ any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License along
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+/* Specification. */
|
||
+#include "msvc-inval.h"
|
||
+
|
||
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
|
||
+ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING)
|
||
+
|
||
+/* Get _invalid_parameter_handler type and _set_invalid_parameter_handler
|
||
+ declaration. */
|
||
+# include <stdlib.h>
|
||
+
|
||
+# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
|
||
+
|
||
+static void cdecl
|
||
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
|
||
+ const wchar_t *function,
|
||
+ const wchar_t *file,
|
||
+ unsigned int line,
|
||
+ uintptr_t dummy)
|
||
+{
|
||
+}
|
||
+
|
||
+# else
|
||
+
|
||
+/* Get declarations of the native Windows API functions. */
|
||
+# define WIN32_LEAN_AND_MEAN
|
||
+# include <windows.h>
|
||
+
|
||
+# if defined _MSC_VER
|
||
+
|
||
+static void cdecl
|
||
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
|
||
+ const wchar_t *function,
|
||
+ const wchar_t *file,
|
||
+ unsigned int line,
|
||
+ uintptr_t dummy)
|
||
+{
|
||
+ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL);
|
||
+}
|
||
+
|
||
+# else
|
||
+
|
||
+/* An index to thread-local storage. */
|
||
+static DWORD tls_index;
|
||
+static int tls_initialized /* = 0 */;
|
||
+
|
||
+/* Used as a fallback only. */
|
||
+static struct gl_msvc_inval_per_thread not_per_thread;
|
||
+
|
||
+struct gl_msvc_inval_per_thread *
|
||
+gl_msvc_inval_current (void)
|
||
+{
|
||
+ if (!tls_initialized)
|
||
+ {
|
||
+ tls_index = TlsAlloc ();
|
||
+ tls_initialized = 1;
|
||
+ }
|
||
+ if (tls_index == TLS_OUT_OF_INDEXES)
|
||
+ /* TlsAlloc had failed. */
|
||
+ return ¬_per_thread;
|
||
+ else
|
||
+ {
|
||
+ struct gl_msvc_inval_per_thread *pointer =
|
||
+ (struct gl_msvc_inval_per_thread *) TlsGetValue (tls_index);
|
||
+ if (pointer == NULL)
|
||
+ {
|
||
+ /* First call. Allocate a new 'struct gl_msvc_inval_per_thread'. */
|
||
+ pointer =
|
||
+ (struct gl_msvc_inval_per_thread *)
|
||
+ malloc (sizeof (struct gl_msvc_inval_per_thread));
|
||
+ if (pointer == NULL)
|
||
+ /* Could not allocate memory. Use the global storage. */
|
||
+ pointer = ¬_per_thread;
|
||
+ TlsSetValue (tls_index, pointer);
|
||
+ }
|
||
+ return pointer;
|
||
+ }
|
||
+}
|
||
+
|
||
+static void cdecl
|
||
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
|
||
+ const wchar_t *function,
|
||
+ const wchar_t *file,
|
||
+ unsigned int line,
|
||
+ uintptr_t dummy)
|
||
+{
|
||
+ struct gl_msvc_inval_per_thread *current = gl_msvc_inval_current ();
|
||
+ if (current->restart_valid)
|
||
+ longjmp (current->restart, 1);
|
||
+ else
|
||
+ /* An invalid parameter notification from outside the gnulib code.
|
||
+ Give the caller a chance to intervene. */
|
||
+ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL);
|
||
+}
|
||
+
|
||
+# endif
|
||
+
|
||
+# endif
|
||
+
|
||
+static int gl_msvc_inval_initialized /* = 0 */;
|
||
+
|
||
+void
|
||
+gl_msvc_inval_ensure_handler (void)
|
||
+{
|
||
+ if (gl_msvc_inval_initialized == 0)
|
||
+ {
|
||
+ _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler);
|
||
+ gl_msvc_inval_initialized = 1;
|
||
+ }
|
||
+}
|
||
+
|
||
+#endif
|
||
diff --git a/grub-core/gnulib/msvc-inval.h b/grub-core/gnulib/msvc-inval.h
|
||
new file mode 100644
|
||
index 0000000..dcb0353
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/msvc-inval.h
|
||
@@ -0,0 +1,222 @@
|
||
+/* Invalid parameter handler for MSVC runtime libraries.
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software; you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3, or (at your option)
|
||
+ any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License along
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#ifndef _MSVC_INVAL_H
|
||
+#define _MSVC_INVAL_H
|
||
+
|
||
+/* With MSVC runtime libraries with the "invalid parameter handler" concept,
|
||
+ functions like fprintf(), dup2(), or close() crash when the caller passes
|
||
+ an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF)
|
||
+ instead.
|
||
+ This file defines macros that turn such an invalid parameter notification
|
||
+ into a non-local exit. An error code can then be produced at the target
|
||
+ of this exit. You can thus write code like
|
||
+
|
||
+ TRY_MSVC_INVAL
|
||
+ {
|
||
+ <Code that can trigger an invalid parameter notification
|
||
+ but does not do 'return', 'break', 'continue', nor 'goto'.>
|
||
+ }
|
||
+ CATCH_MSVC_INVAL
|
||
+ {
|
||
+ <Code that handles an invalid parameter notification
|
||
+ but does not do 'return', 'break', 'continue', nor 'goto'.>
|
||
+ }
|
||
+ DONE_MSVC_INVAL;
|
||
+
|
||
+ This entire block expands to a single statement.
|
||
+
|
||
+ The handling of invalid parameters can be done in three ways:
|
||
+
|
||
+ * The default way, which is reasonable for programs (not libraries):
|
||
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [DEFAULT_HANDLING])
|
||
+
|
||
+ * The way for libraries that make "hairy" calls (like close(-1), or
|
||
+ fclose(fp) where fileno(fp) is closed, or simply getdtablesize()):
|
||
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [HAIRY_LIBRARY_HANDLING])
|
||
+
|
||
+ * The way for libraries that make no "hairy" calls:
|
||
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING])
|
||
+ */
|
||
+
|
||
+#define DEFAULT_HANDLING 0
|
||
+#define HAIRY_LIBRARY_HANDLING 1
|
||
+#define SANE_LIBRARY_HANDLING 2
|
||
+
|
||
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
|
||
+ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING)
|
||
+/* A native Windows platform with the "invalid parameter handler" concept,
|
||
+ and either DEFAULT_HANDLING or HAIRY_LIBRARY_HANDLING. */
|
||
+
|
||
+# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
|
||
+/* Default handling. */
|
||
+
|
||
+# ifdef __cplusplus
|
||
+extern "C" {
|
||
+# endif
|
||
+
|
||
+/* Ensure that the invalid parameter handler in installed that just returns.
|
||
+ Because we assume no other part of the program installs a different
|
||
+ invalid parameter handler, this solution is multithread-safe. */
|
||
+extern void gl_msvc_inval_ensure_handler (void);
|
||
+
|
||
+# ifdef __cplusplus
|
||
+}
|
||
+# endif
|
||
+
|
||
+# define TRY_MSVC_INVAL \
|
||
+ do \
|
||
+ { \
|
||
+ gl_msvc_inval_ensure_handler (); \
|
||
+ if (1)
|
||
+# define CATCH_MSVC_INVAL \
|
||
+ else
|
||
+# define DONE_MSVC_INVAL \
|
||
+ } \
|
||
+ while (0)
|
||
+
|
||
+# else
|
||
+/* Handling for hairy libraries. */
|
||
+
|
||
+# include <excpt.h>
|
||
+
|
||
+/* Gnulib can define its own status codes, as described in the page
|
||
+ "Raising Software Exceptions" on microsoft.com
|
||
+ <http://msdn.microsoft.com/en-us/library/het71c37.aspx>.
|
||
+ Our status codes are composed of
|
||
+ - 0xE0000000, mandatory for all user-defined status codes,
|
||
+ - 0x474E550, a API identifier ("GNU"),
|
||
+ - 0, 1, 2, ..., used to distinguish different status codes from the
|
||
+ same API. */
|
||
+# define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0)
|
||
+
|
||
+# if defined _MSC_VER
|
||
+/* A compiler that supports __try/__except, as described in the page
|
||
+ "try-except statement" on microsoft.com
|
||
+ <http://msdn.microsoft.com/en-us/library/s58ftw19.aspx>.
|
||
+ With __try/__except, we can use the multithread-safe exception handling. */
|
||
+
|
||
+# ifdef __cplusplus
|
||
+extern "C" {
|
||
+# endif
|
||
+
|
||
+/* Ensure that the invalid parameter handler in installed that raises a
|
||
+ software exception with code STATUS_GNULIB_INVALID_PARAMETER.
|
||
+ Because we assume no other part of the program installs a different
|
||
+ invalid parameter handler, this solution is multithread-safe. */
|
||
+extern void gl_msvc_inval_ensure_handler (void);
|
||
+
|
||
+# ifdef __cplusplus
|
||
+}
|
||
+# endif
|
||
+
|
||
+# define TRY_MSVC_INVAL \
|
||
+ do \
|
||
+ { \
|
||
+ gl_msvc_inval_ensure_handler (); \
|
||
+ __try
|
||
+# define CATCH_MSVC_INVAL \
|
||
+ __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \
|
||
+ ? EXCEPTION_EXECUTE_HANDLER \
|
||
+ : EXCEPTION_CONTINUE_SEARCH)
|
||
+# define DONE_MSVC_INVAL \
|
||
+ } \
|
||
+ while (0)
|
||
+
|
||
+# else
|
||
+/* Any compiler.
|
||
+ We can only use setjmp/longjmp. */
|
||
+
|
||
+# include <setjmp.h>
|
||
+
|
||
+# ifdef __cplusplus
|
||
+extern "C" {
|
||
+# endif
|
||
+
|
||
+struct gl_msvc_inval_per_thread
|
||
+{
|
||
+ /* The restart that will resume execution at the code between
|
||
+ CATCH_MSVC_INVAL and DONE_MSVC_INVAL. It is enabled only between
|
||
+ TRY_MSVC_INVAL and CATCH_MSVC_INVAL. */
|
||
+ jmp_buf restart;
|
||
+
|
||
+ /* Tells whether the contents of restart is valid. */
|
||
+ int restart_valid;
|
||
+};
|
||
+
|
||
+/* Ensure that the invalid parameter handler in installed that passes
|
||
+ control to the gl_msvc_inval_restart if it is valid, or raises a
|
||
+ software exception with code STATUS_GNULIB_INVALID_PARAMETER otherwise.
|
||
+ Because we assume no other part of the program installs a different
|
||
+ invalid parameter handler, this solution is multithread-safe. */
|
||
+extern void gl_msvc_inval_ensure_handler (void);
|
||
+
|
||
+/* Return a pointer to the per-thread data for the current thread. */
|
||
+extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void);
|
||
+
|
||
+# ifdef __cplusplus
|
||
+}
|
||
+# endif
|
||
+
|
||
+# define TRY_MSVC_INVAL \
|
||
+ do \
|
||
+ { \
|
||
+ struct gl_msvc_inval_per_thread *msvc_inval_current; \
|
||
+ gl_msvc_inval_ensure_handler (); \
|
||
+ msvc_inval_current = gl_msvc_inval_current (); \
|
||
+ /* First, initialize gl_msvc_inval_restart. */ \
|
||
+ if (setjmp (msvc_inval_current->restart) == 0) \
|
||
+ { \
|
||
+ /* Then, mark it as valid. */ \
|
||
+ msvc_inval_current->restart_valid = 1;
|
||
+# define CATCH_MSVC_INVAL \
|
||
+ /* Execution completed. \
|
||
+ Mark gl_msvc_inval_restart as invalid. */ \
|
||
+ msvc_inval_current->restart_valid = 0; \
|
||
+ } \
|
||
+ else \
|
||
+ { \
|
||
+ /* Execution triggered an invalid parameter notification. \
|
||
+ Mark gl_msvc_inval_restart as invalid. */ \
|
||
+ msvc_inval_current->restart_valid = 0;
|
||
+# define DONE_MSVC_INVAL \
|
||
+ } \
|
||
+ } \
|
||
+ while (0)
|
||
+
|
||
+# endif
|
||
+
|
||
+# endif
|
||
+
|
||
+#else
|
||
+/* A platform that does not need to the invalid parameter handler,
|
||
+ or when SANE_LIBRARY_HANDLING is desired. */
|
||
+
|
||
+/* The braces here avoid GCC warnings like
|
||
+ "warning: suggest explicit braces to avoid ambiguous 'else'". */
|
||
+# define TRY_MSVC_INVAL \
|
||
+ do \
|
||
+ { \
|
||
+ if (1)
|
||
+# define CATCH_MSVC_INVAL \
|
||
+ else
|
||
+# define DONE_MSVC_INVAL \
|
||
+ } \
|
||
+ while (0)
|
||
+
|
||
+#endif
|
||
+
|
||
+#endif /* _MSVC_INVAL_H */
|
||
diff --git a/grub-core/gnulib/msvc-nothrow.c b/grub-core/gnulib/msvc-nothrow.c
|
||
new file mode 100644
|
||
index 0000000..8d65472
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/msvc-nothrow.c
|
||
@@ -0,0 +1,49 @@
|
||
+/* Wrappers that don't throw invalid parameter notifications
|
||
+ with MSVC runtime libraries.
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software; you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3, or (at your option)
|
||
+ any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License along
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+/* Specification. */
|
||
+#include "msvc-nothrow.h"
|
||
+
|
||
+/* Get declarations of the native Windows API functions. */
|
||
+#define WIN32_LEAN_AND_MEAN
|
||
+#include <windows.h>
|
||
+
|
||
+#include "msvc-inval.h"
|
||
+
|
||
+#undef _get_osfhandle
|
||
+
|
||
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
|
||
+intptr_t
|
||
+_gl_nothrow_get_osfhandle (int fd)
|
||
+{
|
||
+ intptr_t result;
|
||
+
|
||
+ TRY_MSVC_INVAL
|
||
+ {
|
||
+ result = _get_osfhandle (fd);
|
||
+ }
|
||
+ CATCH_MSVC_INVAL
|
||
+ {
|
||
+ result = (intptr_t) INVALID_HANDLE_VALUE;
|
||
+ }
|
||
+ DONE_MSVC_INVAL;
|
||
+
|
||
+ return result;
|
||
+}
|
||
+#endif
|
||
diff --git a/grub-core/gnulib/msvc-nothrow.h b/grub-core/gnulib/msvc-nothrow.h
|
||
new file mode 100644
|
||
index 0000000..5f52181
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/msvc-nothrow.h
|
||
@@ -0,0 +1,43 @@
|
||
+/* Wrappers that don't throw invalid parameter notifications
|
||
+ with MSVC runtime libraries.
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software; you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3, or (at your option)
|
||
+ any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License along
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#ifndef _MSVC_NOTHROW_H
|
||
+#define _MSVC_NOTHROW_H
|
||
+
|
||
+/* With MSVC runtime libraries with the "invalid parameter handler" concept,
|
||
+ functions like fprintf(), dup2(), or close() crash when the caller passes
|
||
+ an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF)
|
||
+ instead.
|
||
+ This file defines wrappers that turn such an invalid parameter notification
|
||
+ into an error code. */
|
||
+
|
||
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||
+
|
||
+/* Get original declaration of _get_osfhandle. */
|
||
+# include <io.h>
|
||
+
|
||
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
|
||
+
|
||
+/* Override _get_osfhandle. */
|
||
+extern intptr_t _gl_nothrow_get_osfhandle (int fd);
|
||
+# define _get_osfhandle _gl_nothrow_get_osfhandle
|
||
+
|
||
+# endif
|
||
+
|
||
+#endif
|
||
+
|
||
+#endif /* _MSVC_NOTHROW_H */
|
||
diff --git a/grub-core/gnulib/nl_langinfo.c b/grub-core/gnulib/nl_langinfo.c
|
||
index a3d0d11..771c953 100644
|
||
--- a/grub-core/gnulib/nl_langinfo.c
|
||
+++ b/grub-core/gnulib/nl_langinfo.c
|
||
@@ -1,6 +1,6 @@
|
||
/* nl_langinfo() replacement: query locale dependent information.
|
||
|
||
- Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -97,7 +97,7 @@ rpl_nl_langinfo (nl_item item)
|
||
strings, appended in memory. */
|
||
return "\0\0\0\0\0\0\0\0\0\0";
|
||
# endif
|
||
-# if GNULIB_defined_YESEXPR
|
||
+# if GNULIB_defined_YESEXPR || !FUNC_NL_LANGINFO_YESEXPR_WORKS
|
||
case YESEXPR:
|
||
return "^[yY]";
|
||
case NOEXPR:
|
||
@@ -141,7 +141,8 @@ nl_langinfo (nl_item item)
|
||
{
|
||
static char buf[2 + 10 + 1];
|
||
|
||
- /* Woe32 has a function returning the locale's codepage as a number. */
|
||
+ /* The Windows API has a function returning the locale's codepage as
|
||
+ a number. */
|
||
sprintf (buf, "CP%u", GetACP ());
|
||
return buf;
|
||
}
|
||
diff --git a/grub-core/gnulib/printf-args.c b/grub-core/gnulib/printf-args.c
|
||
index 46c03a2..c27e6bc 100644
|
||
--- a/grub-core/gnulib/printf-args.c
|
||
+++ b/grub-core/gnulib/printf-args.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Decomposed printf argument list.
|
||
- Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2010 Free Software
|
||
+ Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2013 Free Software
|
||
Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* This file can be parametrized with the following macros:
|
||
ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions.
|
||
diff --git a/grub-core/gnulib/printf-args.h b/grub-core/gnulib/printf-args.h
|
||
index 2536eba..2a9c2a3 100644
|
||
--- a/grub-core/gnulib/printf-args.h
|
||
+++ b/grub-core/gnulib/printf-args.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Decomposed printf argument list.
|
||
- Copyright (C) 1999, 2002-2003, 2006-2007, 2009-2010 Free Software
|
||
+ Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2013 Free Software
|
||
Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _PRINTF_ARGS_H
|
||
#define _PRINTF_ARGS_H
|
||
@@ -136,10 +135,14 @@ typedef struct
|
||
}
|
||
argument;
|
||
|
||
+/* Number of directly allocated arguments (no malloc() needed). */
|
||
+#define N_DIRECT_ALLOC_ARGUMENTS 7
|
||
+
|
||
typedef struct
|
||
{
|
||
size_t count;
|
||
argument *arg;
|
||
+ argument direct_alloc_arg[N_DIRECT_ALLOC_ARGUMENTS];
|
||
}
|
||
arguments;
|
||
|
||
diff --git a/grub-core/gnulib/printf-parse.c b/grub-core/gnulib/printf-parse.c
|
||
index f612beb..23cacc1 100644
|
||
--- a/grub-core/gnulib/printf-parse.c
|
||
+++ b/grub-core/gnulib/printf-parse.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Formatted output to strings.
|
||
- Copyright (C) 1999-2000, 2002-2003, 2006-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1999-2000, 2002-2003, 2006-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* This file can be parametrized with the following macros:
|
||
CHAR_T The element type of the format string.
|
||
@@ -63,6 +62,9 @@
|
||
/* malloc(), realloc(), free(). */
|
||
#include <stdlib.h>
|
||
|
||
+/* memcpy(). */
|
||
+#include <string.h>
|
||
+
|
||
/* errno. */
|
||
#include <errno.h>
|
||
|
||
@@ -80,23 +82,20 @@ STATIC
|
||
int
|
||
PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||
{
|
||
- const CHAR_T *cp = format; /* pointer into format */
|
||
+ const CHAR_T *cp = format; /* pointer into format */
|
||
size_t arg_posn = 0; /* number of regular arguments consumed */
|
||
- size_t d_allocated; /* allocated elements of d->dir */
|
||
- size_t a_allocated; /* allocated elements of a->arg */
|
||
+ size_t d_allocated; /* allocated elements of d->dir */
|
||
+ size_t a_allocated; /* allocated elements of a->arg */
|
||
size_t max_width_length = 0;
|
||
size_t max_precision_length = 0;
|
||
|
||
d->count = 0;
|
||
- d_allocated = 1;
|
||
- d->dir = (DIRECTIVE *) malloc (d_allocated * sizeof (DIRECTIVE));
|
||
- if (d->dir == NULL)
|
||
- /* Out of memory. */
|
||
- goto out_of_memory_1;
|
||
+ d_allocated = N_DIRECT_ALLOC_DIRECTIVES;
|
||
+ d->dir = d->direct_alloc_dir;
|
||
|
||
a->count = 0;
|
||
- a_allocated = 0;
|
||
- a->arg = NULL;
|
||
+ a_allocated = N_DIRECT_ALLOC_ARGUMENTS;
|
||
+ a->arg = a->direct_alloc_arg;
|
||
|
||
#define REGISTER_ARG(_index_,_type_) \
|
||
{ \
|
||
@@ -113,12 +112,14 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||
if (size_overflow_p (memory_size)) \
|
||
/* Overflow, would lead to out of memory. */ \
|
||
goto out_of_memory; \
|
||
- memory = (argument *) (a->arg \
|
||
+ memory = (argument *) (a->arg != a->direct_alloc_arg \
|
||
? realloc (a->arg, memory_size) \
|
||
: malloc (memory_size)); \
|
||
if (memory == NULL) \
|
||
/* Out of memory. */ \
|
||
goto out_of_memory; \
|
||
+ if (a->arg == a->direct_alloc_arg) \
|
||
+ memcpy (memory, a->arg, a->count * sizeof (argument)); \
|
||
a->arg = memory; \
|
||
} \
|
||
while (a->count <= n) \
|
||
@@ -206,6 +207,13 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||
dp->flags |= FLAG_ZERO;
|
||
cp++;
|
||
}
|
||
+#if __GLIBC__ >= 2 && !defined __UCLIBC__
|
||
+ else if (*cp == 'I')
|
||
+ {
|
||
+ dp->flags |= FLAG_LOCALIZED;
|
||
+ cp++;
|
||
+ }
|
||
+#endif
|
||
else
|
||
break;
|
||
}
|
||
@@ -393,7 +401,7 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||
cp++;
|
||
}
|
||
#if defined __APPLE__ && defined __MACH__
|
||
- /* On MacOS X 10.3, PRIdMAX is defined as "qd".
|
||
+ /* On Mac OS X 10.3, PRIdMAX is defined as "qd".
|
||
We cannot change it to "lld" because PRIdMAX must also
|
||
be understood by the system's printf routines. */
|
||
else if (*cp == 'q')
|
||
@@ -412,7 +420,7 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||
}
|
||
#endif
|
||
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||
- /* On native Win32, PRIdMAX is defined as "I64d".
|
||
+ /* On native Windows, PRIdMAX is defined as "I64d".
|
||
We cannot change it to "lld" because PRIdMAX must also
|
||
be understood by the system's printf routines. */
|
||
else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4')
|
||
@@ -581,10 +589,14 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||
if (size_overflow_p (memory_size))
|
||
/* Overflow, would lead to out of memory. */
|
||
goto out_of_memory;
|
||
- memory = (DIRECTIVE *) realloc (d->dir, memory_size);
|
||
+ memory = (DIRECTIVE *) (d->dir != d->direct_alloc_dir
|
||
+ ? realloc (d->dir, memory_size)
|
||
+ : malloc (memory_size));
|
||
if (memory == NULL)
|
||
/* Out of memory. */
|
||
goto out_of_memory;
|
||
+ if (d->dir == d->direct_alloc_dir)
|
||
+ memcpy (memory, d->dir, d->count * sizeof (DIRECTIVE));
|
||
d->dir = memory;
|
||
}
|
||
}
|
||
@@ -603,19 +615,18 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||
return 0;
|
||
|
||
error:
|
||
- if (a->arg)
|
||
+ if (a->arg != a->direct_alloc_arg)
|
||
free (a->arg);
|
||
- if (d->dir)
|
||
+ if (d->dir != d->direct_alloc_dir)
|
||
free (d->dir);
|
||
errno = EINVAL;
|
||
return -1;
|
||
|
||
out_of_memory:
|
||
- if (a->arg)
|
||
+ if (a->arg != a->direct_alloc_arg)
|
||
free (a->arg);
|
||
- if (d->dir)
|
||
+ if (d->dir != d->direct_alloc_dir)
|
||
free (d->dir);
|
||
-out_of_memory_1:
|
||
errno = ENOMEM;
|
||
return -1;
|
||
}
|
||
diff --git a/grub-core/gnulib/printf-parse.h b/grub-core/gnulib/printf-parse.h
|
||
index 0f2b708..d8474be 100644
|
||
--- a/grub-core/gnulib/printf-parse.h
|
||
+++ b/grub-core/gnulib/printf-parse.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Parse printf format string.
|
||
- Copyright (C) 1999, 2002-2003, 2005, 2007, 2009-2010 Free Software
|
||
+ Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2013 Free Software
|
||
Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _PRINTF_PARSE_H
|
||
#define _PRINTF_PARSE_H
|
||
@@ -23,6 +22,10 @@
|
||
ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions.
|
||
STATIC Set to 'static' to declare the function static. */
|
||
|
||
+#if HAVE_FEATURES_H
|
||
+# include <features.h> /* for __GLIBC__, __UCLIBC__ */
|
||
+#endif
|
||
+
|
||
#include "printf-args.h"
|
||
|
||
|
||
@@ -33,6 +36,9 @@
|
||
#define FLAG_SPACE 8 /* space flag */
|
||
#define FLAG_ALT 16 /* # flag */
|
||
#define FLAG_ZERO 32
|
||
+#if __GLIBC__ >= 2 && !defined __UCLIBC__
|
||
+# define FLAG_LOCALIZED 64 /* I flag, uses localized digits */
|
||
+#endif
|
||
|
||
/* arg_index value indicating that no argument is consumed. */
|
||
#define ARG_NONE (~(size_t)0)
|
||
@@ -40,6 +46,9 @@
|
||
/* xxx_directive: A parsed directive.
|
||
xxx_directives: A parsed format string. */
|
||
|
||
+/* Number of directly allocated directives (no malloc() needed). */
|
||
+#define N_DIRECT_ALLOC_DIRECTIVES 7
|
||
+
|
||
/* A parsed directive. */
|
||
typedef struct
|
||
{
|
||
@@ -64,6 +73,7 @@ typedef struct
|
||
char_directive *dir;
|
||
size_t max_width_length;
|
||
size_t max_precision_length;
|
||
+ char_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
|
||
}
|
||
char_directives;
|
||
|
||
@@ -93,6 +103,7 @@ typedef struct
|
||
u8_directive *dir;
|
||
size_t max_width_length;
|
||
size_t max_precision_length;
|
||
+ u8_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
|
||
}
|
||
u8_directives;
|
||
|
||
@@ -120,6 +131,7 @@ typedef struct
|
||
u16_directive *dir;
|
||
size_t max_width_length;
|
||
size_t max_precision_length;
|
||
+ u16_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
|
||
}
|
||
u16_directives;
|
||
|
||
@@ -147,6 +159,7 @@ typedef struct
|
||
u32_directive *dir;
|
||
size_t max_width_length;
|
||
size_t max_precision_length;
|
||
+ u32_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
|
||
}
|
||
u32_directives;
|
||
|
||
diff --git a/grub-core/gnulib/progname.c b/grub-core/gnulib/progname.c
|
||
index 1415e6a..0c195e5 100644
|
||
--- a/grub-core/gnulib/progname.c
|
||
+++ b/grub-core/gnulib/progname.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Program name management.
|
||
- Copyright (C) 2001-2003, 2005-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2001-2003, 2005-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2001.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
diff --git a/grub-core/gnulib/progname.h b/grub-core/gnulib/progname.h
|
||
index 5ba303b..b4f3c27 100644
|
||
--- a/grub-core/gnulib/progname.h
|
||
+++ b/grub-core/gnulib/progname.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Program name management.
|
||
- Copyright (C) 2001-2004, 2006, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2001-2004, 2006, 2009-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2001.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
diff --git a/grub-core/gnulib/rawmemchr.c b/grub-core/gnulib/rawmemchr.c
|
||
index 0a88777..a0298ce 100644
|
||
--- a/grub-core/gnulib/rawmemchr.c
|
||
+++ b/grub-core/gnulib/rawmemchr.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Searching in a string.
|
||
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
diff --git a/grub-core/gnulib/realloc.c b/grub-core/gnulib/realloc.c
|
||
index 053208f..b51010a 100644
|
||
--- a/grub-core/gnulib/realloc.c
|
||
+++ b/grub-core/gnulib/realloc.c
|
||
@@ -1,6 +1,6 @@
|
||
/* realloc() function that is glibc compatible.
|
||
|
||
- Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2010 Free Software
|
||
+ Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2013 Free Software
|
||
Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -18,6 +18,7 @@
|
||
|
||
/* written by Jim Meyering and Bruno Haible */
|
||
|
||
+#define _GL_USE_STDLIB_ALLOC 1
|
||
#include <config.h>
|
||
|
||
/* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h. */
|
||
@@ -34,23 +35,10 @@
|
||
# define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1
|
||
#endif
|
||
|
||
-/* Below we want to call the system's malloc and realloc.
|
||
- Undefine the symbols here so that including <stdlib.h> provides a
|
||
- declaration of malloc(), not of rpl_malloc(), and likewise for realloc. */
|
||
-#undef malloc
|
||
-#undef realloc
|
||
-
|
||
-/* Specification. */
|
||
#include <stdlib.h>
|
||
|
||
#include <errno.h>
|
||
|
||
-/* Below we want to call the system's malloc and realloc.
|
||
- Undefine the symbols, if they were defined by gnulib's <stdlib.h>
|
||
- replacement. */
|
||
-#undef malloc
|
||
-#undef realloc
|
||
-
|
||
/* Change the size of an allocated block of memory P to N bytes,
|
||
with error checking. If N is zero, change it to 1. If P is NULL,
|
||
use malloc. */
|
||
diff --git a/grub-core/gnulib/ref-add.sin b/grub-core/gnulib/ref-add.sin
|
||
index dbb61df..112bcdc 100644
|
||
--- a/grub-core/gnulib/ref-add.sin
|
||
+++ b/grub-core/gnulib/ref-add.sin
|
||
@@ -1,6 +1,6 @@
|
||
# Add this package to a list of references stored in a text file.
|
||
#
|
||
-# Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
|
||
#
|
||
# This program is free software; you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
@@ -13,8 +13,7 @@
|
||
# GNU General Public License for more details.
|
||
#
|
||
# You should have received a copy of the GNU General Public License along
|
||
-# with this program; if not, write to the Free Software Foundation,
|
||
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
+# with this program; if not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
# Written by Bruno Haible <haible@clisp.cons.org>.
|
||
#
|
||
diff --git a/grub-core/gnulib/ref-del.sin b/grub-core/gnulib/ref-del.sin
|
||
index 4c31a6e..6f73868 100644
|
||
--- a/grub-core/gnulib/ref-del.sin
|
||
+++ b/grub-core/gnulib/ref-del.sin
|
||
@@ -1,6 +1,6 @@
|
||
# Remove this package from a list of references stored in a text file.
|
||
#
|
||
-# Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
|
||
#
|
||
# This program is free software; you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
@@ -13,8 +13,7 @@
|
||
# GNU General Public License for more details.
|
||
#
|
||
# You should have received a copy of the GNU General Public License along
|
||
-# with this program; if not, write to the Free Software Foundation,
|
||
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
+# with this program; if not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
# Written by Bruno Haible <haible@clisp.cons.org>.
|
||
#
|
||
diff --git a/grub-core/gnulib/regcomp.c b/grub-core/gnulib/regcomp.c
|
||
index ddea3fb..596e0cf 100644
|
||
--- a/grub-core/gnulib/regcomp.c
|
||
+++ b/grub-core/gnulib/regcomp.c
|
||
@@ -1,22 +1,21 @@
|
||
/* Extended regular expression matching and search library.
|
||
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
|
||
- Software Foundation, Inc.
|
||
+ Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
|
||
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 3, or (at your option)
|
||
- any later version.
|
||
+ The GNU C Library is free software; you can redistribute it and/or
|
||
+ modify it under the terms of the GNU General Public
|
||
+ License as published by the Free Software Foundation; either
|
||
+ version 3 of the License, or (at your option) any later version.
|
||
|
||
- This program is distributed in the hope that it will be useful,
|
||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
|
||
- You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ You should have received a copy of the GNU General Public
|
||
+ License along with the GNU C Library; if not, see
|
||
+ <http://www.gnu.org/licenses/>. */
|
||
|
||
static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
|
||
size_t length, reg_syntax_t syntax);
|
||
@@ -95,20 +94,20 @@ static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
|
||
bitset_t sbcset,
|
||
re_charset_t *mbcset,
|
||
Idx *char_class_alloc,
|
||
- const unsigned char *class_name,
|
||
+ const char *class_name,
|
||
reg_syntax_t syntax);
|
||
#else /* not RE_ENABLE_I18N */
|
||
static reg_errcode_t build_equiv_class (bitset_t sbcset,
|
||
const unsigned char *name);
|
||
static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
|
||
bitset_t sbcset,
|
||
- const unsigned char *class_name,
|
||
+ const char *class_name,
|
||
reg_syntax_t syntax);
|
||
#endif /* not RE_ENABLE_I18N */
|
||
static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
|
||
RE_TRANSLATE_TYPE trans,
|
||
- const unsigned char *class_name,
|
||
- const unsigned char *extra,
|
||
+ const char *class_name,
|
||
+ const char *extra,
|
||
bool non_match, reg_errcode_t *err);
|
||
static bin_tree_t *create_tree (re_dfa_t *dfa,
|
||
bin_tree_t *left, bin_tree_t *right,
|
||
@@ -207,7 +206,7 @@ static const size_t __re_error_msgid_idx[] =
|
||
compiles PATTERN (of length LENGTH) and puts the result in BUFP.
|
||
Returns 0 if the pattern was valid, otherwise an error string.
|
||
|
||
- Assumes the `allocated' (and perhaps `buffer') and `translate' fields
|
||
+ Assumes the 'allocated' (and perhaps 'buffer') and 'translate' fields
|
||
are set in BUFP on entry. */
|
||
|
||
#ifdef _LIBC
|
||
@@ -242,7 +241,7 @@ re_compile_pattern (const char *pattern, size_t length,
|
||
weak_alias (__re_compile_pattern, re_compile_pattern)
|
||
#endif
|
||
|
||
-/* Set by `re_set_syntax' to the current regexp syntax to recognize. Can
|
||
+/* Set by 're_set_syntax' to the current regexp syntax to recognize. Can
|
||
also be assigned to arbitrarily: each pattern buffer stores its own
|
||
syntax, so it can be changed between regex compilations. */
|
||
/* This has no initializer because initialized variables in Emacs
|
||
@@ -274,7 +273,7 @@ int
|
||
re_compile_fastmap (bufp)
|
||
struct re_pattern_buffer *bufp;
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
|
||
+ re_dfa_t *dfa = bufp->buffer;
|
||
char *fastmap = bufp->fastmap;
|
||
|
||
memset (fastmap, '\0', sizeof (char) * SBC_MAX);
|
||
@@ -293,7 +292,7 @@ weak_alias (__re_compile_fastmap, re_compile_fastmap)
|
||
#endif
|
||
|
||
static inline void
|
||
-__attribute ((always_inline))
|
||
+__attribute__ ((always_inline))
|
||
re_set_fastmap (char *fastmap, bool icase, int ch)
|
||
{
|
||
fastmap[ch] = 1;
|
||
@@ -308,7 +307,7 @@ static void
|
||
re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
|
||
char *fastmap)
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
|
||
+ re_dfa_t *dfa = bufp->buffer;
|
||
Idx node_cnt;
|
||
bool icase = (dfa->mb_cur_max == 1 && (bufp->syntax & RE_ICASE));
|
||
for (node_cnt = 0; node_cnt < init_state->nodes.nelem; ++node_cnt)
|
||
@@ -440,15 +439,15 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
|
||
PREG is a regex_t *. We do not expect any fields to be initialized,
|
||
since POSIX says we shouldn't. Thus, we set
|
||
|
||
- `buffer' to the compiled pattern;
|
||
- `used' to the length of the compiled pattern;
|
||
- `syntax' to RE_SYNTAX_POSIX_EXTENDED if the
|
||
+ 'buffer' to the compiled pattern;
|
||
+ 'used' to the length of the compiled pattern;
|
||
+ 'syntax' to RE_SYNTAX_POSIX_EXTENDED if the
|
||
REG_EXTENDED bit in CFLAGS is set; otherwise, to
|
||
RE_SYNTAX_POSIX_BASIC;
|
||
- `newline_anchor' to REG_NEWLINE being set in CFLAGS;
|
||
- `fastmap' to an allocated space for the fastmap;
|
||
- `fastmap_accurate' to zero;
|
||
- `re_nsub' to the number of subexpressions in PATTERN.
|
||
+ 'newline_anchor' to REG_NEWLINE being set in CFLAGS;
|
||
+ 'fastmap' to an allocated space for the fastmap;
|
||
+ 'fastmap_accurate' to zero;
|
||
+ 're_nsub' to the number of subexpressions in PATTERN.
|
||
|
||
PATTERN is the address of the pattern string.
|
||
|
||
@@ -551,10 +550,6 @@ regerror (int errcode, const regex_t *_Restrict_ preg,
|
||
if (BE (errcode < 0
|
||
|| errcode >= (int) (sizeof (__re_error_msgid_idx)
|
||
/ sizeof (__re_error_msgid_idx[0])), 0))
|
||
- /* Only error codes returned by the rest of the code should be passed
|
||
- to this routine. If we are given anything else, or if other regex
|
||
- code generates an invalid error code, then the program has a bug.
|
||
- Dump core so we can fix it. */
|
||
msg = gettext ("unknown regexp error");
|
||
else
|
||
msg = gettext (__re_error_msgid + __re_error_msgid_idx[errcode]);
|
||
@@ -587,19 +582,23 @@ weak_alias (__regerror, regerror)
|
||
static const bitset_t utf8_sb_map =
|
||
{
|
||
/* Set the first 128 bits. */
|
||
-# if 4 * BITSET_WORD_BITS < ASCII_CHARS
|
||
-# error "bitset_word_t is narrower than 32 bits"
|
||
-# elif 3 * BITSET_WORD_BITS < ASCII_CHARS
|
||
+# ifdef __GNUC__
|
||
+ [0 ... 0x80 / BITSET_WORD_BITS - 1] = BITSET_WORD_MAX
|
||
+# else
|
||
+# if 4 * BITSET_WORD_BITS < ASCII_CHARS
|
||
+# error "bitset_word_t is narrower than 32 bits"
|
||
+# elif 3 * BITSET_WORD_BITS < ASCII_CHARS
|
||
BITSET_WORD_MAX, BITSET_WORD_MAX, BITSET_WORD_MAX,
|
||
-# elif 2 * BITSET_WORD_BITS < ASCII_CHARS
|
||
+# elif 2 * BITSET_WORD_BITS < ASCII_CHARS
|
||
BITSET_WORD_MAX, BITSET_WORD_MAX,
|
||
-# elif 1 * BITSET_WORD_BITS < ASCII_CHARS
|
||
+# elif 1 * BITSET_WORD_BITS < ASCII_CHARS
|
||
BITSET_WORD_MAX,
|
||
-# endif
|
||
+# endif
|
||
(BITSET_WORD_MAX
|
||
>> (SBC_MAX % BITSET_WORD_BITS == 0
|
||
? 0
|
||
: BITSET_WORD_BITS - SBC_MAX % BITSET_WORD_BITS))
|
||
+# endif
|
||
};
|
||
#endif
|
||
|
||
@@ -658,7 +657,7 @@ void
|
||
regfree (preg)
|
||
regex_t *preg;
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
if (BE (dfa != NULL, 1))
|
||
free_dfa_content (dfa);
|
||
preg->buffer = NULL;
|
||
@@ -719,7 +718,7 @@ re_comp (s)
|
||
+ __re_error_msgid_idx[(int) REG_ESPACE]);
|
||
}
|
||
|
||
- /* Since `re_exec' always passes NULL for the `regs' argument, we
|
||
+ /* Since 're_exec' always passes NULL for the 'regs' argument, we
|
||
don't need to initialize the pattern buffer fields which affect it. */
|
||
|
||
/* Match anchors at newlines. */
|
||
@@ -730,7 +729,7 @@ re_comp (s)
|
||
if (!ret)
|
||
return NULL;
|
||
|
||
- /* Yes, we're discarding `const' here if !HAVE_LIBINTL. */
|
||
+ /* Yes, we're discarding 'const' here if !HAVE_LIBINTL. */
|
||
return (char *) gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
|
||
}
|
||
|
||
@@ -765,7 +764,7 @@ re_compile_internal (regex_t *preg, const char * pattern, size_t length,
|
||
preg->regs_allocated = REGS_UNALLOCATED;
|
||
|
||
/* Initialize the dfa. */
|
||
- dfa = (re_dfa_t *) preg->buffer;
|
||
+ dfa = preg->buffer;
|
||
if (BE (preg->allocated < sizeof (re_dfa_t), 0))
|
||
{
|
||
/* If zero allocated, but buffer is non-null, try to realloc
|
||
@@ -874,7 +873,7 @@ init_dfa (re_dfa_t *dfa, size_t pat_len)
|
||
calculation below, and for similar doubling calculations
|
||
elsewhere. And it's <= rather than <, because some of the
|
||
doubling calculations add 1 afterwards. */
|
||
- if (BE (SIZE_MAX / max_object_size / 2 <= pat_len, 0))
|
||
+ if (BE (MIN (IDX_MAX, SIZE_MAX / max_object_size) / 2 <= pat_len, 0))
|
||
return REG_ESPACE;
|
||
|
||
dfa->nodes_alloc = pat_len + 1;
|
||
@@ -897,8 +896,10 @@ init_dfa (re_dfa_t *dfa, size_t pat_len)
|
||
!= 0);
|
||
#else
|
||
codeset_name = nl_langinfo (CODESET);
|
||
- if (strcasecmp (codeset_name, "UTF-8") == 0
|
||
- || strcasecmp (codeset_name, "UTF8") == 0)
|
||
+ if ((codeset_name[0] == 'U' || codeset_name[0] == 'u')
|
||
+ && (codeset_name[1] == 'T' || codeset_name[1] == 't')
|
||
+ && (codeset_name[2] == 'F' || codeset_name[2] == 'f')
|
||
+ && strcmp (codeset_name + 3 + (codeset_name[3] == '-'), "8") == 0)
|
||
dfa->is_utf8 = 1;
|
||
|
||
/* We check exhaustively in the loop below if this charset is a
|
||
@@ -948,9 +949,43 @@ static void
|
||
internal_function
|
||
init_word_char (re_dfa_t *dfa)
|
||
{
|
||
- int i, j, ch;
|
||
+ int i = 0;
|
||
+ int j;
|
||
+ int ch = 0;
|
||
dfa->word_ops_used = 1;
|
||
- for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
|
||
+ if (BE (dfa->map_notascii == 0, 1))
|
||
+ {
|
||
+ bitset_word_t bits0 = 0x00000000;
|
||
+ bitset_word_t bits1 = 0x03ff0000;
|
||
+ bitset_word_t bits2 = 0x87fffffe;
|
||
+ bitset_word_t bits3 = 0x07fffffe;
|
||
+ if (BITSET_WORD_BITS == 64)
|
||
+ {
|
||
+ dfa->word_char[0] = bits1 << 31 << 1 | bits0;
|
||
+ dfa->word_char[1] = bits3 << 31 << 1 | bits2;
|
||
+ i = 2;
|
||
+ }
|
||
+ else if (BITSET_WORD_BITS == 32)
|
||
+ {
|
||
+ dfa->word_char[0] = bits0;
|
||
+ dfa->word_char[1] = bits1;
|
||
+ dfa->word_char[2] = bits2;
|
||
+ dfa->word_char[3] = bits3;
|
||
+ i = 4;
|
||
+ }
|
||
+ else
|
||
+ goto general_case;
|
||
+ ch = 128;
|
||
+
|
||
+ if (BE (dfa->is_utf8, 1))
|
||
+ {
|
||
+ memset (&dfa->word_char[i], '\0', (SBC_MAX - ch) / 8);
|
||
+ return;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ general_case:
|
||
+ for (; i < BITSET_WORDS; ++i)
|
||
for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
|
||
if (isalnum (ch) || ch == '_')
|
||
dfa->word_char[i] |= (bitset_word_t) 1 << j;
|
||
@@ -961,7 +996,7 @@ init_word_char (re_dfa_t *dfa)
|
||
static void
|
||
free_workarea_compile (regex_t *preg)
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
bin_tree_storage_t *storage, *next;
|
||
for (storage = dfa->str_tree_storage; storage; storage = next)
|
||
{
|
||
@@ -1145,7 +1180,7 @@ optimize_utf8 (re_dfa_t *dfa)
|
||
static reg_errcode_t
|
||
analyze (regex_t *preg)
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
reg_errcode_t ret;
|
||
|
||
/* Allocate arrays. */
|
||
@@ -1326,7 +1361,7 @@ lower_subexps (void *extra, bin_tree_t *node)
|
||
static bin_tree_t *
|
||
lower_subexp (reg_errcode_t *err, regex_t *preg, bin_tree_t *node)
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
bin_tree_t *body = node->left;
|
||
bin_tree_t *op, *cls, *tree1, *tree;
|
||
|
||
@@ -1660,7 +1695,7 @@ calc_eclosure (re_dfa_t *dfa)
|
||
/* If we have already calculated, skip it. */
|
||
if (dfa->eclosures[node_idx].nelem != 0)
|
||
continue;
|
||
- /* Calculate epsilon closure of `node_idx'. */
|
||
+ /* Calculate epsilon closure of 'node_idx'. */
|
||
err = calc_eclosure_iter (&eclosure_elem, dfa, node_idx, true);
|
||
if (BE (err != REG_NOERROR, 0))
|
||
return err;
|
||
@@ -1710,14 +1745,14 @@ calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, Idx node, bool root)
|
||
{
|
||
re_node_set eclosure_elem;
|
||
Idx edest = dfa->edests[node].elems[i];
|
||
- /* If calculating the epsilon closure of `edest' is in progress,
|
||
+ /* If calculating the epsilon closure of 'edest' is in progress,
|
||
return intermediate result. */
|
||
if (dfa->eclosures[edest].nelem == REG_MISSING)
|
||
{
|
||
incomplete = true;
|
||
continue;
|
||
}
|
||
- /* If we haven't calculated the epsilon closure of `edest' yet,
|
||
+ /* If we haven't calculated the epsilon closure of 'edest' yet,
|
||
calculate now. Otherwise use calculated epsilon closure. */
|
||
if (dfa->eclosures[edest].nelem == 0)
|
||
{
|
||
@@ -1727,11 +1762,11 @@ calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, Idx node, bool root)
|
||
}
|
||
else
|
||
eclosure_elem = dfa->eclosures[edest];
|
||
- /* Merge the epsilon closure of `edest'. */
|
||
+ /* Merge the epsilon closure of 'edest'. */
|
||
err = re_node_set_merge (&eclosure, &eclosure_elem);
|
||
if (BE (err != REG_NOERROR, 0))
|
||
return err;
|
||
- /* If the epsilon closure of `edest' is incomplete,
|
||
+ /* If the epsilon closure of 'edest' is incomplete,
|
||
the epsilon closure of this node is also incomplete. */
|
||
if (dfa->eclosures[edest].nelem == 0)
|
||
{
|
||
@@ -2093,7 +2128,7 @@ peek_token_bracket (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
|
||
|
||
/* Entry point of the parser.
|
||
Parse the regular expression REGEXP and return the structure tree.
|
||
- If an error is occured, ERR is set by error code, and return NULL.
|
||
+ If an error occurs, ERR is set by error code, and return NULL.
|
||
This function build the following tree, from regular expression <reg_exp>:
|
||
CAT
|
||
/ \
|
||
@@ -2107,7 +2142,7 @@ static bin_tree_t *
|
||
parse (re_string_t *regexp, regex_t *preg, reg_syntax_t syntax,
|
||
reg_errcode_t *err)
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
bin_tree_t *tree, *eor, *root;
|
||
re_token_t current_token;
|
||
dfa->syntax = syntax;
|
||
@@ -2135,13 +2170,13 @@ parse (re_string_t *regexp, regex_t *preg, reg_syntax_t syntax,
|
||
/ \
|
||
<branch1> <branch2>
|
||
|
||
- ALT means alternative, which represents the operator `|'. */
|
||
+ ALT means alternative, which represents the operator '|'. */
|
||
|
||
static bin_tree_t *
|
||
parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
|
||
reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
bin_tree_t *tree, *branch = NULL;
|
||
tree = parse_branch (regexp, preg, token, syntax, nest, err);
|
||
if (BE (*err != REG_NOERROR && tree == NULL, 0))
|
||
@@ -2183,7 +2218,7 @@ parse_branch (re_string_t *regexp, regex_t *preg, re_token_t *token,
|
||
reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
|
||
{
|
||
bin_tree_t *tree, *expr;
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
tree = parse_expression (regexp, preg, token, syntax, nest, err);
|
||
if (BE (*err != REG_NOERROR && tree == NULL, 0))
|
||
return NULL;
|
||
@@ -2194,16 +2229,21 @@ parse_branch (re_string_t *regexp, regex_t *preg, re_token_t *token,
|
||
expr = parse_expression (regexp, preg, token, syntax, nest, err);
|
||
if (BE (*err != REG_NOERROR && expr == NULL, 0))
|
||
{
|
||
+ if (tree != NULL)
|
||
+ postorder (tree, free_tree, NULL);
|
||
return NULL;
|
||
}
|
||
if (tree != NULL && expr != NULL)
|
||
{
|
||
- tree = create_tree (dfa, tree, expr, CONCAT);
|
||
- if (tree == NULL)
|
||
+ bin_tree_t *newtree = create_tree (dfa, tree, expr, CONCAT);
|
||
+ if (newtree == NULL)
|
||
{
|
||
+ postorder (expr, free_tree, NULL);
|
||
+ postorder (tree, free_tree, NULL);
|
||
*err = REG_ESPACE;
|
||
return NULL;
|
||
}
|
||
+ tree = newtree;
|
||
}
|
||
else if (tree == NULL)
|
||
tree = expr;
|
||
@@ -2222,7 +2262,7 @@ static bin_tree_t *
|
||
parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
|
||
reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
bin_tree_t *tree;
|
||
switch (token->type)
|
||
{
|
||
@@ -2378,8 +2418,8 @@ parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
|
||
case OP_WORD:
|
||
case OP_NOTWORD:
|
||
tree = build_charclass_op (dfa, regexp->trans,
|
||
- (const unsigned char *) "alnum",
|
||
- (const unsigned char *) "_",
|
||
+ "alnum",
|
||
+ "_",
|
||
token->type == OP_NOTWORD, err);
|
||
if (BE (*err != REG_NOERROR && tree == NULL, 0))
|
||
return NULL;
|
||
@@ -2387,8 +2427,8 @@ parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
|
||
case OP_SPACE:
|
||
case OP_NOTSPACE:
|
||
tree = build_charclass_op (dfa, regexp->trans,
|
||
- (const unsigned char *) "space",
|
||
- (const unsigned char *) "",
|
||
+ "space",
|
||
+ "",
|
||
token->type == OP_NOTSPACE, err);
|
||
if (BE (*err != REG_NOERROR && tree == NULL, 0))
|
||
return NULL;
|
||
@@ -2438,7 +2478,7 @@ static bin_tree_t *
|
||
parse_sub_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
|
||
reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
|
||
{
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
bin_tree_t *tree;
|
||
size_t cur_nsub;
|
||
cur_nsub = preg->re_nsub++;
|
||
@@ -2452,7 +2492,11 @@ parse_sub_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
|
||
{
|
||
tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
|
||
if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
|
||
- *err = REG_EPAREN;
|
||
+ {
|
||
+ if (tree != NULL)
|
||
+ postorder (tree, free_tree, NULL);
|
||
+ *err = REG_EPAREN;
|
||
+ }
|
||
if (BE (*err != REG_NOERROR, 0))
|
||
return NULL;
|
||
}
|
||
@@ -2530,6 +2574,12 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
|
||
*err = REG_BADBR;
|
||
return NULL;
|
||
}
|
||
+
|
||
+ if (BE (RE_DUP_MAX < (end == REG_MISSING ? start : end), 0))
|
||
+ {
|
||
+ *err = REG_ESIZE;
|
||
+ return NULL;
|
||
+ }
|
||
}
|
||
else
|
||
{
|
||
@@ -2570,7 +2620,10 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
|
||
old_tree = NULL;
|
||
|
||
if (elem->token.type == SUBEXP)
|
||
- postorder (elem, mark_opt_subexp, (void *) (long) elem->token.opr.idx);
|
||
+ {
|
||
+ uintptr_t subidx = elem->token.opr.idx;
|
||
+ postorder (elem, mark_opt_subexp, (void *) subidx);
|
||
+ }
|
||
|
||
tree = create_tree (dfa, elem, NULL,
|
||
(end == REG_MISSING ? OP_DUP_ASTERISK : OP_ALT));
|
||
@@ -2616,7 +2669,7 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
|
||
Build the range expression which starts from START_ELEM, and ends
|
||
at END_ELEM. The result are written to MBCSET and SBCSET.
|
||
RANGE_ALLOC is the allocated size of mbcset->range_starts, and
|
||
- mbcset->range_ends, is a pointer argument sinse we may
|
||
+ mbcset->range_ends, is a pointer argument since we may
|
||
update it. */
|
||
|
||
static reg_errcode_t
|
||
@@ -2655,7 +2708,6 @@ build_range_exp (const reg_syntax_t syntax,
|
||
wchar_t wc;
|
||
wint_t start_wc;
|
||
wint_t end_wc;
|
||
- wchar_t cmp_buf[6] = {L'\0', L'\0', L'\0', L'\0', L'\0', L'\0'};
|
||
|
||
start_ch = ((start_elem->type == SB_CHAR) ? start_elem->opr.ch
|
||
: ((start_elem->type == COLL_SYM) ? start_elem->opr.name[0]
|
||
@@ -2669,11 +2721,7 @@ build_range_exp (const reg_syntax_t syntax,
|
||
? __btowc (end_ch) : end_elem->opr.wch);
|
||
if (start_wc == WEOF || end_wc == WEOF)
|
||
return REG_ECOLLATE;
|
||
- cmp_buf[0] = start_wc;
|
||
- cmp_buf[4] = end_wc;
|
||
-
|
||
- if (BE ((syntax & RE_NO_EMPTY_RANGES)
|
||
- && wcscoll (cmp_buf, cmp_buf + 4) > 0, 0))
|
||
+ else if (BE ((syntax & RE_NO_EMPTY_RANGES) && start_wc > end_wc, 0))
|
||
return REG_ERANGE;
|
||
|
||
/* Got valid collation sequence values, add them as a new entry.
|
||
@@ -2714,9 +2762,7 @@ build_range_exp (const reg_syntax_t syntax,
|
||
/* Build the table for single byte characters. */
|
||
for (wc = 0; wc < SBC_MAX; ++wc)
|
||
{
|
||
- cmp_buf[2] = wc;
|
||
- if (wcscoll (cmp_buf, cmp_buf + 2) <= 0
|
||
- && wcscoll (cmp_buf + 2, cmp_buf + 4) <= 0)
|
||
+ if (start_wc <= wc && wc <= end_wc)
|
||
bitset_set (sbcset, wc);
|
||
}
|
||
}
|
||
@@ -2750,11 +2796,12 @@ build_range_exp (const reg_syntax_t syntax,
|
||
|
||
static reg_errcode_t
|
||
internal_function
|
||
-build_collating_symbol (bitset_t sbcset,
|
||
# ifdef RE_ENABLE_I18N
|
||
- re_charset_t *mbcset, Idx *coll_sym_alloc,
|
||
-# endif
|
||
- const unsigned char *name)
|
||
+build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset,
|
||
+ Idx *coll_sym_alloc, const unsigned char *name)
|
||
+# else /* not RE_ENABLE_I18N */
|
||
+build_collating_symbol (bitset_t sbcset, const unsigned char *name)
|
||
+# endif /* not RE_ENABLE_I18N */
|
||
{
|
||
size_t name_len = strlen ((const char *) name);
|
||
if (BE (name_len != 1, 0))
|
||
@@ -2782,42 +2829,31 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
const int32_t *symb_table;
|
||
const unsigned char *extra;
|
||
|
||
- /* Local function for parse_bracket_exp used in _LIBC environement.
|
||
- Seek the collating symbol entry correspondings to NAME.
|
||
- Return the index of the symbol in the SYMB_TABLE. */
|
||
+ /* Local function for parse_bracket_exp used in _LIBC environment.
|
||
+ Seek the collating symbol entry corresponding to NAME.
|
||
+ Return the index of the symbol in the SYMB_TABLE,
|
||
+ or -1 if not found. */
|
||
|
||
auto inline int32_t
|
||
- __attribute ((always_inline))
|
||
- seek_collating_symbol_entry (name, name_len)
|
||
- const unsigned char *name;
|
||
- size_t name_len;
|
||
+ __attribute__ ((always_inline))
|
||
+ seek_collating_symbol_entry (const unsigned char *name, size_t name_len)
|
||
{
|
||
- int32_t hash = elem_hash ((const char *) name, name_len);
|
||
- int32_t elem = hash % table_size;
|
||
- if (symb_table[2 * elem] != 0)
|
||
- {
|
||
- int32_t second = hash % (table_size - 2) + 1;
|
||
+ int32_t elem;
|
||
|
||
- do
|
||
- {
|
||
- /* First compare the hashing value. */
|
||
- if (symb_table[2 * elem] == hash
|
||
- /* Compare the length of the name. */
|
||
- && name_len == extra[symb_table[2 * elem + 1]]
|
||
- /* Compare the name. */
|
||
- && memcmp (name, &extra[symb_table[2 * elem + 1] + 1],
|
||
- name_len) == 0)
|
||
- {
|
||
- /* Yep, this is the entry. */
|
||
- break;
|
||
- }
|
||
-
|
||
- /* Next entry. */
|
||
- elem += second;
|
||
- }
|
||
- while (symb_table[2 * elem] != 0);
|
||
- }
|
||
- return elem;
|
||
+ for (elem = 0; elem < table_size; elem++)
|
||
+ if (symb_table[2 * elem] != 0)
|
||
+ {
|
||
+ int32_t idx = symb_table[2 * elem + 1];
|
||
+ /* Skip the name of collating element name. */
|
||
+ idx += 1 + extra[idx];
|
||
+ if (/* Compare the length of the name. */
|
||
+ name_len == extra[idx]
|
||
+ /* Compare the name. */
|
||
+ && memcmp (name, &extra[idx + 1], name_len) == 0)
|
||
+ /* Yep, this is the entry. */
|
||
+ return elem;
|
||
+ }
|
||
+ return -1;
|
||
}
|
||
|
||
/* Local function for parse_bracket_exp used in _LIBC environment.
|
||
@@ -2825,9 +2861,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
Return the value if succeeded, UINT_MAX otherwise. */
|
||
|
||
auto inline unsigned int
|
||
- __attribute ((always_inline))
|
||
- lookup_collation_sequence_value (br_elem)
|
||
- bracket_elem_t *br_elem;
|
||
+ __attribute__ ((always_inline))
|
||
+ lookup_collation_sequence_value (bracket_elem_t *br_elem)
|
||
{
|
||
if (br_elem->type == SB_CHAR)
|
||
{
|
||
@@ -2855,7 +2890,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
int32_t elem, idx;
|
||
elem = seek_collating_symbol_entry (br_elem->opr.name,
|
||
sym_name_len);
|
||
- if (symb_table[2 * elem] != 0)
|
||
+ if (elem != -1)
|
||
{
|
||
/* We found the entry. */
|
||
idx = symb_table[2 * elem + 1];
|
||
@@ -2873,7 +2908,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
/* Return the collation sequence value. */
|
||
return *(unsigned int *) (extra + idx);
|
||
}
|
||
- else if (symb_table[2 * elem] == 0 && sym_name_len == 1)
|
||
+ else if (sym_name_len == 1)
|
||
{
|
||
/* No valid character. Match it as a single byte
|
||
character. */
|
||
@@ -2886,20 +2921,17 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
return UINT_MAX;
|
||
}
|
||
|
||
- /* Local function for parse_bracket_exp used in _LIBC environement.
|
||
+ /* Local function for parse_bracket_exp used in _LIBC environment.
|
||
Build the range expression which starts from START_ELEM, and ends
|
||
at END_ELEM. The result are written to MBCSET and SBCSET.
|
||
RANGE_ALLOC is the allocated size of mbcset->range_starts, and
|
||
- mbcset->range_ends, is a pointer argument sinse we may
|
||
+ mbcset->range_ends, is a pointer argument since we may
|
||
update it. */
|
||
|
||
auto inline reg_errcode_t
|
||
- __attribute ((always_inline))
|
||
- build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
|
||
- re_charset_t *mbcset;
|
||
- Idx *range_alloc;
|
||
- bitset_t sbcset;
|
||
- bracket_elem_t *start_elem, *end_elem;
|
||
+ __attribute__ ((always_inline))
|
||
+ build_range_exp (bitset_t sbcset, re_charset_t *mbcset, int *range_alloc,
|
||
+ bracket_elem_t *start_elem, bracket_elem_t *end_elem)
|
||
{
|
||
unsigned int ch;
|
||
uint32_t start_collseq;
|
||
@@ -2912,6 +2944,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
0))
|
||
return REG_ERANGE;
|
||
|
||
+ /* FIXME: Implement rational ranges here, too. */
|
||
start_collseq = lookup_collation_sequence_value (start_elem);
|
||
end_collseq = lookup_collation_sequence_value (end_elem);
|
||
/* Check start/end collation sequence values. */
|
||
@@ -2970,33 +3003,30 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
return REG_NOERROR;
|
||
}
|
||
|
||
- /* Local function for parse_bracket_exp used in _LIBC environement.
|
||
+ /* Local function for parse_bracket_exp used in _LIBC environment.
|
||
Build the collating element which is represented by NAME.
|
||
The result are written to MBCSET and SBCSET.
|
||
COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a
|
||
- pointer argument sinse we may update it. */
|
||
+ pointer argument since we may update it. */
|
||
|
||
auto inline reg_errcode_t
|
||
- __attribute ((always_inline))
|
||
- build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
|
||
- re_charset_t *mbcset;
|
||
- Idx *coll_sym_alloc;
|
||
- bitset_t sbcset;
|
||
- const unsigned char *name;
|
||
+ __attribute__ ((always_inline))
|
||
+ build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset,
|
||
+ Idx *coll_sym_alloc, const unsigned char *name)
|
||
{
|
||
int32_t elem, idx;
|
||
size_t name_len = strlen ((const char *) name);
|
||
if (nrules != 0)
|
||
{
|
||
elem = seek_collating_symbol_entry (name, name_len);
|
||
- if (symb_table[2 * elem] != 0)
|
||
+ if (elem != -1)
|
||
{
|
||
/* We found the entry. */
|
||
idx = symb_table[2 * elem + 1];
|
||
/* Skip the name of collating element name. */
|
||
idx += 1 + extra[idx];
|
||
}
|
||
- else if (symb_table[2 * elem] == 0 && name_len == 1)
|
||
+ else if (name_len == 1)
|
||
{
|
||
/* No valid character, treat it as a normal
|
||
character. */
|
||
@@ -3076,6 +3106,10 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
if (BE (sbcset == NULL, 0))
|
||
#endif /* RE_ENABLE_I18N */
|
||
{
|
||
+ re_free (sbcset);
|
||
+#ifdef RE_ENABLE_I18N
|
||
+ re_free (mbcset);
|
||
+#endif
|
||
*err = REG_ESPACE;
|
||
return NULL;
|
||
}
|
||
@@ -3235,7 +3269,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||
#ifdef RE_ENABLE_I18N
|
||
mbcset, &char_class_alloc,
|
||
#endif /* RE_ENABLE_I18N */
|
||
- start_elem.opr.name, syntax);
|
||
+ (const char *) start_elem.opr.name,
|
||
+ syntax);
|
||
if (BE (*err != REG_NOERROR, 0))
|
||
goto parse_bracket_exp_free_return;
|
||
break;
|
||
@@ -3414,7 +3449,7 @@ parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp,
|
||
Build the equivalence class which is represented by NAME.
|
||
The result are written to MBCSET and SBCSET.
|
||
EQUIV_CLASS_ALLOC is the allocated size of mbcset->equiv_classes,
|
||
- is a pointer argument sinse we may update it. */
|
||
+ is a pointer argument since we may update it. */
|
||
|
||
static reg_errcode_t
|
||
#ifdef RE_ENABLE_I18N
|
||
@@ -3445,19 +3480,18 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name)
|
||
_NL_COLLATE_EXTRAMB);
|
||
indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
|
||
_NL_COLLATE_INDIRECTMB);
|
||
- idx1 = findidx (&cp);
|
||
- if (BE (idx1 == 0 || cp < name + strlen ((const char *) name), 0))
|
||
+ idx1 = findidx (&cp, -1);
|
||
+ if (BE (idx1 == 0 || *cp != '\0', 0))
|
||
/* This isn't a valid character. */
|
||
return REG_ECOLLATE;
|
||
|
||
- /* Build single byte matcing table for this equivalence class. */
|
||
- char_buf[1] = (unsigned char) '\0';
|
||
+ /* Build single byte matching table for this equivalence class. */
|
||
len = weights[idx1 & 0xffffff];
|
||
for (ch = 0; ch < SBC_MAX; ++ch)
|
||
{
|
||
char_buf[0] = ch;
|
||
cp = char_buf;
|
||
- idx2 = findidx (&cp);
|
||
+ idx2 = findidx (&cp, 1);
|
||
/*
|
||
idx2 = table[ch];
|
||
*/
|
||
@@ -3510,20 +3544,20 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name)
|
||
Build the character class which is represented by NAME.
|
||
The result are written to MBCSET and SBCSET.
|
||
CHAR_CLASS_ALLOC is the allocated size of mbcset->char_classes,
|
||
- is a pointer argument sinse we may update it. */
|
||
+ is a pointer argument since we may update it. */
|
||
|
||
static reg_errcode_t
|
||
#ifdef RE_ENABLE_I18N
|
||
build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
|
||
re_charset_t *mbcset, Idx *char_class_alloc,
|
||
- const unsigned char *class_name, reg_syntax_t syntax)
|
||
+ const char *class_name, reg_syntax_t syntax)
|
||
#else /* not RE_ENABLE_I18N */
|
||
build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
|
||
- const unsigned char *class_name, reg_syntax_t syntax)
|
||
+ const char *class_name, reg_syntax_t syntax)
|
||
#endif /* not RE_ENABLE_I18N */
|
||
{
|
||
int i;
|
||
- const char *name = (const char *) class_name;
|
||
+ const char *name = class_name;
|
||
|
||
/* In case of REG_ICASE "upper" and "lower" match the both of
|
||
upper and lower cases. */
|
||
@@ -3597,8 +3631,8 @@ build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
|
||
|
||
static bin_tree_t *
|
||
build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
|
||
- const unsigned char *class_name,
|
||
- const unsigned char *extra, bool non_match,
|
||
+ const char *class_name,
|
||
+ const char *extra, bool non_match,
|
||
reg_errcode_t *err)
|
||
{
|
||
re_bitset_ptr_t sbcset;
|
||
@@ -3704,8 +3738,9 @@ build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
|
||
}
|
||
|
||
/* This is intended for the expressions like "a{1,3}".
|
||
- Fetch a number from `input', and return the number.
|
||
+ Fetch a number from 'input', and return the number.
|
||
Return REG_MISSING if the number field is empty like "{,1}".
|
||
+ Return RE_DUP_MAX + 1 if the number field is too large.
|
||
Return REG_ERROR if an error occurred. */
|
||
|
||
static Idx
|
||
@@ -3724,8 +3759,9 @@ fetch_number (re_string_t *input, re_token_t *token, reg_syntax_t syntax)
|
||
num = ((token->type != CHARACTER || c < '0' || '9' < c
|
||
|| num == REG_ERROR)
|
||
? REG_ERROR
|
||
- : ((num == REG_MISSING) ? c - '0' : num * 10 + c - '0'));
|
||
- num = (num > RE_DUP_MAX) ? REG_ERROR : num;
|
||
+ : num == REG_MISSING
|
||
+ ? c - '0'
|
||
+ : MIN (RE_DUP_MAX + 1, num * 10 + c - '0'));
|
||
}
|
||
return num;
|
||
}
|
||
@@ -3799,7 +3835,7 @@ create_token_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
|
||
static reg_errcode_t
|
||
mark_opt_subexp (void *extra, bin_tree_t *node)
|
||
{
|
||
- Idx idx = (Idx) (long) extra;
|
||
+ Idx idx = (uintptr_t) extra;
|
||
if (node->token.type == SUBEXP && node->token.opr.idx == idx)
|
||
node->token.opt_subexp = 1;
|
||
|
||
diff --git a/grub-core/gnulib/regex.c b/grub-core/gnulib/regex.c
|
||
index ba0eebe..5a0332e 100644
|
||
--- a/grub-core/gnulib/regex.c
|
||
+++ b/grub-core/gnulib/regex.c
|
||
@@ -1,26 +1,35 @@
|
||
/* Extended regular expression matching and search library.
|
||
- Copyright (C) 2002, 2003, 2005, 2006, 2009, 2010 Free Software Foundation,
|
||
- Inc.
|
||
+ Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
|
||
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 3, or (at your option)
|
||
- any later version.
|
||
+ The GNU C Library is free software; you can redistribute it and/or
|
||
+ modify it under the terms of the GNU General Public
|
||
+ License as published by the Free Software Foundation; either
|
||
+ version 3 of the License, or (at your option) any later version.
|
||
|
||
- This program is distributed in the hope that it will be useful,
|
||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
|
||
- You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ You should have received a copy of the GNU General Public
|
||
+ License along with the GNU C Library; if not, see
|
||
+ <http://www.gnu.org/licenses/>. */
|
||
|
||
-#include <config.h>
|
||
+#ifndef _LIBC
|
||
+# include <config.h>
|
||
|
||
-/* Make sure noone compiles this code with a C++ compiler. */
|
||
+# if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__
|
||
+# pragma GCC diagnostic ignored "-Wsuggest-attribute=pure"
|
||
+# endif
|
||
+# if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__
|
||
+# pragma GCC diagnostic ignored "-Wold-style-definition"
|
||
+# pragma GCC diagnostic ignored "-Wtype-limits"
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+/* Make sure no one compiles this code with a C++ compiler. */
|
||
#if defined __cplusplus && defined _LIBC
|
||
# error "This is C code, use a C compiler"
|
||
#endif
|
||
diff --git a/grub-core/gnulib/regex.h b/grub-core/gnulib/regex.h
|
||
index 1c139d6..854c6ed 100644
|
||
--- a/grub-core/gnulib/regex.h
|
||
+++ b/grub-core/gnulib/regex.h
|
||
@@ -1,23 +1,22 @@
|
||
/* Definitions for data structures and routines for the regular
|
||
expression library.
|
||
- Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993, 1995, 1996, 1997, 1998,
|
||
- 2000, 2001, 2002, 2003, 2005, 2006, 2009, 2010 Free Software Foundation,
|
||
- Inc.
|
||
+ Copyright (C) 1985, 1989-1993, 1995-1998, 2000-2003, 2005-2013 Free Software
|
||
+ Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 3, or (at your option)
|
||
- any later version.
|
||
+ The GNU C Library is free software; you can redistribute it and/or
|
||
+ modify it under the terms of the GNU General Public
|
||
+ License as published by the Free Software Foundation; either
|
||
+ version 3 of the License, or (at your option) any later version.
|
||
|
||
- This program is distributed in the hope that it will be useful,
|
||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
|
||
- You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ You should have received a copy of the GNU General Public
|
||
+ License along with the GNU C Library; if not, see
|
||
+ <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _REGEX_H
|
||
#define _REGEX_H 1
|
||
@@ -29,13 +28,10 @@
|
||
extern "C" {
|
||
#endif
|
||
|
||
-/* Define __USE_GNU_REGEX to declare GNU extensions that violate the
|
||
+/* Define __USE_GNU to declare GNU extensions that violate the
|
||
POSIX name space rules. */
|
||
-#undef __USE_GNU_REGEX
|
||
-#if (defined _GNU_SOURCE \
|
||
- || (!defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE \
|
||
- && !defined _XOPEN_SOURCE))
|
||
-# define __USE_GNU_REGEX 1
|
||
+#ifdef _GNU_SOURCE
|
||
+# define __USE_GNU 1
|
||
#endif
|
||
|
||
#ifdef _REGEX_LARGE_OFFSETS
|
||
@@ -46,16 +42,6 @@ extern "C" {
|
||
supported within glibc itself, and glibc users should not define
|
||
_REGEX_LARGE_OFFSETS. */
|
||
|
||
-/* The type of the offset of a byte within a string.
|
||
- For historical reasons POSIX 1003.1-2004 requires that regoff_t be
|
||
- at least as wide as off_t. However, many common POSIX platforms set
|
||
- regoff_t to the more-sensible ssize_t and the Open Group has
|
||
- signalled its intention to change the requirement to be that
|
||
- regoff_t be at least as wide as ptrdiff_t and ssize_t; see XBD ERN
|
||
- 60 (2005-08-25). We don't know of any hosts where ssize_t or
|
||
- ptrdiff_t is wider than ssize_t, so ssize_t is safe. */
|
||
-typedef ssize_t regoff_t;
|
||
-
|
||
/* The type of nonnegative object indexes. Traditionally, GNU regex
|
||
uses 'int' for these. Code that uses __re_idx_t should work
|
||
regardless of whether the type is signed. */
|
||
@@ -70,10 +56,8 @@ typedef size_t __re_long_size_t;
|
||
|
||
#else
|
||
|
||
-/* Use types that are binary-compatible with the traditional GNU regex
|
||
- implementation, which mishandles strings longer than INT_MAX. */
|
||
-
|
||
-typedef int regoff_t;
|
||
+/* The traditional GNU regex implementation mishandles strings longer
|
||
+ than INT_MAX. */
|
||
typedef int __re_idx_t;
|
||
typedef unsigned int __re_size_t;
|
||
typedef unsigned long int __re_long_size_t;
|
||
@@ -94,8 +78,7 @@ typedef unsigned long int active_reg_t;
|
||
add or remove a bit, only one other definition need change. */
|
||
typedef unsigned long int reg_syntax_t;
|
||
|
||
-#ifdef __USE_GNU_REGEX
|
||
-
|
||
+#ifdef __USE_GNU
|
||
/* If this bit is not set, then \ inside a bracket expression is literal.
|
||
If set, then such a \ quotes the following character. */
|
||
# define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
|
||
@@ -162,9 +145,9 @@ typedef unsigned long int reg_syntax_t;
|
||
If not set, newline is literal. */
|
||
# define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
|
||
|
||
-/* If this bit is set, then `{...}' defines an interval, and \{ and \}
|
||
+/* If this bit is set, then '{...}' defines an interval, and \{ and \}
|
||
are literals.
|
||
- If not set, then `\{...\}' defines an interval. */
|
||
+ If not set, then '\{...\}' defines an interval. */
|
||
# define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
|
||
|
||
/* If this bit is set, (...) defines a group, and \( and \) are literals.
|
||
@@ -226,8 +209,7 @@ typedef unsigned long int reg_syntax_t;
|
||
/* If this bit is set, then no_sub will be set to 1 during
|
||
re_compile_pattern. */
|
||
# define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
|
||
-
|
||
-#endif /* defined __USE_GNU_REGEX */
|
||
+#endif
|
||
|
||
/* This global variable defines the particular regexp syntax to use (for
|
||
some interfaces). When a regexp is compiled, the syntax used is
|
||
@@ -235,7 +217,7 @@ typedef unsigned long int reg_syntax_t;
|
||
already-compiled regexps. */
|
||
extern reg_syntax_t re_syntax_options;
|
||
|
||
-#ifdef __USE_GNU_REGEX
|
||
+#ifdef __USE_GNU
|
||
/* Define combinations of the above bits for the standard possibilities.
|
||
(The [[[ comments delimit what gets put into the Texinfo file, so
|
||
don't delete them!) */
|
||
@@ -247,16 +229,19 @@ extern reg_syntax_t re_syntax_options;
|
||
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
|
||
| RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
|
||
| RE_DOT_NEWLINE | RE_CONTEXT_INDEP_ANCHORS \
|
||
+ | RE_CHAR_CLASSES \
|
||
| RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)
|
||
|
||
# define RE_SYNTAX_GNU_AWK \
|
||
- ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG) \
|
||
- & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS \
|
||
- | RE_CONTEXT_INVALID_OPS ))
|
||
+ ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \
|
||
+ | RE_INVALID_INTERVAL_ORD) \
|
||
+ & ~(RE_DOT_NOT_NULL | RE_CONTEXT_INDEP_OPS \
|
||
+ | RE_CONTEXT_INVALID_OPS ))
|
||
|
||
# define RE_SYNTAX_POSIX_AWK \
|
||
(RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \
|
||
- | RE_INTERVALS | RE_NO_GNU_OPS)
|
||
+ | RE_INTERVALS | RE_NO_GNU_OPS \
|
||
+ | RE_INVALID_INTERVAL_ORD)
|
||
|
||
# define RE_SYNTAX_GREP \
|
||
(RE_BK_PLUS_QM | RE_CHAR_CLASSES \
|
||
@@ -307,13 +292,12 @@ extern reg_syntax_t re_syntax_options;
|
||
| RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
|
||
/* [[[end syntaxes]]] */
|
||
|
||
-#endif /* defined __USE_GNU_REGEX */
|
||
-
|
||
-#ifdef __USE_GNU_REGEX
|
||
-
|
||
/* Maximum number of duplicates an interval can allow. POSIX-conforming
|
||
systems might define this in <limits.h>, but we want our
|
||
value, so remove any previous define. */
|
||
+# ifdef _REGEX_INCLUDE_LIMITS_H
|
||
+# include <limits.h>
|
||
+# endif
|
||
# ifdef RE_DUP_MAX
|
||
# undef RE_DUP_MAX
|
||
# endif
|
||
@@ -321,16 +305,15 @@ extern reg_syntax_t re_syntax_options;
|
||
/* RE_DUP_MAX is 2**15 - 1 because an earlier implementation stored
|
||
the counter as a 2-byte signed integer. This is no longer true, so
|
||
RE_DUP_MAX could be increased to (INT_MAX / 10 - 1), or to
|
||
- ((SIZE_MAX - 2) / 10 - 1) if _REGEX_LARGE_OFFSETS is defined.
|
||
+ ((SIZE_MAX - 9) / 10) if _REGEX_LARGE_OFFSETS is defined.
|
||
However, there would be a huge performance problem if someone
|
||
actually used a pattern like a\{214748363\}, so RE_DUP_MAX retains
|
||
its historical value. */
|
||
# define RE_DUP_MAX (0x7fff)
|
||
-
|
||
-#endif /* defined __USE_GNU_REGEX */
|
||
+#endif
|
||
|
||
|
||
-/* POSIX `cflags' bits (i.e., information for `regcomp'). */
|
||
+/* POSIX 'cflags' bits (i.e., information for 'regcomp'). */
|
||
|
||
/* If this bit is set, then use extended regular expression syntax.
|
||
If not set, then use basic regular expression syntax. */
|
||
@@ -350,7 +333,7 @@ extern reg_syntax_t re_syntax_options;
|
||
#define REG_NOSUB (1 << 3)
|
||
|
||
|
||
-/* POSIX `eflags' bits (i.e., information for regexec). */
|
||
+/* POSIX 'eflags' bits (i.e., information for regexec). */
|
||
|
||
/* If this bit is set, then the beginning-of-line operator doesn't match
|
||
the beginning of the string (presumably because it's not the
|
||
@@ -368,7 +351,7 @@ extern reg_syntax_t re_syntax_options;
|
||
|
||
|
||
/* If any error codes are removed, changed, or added, update the
|
||
- `__re_error_msgid' table in regcomp.c. */
|
||
+ '__re_error_msgid' table in regcomp.c. */
|
||
|
||
typedef enum
|
||
{
|
||
@@ -393,11 +376,11 @@ typedef enum
|
||
|
||
/* Error codes we've added. */
|
||
_REG_EEND, /* Premature end. */
|
||
- _REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
|
||
+ _REG_ESIZE, /* Too large (e.g., repeat count too large). */
|
||
_REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
|
||
} reg_errcode_t;
|
||
|
||
-#ifdef _XOPEN_SOURCE
|
||
+#if defined _XOPEN_SOURCE || defined __USE_XOPEN2K
|
||
# define REG_ENOSYS _REG_ENOSYS
|
||
#endif
|
||
#define REG_NOERROR _REG_NOERROR
|
||
@@ -418,129 +401,127 @@ typedef enum
|
||
#define REG_ESIZE _REG_ESIZE
|
||
#define REG_ERPAREN _REG_ERPAREN
|
||
|
||
-/* struct re_pattern_buffer normally uses member names like `buffer'
|
||
- that POSIX does not allow. In POSIX mode these members have names
|
||
- with leading `re_' (e.g., `re_buffer'). */
|
||
-#ifdef __USE_GNU_REGEX
|
||
-# define _REG_RE_NAME(id) id
|
||
-# define _REG_RM_NAME(id) id
|
||
-#else
|
||
-# define _REG_RE_NAME(id) re_##id
|
||
-# define _REG_RM_NAME(id) rm_##id
|
||
+/* This data structure represents a compiled pattern. Before calling
|
||
+ the pattern compiler, the fields 'buffer', 'allocated', 'fastmap',
|
||
+ and 'translate' can be set. After the pattern has been compiled,
|
||
+ the fields 're_nsub', 'not_bol' and 'not_eol' are available. All
|
||
+ other fields are private to the regex routines. */
|
||
+
|
||
+#ifndef RE_TRANSLATE_TYPE
|
||
+# define __RE_TRANSLATE_TYPE unsigned char *
|
||
+# ifdef __USE_GNU
|
||
+# define RE_TRANSLATE_TYPE __RE_TRANSLATE_TYPE
|
||
+# endif
|
||
#endif
|
||
|
||
-/* The user can specify the type of the re_translate member by
|
||
- defining the macro RE_TRANSLATE_TYPE, which defaults to unsigned
|
||
- char *. This pollutes the POSIX name space, so in POSIX mode just
|
||
- use unsigned char *. */
|
||
-#ifdef __USE_GNU_REGEX
|
||
-# ifndef RE_TRANSLATE_TYPE
|
||
-# define RE_TRANSLATE_TYPE unsigned char *
|
||
-# endif
|
||
-# define REG_TRANSLATE_TYPE RE_TRANSLATE_TYPE
|
||
+#ifdef __USE_GNU
|
||
+# define __REPB_PREFIX(name) name
|
||
#else
|
||
-# define REG_TRANSLATE_TYPE unsigned char *
|
||
+# define __REPB_PREFIX(name) __##name
|
||
#endif
|
||
|
||
-/* This data structure represents a compiled pattern. Before calling
|
||
- the pattern compiler, the fields `buffer', `allocated', `fastmap',
|
||
- `translate', and `no_sub' can be set. After the pattern has been
|
||
- compiled, the `re_nsub' field is available. All other fields are
|
||
- private to the regex routines. */
|
||
-
|
||
-struct re_dfa_t;
|
||
-typedef struct re_dfa_t re_dfa_t;
|
||
-
|
||
struct re_pattern_buffer
|
||
{
|
||
- /* Space that holds the compiled pattern. It is declared as
|
||
- `unsigned char *' because its elements are sometimes used as
|
||
- array indexes. */
|
||
- re_dfa_t *_REG_RE_NAME (buffer);
|
||
+ /* Space that holds the compiled pattern. The type
|
||
+ 'struct re_dfa_t' is private and is not declared here. */
|
||
+ struct re_dfa_t *__REPB_PREFIX(buffer);
|
||
|
||
- /* Number of bytes to which `buffer' points. */
|
||
- __re_long_size_t _REG_RE_NAME (allocated);
|
||
+ /* Number of bytes to which 'buffer' points. */
|
||
+ __re_long_size_t __REPB_PREFIX(allocated);
|
||
|
||
- /* Number of bytes actually used in `buffer'. */
|
||
- __re_long_size_t _REG_RE_NAME (used);
|
||
+ /* Number of bytes actually used in 'buffer'. */
|
||
+ __re_long_size_t __REPB_PREFIX(used);
|
||
|
||
/* Syntax setting with which the pattern was compiled. */
|
||
- reg_syntax_t _REG_RE_NAME (syntax);
|
||
+ reg_syntax_t __REPB_PREFIX(syntax);
|
||
|
||
/* Pointer to a fastmap, if any, otherwise zero. re_search uses the
|
||
fastmap, if there is one, to skip over impossible starting points
|
||
for matches. */
|
||
- char *_REG_RE_NAME (fastmap);
|
||
+ char *__REPB_PREFIX(fastmap);
|
||
|
||
/* Either a translate table to apply to all characters before
|
||
comparing them, or zero for no translation. The translation is
|
||
applied to a pattern when it is compiled and to a string when it
|
||
is matched. */
|
||
- REG_TRANSLATE_TYPE _REG_RE_NAME (translate);
|
||
+ __RE_TRANSLATE_TYPE __REPB_PREFIX(translate);
|
||
|
||
/* Number of subexpressions found by the compiler. */
|
||
size_t re_nsub;
|
||
|
||
/* Zero if this pattern cannot match the empty string, one else.
|
||
- Well, in truth it's used only in `re_search_2', to see whether or
|
||
+ Well, in truth it's used only in 're_search_2', to see whether or
|
||
not we should use the fastmap, so we don't set this absolutely
|
||
- perfectly; see `re_compile_fastmap' (the `duplicate' case). */
|
||
- unsigned int _REG_RE_NAME (can_be_null) : 1;
|
||
+ perfectly; see 're_compile_fastmap' (the "duplicate" case). */
|
||
+ unsigned __REPB_PREFIX(can_be_null) : 1;
|
||
|
||
- /* If REGS_UNALLOCATED, allocate space in the `regs' structure
|
||
- for `max (RE_NREGS, re_nsub + 1)' groups.
|
||
+ /* If REGS_UNALLOCATED, allocate space in the 'regs' structure
|
||
+ for 'max (RE_NREGS, re_nsub + 1)' groups.
|
||
If REGS_REALLOCATE, reallocate space if necessary.
|
||
If REGS_FIXED, use what's there. */
|
||
-#ifdef __USE_GNU_REGEX
|
||
+#ifdef __USE_GNU
|
||
# define REGS_UNALLOCATED 0
|
||
# define REGS_REALLOCATE 1
|
||
# define REGS_FIXED 2
|
||
#endif
|
||
- unsigned int _REG_RE_NAME (regs_allocated) : 2;
|
||
+ unsigned __REPB_PREFIX(regs_allocated) : 2;
|
||
|
||
- /* Set to zero when `re_compile_pattern' compiles a pattern; set to
|
||
- one by `re_compile_fastmap' if it updates the fastmap. */
|
||
- unsigned int _REG_RE_NAME (fastmap_accurate) : 1;
|
||
+ /* Set to zero when 're_compile_pattern' compiles a pattern; set to
|
||
+ one by 're_compile_fastmap' if it updates the fastmap. */
|
||
+ unsigned __REPB_PREFIX(fastmap_accurate) : 1;
|
||
|
||
- /* If set, `re_match_2' does not return information about
|
||
+ /* If set, 're_match_2' does not return information about
|
||
subexpressions. */
|
||
- unsigned int _REG_RE_NAME (no_sub) : 1;
|
||
+ unsigned __REPB_PREFIX(no_sub) : 1;
|
||
|
||
/* If set, a beginning-of-line anchor doesn't match at the beginning
|
||
of the string. */
|
||
- unsigned int _REG_RE_NAME (not_bol) : 1;
|
||
+ unsigned __REPB_PREFIX(not_bol) : 1;
|
||
|
||
/* Similarly for an end-of-line anchor. */
|
||
- unsigned int _REG_RE_NAME (not_eol) : 1;
|
||
+ unsigned __REPB_PREFIX(not_eol) : 1;
|
||
|
||
/* If true, an anchor at a newline matches. */
|
||
- unsigned int _REG_RE_NAME (newline_anchor) : 1;
|
||
-
|
||
-/* [[[end pattern_buffer]]] */
|
||
+ unsigned __REPB_PREFIX(newline_anchor) : 1;
|
||
};
|
||
|
||
typedef struct re_pattern_buffer regex_t;
|
||
|
||
+/* Type for byte offsets within the string. POSIX mandates this. */
|
||
+#ifdef _REGEX_LARGE_OFFSETS
|
||
+/* POSIX 1003.1-2008 requires that regoff_t be at least as wide as
|
||
+ ptrdiff_t and ssize_t. We don't know of any hosts where ptrdiff_t
|
||
+ is wider than ssize_t, so ssize_t is safe. */
|
||
+typedef ssize_t regoff_t;
|
||
+#else
|
||
+/* The traditional GNU regex implementation mishandles strings longer
|
||
+ than INT_MAX. */
|
||
+typedef int regoff_t;
|
||
+#endif
|
||
+
|
||
+
|
||
+#ifdef __USE_GNU
|
||
/* This is the structure we store register match data in. See
|
||
regex.texinfo for a full description of what registers match. */
|
||
struct re_registers
|
||
{
|
||
- __re_size_t _REG_RM_NAME (num_regs);
|
||
- regoff_t *_REG_RM_NAME (start);
|
||
- regoff_t *_REG_RM_NAME (end);
|
||
+ __re_size_t num_regs;
|
||
+ regoff_t *start;
|
||
+ regoff_t *end;
|
||
};
|
||
|
||
|
||
-/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
|
||
- `re_match_2' returns information about at least this many registers
|
||
- the first time a `regs' structure is passed. */
|
||
-#if !defined RE_NREGS && defined __USE_GNU_REGEX
|
||
-# define RE_NREGS 30
|
||
+/* If 'regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
|
||
+ 're_match_2' returns information about at least this many registers
|
||
+ the first time a 'regs' structure is passed. */
|
||
+# ifndef RE_NREGS
|
||
+# define RE_NREGS 30
|
||
+# endif
|
||
#endif
|
||
|
||
|
||
/* POSIX specification for registers. Aside from the different names than
|
||
- `re_registers', POSIX uses an array of structures, instead of a
|
||
+ 're_registers', POSIX uses an array of structures, instead of a
|
||
structure of arrays. */
|
||
typedef struct
|
||
{
|
||
@@ -550,13 +531,19 @@ typedef struct
|
||
|
||
/* Declarations for routines. */
|
||
|
||
+#ifdef __USE_GNU
|
||
/* Sets the current default syntax to SYNTAX, and return the old syntax.
|
||
- You can also simply assign to the `re_syntax_options' variable. */
|
||
+ You can also simply assign to the 're_syntax_options' variable. */
|
||
extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
|
||
|
||
/* Compile the regular expression PATTERN, with length LENGTH
|
||
- and syntax given by the global `re_syntax_options', into the buffer
|
||
- BUFFER. Return NULL if successful, and an error string if not. */
|
||
+ and syntax given by the global 're_syntax_options', into the buffer
|
||
+ BUFFER. Return NULL if successful, and an error string if not.
|
||
+
|
||
+ To free the allocated storage, you must call 'regfree' on BUFFER.
|
||
+ Note that the translate table must either have been initialised by
|
||
+ 'regcomp', with a malloc'ed value, or set to NULL before calling
|
||
+ 'regfree'. */
|
||
extern const char *re_compile_pattern (const char *__pattern, size_t __length,
|
||
struct re_pattern_buffer *__buffer);
|
||
|
||
@@ -578,7 +565,7 @@ extern regoff_t re_search (struct re_pattern_buffer *__buffer,
|
||
struct re_registers *__regs);
|
||
|
||
|
||
-/* Like `re_search', but search in the concatenation of STRING1 and
|
||
+/* Like 're_search', but search in the concatenation of STRING1 and
|
||
STRING2. Also, stop searching at index START + STOP. */
|
||
extern regoff_t re_search_2 (struct re_pattern_buffer *__buffer,
|
||
const char *__string1, __re_idx_t __length1,
|
||
@@ -588,14 +575,14 @@ extern regoff_t re_search_2 (struct re_pattern_buffer *__buffer,
|
||
__re_idx_t __stop);
|
||
|
||
|
||
-/* Like `re_search', but return how many characters in STRING the regexp
|
||
+/* Like 're_search', but return how many characters in STRING the regexp
|
||
in BUFFER matched, starting at position START. */
|
||
extern regoff_t re_match (struct re_pattern_buffer *__buffer,
|
||
const char *__string, __re_idx_t __length,
|
||
__re_idx_t __start, struct re_registers *__regs);
|
||
|
||
|
||
-/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
|
||
+/* Relates to 're_match' as 're_search_2' relates to 're_search'. */
|
||
extern regoff_t re_match_2 (struct re_pattern_buffer *__buffer,
|
||
const char *__string1, __re_idx_t __length1,
|
||
const char *__string2, __re_idx_t __length2,
|
||
@@ -606,21 +593,22 @@ extern regoff_t re_match_2 (struct re_pattern_buffer *__buffer,
|
||
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
|
||
ENDS. Subsequent matches using BUFFER and REGS will use this memory
|
||
for recording register information. STARTS and ENDS must be
|
||
- allocated with malloc, and must each be at least `NUM_REGS * sizeof
|
||
+ allocated with malloc, and must each be at least 'NUM_REGS * sizeof
|
||
(regoff_t)' bytes long.
|
||
|
||
If NUM_REGS == 0, then subsequent matches should allocate their own
|
||
register data.
|
||
|
||
Unless this function is called, the first search or match using
|
||
- BUFFER will allocate its own register data, without freeing the old
|
||
- data. */
|
||
+ BUFFER will allocate its own register data, without
|
||
+ freeing the old data. */
|
||
extern void re_set_registers (struct re_pattern_buffer *__buffer,
|
||
struct re_registers *__regs,
|
||
__re_size_t __num_regs,
|
||
regoff_t *__starts, regoff_t *__ends);
|
||
+#endif /* Use GNU */
|
||
|
||
-#if defined _REGEX_RE_COMP || defined _LIBC
|
||
+#if defined _REGEX_RE_COMP || (defined _LIBC && defined __USE_BSD)
|
||
# ifndef _CRAY
|
||
/* 4.2 bsd compatibility. */
|
||
extern char *re_comp (const char *);
|
||
@@ -648,7 +636,7 @@ extern int re_exec (const char *);
|
||
#ifndef _Restrict_arr_
|
||
# if ((199901L <= __STDC_VERSION__ \
|
||
|| ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__)) \
|
||
- && !__STRICT_ANSI__)) \
|
||
+ && !defined __STRICT_ANSI__)) \
|
||
&& !defined __GNUG__)
|
||
# define _Restrict_arr_ _Restrict_
|
||
# else
|
||
diff --git a/grub-core/gnulib/regex_internal.c b/grub-core/gnulib/regex_internal.c
|
||
index 98b8d5d..899b0ae 100644
|
||
--- a/grub-core/gnulib/regex_internal.c
|
||
+++ b/grub-core/gnulib/regex_internal.c
|
||
@@ -1,22 +1,21 @@
|
||
/* Extended regular expression matching and search library.
|
||
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
|
||
- Software Foundation, Inc.
|
||
+ Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
|
||
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 3, or (at your option)
|
||
- any later version.
|
||
+ The GNU C Library is free software; you can redistribute it and/or
|
||
+ modify it under the terms of the GNU General Public
|
||
+ License as published by the Free Software Foundation; either
|
||
+ version 3 of the License, or (at your option) any later version.
|
||
|
||
- This program is distributed in the hope that it will be useful,
|
||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
|
||
- You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ You should have received a copy of the GNU General Public
|
||
+ License along with the GNU C Library; if not, see
|
||
+ <http://www.gnu.org/licenses/>. */
|
||
|
||
static void re_string_construct_common (const char *str, Idx len,
|
||
re_string_t *pstr,
|
||
@@ -135,9 +134,9 @@ re_string_realloc_buffers (re_string_t *pstr, Idx new_buf_len)
|
||
{
|
||
wint_t *new_wcs;
|
||
|
||
- /* Avoid overflow. */
|
||
- size_t max_object_size = MAX (sizeof (wint_t), sizeof (Idx));
|
||
- if (BE (SIZE_MAX / max_object_size < new_buf_len, 0))
|
||
+ /* Avoid overflow in realloc. */
|
||
+ const size_t max_object_size = MAX (sizeof (wint_t), sizeof (Idx));
|
||
+ if (BE (MIN (IDX_MAX, SIZE_MAX / max_object_size) < new_buf_len, 0))
|
||
return REG_ESPACE;
|
||
|
||
new_wcs = re_realloc (pstr->wcs, wint_t, new_buf_len);
|
||
@@ -237,13 +236,8 @@ build_wcs_buffer (re_string_t *pstr)
|
||
else
|
||
p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx;
|
||
mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
|
||
- if (BE (mbclen == (size_t) -2, 0))
|
||
- {
|
||
- /* The buffer doesn't have enough space, finish to build. */
|
||
- pstr->cur_state = prev_st;
|
||
- break;
|
||
- }
|
||
- else if (BE (mbclen == (size_t) -1 || mbclen == 0, 0))
|
||
+ if (BE (mbclen == (size_t) -1 || mbclen == 0
|
||
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len), 0))
|
||
{
|
||
/* We treat these cases as a singlebyte character. */
|
||
mbclen = 1;
|
||
@@ -252,6 +246,12 @@ build_wcs_buffer (re_string_t *pstr)
|
||
wc = pstr->trans[wc];
|
||
pstr->cur_state = prev_st;
|
||
}
|
||
+ else if (BE (mbclen == (size_t) -2, 0))
|
||
+ {
|
||
+ /* The buffer doesn't have enough space, finish to build. */
|
||
+ pstr->cur_state = prev_st;
|
||
+ break;
|
||
+ }
|
||
|
||
/* Write wide character and padding. */
|
||
pstr->wcs[byte_idx++] = wc;
|
||
@@ -334,9 +334,11 @@ build_wcs_upper_buffer (re_string_t *pstr)
|
||
for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
|
||
pstr->wcs[byte_idx++] = WEOF;
|
||
}
|
||
- else if (mbclen == (size_t) -1 || mbclen == 0)
|
||
+ else if (mbclen == (size_t) -1 || mbclen == 0
|
||
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len))
|
||
{
|
||
- /* It is an invalid character or '\0'. Just use the byte. */
|
||
+ /* It is an invalid character, an incomplete character
|
||
+ at the end of the string, or '\0'. Just use the byte. */
|
||
int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
|
||
pstr->mbs[byte_idx] = ch;
|
||
/* And also cast it to wide char. */
|
||
@@ -449,7 +451,8 @@ build_wcs_upper_buffer (re_string_t *pstr)
|
||
for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
|
||
pstr->wcs[byte_idx++] = WEOF;
|
||
}
|
||
- else if (mbclen == (size_t) -1 || mbclen == 0)
|
||
+ else if (mbclen == (size_t) -1 || mbclen == 0
|
||
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len))
|
||
{
|
||
/* It is an invalid character or '\0'. Just use the byte. */
|
||
int ch = pstr->raw_mbs[pstr->raw_mbs_idx + src_idx];
|
||
@@ -496,8 +499,7 @@ re_string_skip_chars (re_string_t *pstr, Idx new_raw_idx, wint_t *last_wc)
|
||
rawbuf_idx < new_raw_idx;)
|
||
{
|
||
wchar_t wc2;
|
||
- Idx remain_len;
|
||
- remain_len = pstr->len - rawbuf_idx;
|
||
+ Idx remain_len = pstr->raw_len - rawbuf_idx;
|
||
prev_st = pstr->cur_state;
|
||
mbclen = __mbrtowc (&wc2, (const char *) pstr->raw_mbs + rawbuf_idx,
|
||
remain_len, &pstr->cur_state);
|
||
@@ -733,21 +735,21 @@ re_string_reconstruct (re_string_t *pstr, Idx idx, int eflags)
|
||
mbstate_t cur_state;
|
||
wchar_t wc2;
|
||
Idx mlen = raw + pstr->len - p;
|
||
+ unsigned char buf[6];
|
||
size_t mbclen;
|
||
|
||
-#if 0 /* dead code: buf is set but never used */
|
||
- unsigned char buf[6];
|
||
+ const unsigned char *pp = p;
|
||
if (BE (pstr->trans != NULL, 0))
|
||
{
|
||
int i = mlen < 6 ? mlen : 6;
|
||
while (--i >= 0)
|
||
buf[i] = pstr->trans[p[i]];
|
||
+ pp = buf;
|
||
}
|
||
-#endif
|
||
/* XXX Don't use mbrtowc, we know which conversion
|
||
to use (UTF-8 -> UCS4). */
|
||
memset (&cur_state, 0, sizeof (cur_state));
|
||
- mbclen = __mbrtowc (&wc2, (const char *) p, mlen,
|
||
+ mbclen = __mbrtowc (&wc2, (const char *) pp, mlen,
|
||
&cur_state);
|
||
if (raw + offset - p <= mbclen
|
||
&& mbclen < (size_t) -2)
|
||
@@ -832,7 +834,7 @@ re_string_reconstruct (re_string_t *pstr, Idx idx, int eflags)
|
||
}
|
||
|
||
static unsigned char
|
||
-internal_function __attribute ((pure))
|
||
+internal_function __attribute__ ((pure))
|
||
re_string_peek_byte_case (const re_string_t *pstr, Idx idx)
|
||
{
|
||
int ch;
|
||
@@ -869,7 +871,7 @@ re_string_peek_byte_case (const re_string_t *pstr, Idx idx)
|
||
}
|
||
|
||
static unsigned char
|
||
-internal_function __attribute ((pure))
|
||
+internal_function
|
||
re_string_fetch_byte_case (re_string_t *pstr)
|
||
{
|
||
if (BE (!pstr->mbs_allocated, 1))
|
||
@@ -972,7 +974,7 @@ re_node_set_alloc (re_node_set *set, Idx size)
|
||
set->alloc = size;
|
||
set->nelem = 0;
|
||
set->elems = re_malloc (Idx, size);
|
||
- if (BE (set->elems == NULL, 0))
|
||
+ if (BE (set->elems == NULL, 0) && (MALLOC_0_IS_NONNULL || size != 0))
|
||
return REG_ESPACE;
|
||
return REG_NOERROR;
|
||
}
|
||
@@ -1352,7 +1354,7 @@ re_node_set_insert_last (re_node_set *set, Idx elem)
|
||
Return true if SET1 and SET2 are equivalent. */
|
||
|
||
static bool
|
||
-internal_function __attribute ((pure))
|
||
+internal_function __attribute__ ((pure))
|
||
re_node_set_compare (const re_node_set *set1, const re_node_set *set2)
|
||
{
|
||
Idx i;
|
||
@@ -1367,7 +1369,7 @@ re_node_set_compare (const re_node_set *set1, const re_node_set *set2)
|
||
/* Return (idx + 1) if SET contains the element ELEM, return 0 otherwise. */
|
||
|
||
static Idx
|
||
-internal_function __attribute ((pure))
|
||
+internal_function __attribute__ ((pure))
|
||
re_node_set_contains (const re_node_set *set, Idx elem)
|
||
{
|
||
__re_size_t idx, right, mid;
|
||
@@ -1413,13 +1415,12 @@ re_dfa_add_node (re_dfa_t *dfa, re_token_t token)
|
||
Idx *new_nexts, *new_indices;
|
||
re_node_set *new_edests, *new_eclosures;
|
||
re_token_t *new_nodes;
|
||
- size_t max_object_size =
|
||
- MAX (sizeof (re_token_t),
|
||
- MAX (sizeof (re_node_set),
|
||
- sizeof (Idx)));
|
||
|
||
- /* Avoid overflows. */
|
||
- if (BE (SIZE_MAX / 2 / max_object_size < dfa->nodes_alloc, 0))
|
||
+ /* Avoid overflows in realloc. */
|
||
+ const size_t max_object_size = MAX (sizeof (re_token_t),
|
||
+ MAX (sizeof (re_node_set),
|
||
+ sizeof (Idx)));
|
||
+ if (BE (MIN (IDX_MAX, SIZE_MAX / max_object_size) < new_nodes_alloc, 0))
|
||
return REG_MISSING;
|
||
|
||
new_nodes = re_realloc (dfa->nodes, re_token_t, new_nodes_alloc);
|
||
@@ -1442,11 +1443,9 @@ re_dfa_add_node (re_dfa_t *dfa, re_token_t token)
|
||
dfa->nodes[dfa->nodes_len] = token;
|
||
dfa->nodes[dfa->nodes_len].constraint = 0;
|
||
#ifdef RE_ENABLE_I18N
|
||
- {
|
||
- int type = token.type;
|
||
dfa->nodes[dfa->nodes_len].accept_mb =
|
||
- (type == OP_PERIOD && dfa->mb_cur_max > 1) || type == COMPLEX_BRACKET;
|
||
- }
|
||
+ ((token.type == OP_PERIOD && dfa->mb_cur_max > 1)
|
||
+ || token.type == COMPLEX_BRACKET);
|
||
#endif
|
||
dfa->nexts[dfa->nodes_len] = REG_MISSING;
|
||
re_node_set_init_empty (dfa->edests + dfa->nodes_len);
|
||
@@ -1454,7 +1453,7 @@ re_dfa_add_node (re_dfa_t *dfa, re_token_t token)
|
||
return dfa->nodes_len++;
|
||
}
|
||
|
||
-static inline re_hashval_t
|
||
+static re_hashval_t
|
||
internal_function
|
||
calc_state_hash (const re_node_set *nodes, unsigned int context)
|
||
{
|
||
@@ -1551,7 +1550,7 @@ re_acquire_state_context (reg_errcode_t *err, const re_dfa_t *dfa,
|
||
&& re_node_set_compare (state->entrance_nodes, nodes))
|
||
return state;
|
||
}
|
||
- /* There are no appropriate state in `dfa', create the new one. */
|
||
+ /* There are no appropriate state in 'dfa', create the new one. */
|
||
new_state = create_cd_newstate (dfa, nodes, context, hash);
|
||
if (BE (new_state == NULL, 0))
|
||
*err = REG_ESPACE;
|
||
@@ -1580,7 +1579,7 @@ register_state (const re_dfa_t *dfa, re_dfastate_t *newstate,
|
||
{
|
||
Idx elem = newstate->nodes.elems[i];
|
||
if (!IS_EPSILON_NODE (dfa->nodes[elem].type))
|
||
- if (BE (! re_node_set_insert_last (&newstate->non_eps_nodes, elem), 0))
|
||
+ if (! re_node_set_insert_last (&newstate->non_eps_nodes, elem))
|
||
return REG_ESPACE;
|
||
}
|
||
|
||
@@ -1615,7 +1614,7 @@ free_state (re_dfastate_t *state)
|
||
re_free (state);
|
||
}
|
||
|
||
-/* Create the new state which is independ of contexts.
|
||
+/* Create the new state which is independent of contexts.
|
||
Return the new state if succeeded, otherwise return NULL. */
|
||
|
||
static re_dfastate_t *
|
||
diff --git a/grub-core/gnulib/regex_internal.h b/grub-core/gnulib/regex_internal.h
|
||
index e5b6679..c467b29 100644
|
||
--- a/grub-core/gnulib/regex_internal.h
|
||
+++ b/grub-core/gnulib/regex_internal.h
|
||
@@ -1,43 +1,36 @@
|
||
/* Extended regular expression matching and search library.
|
||
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
|
||
- Software Foundation, Inc.
|
||
+ Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
|
||
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 3, or (at your option)
|
||
- any later version.
|
||
+ The GNU C Library is free software; you can redistribute it and/or
|
||
+ modify it under the terms of the GNU General Public
|
||
+ License as published by the Free Software Foundation; either
|
||
+ version 3 of the License, or (at your option) any later version.
|
||
|
||
- This program is distributed in the hope that it will be useful,
|
||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
|
||
- You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ You should have received a copy of the GNU General Public
|
||
+ License along with the GNU C Library; if not, see
|
||
+ <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _REGEX_INTERNAL_H
|
||
#define _REGEX_INTERNAL_H 1
|
||
|
||
#include <assert.h>
|
||
#include <ctype.h>
|
||
-#include <stdbool.h>
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
|
||
#include <langinfo.h>
|
||
-#ifndef _LIBC
|
||
-# include "localcharset.h"
|
||
-#endif
|
||
-#if defined HAVE_LOCALE_H || defined _LIBC
|
||
-# include <locale.h>
|
||
-#endif
|
||
-
|
||
+#include <locale.h>
|
||
#include <wchar.h>
|
||
#include <wctype.h>
|
||
+#include <stdbool.h>
|
||
#include <stdint.h>
|
||
#if defined _LIBC
|
||
# include <bits/libc-lock.h>
|
||
@@ -67,7 +60,7 @@
|
||
# ifdef _LIBC
|
||
# undef gettext
|
||
# define gettext(msgid) \
|
||
- INTUSE(__dcgettext) (_libc_intl_domainname, msgid, LC_MESSAGES)
|
||
+ __dcgettext (_libc_intl_domainname, msgid, LC_MESSAGES)
|
||
# endif
|
||
#else
|
||
# define gettext(msgid) (msgid)
|
||
@@ -79,12 +72,7 @@
|
||
# define gettext_noop(String) String
|
||
#endif
|
||
|
||
-/* For loser systems without the definition. */
|
||
-#ifndef SIZE_MAX
|
||
-# define SIZE_MAX ((size_t) -1)
|
||
-#endif
|
||
-
|
||
-#if (defined MB_CUR_MAX && HAVE_LOCALE_H && HAVE_WCTYPE_H && HAVE_ISWCTYPE && HAVE_WCSCOLL) || _LIBC
|
||
+#if (defined MB_CUR_MAX && HAVE_WCTYPE_H && HAVE_ISWCTYPE && HAVE_WCSCOLL) || _LIBC
|
||
# define RE_ENABLE_I18N
|
||
#endif
|
||
|
||
@@ -92,9 +80,6 @@
|
||
# define BE(expr, val) __builtin_expect (expr, val)
|
||
#else
|
||
# define BE(expr, val) (expr)
|
||
-# ifdef _LIBC
|
||
-# define inline
|
||
-# endif
|
||
#endif
|
||
|
||
/* Number of ASCII characters. */
|
||
@@ -111,22 +96,27 @@
|
||
|
||
/* Rename to standard API for using out of glibc. */
|
||
#ifndef _LIBC
|
||
+# undef __wctype
|
||
+# undef __iswctype
|
||
# define __wctype wctype
|
||
# define __iswctype iswctype
|
||
# define __btowc btowc
|
||
-# define __wcrtomb wcrtomb
|
||
# define __mbrtowc mbrtowc
|
||
+# define __wcrtomb wcrtomb
|
||
# define __regfree regfree
|
||
# define attribute_hidden
|
||
#endif /* not _LIBC */
|
||
|
||
-#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
|
||
-# define __attribute(arg) __attribute__ (arg)
|
||
-#else
|
||
-# define __attribute(arg)
|
||
+#if __GNUC__ < 3 + (__GNUC_MINOR__ < 1)
|
||
+# define __attribute__(arg)
|
||
#endif
|
||
|
||
typedef __re_idx_t Idx;
|
||
+#ifdef _REGEX_LARGE_OFFSETS
|
||
+# define IDX_MAX (SIZE_MAX - 2)
|
||
+#else
|
||
+# define IDX_MAX INT_MAX
|
||
+#endif
|
||
|
||
/* Special return value for failure to match. */
|
||
#define REG_MISSING ((Idx) -1)
|
||
@@ -337,7 +327,7 @@ typedef struct
|
||
Idx idx; /* for BACK_REF */
|
||
re_context_type ctx_type; /* for ANCHOR */
|
||
} opr;
|
||
-#if __GNUC__ >= 2 && !__STRICT_ANSI__
|
||
+#if __GNUC__ >= 2 && !defined __STRICT_ANSI__
|
||
re_token_type_t type : 8;
|
||
#else
|
||
re_token_type_t type;
|
||
@@ -413,27 +403,29 @@ struct re_string_t
|
||
};
|
||
typedef struct re_string_t re_string_t;
|
||
|
||
+
|
||
+struct re_dfa_t;
|
||
+typedef struct re_dfa_t re_dfa_t;
|
||
+
|
||
#ifndef _LIBC
|
||
-# if defined __i386__ && !defined __EMX__
|
||
-# define internal_function __attribute ((regparm (3), stdcall))
|
||
-# else
|
||
-# define internal_function
|
||
-# endif
|
||
+# define internal_function
|
||
#endif
|
||
|
||
+#ifndef NOT_IN_libc
|
||
static reg_errcode_t re_string_realloc_buffers (re_string_t *pstr,
|
||
Idx new_buf_len)
|
||
internal_function;
|
||
-#ifdef RE_ENABLE_I18N
|
||
+# ifdef RE_ENABLE_I18N
|
||
static void build_wcs_buffer (re_string_t *pstr) internal_function;
|
||
static reg_errcode_t build_wcs_upper_buffer (re_string_t *pstr)
|
||
- internal_function;
|
||
-#endif /* RE_ENABLE_I18N */
|
||
+ internal_function;
|
||
+# endif /* RE_ENABLE_I18N */
|
||
static void build_upper_buffer (re_string_t *pstr) internal_function;
|
||
static void re_string_translate_buffer (re_string_t *pstr) internal_function;
|
||
static unsigned int re_string_context_at (const re_string_t *input, Idx idx,
|
||
int eflags)
|
||
- internal_function __attribute ((pure));
|
||
+ internal_function __attribute__ ((pure));
|
||
+#endif
|
||
#define re_string_peek_byte(pstr, offset) \
|
||
((pstr)->mbs[(pstr)->cur_idx + offset])
|
||
#define re_string_fetch_byte(pstr) \
|
||
@@ -451,7 +443,9 @@ static unsigned int re_string_context_at (const re_string_t *input, Idx idx,
|
||
#define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
|
||
#define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
|
||
|
||
-#include <alloca.h>
|
||
+#if defined _LIBC || HAVE_ALLOCA
|
||
+# include <alloca.h>
|
||
+#endif
|
||
|
||
#ifndef _LIBC
|
||
# if HAVE_ALLOCA
|
||
@@ -468,9 +462,18 @@ static unsigned int re_string_context_at (const re_string_t *input, Idx idx,
|
||
# endif
|
||
#endif
|
||
|
||
+#ifdef _LIBC
|
||
+# define MALLOC_0_IS_NONNULL 1
|
||
+#elif !defined MALLOC_0_IS_NONNULL
|
||
+# define MALLOC_0_IS_NONNULL 0
|
||
+#endif
|
||
+
|
||
#ifndef MAX
|
||
# define MAX(a,b) ((a) < (b) ? (b) : (a))
|
||
#endif
|
||
+#ifndef MIN
|
||
+# define MIN(a,b) ((a) < (b) ? (a) : (b))
|
||
+#endif
|
||
|
||
#define re_malloc(t,n) ((t *) malloc ((n) * sizeof (t)))
|
||
#define re_realloc(p,t,n) ((t *) realloc (p, (n) * sizeof (t)))
|
||
@@ -486,8 +489,8 @@ struct bin_tree_t
|
||
|
||
re_token_t token;
|
||
|
||
- /* `node_idx' is the index in dfa->nodes, if `type' == 0.
|
||
- Otherwise `type' indicate the type of this node. */
|
||
+ /* 'node_idx' is the index in dfa->nodes, if 'type' == 0.
|
||
+ Otherwise 'type' indicate the type of this node. */
|
||
Idx node_idx;
|
||
};
|
||
typedef struct bin_tree_t bin_tree_t;
|
||
@@ -540,9 +543,9 @@ struct re_dfastate_t
|
||
struct re_dfastate_t **trtable, **word_trtable;
|
||
unsigned int context : 4;
|
||
unsigned int halt : 1;
|
||
- /* If this state can accept `multi byte'.
|
||
+ /* If this state can accept "multi byte".
|
||
Note that we refer to multibyte characters, and multi character
|
||
- collating elements as `multi byte'. */
|
||
+ collating elements as "multi byte". */
|
||
unsigned int accept_mb : 1;
|
||
/* If this state has backreference node(s). */
|
||
unsigned int has_backref : 1;
|
||
@@ -671,7 +674,7 @@ struct re_dfa_t
|
||
re_bitset_ptr_t sb_char;
|
||
int str_tree_storage_idx;
|
||
|
||
- /* number of subexpressions `re_nsub' is in regex_t. */
|
||
+ /* number of subexpressions 're_nsub' is in regex_t. */
|
||
re_hashval_t state_hash_mask;
|
||
Idx init_node;
|
||
Idx nbackref; /* The number of backreference in this dfa. */
|
||
@@ -728,33 +731,33 @@ typedef struct
|
||
} bracket_elem_t;
|
||
|
||
|
||
-/* Inline functions for bitset_t operation. */
|
||
+/* Functions for bitset_t operation. */
|
||
|
||
-static inline void
|
||
+static void
|
||
bitset_set (bitset_t set, Idx i)
|
||
{
|
||
set[i / BITSET_WORD_BITS] |= (bitset_word_t) 1 << i % BITSET_WORD_BITS;
|
||
}
|
||
|
||
-static inline void
|
||
+static void
|
||
bitset_clear (bitset_t set, Idx i)
|
||
{
|
||
set[i / BITSET_WORD_BITS] &= ~ ((bitset_word_t) 1 << i % BITSET_WORD_BITS);
|
||
}
|
||
|
||
-static inline bool
|
||
+static bool
|
||
bitset_contain (const bitset_t set, Idx i)
|
||
{
|
||
return (set[i / BITSET_WORD_BITS] >> i % BITSET_WORD_BITS) & 1;
|
||
}
|
||
|
||
-static inline void
|
||
+static void
|
||
bitset_empty (bitset_t set)
|
||
{
|
||
memset (set, '\0', sizeof (bitset_t));
|
||
}
|
||
|
||
-static inline void
|
||
+static void
|
||
bitset_set_all (bitset_t set)
|
||
{
|
||
memset (set, -1, sizeof (bitset_word_t) * (SBC_MAX / BITSET_WORD_BITS));
|
||
@@ -763,13 +766,13 @@ bitset_set_all (bitset_t set)
|
||
((bitset_word_t) 1 << SBC_MAX % BITSET_WORD_BITS) - 1;
|
||
}
|
||
|
||
-static inline void
|
||
+static void
|
||
bitset_copy (bitset_t dest, const bitset_t src)
|
||
{
|
||
memcpy (dest, src, sizeof (bitset_t));
|
||
}
|
||
|
||
-static inline void
|
||
+static void __attribute__ ((unused))
|
||
bitset_not (bitset_t set)
|
||
{
|
||
int bitset_i;
|
||
@@ -781,7 +784,7 @@ bitset_not (bitset_t set)
|
||
& ~set[BITSET_WORDS - 1]);
|
||
}
|
||
|
||
-static inline void
|
||
+static void __attribute__ ((unused))
|
||
bitset_merge (bitset_t dest, const bitset_t src)
|
||
{
|
||
int bitset_i;
|
||
@@ -789,7 +792,7 @@ bitset_merge (bitset_t dest, const bitset_t src)
|
||
dest[bitset_i] |= src[bitset_i];
|
||
}
|
||
|
||
-static inline void
|
||
+static void __attribute__ ((unused))
|
||
bitset_mask (bitset_t dest, const bitset_t src)
|
||
{
|
||
int bitset_i;
|
||
@@ -798,9 +801,9 @@ bitset_mask (bitset_t dest, const bitset_t src)
|
||
}
|
||
|
||
#ifdef RE_ENABLE_I18N
|
||
-/* Inline functions for re_string. */
|
||
-static inline int
|
||
-internal_function __attribute ((pure))
|
||
+/* Functions for re_string. */
|
||
+static int
|
||
+internal_function __attribute__ ((pure, unused))
|
||
re_string_char_size_at (const re_string_t *pstr, Idx idx)
|
||
{
|
||
int byte_idx;
|
||
@@ -812,8 +815,8 @@ re_string_char_size_at (const re_string_t *pstr, Idx idx)
|
||
return byte_idx;
|
||
}
|
||
|
||
-static inline wint_t
|
||
-internal_function __attribute ((pure))
|
||
+static wint_t
|
||
+internal_function __attribute__ ((pure, unused))
|
||
re_string_wchar_at (const re_string_t *pstr, Idx idx)
|
||
{
|
||
if (pstr->mb_cur_max == 1)
|
||
@@ -821,15 +824,15 @@ re_string_wchar_at (const re_string_t *pstr, Idx idx)
|
||
return (wint_t) pstr->wcs[idx];
|
||
}
|
||
|
||
+# ifndef NOT_IN_libc
|
||
static int
|
||
-internal_function __attribute ((pure))
|
||
+internal_function __attribute__ ((pure, unused))
|
||
re_string_elem_size_at (const re_string_t *pstr, Idx idx)
|
||
{
|
||
-# ifdef _LIBC
|
||
+# ifdef _LIBC
|
||
const unsigned char *p, *extra;
|
||
const int32_t *table, *indirect;
|
||
- int32_t tmp;
|
||
-# include <locale/weight.h>
|
||
+# include <locale/weight.h>
|
||
uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
|
||
|
||
if (nrules != 0)
|
||
@@ -840,13 +843,14 @@ re_string_elem_size_at (const re_string_t *pstr, Idx idx)
|
||
indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
|
||
_NL_COLLATE_INDIRECTMB);
|
||
p = pstr->mbs + idx;
|
||
- tmp = findidx (&p);
|
||
+ findidx (&p, pstr->len - idx);
|
||
return p - pstr->mbs - idx;
|
||
}
|
||
else
|
||
-# endif /* _LIBC */
|
||
+# endif /* _LIBC */
|
||
return 1;
|
||
}
|
||
+# endif
|
||
#endif /* RE_ENABLE_I18N */
|
||
|
||
#ifndef __GNUC_PREREQ
|
||
diff --git a/grub-core/gnulib/regexec.c b/grub-core/gnulib/regexec.c
|
||
index dc449ce..f632cd4 100644
|
||
--- a/grub-core/gnulib/regexec.c
|
||
+++ b/grub-core/gnulib/regexec.c
|
||
@@ -1,22 +1,21 @@
|
||
/* Extended regular expression matching and search library.
|
||
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
|
||
- Software Foundation, Inc.
|
||
+ Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||
This file is part of the GNU C Library.
|
||
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
|
||
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 3, or (at your option)
|
||
- any later version.
|
||
+ The GNU C Library is free software; you can redistribute it and/or
|
||
+ modify it under the terms of the GNU General Public
|
||
+ License as published by the Free Software Foundation; either
|
||
+ version 3 of the License, or (at your option) any later version.
|
||
|
||
- This program is distributed in the hope that it will be useful,
|
||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
|
||
- You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ You should have received a copy of the GNU General Public
|
||
+ License along with the GNU C Library; if not, see
|
||
+ <http://www.gnu.org/licenses/>. */
|
||
|
||
static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
|
||
Idx n) internal_function;
|
||
@@ -52,9 +51,8 @@ static regoff_t re_search_stub (struct re_pattern_buffer *bufp,
|
||
regoff_t range, Idx stop,
|
||
struct re_registers *regs,
|
||
bool ret_len) internal_function;
|
||
-static unsigned int re_copy_regs (struct re_registers *regs, regmatch_t *pmatch,
|
||
- Idx nregs, int regs_allocated)
|
||
- internal_function;
|
||
+static unsigned re_copy_regs (struct re_registers *regs, regmatch_t *pmatch,
|
||
+ Idx nregs, int regs_allocated) internal_function;
|
||
static reg_errcode_t prune_impossible_nodes (re_match_context_t *mctx)
|
||
internal_function;
|
||
static Idx check_matching (re_match_context_t *mctx, bool fl_longest_match,
|
||
@@ -201,7 +199,7 @@ static Idx group_nodes_into_DFAstates (const re_dfa_t *dfa,
|
||
static bool check_node_accept (const re_match_context_t *mctx,
|
||
const re_token_t *node, Idx idx)
|
||
internal_function;
|
||
-static reg_errcode_t extend_buffers (re_match_context_t *mctx)
|
||
+static reg_errcode_t extend_buffers (re_match_context_t *mctx, int min_len)
|
||
internal_function;
|
||
|
||
/* Entry point for POSIX code. */
|
||
@@ -210,11 +208,11 @@ static reg_errcode_t extend_buffers (re_match_context_t *mctx)
|
||
string STRING.
|
||
|
||
If NMATCH is zero or REG_NOSUB was set in the cflags argument to
|
||
- `regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at
|
||
+ 'regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at
|
||
least NMATCH elements, and we set them to the offsets of the
|
||
corresponding matched substrings.
|
||
|
||
- EFLAGS specifies `execution flags' which affect matching: if
|
||
+ EFLAGS specifies "execution flags" which affect matching: if
|
||
REG_NOTBOL is set, then ^ does not match at the beginning of the
|
||
string; if REG_NOTEOL is set, then $ does not match at the end.
|
||
|
||
@@ -231,7 +229,7 @@ regexec (preg, string, nmatch, pmatch, eflags)
|
||
reg_errcode_t err;
|
||
Idx start, length;
|
||
#ifdef _LIBC
|
||
- re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
|
||
+ re_dfa_t *dfa = preg->buffer;
|
||
#endif
|
||
|
||
if (eflags & ~(REG_NOTBOL | REG_NOTEOL | REG_STARTEND))
|
||
@@ -366,7 +364,6 @@ weak_alias (__re_search_2, re_search_2)
|
||
#endif
|
||
|
||
static regoff_t
|
||
-internal_function
|
||
re_search_2_stub (struct re_pattern_buffer *bufp,
|
||
const char *string1, Idx length1,
|
||
const char *string2, Idx length2,
|
||
@@ -414,7 +411,6 @@ re_search_2_stub (struct re_pattern_buffer *bufp,
|
||
otherwise the position of the match is returned. */
|
||
|
||
static regoff_t
|
||
-internal_function
|
||
re_search_stub (struct re_pattern_buffer *bufp,
|
||
const char *string, Idx length,
|
||
Idx start, regoff_t range, Idx stop, struct re_registers *regs,
|
||
@@ -426,7 +422,7 @@ re_search_stub (struct re_pattern_buffer *bufp,
|
||
regoff_t rval;
|
||
int eflags = 0;
|
||
#ifdef _LIBC
|
||
- re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
|
||
+ re_dfa_t *dfa = bufp->buffer;
|
||
#endif
|
||
Idx last_start = start + range;
|
||
|
||
@@ -478,9 +474,9 @@ re_search_stub (struct re_pattern_buffer *bufp,
|
||
|
||
rval = 0;
|
||
|
||
- /* I hope we needn't fill ther regs with -1's when no match was found. */
|
||
+ /* I hope we needn't fill their regs with -1's when no match was found. */
|
||
if (result != REG_NOERROR)
|
||
- rval = -1;
|
||
+ rval = result == REG_NOMATCH ? -1 : -2;
|
||
else if (regs != NULL)
|
||
{
|
||
/* If caller wants register contents data back, copy them. */
|
||
@@ -506,15 +502,14 @@ re_search_stub (struct re_pattern_buffer *bufp,
|
||
return rval;
|
||
}
|
||
|
||
-static unsigned int
|
||
-internal_function
|
||
+static unsigned
|
||
re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, Idx nregs,
|
||
int regs_allocated)
|
||
{
|
||
int rval = REGS_REALLOCATE;
|
||
Idx i;
|
||
Idx need_regs = nregs + 1;
|
||
- /* We need one extra element beyond `num_regs' for the `-1' marker GNU code
|
||
+ /* We need one extra element beyond 'num_regs' for the '-1' marker GNU code
|
||
uses. */
|
||
|
||
/* Have the register data arrays been allocated? */
|
||
@@ -637,7 +632,7 @@ re_exec (s)
|
||
(0 <= LAST_START && LAST_START <= LENGTH) */
|
||
|
||
static reg_errcode_t
|
||
-internal_function __attribute_warn_unused_result__
|
||
+__attribute_warn_unused_result__
|
||
re_search_internal (const regex_t *preg,
|
||
const char *string, Idx length,
|
||
Idx start, Idx last_start, Idx stop,
|
||
@@ -645,7 +640,7 @@ re_search_internal (const regex_t *preg,
|
||
int eflags)
|
||
{
|
||
reg_errcode_t err;
|
||
- const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
|
||
+ const re_dfa_t *dfa = preg->buffer;
|
||
Idx left_lim, right_lim;
|
||
int incr;
|
||
bool fl_longest_match;
|
||
@@ -720,7 +715,8 @@ re_search_internal (const regex_t *preg,
|
||
if (nmatch > 1 || dfa->has_mb_node)
|
||
{
|
||
/* Avoid overflow. */
|
||
- if (BE (SIZE_MAX / sizeof (re_dfastate_t *) <= mctx.input.bufs_len, 0))
|
||
+ if (BE ((MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *))
|
||
+ <= mctx.input.bufs_len), 0))
|
||
{
|
||
err = REG_ESPACE;
|
||
goto free_return;
|
||
@@ -740,7 +736,7 @@ re_search_internal (const regex_t *preg,
|
||
mctx.input.tip_context = (eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
|
||
: CONTEXT_NEWLINE | CONTEXT_BEGBUF;
|
||
|
||
- /* Check incrementally whether of not the input string match. */
|
||
+ /* Check incrementally whether the input string matches. */
|
||
incr = (last_start < start) ? -1 : 1;
|
||
left_lim = (last_start < start) ? last_start : start;
|
||
right_lim = (last_start < start) ? start : last_start;
|
||
@@ -922,7 +918,7 @@ re_search_internal (const regex_t *preg,
|
||
goto free_return;
|
||
}
|
||
|
||
- /* At last, add the offset to the each registers, since we slided
|
||
+ /* At last, add the offset to each register, since we slid
|
||
the buffers so that we could assume that the matching starts
|
||
from 0. */
|
||
for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
|
||
@@ -972,7 +968,7 @@ re_search_internal (const regex_t *preg,
|
||
}
|
||
|
||
static reg_errcode_t
|
||
-internal_function __attribute_warn_unused_result__
|
||
+__attribute_warn_unused_result__
|
||
prune_impossible_nodes (re_match_context_t *mctx)
|
||
{
|
||
const re_dfa_t *const dfa = mctx->dfa;
|
||
@@ -988,7 +984,7 @@ prune_impossible_nodes (re_match_context_t *mctx)
|
||
halt_node = mctx->last_node;
|
||
|
||
/* Avoid overflow. */
|
||
- if (BE (SIZE_MAX / sizeof (re_dfastate_t *) <= match_last, 0))
|
||
+ if (BE (MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *)) <= match_last, 0))
|
||
return REG_ESPACE;
|
||
|
||
sifted_states = re_malloc (re_dfastate_t *, match_last + 1);
|
||
@@ -1068,7 +1064,7 @@ prune_impossible_nodes (re_match_context_t *mctx)
|
||
since initial states may have constraints like "\<", "^", etc.. */
|
||
|
||
static inline re_dfastate_t *
|
||
-__attribute ((always_inline)) internal_function
|
||
+__attribute__ ((always_inline)) internal_function
|
||
acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx,
|
||
Idx idx)
|
||
{
|
||
@@ -1106,7 +1102,7 @@ acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx,
|
||
FL_LONGEST_MATCH means we want the POSIX longest matching.
|
||
If P_MATCH_FIRST is not NULL, and the match fails, it is set to the
|
||
next place where we may want to try matching.
|
||
- Note that the matcher assume that the maching starts from the current
|
||
+ Note that the matcher assumes that the matching starts from the current
|
||
index of the buffer. */
|
||
|
||
static Idx
|
||
@@ -1175,11 +1171,12 @@ check_matching (re_match_context_t *mctx, bool fl_longest_match,
|
||
re_dfastate_t *old_state = cur_state;
|
||
Idx next_char_idx = re_string_cur_idx (&mctx->input) + 1;
|
||
|
||
- if (BE (next_char_idx >= mctx->input.bufs_len, 0)
|
||
+ if ((BE (next_char_idx >= mctx->input.bufs_len, 0)
|
||
+ && mctx->input.bufs_len < mctx->input.len)
|
||
|| (BE (next_char_idx >= mctx->input.valid_len, 0)
|
||
&& mctx->input.valid_len < mctx->input.len))
|
||
{
|
||
- err = extend_buffers (mctx);
|
||
+ err = extend_buffers (mctx, next_char_idx + 1);
|
||
if (BE (err != REG_NOERROR, 0))
|
||
{
|
||
assert (err == REG_ESPACE);
|
||
@@ -1436,7 +1433,7 @@ internal_function __attribute_warn_unused_result__
|
||
set_regs (const regex_t *preg, const re_match_context_t *mctx, size_t nmatch,
|
||
regmatch_t *pmatch, bool fl_backtrack)
|
||
{
|
||
- const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
|
||
+ const re_dfa_t *dfa = preg->buffer;
|
||
Idx idx, cur_node;
|
||
re_node_set eps_via_nodes;
|
||
struct re_fail_stack_t *fs;
|
||
@@ -1608,21 +1605,21 @@ update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
|
||
and sift the nodes in each states according to the following rules.
|
||
Updated state_log will be wrote to STATE_LOG.
|
||
|
||
- Rules: We throw away the Node `a' in the STATE_LOG[STR_IDX] if...
|
||
+ Rules: We throw away the Node 'a' in the STATE_LOG[STR_IDX] if...
|
||
1. When STR_IDX == MATCH_LAST(the last index in the state_log):
|
||
- If `a' isn't the LAST_NODE and `a' can't epsilon transit to
|
||
- the LAST_NODE, we throw away the node `a'.
|
||
- 2. When 0 <= STR_IDX < MATCH_LAST and `a' accepts
|
||
- string `s' and transit to `b':
|
||
+ If 'a' isn't the LAST_NODE and 'a' can't epsilon transit to
|
||
+ the LAST_NODE, we throw away the node 'a'.
|
||
+ 2. When 0 <= STR_IDX < MATCH_LAST and 'a' accepts
|
||
+ string 's' and transit to 'b':
|
||
i. If 'b' isn't in the STATE_LOG[STR_IDX+strlen('s')], we throw
|
||
- away the node `a'.
|
||
+ away the node 'a'.
|
||
ii. If 'b' is in the STATE_LOG[STR_IDX+strlen('s')] but 'b' is
|
||
- thrown away, we throw away the node `a'.
|
||
+ thrown away, we throw away the node 'a'.
|
||
3. When 0 <= STR_IDX < MATCH_LAST and 'a' epsilon transit to 'b':
|
||
i. If 'b' isn't in the STATE_LOG[STR_IDX], we throw away the
|
||
- node `a'.
|
||
+ node 'a'.
|
||
ii. If 'b' is in the STATE_LOG[STR_IDX] but 'b' is thrown away,
|
||
- we throw away the node `a'. */
|
||
+ we throw away the node 'a'. */
|
||
|
||
#define STATE_NODE_CONTAINS(state,node) \
|
||
((state) != NULL && re_node_set_contains (&(state)->nodes, node))
|
||
@@ -1695,11 +1692,11 @@ build_sifted_states (const re_match_context_t *mctx, re_sift_context_t *sctx,
|
||
Idx i;
|
||
|
||
/* Then build the next sifted state.
|
||
- We build the next sifted state on `cur_dest', and update
|
||
- `sifted_states[str_idx]' with `cur_dest'.
|
||
+ We build the next sifted state on 'cur_dest', and update
|
||
+ 'sifted_states[str_idx]' with 'cur_dest'.
|
||
Note:
|
||
- `cur_dest' is the sifted state from `state_log[str_idx + 1]'.
|
||
- `cur_src' points the node_set of the old `state_log[str_idx]'
|
||
+ 'cur_dest' is the sifted state from 'state_log[str_idx + 1]'.
|
||
+ 'cur_src' points the node_set of the old 'state_log[str_idx]'
|
||
(with the epsilon nodes pre-filtered out). */
|
||
for (i = 0; i < cur_src->nelem; i++)
|
||
{
|
||
@@ -1712,7 +1709,7 @@ build_sifted_states (const re_match_context_t *mctx, re_sift_context_t *sctx,
|
||
assert (!IS_EPSILON_NODE (type));
|
||
#endif
|
||
#ifdef RE_ENABLE_I18N
|
||
- /* If the node may accept `multi byte'. */
|
||
+ /* If the node may accept "multi byte". */
|
||
if (dfa->nodes[prev_node].accept_mb)
|
||
naccepted = sift_states_iter_mb (mctx, sctx, prev_node,
|
||
str_idx, sctx->last_str_idx);
|
||
@@ -1753,12 +1750,13 @@ clean_state_log_if_needed (re_match_context_t *mctx, Idx next_state_log_idx)
|
||
{
|
||
Idx top = mctx->state_log_top;
|
||
|
||
- if (next_state_log_idx >= mctx->input.bufs_len
|
||
+ if ((next_state_log_idx >= mctx->input.bufs_len
|
||
+ && mctx->input.bufs_len < mctx->input.len)
|
||
|| (next_state_log_idx >= mctx->input.valid_len
|
||
&& mctx->input.valid_len < mctx->input.len))
|
||
{
|
||
reg_errcode_t err;
|
||
- err = extend_buffers (mctx);
|
||
+ err = extend_buffers (mctx, next_state_log_idx + 1);
|
||
if (BE (err != REG_NOERROR, 0))
|
||
return err;
|
||
}
|
||
@@ -2268,17 +2266,17 @@ sift_states_iter_mb (const re_match_context_t *mctx, re_sift_context_t *sctx,
|
||
{
|
||
const re_dfa_t *const dfa = mctx->dfa;
|
||
int naccepted;
|
||
- /* Check the node can accept `multi byte'. */
|
||
+ /* Check the node can accept "multi byte". */
|
||
naccepted = check_node_accept_bytes (dfa, node_idx, &mctx->input, str_idx);
|
||
if (naccepted > 0 && str_idx + naccepted <= max_str_idx &&
|
||
!STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + naccepted],
|
||
dfa->nexts[node_idx]))
|
||
- /* The node can't accept the `multi byte', or the
|
||
+ /* The node can't accept the "multi byte", or the
|
||
destination was already thrown away, then the node
|
||
- could't accept the current input `multi byte'. */
|
||
+ could't accept the current input "multi byte". */
|
||
naccepted = 0;
|
||
/* Otherwise, it is sure that the node could accept
|
||
- `naccepted' bytes input. */
|
||
+ 'naccepted' bytes input. */
|
||
return naccepted;
|
||
}
|
||
#endif /* RE_ENABLE_I18N */
|
||
@@ -2457,7 +2455,7 @@ find_recover_state (reg_errcode_t *err, re_match_context_t *mctx)
|
||
/* From the node set CUR_NODES, pick up the nodes whose types are
|
||
OP_OPEN_SUBEXP and which have corresponding back references in the regular
|
||
expression. And register them to use them later for evaluating the
|
||
- correspoding back references. */
|
||
+ corresponding back references. */
|
||
|
||
static reg_errcode_t
|
||
internal_function
|
||
@@ -2568,7 +2566,7 @@ transit_state_mb (re_match_context_t *mctx, re_dfastate_t *pstate)
|
||
if (naccepted == 0)
|
||
continue;
|
||
|
||
- /* The node can accepts `naccepted' bytes. */
|
||
+ /* The node can accepts 'naccepted' bytes. */
|
||
dest_idx = re_string_cur_idx (&mctx->input) + naccepted;
|
||
mctx->max_mb_elem_len = ((mctx->max_mb_elem_len < naccepted) ? naccepted
|
||
: mctx->max_mb_elem_len);
|
||
@@ -2620,7 +2618,7 @@ transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
|
||
const re_token_t *node = dfa->nodes + node_idx;
|
||
re_node_set *new_dest_nodes;
|
||
|
||
- /* Check whether `node' is a backreference or not. */
|
||
+ /* Check whether 'node' is a backreference or not. */
|
||
if (node->type != OP_BACK_REF)
|
||
continue;
|
||
|
||
@@ -2632,14 +2630,14 @@ transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
|
||
continue;
|
||
}
|
||
|
||
- /* `node' is a backreference.
|
||
+ /* 'node' is a backreference.
|
||
Check the substring which the substring matched. */
|
||
bkc_idx = mctx->nbkref_ents;
|
||
err = get_subexp (mctx, node_idx, cur_str_idx);
|
||
if (BE (err != REG_NOERROR, 0))
|
||
goto free_return;
|
||
|
||
- /* And add the epsilon closures (which is `new_dest_nodes') of
|
||
+ /* And add the epsilon closures (which is 'new_dest_nodes') of
|
||
the backreference to appropriate state_log. */
|
||
#ifdef DEBUG
|
||
assert (dfa->nexts[node_idx] != REG_MISSING);
|
||
@@ -2663,7 +2661,7 @@ transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
|
||
dest_state = mctx->state_log[dest_str_idx];
|
||
prev_nelem = ((mctx->state_log[cur_str_idx] == NULL) ? 0
|
||
: mctx->state_log[cur_str_idx]->nodes.nelem);
|
||
- /* Add `new_dest_node' to state_log. */
|
||
+ /* Add 'new_dest_node' to state_log. */
|
||
if (dest_state == NULL)
|
||
{
|
||
mctx->state_log[dest_str_idx]
|
||
@@ -2815,7 +2813,7 @@ get_subexp (re_match_context_t *mctx, Idx bkref_node, Idx bkref_str_idx)
|
||
if (bkref_str_off >= mctx->input.len)
|
||
break;
|
||
|
||
- err = extend_buffers (mctx);
|
||
+ err = extend_buffers (mctx, bkref_str_off + 1);
|
||
if (BE (err != REG_NOERROR, 0))
|
||
return err;
|
||
|
||
@@ -2937,9 +2935,12 @@ check_arrival (re_match_context_t *mctx, state_array_t *path, Idx top_node,
|
||
{
|
||
re_dfastate_t **new_array;
|
||
Idx old_alloc = path->alloc;
|
||
- Idx new_alloc = old_alloc + last_str + mctx->max_mb_elem_len + 1;
|
||
- if (BE (new_alloc < old_alloc, 0)
|
||
- || BE (SIZE_MAX / sizeof (re_dfastate_t *) < new_alloc, 0))
|
||
+ Idx incr_alloc = last_str + mctx->max_mb_elem_len + 1;
|
||
+ Idx new_alloc;
|
||
+ if (BE (IDX_MAX - old_alloc < incr_alloc, 0))
|
||
+ return REG_ESPACE;
|
||
+ new_alloc = old_alloc + incr_alloc;
|
||
+ if (BE (SIZE_MAX / sizeof (re_dfastate_t *) < new_alloc, 0))
|
||
return REG_ESPACE;
|
||
new_array = re_realloc (path->array, re_dfastate_t *, new_alloc);
|
||
if (BE (new_array == NULL, 0))
|
||
@@ -3102,7 +3103,7 @@ check_arrival_add_next_nodes (re_match_context_t *mctx, Idx str_idx,
|
||
assert (!IS_EPSILON_NODE (type));
|
||
#endif
|
||
#ifdef RE_ENABLE_I18N
|
||
- /* If the node may accept `multi byte'. */
|
||
+ /* If the node may accept "multi byte". */
|
||
if (dfa->nodes[cur_node].accept_mb)
|
||
{
|
||
naccepted = check_node_accept_bytes (dfa, cur_node, &mctx->input,
|
||
@@ -3359,7 +3360,7 @@ build_trtable (const re_dfa_t *dfa, re_dfastate_t *state)
|
||
bitset_word_t elem, mask;
|
||
bool dests_node_malloced = false;
|
||
bool dest_states_malloced = false;
|
||
- Idx ndests; /* Number of the destination states from `state'. */
|
||
+ Idx ndests; /* Number of the destination states from 'state'. */
|
||
re_dfastate_t **trtable;
|
||
re_dfastate_t **dest_states = NULL, **dest_states_word, **dest_states_nl;
|
||
re_node_set follows, *dests_node;
|
||
@@ -3373,8 +3374,8 @@ build_trtable (const re_dfa_t *dfa, re_dfastate_t *state)
|
||
} *dests_alloc;
|
||
|
||
/* We build DFA states which corresponds to the destination nodes
|
||
- from `state'. `dests_node[i]' represents the nodes which i-th
|
||
- destination state contains, and `dests_ch[i]' represents the
|
||
+ from 'state'. 'dests_node[i]' represents the nodes which i-th
|
||
+ destination state contains, and 'dests_ch[i]' represents the
|
||
characters which i-th destination state accepts. */
|
||
if (__libc_use_alloca (sizeof (struct dests_alloc)))
|
||
dests_alloc = (struct dests_alloc *) alloca (sizeof (struct dests_alloc));
|
||
@@ -3388,20 +3389,23 @@ build_trtable (const re_dfa_t *dfa, re_dfastate_t *state)
|
||
dests_node = dests_alloc->dests_node;
|
||
dests_ch = dests_alloc->dests_ch;
|
||
|
||
- /* Initialize transiton table. */
|
||
+ /* Initialize transition table. */
|
||
state->word_trtable = state->trtable = NULL;
|
||
|
||
- /* At first, group all nodes belonging to `state' into several
|
||
+ /* At first, group all nodes belonging to 'state' into several
|
||
destinations. */
|
||
ndests = group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch);
|
||
if (BE (! REG_VALID_NONZERO_INDEX (ndests), 0))
|
||
{
|
||
if (dests_node_malloced)
|
||
free (dests_alloc);
|
||
+ /* Return false in case of an error, true otherwise. */
|
||
if (ndests == 0)
|
||
{
|
||
state->trtable = (re_dfastate_t **)
|
||
calloc (sizeof (re_dfastate_t *), SBC_MAX);
|
||
+ if (BE (state->trtable == NULL, 0))
|
||
+ return false;
|
||
return true;
|
||
}
|
||
return false;
|
||
@@ -3591,13 +3595,13 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
|
||
reg_errcode_t err;
|
||
bool ok;
|
||
Idx i, j, k;
|
||
- Idx ndests; /* Number of the destinations from `state'. */
|
||
+ Idx ndests; /* Number of the destinations from 'state'. */
|
||
bitset_t accepts; /* Characters a node can accept. */
|
||
const re_node_set *cur_nodes = &state->nodes;
|
||
bitset_empty (accepts);
|
||
ndests = 0;
|
||
|
||
- /* For all the nodes belonging to `state', */
|
||
+ /* For all the nodes belonging to 'state', */
|
||
for (i = 0; i < cur_nodes->nelem; ++i)
|
||
{
|
||
re_token_t *node = &dfa->nodes[cur_nodes->elems[i]];
|
||
@@ -3640,7 +3644,7 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
|
||
else
|
||
continue;
|
||
|
||
- /* Check the `accepts' and sift the characters which are not
|
||
+ /* Check the 'accepts' and sift the characters which are not
|
||
match it the context. */
|
||
if (constraint)
|
||
{
|
||
@@ -3699,7 +3703,7 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
|
||
}
|
||
}
|
||
|
||
- /* Then divide `accepts' into DFA states, or create a new
|
||
+ /* Then divide 'accepts' into DFA states, or create a new
|
||
state. Above, we make sure that accepts is not empty. */
|
||
for (j = 0; j < ndests; ++j)
|
||
{
|
||
@@ -3712,7 +3716,7 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
|
||
if (type == CHARACTER && !bitset_contain (dests_ch[j], node->opr.c))
|
||
continue;
|
||
|
||
- /* Enumerate the intersection set of this state and `accepts'. */
|
||
+ /* Enumerate the intersection set of this state and 'accepts'. */
|
||
has_intersec = 0;
|
||
for (k = 0; k < BITSET_WORDS; ++k)
|
||
has_intersec |= intersec[k] = accepts[k] & dests_ch[j][k];
|
||
@@ -3720,7 +3724,7 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
|
||
if (!has_intersec)
|
||
continue;
|
||
|
||
- /* Then check if this state is a subset of `accepts'. */
|
||
+ /* Then check if this state is a subset of 'accepts'. */
|
||
not_subset = not_consumed = 0;
|
||
for (k = 0; k < BITSET_WORDS; ++k)
|
||
{
|
||
@@ -3728,8 +3732,8 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
|
||
not_consumed |= accepts[k] = accepts[k] & ~dests_ch[j][k];
|
||
}
|
||
|
||
- /* If this state isn't a subset of `accepts', create a
|
||
- new group state, which has the `remains'. */
|
||
+ /* If this state isn't a subset of 'accepts', create a
|
||
+ new group state, which has the 'remains'. */
|
||
if (not_subset)
|
||
{
|
||
bitset_copy (dests_ch[ndests], remains);
|
||
@@ -3768,7 +3772,7 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
|
||
}
|
||
|
||
#ifdef RE_ENABLE_I18N
|
||
-/* Check how many bytes the node `dfa->nodes[node_idx]' accepts.
|
||
+/* Check how many bytes the node 'dfa->nodes[node_idx]' accepts.
|
||
Return the number of the bytes the node accepts.
|
||
STR_IDX is the current index of the input string.
|
||
|
||
@@ -3895,7 +3899,6 @@ check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
|
||
const int32_t *table, *indirect;
|
||
const unsigned char *weights, *extra;
|
||
const char *collseqwc;
|
||
- int32_t idx;
|
||
/* This #include defines a local function! */
|
||
# include <locale/weight.h>
|
||
|
||
@@ -3933,6 +3936,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
|
||
in_collseq = find_collation_sequence_value (pin, elem_len);
|
||
}
|
||
/* match with range expression? */
|
||
+ /* FIXME: Implement rational ranges here, too. */
|
||
for (i = 0; i < cset->nranges; ++i)
|
||
if (cset->range_starts[i] <= in_collseq
|
||
&& in_collseq <= cset->range_ends[i])
|
||
@@ -3953,7 +3957,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
|
||
_NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
|
||
indirect = (const int32_t *)
|
||
_NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB);
|
||
- int32_t idx = findidx (&cp);
|
||
+ int32_t idx = findidx (&cp, elem_len);
|
||
if (idx > 0)
|
||
for (i = 0; i < cset->nequiv_classes; ++i)
|
||
{
|
||
@@ -3984,18 +3988,9 @@ check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
|
||
# endif /* _LIBC */
|
||
{
|
||
/* match with range expression? */
|
||
-#if __GNUC__ >= 2 && ! (__STDC_VERSION__ < 199901L && __STRICT_ANSI__)
|
||
- wchar_t cmp_buf[] = {L'\0', L'\0', wc, L'\0', L'\0', L'\0'};
|
||
-#else
|
||
- wchar_t cmp_buf[] = {L'\0', L'\0', L'\0', L'\0', L'\0', L'\0'};
|
||
- cmp_buf[2] = wc;
|
||
-#endif
|
||
for (i = 0; i < cset->nranges; ++i)
|
||
{
|
||
- cmp_buf[0] = cset->range_starts[i];
|
||
- cmp_buf[4] = cset->range_ends[i];
|
||
- if (wcscoll (cmp_buf, cmp_buf + 2) <= 0
|
||
- && wcscoll (cmp_buf + 2, cmp_buf + 4) <= 0)
|
||
+ if (cset->range_starts[i] <= wc && wc <= cset->range_ends[i])
|
||
{
|
||
match_len = char_len;
|
||
goto check_node_accept_bytes_match;
|
||
@@ -4065,7 +4060,7 @@ find_collation_sequence_value (const unsigned char *mbs, size_t mbs_len)
|
||
/* Skip the collation sequence value. */
|
||
idx += sizeof (uint32_t);
|
||
/* Skip the wide char sequence of the collating element. */
|
||
- idx = idx + sizeof (uint32_t) * (extra[idx] + 1);
|
||
+ idx = idx + sizeof (uint32_t) * (*(int32_t *) (extra + idx) + 1);
|
||
/* If we found the entry, return the sequence value. */
|
||
if (found)
|
||
return *(uint32_t *) (extra + idx);
|
||
@@ -4133,17 +4128,20 @@ check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
|
||
|
||
static reg_errcode_t
|
||
internal_function __attribute_warn_unused_result__
|
||
-extend_buffers (re_match_context_t *mctx)
|
||
+extend_buffers (re_match_context_t *mctx, int min_len)
|
||
{
|
||
reg_errcode_t ret;
|
||
re_string_t *pstr = &mctx->input;
|
||
|
||
/* Avoid overflow. */
|
||
- if (BE (SIZE_MAX / 2 / sizeof (re_dfastate_t *) <= pstr->bufs_len, 0))
|
||
+ if (BE (MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *)) / 2
|
||
+ <= pstr->bufs_len, 0))
|
||
return REG_ESPACE;
|
||
|
||
- /* Double the lengthes of the buffers. */
|
||
- ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
|
||
+ /* Double the lengths of the buffers, but allocate at least MIN_LEN. */
|
||
+ ret = re_string_realloc_buffers (pstr,
|
||
+ MAX (min_len,
|
||
+ MIN (pstr->len, pstr->bufs_len * 2)));
|
||
if (BE (ret != REG_NOERROR, 0))
|
||
return ret;
|
||
|
||
@@ -4206,7 +4204,7 @@ match_ctx_init (re_match_context_t *mctx, int eflags, Idx n)
|
||
size_t max_object_size =
|
||
MAX (sizeof (struct re_backref_cache_entry),
|
||
sizeof (re_sub_match_top_t *));
|
||
- if (BE (SIZE_MAX / max_object_size < n, 0))
|
||
+ if (BE (MIN (IDX_MAX, SIZE_MAX / max_object_size) < n, 0))
|
||
return REG_ESPACE;
|
||
|
||
mctx->bkref_ents = re_malloc (struct re_backref_cache_entry, n);
|
||
diff --git a/grub-core/gnulib/size_max.h b/grub-core/gnulib/size_max.h
|
||
index 56d5a9b..5f33124 100644
|
||
--- a/grub-core/gnulib/size_max.h
|
||
+++ b/grub-core/gnulib/size_max.h
|
||
@@ -1,5 +1,5 @@
|
||
/* size_max.h -- declare SIZE_MAX through system headers
|
||
- Copyright (C) 2005-2006, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2005-2006, 2009-2013 Free Software Foundation, Inc.
|
||
Written by Simon Josefsson.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef GNULIB_SIZE_MAX_H
|
||
#define GNULIB_SIZE_MAX_H
|
||
diff --git a/grub-core/gnulib/sleep.c b/grub-core/gnulib/sleep.c
|
||
index 213e5bd..4c97d7d 100644
|
||
--- a/grub-core/gnulib/sleep.c
|
||
+++ b/grub-core/gnulib/sleep.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Pausing execution of the current thread.
|
||
- Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2007.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -35,7 +35,7 @@ sleep (unsigned int seconds)
|
||
unsigned int remaining;
|
||
|
||
/* Sleep for 1 second many times, because
|
||
- 1. Sleep is not interruptiple by Ctrl-C,
|
||
+ 1. Sleep is not interruptible by Ctrl-C,
|
||
2. we want to avoid arithmetic overflow while multiplying with 1000. */
|
||
for (remaining = seconds; remaining > 0; remaining--)
|
||
Sleep (1000);
|
||
@@ -50,13 +50,14 @@ sleep (unsigned int seconds)
|
||
/* Guarantee unlimited sleep and a reasonable return value. Cygwin
|
||
1.5.x rejects attempts to sleep more than 49.7 days (2**32
|
||
milliseconds), but uses uninitialized memory which results in a
|
||
- garbage answer. */
|
||
+ garbage answer. Similarly, Linux 2.6.9 with glibc 2.3.4 has a too
|
||
+ small return value when asked to sleep more than 24.85 days. */
|
||
unsigned int
|
||
rpl_sleep (unsigned int seconds)
|
||
{
|
||
/* This requires int larger than 16 bits. */
|
||
- verify (UINT_MAX / 49 / 24 / 60 / 60);
|
||
- const unsigned int limit = 49 * 24 * 60 * 60;
|
||
+ verify (UINT_MAX / 24 / 24 / 60 / 60);
|
||
+ const unsigned int limit = 24 * 24 * 60 * 60;
|
||
while (limit < seconds)
|
||
{
|
||
unsigned int result;
|
||
diff --git a/grub-core/gnulib/stdalign.in.h b/grub-core/gnulib/stdalign.in.h
|
||
new file mode 100644
|
||
index 0000000..c3a6732
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/stdalign.in.h
|
||
@@ -0,0 +1,90 @@
|
||
+/* A substitute for ISO C11 <stdalign.h>.
|
||
+
|
||
+ Copyright 2011-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software; you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3, or (at your option)
|
||
+ any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+/* Written by Paul Eggert and Bruno Haible. */
|
||
+
|
||
+#ifndef _GL_STDALIGN_H
|
||
+#define _GL_STDALIGN_H
|
||
+
|
||
+/* ISO C11 <stdalign.h> for platforms that lack it.
|
||
+
|
||
+ References:
|
||
+ ISO C11 (latest free draft
|
||
+ <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>)
|
||
+ sections 6.5.3.4, 6.7.5, 7.15.
|
||
+ C++11 (latest free draft
|
||
+ <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>)
|
||
+ section 18.10. */
|
||
+
|
||
+/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
|
||
+ requirement of a structure member (i.e., slot or field) that is of
|
||
+ type TYPE, as an integer constant expression.
|
||
+
|
||
+ This differs from GCC's __alignof__ operator, which can yield a
|
||
+ better-performing alignment for an object of that type. For
|
||
+ example, on x86 with GCC, __alignof__ (double) and __alignof__
|
||
+ (long long) are 8, whereas alignof (double) and alignof (long long)
|
||
+ are 4 unless the option '-malign-double' is used.
|
||
+
|
||
+ The result cannot be used as a value for an 'enum' constant, if you
|
||
+ want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */
|
||
+#include <stddef.h>
|
||
+#if defined __cplusplus
|
||
+ template <class __t> struct __alignof_helper { char __a; __t __b; };
|
||
+# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
|
||
+#else
|
||
+# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
|
||
+#endif
|
||
+#define alignof _Alignof
|
||
+#define __alignof_is_defined 1
|
||
+
|
||
+/* alignas (A), also known as _Alignas (A), aligns a variable or type
|
||
+ to the alignment A, where A is an integer constant expression. For
|
||
+ example:
|
||
+
|
||
+ int alignas (8) foo;
|
||
+ struct s { int a; int alignas (8) bar; };
|
||
+
|
||
+ aligns the address of FOO and the offset of BAR to be multiples of 8.
|
||
+
|
||
+ A should be a power of two that is at least the type's alignment
|
||
+ and at most the implementation's alignment limit. This limit is
|
||
+ 2**28 on typical GNUish hosts, and 2**13 on MSVC. To be portable
|
||
+ to MSVC through at least version 10.0, A should be an integer
|
||
+ constant, as MSVC does not support expressions such as 1 << 3.
|
||
+ To be portable to Sun C 5.11, do not align auto variables to
|
||
+ anything stricter than their default alignment.
|
||
+
|
||
+ The following C11 requirements are not supported here:
|
||
+
|
||
+ - If A is zero, alignas has no effect.
|
||
+ - alignas can be used multiple times; the strictest one wins.
|
||
+ - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
|
||
+
|
||
+ */
|
||
+
|
||
+#if __GNUC__ || __IBMC__ || __IBMCPP__ || 0x5110 <= __SUNPRO_C
|
||
+# define _Alignas(a) __attribute__ ((__aligned__ (a)))
|
||
+#elif 1300 <= _MSC_VER
|
||
+# define _Alignas(a) __declspec (align (a))
|
||
+#endif
|
||
+#ifdef _Alignas
|
||
+# define alignas _Alignas
|
||
+# define __alignas_is_defined 1
|
||
+#endif
|
||
+
|
||
+#endif /* _GL_STDALIGN_H */
|
||
diff --git a/grub-core/gnulib/stdbool.in.h b/grub-core/gnulib/stdbool.in.h
|
||
index 574c281..7c15772 100644
|
||
--- a/grub-core/gnulib/stdbool.in.h
|
||
+++ b/grub-core/gnulib/stdbool.in.h
|
||
@@ -1,4 +1,4 @@
|
||
-/* Copyright (C) 2001-2003, 2006-2010 Free Software Foundation, Inc.
|
||
+/* Copyright (C) 2001-2003, 2006-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <haible@clisp.cons.org>, 2001.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -12,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _GL_STDBOOL_H
|
||
#define _GL_STDBOOL_H
|
||
@@ -67,24 +66,19 @@
|
||
# undef true
|
||
#endif
|
||
|
||
-/* For the sake of symbolic names in gdb, we define true and false as
|
||
- enum constants, not only as macros.
|
||
- It is tempting to write
|
||
- typedef enum { false = 0, true = 1 } _Bool;
|
||
- so that gdb prints values of type 'bool' symbolically. But if we do
|
||
- this, values of type '_Bool' may promote to 'int' or 'unsigned int'
|
||
- (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
|
||
- (see ISO C 99 6.3.1.1.(2)). So we add a negative value to the
|
||
- enum; this ensures that '_Bool' promotes to 'int'. */
|
||
-#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__)
|
||
+#ifdef __cplusplus
|
||
+# define _Bool bool
|
||
+# define bool bool
|
||
+#else
|
||
+# if defined __BEOS__ && !defined __HAIKU__
|
||
/* A compiler known to have 'bool'. */
|
||
/* If the compiler already has both 'bool' and '_Bool', we can assume they
|
||
are the same types. */
|
||
-# if !@HAVE__BOOL@
|
||
+# if !@HAVE__BOOL@
|
||
typedef bool _Bool;
|
||
-# endif
|
||
-#else
|
||
-# if !defined __GNUC__
|
||
+# endif
|
||
+# else
|
||
+# if !defined __GNUC__
|
||
/* If @HAVE__BOOL@:
|
||
Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
|
||
the built-in _Bool type is used. See
|
||
@@ -104,19 +98,35 @@ typedef bool _Bool;
|
||
"Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
|
||
The only benefit of the enum, debuggability, is not important
|
||
with these compilers. So use 'signed char' and no enum. */
|
||
-# define _Bool signed char
|
||
-# else
|
||
+# define _Bool signed char
|
||
+# else
|
||
/* With this compiler, trust the _Bool type if the compiler has it. */
|
||
-# if !@HAVE__BOOL@
|
||
+# if !@HAVE__BOOL@
|
||
+ /* For the sake of symbolic names in gdb, define true and false as
|
||
+ enum constants, not only as macros.
|
||
+ It is tempting to write
|
||
+ typedef enum { false = 0, true = 1 } _Bool;
|
||
+ so that gdb prints values of type 'bool' symbolically. But then
|
||
+ values of type '_Bool' might promote to 'int' or 'unsigned int'
|
||
+ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
|
||
+ (see ISO C 99 6.3.1.1.(2)). So add a negative value to the
|
||
+ enum; this ensures that '_Bool' promotes to 'int'. */
|
||
typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
|
||
+# endif
|
||
# endif
|
||
# endif
|
||
+# define bool _Bool
|
||
#endif
|
||
-#define bool _Bool
|
||
|
||
/* The other macros must be usable in preprocessor directives. */
|
||
-#define false 0
|
||
-#define true 1
|
||
+#ifdef __cplusplus
|
||
+# define false false
|
||
+# define true true
|
||
+#else
|
||
+# define false 0
|
||
+# define true 1
|
||
+#endif
|
||
+
|
||
#define __bool_true_false_are_defined 1
|
||
|
||
#endif /* _GL_STDBOOL_H */
|
||
diff --git a/grub-core/gnulib/stddef.in.h b/grub-core/gnulib/stddef.in.h
|
||
index 08778a2..40f0536 100644
|
||
--- a/grub-core/gnulib/stddef.in.h
|
||
+++ b/grub-core/gnulib/stddef.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
|
||
|
||
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* Written by Eric Blake. */
|
||
|
||
@@ -26,6 +25,7 @@
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
#if defined __need_wchar_t || defined __need_size_t \
|
||
|| defined __need_ptrdiff_t || defined __need_NULL \
|
||
@@ -37,9 +37,9 @@
|
||
remember if special invocation has ever been used to obtain wint_t,
|
||
in which case we need to clean up NULL yet again. */
|
||
|
||
-# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T)
|
||
+# if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T)
|
||
# ifdef __need_wint_t
|
||
-# undef _GL_STDDEF_H
|
||
+# undef _@GUARD_PREFIX@_STDDEF_H
|
||
# define _GL_STDDEF_WINT_T
|
||
# endif
|
||
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
|
||
@@ -48,14 +48,14 @@
|
||
#else
|
||
/* Normal invocation convention. */
|
||
|
||
-# ifndef _GL_STDDEF_H
|
||
+# ifndef _@GUARD_PREFIX@_STDDEF_H
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
|
||
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
|
||
|
||
-# ifndef _GL_STDDEF_H
|
||
-# define _GL_STDDEF_H
|
||
+# ifndef _@GUARD_PREFIX@_STDDEF_H
|
||
+# define _@GUARD_PREFIX@_STDDEF_H
|
||
|
||
/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */
|
||
#if @REPLACE_NULL@
|
||
@@ -81,6 +81,6 @@
|
||
# define wchar_t int
|
||
#endif
|
||
|
||
-# endif /* _GL_STDDEF_H */
|
||
-# endif /* _GL_STDDEF_H */
|
||
+# endif /* _@GUARD_PREFIX@_STDDEF_H */
|
||
+# endif /* _@GUARD_PREFIX@_STDDEF_H */
|
||
#endif /* __need_XXX */
|
||
diff --git a/grub-core/gnulib/stdint.in.h b/grub-core/gnulib/stdint.in.h
|
||
index 5da5f17..2db8b2e 100644
|
||
--- a/grub-core/gnulib/stdint.in.h
|
||
+++ b/grub-core/gnulib/stdint.in.h
|
||
@@ -1,4 +1,4 @@
|
||
-/* Copyright (C) 2001-2002, 2004-2010 Free Software Foundation, Inc.
|
||
+/* Copyright (C) 2001-2002, 2004-2013 Free Software Foundation, Inc.
|
||
Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
|
||
This file is part of gnulib.
|
||
|
||
@@ -13,19 +13,19 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/*
|
||
* ISO C 99 <stdint.h> for platforms that lack it.
|
||
* <http://www.opengroup.org/susv3xbd/stdint.h.html>
|
||
*/
|
||
|
||
-#ifndef _GL_STDINT_H
|
||
+#ifndef _@GUARD_PREFIX@_STDINT_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
/* When including a system file that in turn includes <inttypes.h>,
|
||
use the system <inttypes.h>, not our substitute. This avoids
|
||
@@ -33,6 +33,16 @@
|
||
<inttypes.h>. */
|
||
#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
|
||
|
||
+/* On Android (Bionic libc), <sys/types.h> includes this file before
|
||
+ having defined 'time_t'. Therefore in this case avoid including
|
||
+ other system header files; just include the system's <stdint.h>.
|
||
+ Ideally we should test __BIONIC__ here, but it is only defined after
|
||
+ <sys/cdefs.h> has been included; hence test __ANDROID__ instead. */
|
||
+#if defined __ANDROID__ \
|
||
+ && defined _SYS_TYPES_H_ && !defined __need_size_t
|
||
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
|
||
+#else
|
||
+
|
||
/* Get those types that are already defined in other system include
|
||
files, so that we can "#define int8_t signed char" below without
|
||
worrying about a later system include file containing a "typedef
|
||
@@ -48,28 +58,40 @@
|
||
diagnostics. */
|
||
# define __STDINT_H__
|
||
# endif
|
||
+
|
||
+ /* Some pre-C++11 <stdint.h> implementations need this. */
|
||
+# ifdef __cplusplus
|
||
+# ifndef __STDC_CONSTANT_MACROS
|
||
+# define __STDC_CONSTANT_MACROS 1
|
||
+# endif
|
||
+# ifndef __STDC_LIMIT_MACROS
|
||
+# define __STDC_LIMIT_MACROS 1
|
||
+# endif
|
||
+# endif
|
||
+
|
||
/* Other systems may have an incomplete or buggy <stdint.h>.
|
||
Include it before <inttypes.h>, since any "#include <stdint.h>"
|
||
in <inttypes.h> would reinclude us, skipping our contents because
|
||
- _GL_STDINT_H is defined.
|
||
+ _@GUARD_PREFIX@_STDINT_H is defined.
|
||
The include_next requires a split double-inclusion guard. */
|
||
# @INCLUDE_NEXT@ @NEXT_STDINT_H@
|
||
#endif
|
||
|
||
-#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
|
||
-#define _GL_STDINT_H
|
||
+#if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
|
||
+#define _@GUARD_PREFIX@_STDINT_H
|
||
|
||
/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
|
||
IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
|
||
AIX 5.2 <sys/types.h> isn't needed and causes troubles.
|
||
- MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
|
||
+ Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
|
||
relies on the system <stdint.h> definitions, so include
|
||
<sys/types.h> after @NEXT_STDINT_H@. */
|
||
#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
|
||
# include <sys/types.h>
|
||
#endif
|
||
|
||
-/* Get LONG_MIN, LONG_MAX, ULONG_MAX. */
|
||
+/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX,
|
||
+ LONG_MIN, LONG_MAX, ULONG_MAX. */
|
||
#include <limits.h>
|
||
|
||
#if @HAVE_INTTYPES_H@
|
||
@@ -92,7 +114,7 @@
|
||
|
||
#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
|
||
|
||
-/* Minimum and maximum values for a integer type under the usual assumption.
|
||
+/* Minimum and maximum values for an integer type under the usual assumption.
|
||
Return an unspecified value if BITS == 0, adding a check to pacify
|
||
picky compilers. */
|
||
|
||
@@ -107,6 +129,8 @@
|
||
warnings in the signed case. */ \
|
||
((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
|
||
|
||
+#if !GNULIB_defined_stdint_types
|
||
+
|
||
/* 7.18.1.1. Exact-width integer types */
|
||
|
||
/* Here we assume a standard architecture where the hardware integer
|
||
@@ -133,40 +157,54 @@ typedef unsigned int gl_uint32_t;
|
||
#define int32_t gl_int32_t
|
||
#define uint32_t gl_uint32_t
|
||
|
||
+/* If the system defines INT64_MAX, assume int64_t works. That way,
|
||
+ if the underlying platform defines int64_t to be a 64-bit long long
|
||
+ int, the code below won't mistakenly define it to be a 64-bit long
|
||
+ int, which would mess up C++ name mangling. We must use #ifdef
|
||
+ rather than #if, to avoid an error with HP-UX 10.20 cc. */
|
||
+
|
||
+#ifdef INT64_MAX
|
||
+# define GL_INT64_T
|
||
+#else
|
||
/* Do not undefine int64_t if gnulib is not being used with 64-bit
|
||
types, since otherwise it breaks platforms like Tandem/NSK. */
|
||
-#if LONG_MAX >> 31 >> 31 == 1
|
||
-# undef int64_t
|
||
+# if LONG_MAX >> 31 >> 31 == 1
|
||
+# undef int64_t
|
||
typedef long int gl_int64_t;
|
||
-# define int64_t gl_int64_t
|
||
-# define GL_INT64_T
|
||
-#elif defined _MSC_VER
|
||
-# undef int64_t
|
||
+# define int64_t gl_int64_t
|
||
+# define GL_INT64_T
|
||
+# elif defined _MSC_VER
|
||
+# undef int64_t
|
||
typedef __int64 gl_int64_t;
|
||
-# define int64_t gl_int64_t
|
||
-# define GL_INT64_T
|
||
-#elif @HAVE_LONG_LONG_INT@
|
||
-# undef int64_t
|
||
+# define int64_t gl_int64_t
|
||
+# define GL_INT64_T
|
||
+# elif @HAVE_LONG_LONG_INT@
|
||
+# undef int64_t
|
||
typedef long long int gl_int64_t;
|
||
-# define int64_t gl_int64_t
|
||
-# define GL_INT64_T
|
||
+# define int64_t gl_int64_t
|
||
+# define GL_INT64_T
|
||
+# endif
|
||
#endif
|
||
|
||
-#if ULONG_MAX >> 31 >> 31 >> 1 == 1
|
||
-# undef uint64_t
|
||
-typedef unsigned long int gl_uint64_t;
|
||
-# define uint64_t gl_uint64_t
|
||
+#ifdef UINT64_MAX
|
||
# define GL_UINT64_T
|
||
-#elif defined _MSC_VER
|
||
-# undef uint64_t
|
||
+#else
|
||
+# if ULONG_MAX >> 31 >> 31 >> 1 == 1
|
||
+# undef uint64_t
|
||
+typedef unsigned long int gl_uint64_t;
|
||
+# define uint64_t gl_uint64_t
|
||
+# define GL_UINT64_T
|
||
+# elif defined _MSC_VER
|
||
+# undef uint64_t
|
||
typedef unsigned __int64 gl_uint64_t;
|
||
-# define uint64_t gl_uint64_t
|
||
-# define GL_UINT64_T
|
||
-#elif @HAVE_UNSIGNED_LONG_LONG_INT@
|
||
-# undef uint64_t
|
||
+# define uint64_t gl_uint64_t
|
||
+# define GL_UINT64_T
|
||
+# elif @HAVE_UNSIGNED_LONG_LONG_INT@
|
||
+# undef uint64_t
|
||
typedef unsigned long long int gl_uint64_t;
|
||
-# define uint64_t gl_uint64_t
|
||
-# define GL_UINT64_T
|
||
+# define uint64_t gl_uint64_t
|
||
+# define GL_UINT64_T
|
||
+# endif
|
||
#endif
|
||
|
||
/* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */
|
||
@@ -209,8 +247,9 @@ typedef unsigned long long int gl_uint64_t;
|
||
|
||
/* Here we assume a standard architecture where the hardware integer
|
||
types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
|
||
- are taken from the same list of types. Assume that 'long int'
|
||
- is fast enough for all narrower integers. */
|
||
+ are taken from the same list of types. The following code normally
|
||
+ uses types consistent with glibc, as that lessens the chance of
|
||
+ incompatibility with older GNU hosts. */
|
||
|
||
#undef int_fast8_t
|
||
#undef uint_fast8_t
|
||
@@ -220,12 +259,21 @@ typedef unsigned long long int gl_uint64_t;
|
||
#undef uint_fast32_t
|
||
#undef int_fast64_t
|
||
#undef uint_fast64_t
|
||
-typedef long int gl_int_fast8_t;
|
||
-typedef unsigned long int gl_uint_fast8_t;
|
||
-typedef long int gl_int_fast16_t;
|
||
-typedef unsigned long int gl_uint_fast16_t;
|
||
+typedef signed char gl_int_fast8_t;
|
||
+typedef unsigned char gl_uint_fast8_t;
|
||
+
|
||
+#ifdef __sun
|
||
+/* Define types compatible with SunOS 5.10, so that code compiled under
|
||
+ earlier SunOS versions works with code compiled under SunOS 5.10. */
|
||
+typedef int gl_int_fast32_t;
|
||
+typedef unsigned int gl_uint_fast32_t;
|
||
+#else
|
||
typedef long int gl_int_fast32_t;
|
||
typedef unsigned long int gl_uint_fast32_t;
|
||
+#endif
|
||
+typedef gl_int_fast32_t gl_int_fast16_t;
|
||
+typedef gl_uint_fast32_t gl_uint_fast16_t;
|
||
+
|
||
#define int_fast8_t gl_int_fast8_t
|
||
#define uint_fast8_t gl_uint_fast8_t
|
||
#define int_fast16_t gl_int_fast16_t
|
||
@@ -253,36 +301,48 @@ typedef unsigned long int gl_uintptr_t;
|
||
/* Note: These types are compiler dependent. It may be unwise to use them in
|
||
public header files. */
|
||
|
||
-#undef intmax_t
|
||
-#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
|
||
+/* If the system defines INTMAX_MAX, assume that intmax_t works, and
|
||
+ similarly for UINTMAX_MAX and uintmax_t. This avoids problems with
|
||
+ assuming one type where another is used by the system. */
|
||
+
|
||
+#ifndef INTMAX_MAX
|
||
+# undef INTMAX_C
|
||
+# undef intmax_t
|
||
+# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
|
||
typedef long long int gl_intmax_t;
|
||
-# define intmax_t gl_intmax_t
|
||
-#elif defined GL_INT64_T
|
||
-# define intmax_t int64_t
|
||
-#else
|
||
+# define intmax_t gl_intmax_t
|
||
+# elif defined GL_INT64_T
|
||
+# define intmax_t int64_t
|
||
+# else
|
||
typedef long int gl_intmax_t;
|
||
-# define intmax_t gl_intmax_t
|
||
+# define intmax_t gl_intmax_t
|
||
+# endif
|
||
#endif
|
||
|
||
-#undef uintmax_t
|
||
-#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
|
||
+#ifndef UINTMAX_MAX
|
||
+# undef UINTMAX_C
|
||
+# undef uintmax_t
|
||
+# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
|
||
typedef unsigned long long int gl_uintmax_t;
|
||
-# define uintmax_t gl_uintmax_t
|
||
-#elif defined GL_UINT64_T
|
||
-# define uintmax_t uint64_t
|
||
-#else
|
||
+# define uintmax_t gl_uintmax_t
|
||
+# elif defined GL_UINT64_T
|
||
+# define uintmax_t uint64_t
|
||
+# else
|
||
typedef unsigned long int gl_uintmax_t;
|
||
-# define uintmax_t gl_uintmax_t
|
||
+# define uintmax_t gl_uintmax_t
|
||
+# endif
|
||
#endif
|
||
|
||
/* Verify that intmax_t and uintmax_t have the same size. Too much code
|
||
breaks if this is not the case. If this check fails, the reason is likely
|
||
to be found in the autoconf macros. */
|
||
-typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1];
|
||
+typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
|
||
+ ? 1 : -1];
|
||
|
||
-/* 7.18.2. Limits of specified-width integer types */
|
||
+#define GNULIB_defined_stdint_types 1
|
||
+#endif /* !GNULIB_defined_stdint_types */
|
||
|
||
-#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
|
||
+/* 7.18.2. Limits of specified-width integer types */
|
||
|
||
/* 7.18.2.1. Limits of exact-width integer types */
|
||
|
||
@@ -310,17 +370,14 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) -
|
||
#define INT32_MAX 2147483647
|
||
#define UINT32_MAX 4294967295U
|
||
|
||
-#undef INT64_MIN
|
||
-#undef INT64_MAX
|
||
-#ifdef GL_INT64_T
|
||
+#if defined GL_INT64_T && ! defined INT64_MAX
|
||
/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
|
||
evaluates the latter incorrectly in preprocessor expressions. */
|
||
# define INT64_MIN (- INTMAX_C (1) << 63)
|
||
# define INT64_MAX INTMAX_C (9223372036854775807)
|
||
#endif
|
||
|
||
-#undef UINT64_MAX
|
||
-#ifdef GL_UINT64_T
|
||
+#if defined GL_UINT64_T && ! defined UINT64_MAX
|
||
# define UINT64_MAX UINTMAX_C (18446744073709551615)
|
||
#endif
|
||
|
||
@@ -372,23 +429,29 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) -
|
||
#undef INT_FAST8_MIN
|
||
#undef INT_FAST8_MAX
|
||
#undef UINT_FAST8_MAX
|
||
-#define INT_FAST8_MIN LONG_MIN
|
||
-#define INT_FAST8_MAX LONG_MAX
|
||
-#define UINT_FAST8_MAX ULONG_MAX
|
||
+#define INT_FAST8_MIN SCHAR_MIN
|
||
+#define INT_FAST8_MAX SCHAR_MAX
|
||
+#define UINT_FAST8_MAX UCHAR_MAX
|
||
|
||
#undef INT_FAST16_MIN
|
||
#undef INT_FAST16_MAX
|
||
#undef UINT_FAST16_MAX
|
||
-#define INT_FAST16_MIN LONG_MIN
|
||
-#define INT_FAST16_MAX LONG_MAX
|
||
-#define UINT_FAST16_MAX ULONG_MAX
|
||
+#define INT_FAST16_MIN INT_FAST32_MIN
|
||
+#define INT_FAST16_MAX INT_FAST32_MAX
|
||
+#define UINT_FAST16_MAX UINT_FAST32_MAX
|
||
|
||
#undef INT_FAST32_MIN
|
||
#undef INT_FAST32_MAX
|
||
#undef UINT_FAST32_MAX
|
||
-#define INT_FAST32_MIN LONG_MIN
|
||
-#define INT_FAST32_MAX LONG_MAX
|
||
-#define UINT_FAST32_MAX ULONG_MAX
|
||
+#ifdef __sun
|
||
+# define INT_FAST32_MIN INT_MIN
|
||
+# define INT_FAST32_MAX INT_MAX
|
||
+# define UINT_FAST32_MAX UINT_MAX
|
||
+#else
|
||
+# define INT_FAST32_MIN LONG_MIN
|
||
+# define INT_FAST32_MAX LONG_MAX
|
||
+# define UINT_FAST32_MAX ULONG_MAX
|
||
+#endif
|
||
|
||
#undef INT_FAST64_MIN
|
||
#undef INT_FAST64_MAX
|
||
@@ -413,21 +476,23 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) -
|
||
|
||
/* 7.18.2.5. Limits of greatest-width integer types */
|
||
|
||
-#undef INTMAX_MIN
|
||
-#undef INTMAX_MAX
|
||
-#ifdef INT64_MAX
|
||
-# define INTMAX_MIN INT64_MIN
|
||
-# define INTMAX_MAX INT64_MAX
|
||
-#else
|
||
-# define INTMAX_MIN INT32_MIN
|
||
-# define INTMAX_MAX INT32_MAX
|
||
+#ifndef INTMAX_MAX
|
||
+# undef INTMAX_MIN
|
||
+# ifdef INT64_MAX
|
||
+# define INTMAX_MIN INT64_MIN
|
||
+# define INTMAX_MAX INT64_MAX
|
||
+# else
|
||
+# define INTMAX_MIN INT32_MIN
|
||
+# define INTMAX_MAX INT32_MAX
|
||
+# endif
|
||
#endif
|
||
|
||
-#undef UINTMAX_MAX
|
||
-#ifdef UINT64_MAX
|
||
-# define UINTMAX_MAX UINT64_MAX
|
||
-#else
|
||
-# define UINTMAX_MAX UINT32_MAX
|
||
+#ifndef UINTMAX_MAX
|
||
+# ifdef UINT64_MAX
|
||
+# define UINTMAX_MAX UINT64_MAX
|
||
+# else
|
||
+# define UINTMAX_MAX UINT32_MAX
|
||
+# endif
|
||
#endif
|
||
|
||
/* 7.18.3. Limits of other integer types */
|
||
@@ -475,10 +540,16 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) -
|
||
|
||
/* wchar_t limits */
|
||
/* Get WCHAR_MIN, WCHAR_MAX.
|
||
- This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested
|
||
- includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
|
||
+ This include is not on the top, above, because on OSF/1 4.0 we have a
|
||
+ sequence of nested includes
|
||
+ <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
|
||
<stdint.h> and assumes its types are already defined. */
|
||
-#if ! (defined WCHAR_MIN && defined WCHAR_MAX)
|
||
+#if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
|
||
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+# include <stddef.h>
|
||
+# include <stdio.h>
|
||
+# include <time.h>
|
||
# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
|
||
# include <wchar.h>
|
||
# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
|
||
@@ -498,12 +569,8 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) -
|
||
#define WINT_MAX \
|
||
_STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
|
||
|
||
-#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
|
||
-
|
||
/* 7.18.4. Macros for integer constants */
|
||
|
||
-#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
|
||
-
|
||
/* 7.18.4.1. Macros for minimum-width integer constants */
|
||
/* According to ISO C 99 Technical Corrigendum 1 */
|
||
|
||
@@ -544,25 +611,26 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) -
|
||
|
||
/* 7.18.4.2. Macros for greatest-width integer constants */
|
||
|
||
-#undef INTMAX_C
|
||
-#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
|
||
-# define INTMAX_C(x) x##LL
|
||
-#elif defined GL_INT64_T
|
||
-# define INTMAX_C(x) INT64_C(x)
|
||
-#else
|
||
-# define INTMAX_C(x) x##L
|
||
+#ifndef INTMAX_C
|
||
+# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
|
||
+# define INTMAX_C(x) x##LL
|
||
+# elif defined GL_INT64_T
|
||
+# define INTMAX_C(x) INT64_C(x)
|
||
+# else
|
||
+# define INTMAX_C(x) x##L
|
||
+# endif
|
||
#endif
|
||
|
||
-#undef UINTMAX_C
|
||
-#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
|
||
-# define UINTMAX_C(x) x##ULL
|
||
-#elif defined GL_UINT64_T
|
||
-# define UINTMAX_C(x) UINT64_C(x)
|
||
-#else
|
||
-# define UINTMAX_C(x) x##UL
|
||
+#ifndef UINTMAX_C
|
||
+# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
|
||
+# define UINTMAX_C(x) x##ULL
|
||
+# elif defined GL_UINT64_T
|
||
+# define UINTMAX_C(x) UINT64_C(x)
|
||
+# else
|
||
+# define UINTMAX_C(x) x##UL
|
||
+# endif
|
||
#endif
|
||
|
||
-#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
|
||
-
|
||
-#endif /* _GL_STDINT_H */
|
||
-#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
|
||
+#endif /* _@GUARD_PREFIX@_STDINT_H */
|
||
+#endif /* !(defined __ANDROID__ && ...) */
|
||
+#endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
|
||
diff --git a/grub-core/gnulib/stdio-write.c b/grub-core/gnulib/stdio-write.c
|
||
deleted file mode 100644
|
||
index a6a0eb1..0000000
|
||
--- a/grub-core/gnulib/stdio-write.c
|
||
+++ /dev/null
|
||
@@ -1,148 +0,0 @@
|
||
-/* POSIX compatible FILE stream write function.
|
||
- Copyright (C) 2008-2010 Free Software Foundation, Inc.
|
||
- Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||
-
|
||
- This program is free software: you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 3 of the License, or
|
||
- (at your option) any later version.
|
||
-
|
||
- This program is distributed in the hope that it will be useful,
|
||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
-
|
||
- You should have received a copy of the GNU General Public License
|
||
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
-
|
||
-#include <config.h>
|
||
-
|
||
-/* Specification. */
|
||
-#include <stdio.h>
|
||
-
|
||
-/* Replace these functions only if module 'sigpipe' is requested. */
|
||
-#if GNULIB_SIGPIPE
|
||
-
|
||
-/* On native Windows platforms, SIGPIPE does not exist. When write() is
|
||
- called on a pipe with no readers, WriteFile() fails with error
|
||
- GetLastError() = ERROR_NO_DATA, and write() in consequence fails with
|
||
- error EINVAL. This write() function is at the basis of the function
|
||
- which flushes the buffer of a FILE stream. */
|
||
-
|
||
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||
-
|
||
-# include <errno.h>
|
||
-# include <signal.h>
|
||
-# include <io.h>
|
||
-
|
||
-# define WIN32_LEAN_AND_MEAN /* avoid including junk */
|
||
-# include <windows.h>
|
||
-
|
||
-# define CALL_WITH_SIGPIPE_EMULATION(RETTYPE, EXPRESSION, FAILED) \
|
||
- if (ferror (stream)) \
|
||
- return (EXPRESSION); \
|
||
- else \
|
||
- { \
|
||
- RETTYPE ret; \
|
||
- SetLastError (0); \
|
||
- ret = (EXPRESSION); \
|
||
- if (FAILED && GetLastError () == ERROR_NO_DATA && ferror (stream)) \
|
||
- { \
|
||
- int fd = fileno (stream); \
|
||
- if (fd >= 0 \
|
||
- && GetFileType ((HANDLE) _get_osfhandle (fd)) == FILE_TYPE_PIPE)\
|
||
- { \
|
||
- /* Try to raise signal SIGPIPE. */ \
|
||
- raise (SIGPIPE); \
|
||
- /* If it is currently blocked or ignored, change errno from \
|
||
- EINVAL to EPIPE. */ \
|
||
- errno = EPIPE; \
|
||
- } \
|
||
- } \
|
||
- return ret; \
|
||
- }
|
||
-
|
||
-# if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */
|
||
-int
|
||
-printf (const char *format, ...)
|
||
-{
|
||
- int retval;
|
||
- va_list args;
|
||
-
|
||
- va_start (args, format);
|
||
- retval = vfprintf (stdout, format, args);
|
||
- va_end (args);
|
||
-
|
||
- return retval;
|
||
-}
|
||
-# endif
|
||
-
|
||
-# if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */
|
||
-int
|
||
-fprintf (FILE *stream, const char *format, ...)
|
||
-{
|
||
- int retval;
|
||
- va_list args;
|
||
-
|
||
- va_start (args, format);
|
||
- retval = vfprintf (stream, format, args);
|
||
- va_end (args);
|
||
-
|
||
- return retval;
|
||
-}
|
||
-# endif
|
||
-
|
||
-# if !REPLACE_VPRINTF_POSIX /* avoid collision with vprintf.c */
|
||
-int
|
||
-vprintf (const char *format, va_list args)
|
||
-{
|
||
- return vfprintf (stdout, format, args);
|
||
-}
|
||
-# endif
|
||
-
|
||
-# if !REPLACE_VFPRINTF_POSIX /* avoid collision with vfprintf.c */
|
||
-int
|
||
-vfprintf (FILE *stream, const char *format, va_list args)
|
||
-#undef vfprintf
|
||
-{
|
||
- CALL_WITH_SIGPIPE_EMULATION (int, vfprintf (stream, format, args), ret == EOF)
|
||
-}
|
||
-# endif
|
||
-
|
||
-int
|
||
-putchar (int c)
|
||
-{
|
||
- return fputc (c, stdout);
|
||
-}
|
||
-
|
||
-int
|
||
-fputc (int c, FILE *stream)
|
||
-#undef fputc
|
||
-{
|
||
- CALL_WITH_SIGPIPE_EMULATION (int, fputc (c, stream), ret == EOF)
|
||
-}
|
||
-
|
||
-int
|
||
-fputs (const char *string, FILE *stream)
|
||
-#undef fputs
|
||
-{
|
||
- CALL_WITH_SIGPIPE_EMULATION (int, fputs (string, stream), ret == EOF)
|
||
-}
|
||
-
|
||
-int
|
||
-puts (const char *string)
|
||
-#undef puts
|
||
-{
|
||
- FILE *stream = stdout;
|
||
- CALL_WITH_SIGPIPE_EMULATION (int, puts (string), ret == EOF)
|
||
-}
|
||
-
|
||
-size_t
|
||
-fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
|
||
-#undef fwrite
|
||
-{
|
||
- CALL_WITH_SIGPIPE_EMULATION (size_t, fwrite (ptr, s, n, stream), ret < n)
|
||
-}
|
||
-
|
||
-# endif
|
||
-#endif
|
||
diff --git a/grub-core/gnulib/stdio.in.h b/grub-core/gnulib/stdio.in.h
|
||
index a8b00c6..e1d28ce 100644
|
||
--- a/grub-core/gnulib/stdio.in.h
|
||
+++ b/grub-core/gnulib/stdio.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A GNU-like <stdio.h>.
|
||
|
||
- Copyright (C) 2004, 2007-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2004, 2007-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,47 +13,104 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
-#if defined __need_FILE || defined __need___FILE
|
||
-/* Special invocation convention inside glibc header files. */
|
||
+#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
|
||
+/* Special invocation convention:
|
||
+ - Inside glibc header files.
|
||
+ - On OSF/1 5.1 we have a sequence of nested includes
|
||
+ <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
|
||
+ <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
|
||
+ In this situation, the functions are not yet declared, therefore we cannot
|
||
+ provide the C++ aliases. */
|
||
|
||
#@INCLUDE_NEXT@ @NEXT_STDIO_H@
|
||
|
||
#else
|
||
/* Normal invocation convention. */
|
||
|
||
-#ifndef _GL_STDIO_H
|
||
+#ifndef _@GUARD_PREFIX@_STDIO_H
|
||
+
|
||
+#define _GL_ALREADY_INCLUDING_STDIO_H
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
#@INCLUDE_NEXT@ @NEXT_STDIO_H@
|
||
|
||
-#ifndef _GL_STDIO_H
|
||
-#define _GL_STDIO_H
|
||
+#undef _GL_ALREADY_INCLUDING_STDIO_H
|
||
+
|
||
+#ifndef _@GUARD_PREFIX@_STDIO_H
|
||
+#define _@GUARD_PREFIX@_STDIO_H
|
||
|
||
/* Get va_list. Needed on many systems, including glibc 2.8. */
|
||
#include <stdarg.h>
|
||
|
||
#include <stddef.h>
|
||
|
||
-/* Get off_t and ssize_t. Needed on many systems, including glibc 2.8. */
|
||
+/* Get off_t and ssize_t. Needed on many systems, including glibc 2.8
|
||
+ and eglibc 2.11.2.
|
||
+ May also define off_t to a 64-bit type on native Windows. */
|
||
#include <sys/types.h>
|
||
|
||
-#ifndef __attribute__
|
||
/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
||
The __-protected variants of the attributes 'format' and 'printf' are
|
||
accepted by gcc versions 2.6.4 (effectively 2.7) and later.
|
||
- We enable __attribute__ only if these are supported too, because
|
||
+ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
|
||
gnulib and libintl do '#define printf __printf__' when they override
|
||
the 'printf' function. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
|
||
+#endif
|
||
+
|
||
+/* _GL_ATTRIBUTE_FORMAT_PRINTF
|
||
+ indicates to GCC that the function takes a format string and arguments,
|
||
+ where the format string directives are the ones standardized by ISO C99
|
||
+ and POSIX. */
|
||
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
|
||
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
|
||
+ _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
|
||
+#endif
|
||
+
|
||
+/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF,
|
||
+ except that it indicates to GCC that the supported format string directives
|
||
+ are the ones of the system printf(), rather than the ones standardized by
|
||
+ ISO C99 and POSIX. */
|
||
+#define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
|
||
+
|
||
+/* _GL_ATTRIBUTE_FORMAT_SCANF
|
||
+ indicates to GCC that the function takes a format string and arguments,
|
||
+ where the format string directives are the ones standardized by ISO C99
|
||
+ and POSIX. */
|
||
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
|
||
+# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
|
||
+ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
|
||
+ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
|
||
+#endif
|
||
+
|
||
+/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF,
|
||
+ except that it indicates to GCC that the supported format string directives
|
||
+ are the ones of the system scanf(), rather than the ones standardized by
|
||
+ ISO C99 and POSIX. */
|
||
+#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \
|
||
+ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
|
||
+
|
||
+/* Solaris 10 declares renameat in <unistd.h>, not in <stdio.h>. */
|
||
+/* But in any case avoid namespace pollution on glibc systems. */
|
||
+#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __sun \
|
||
+ && ! defined __GLIBC__
|
||
+# include <unistd.h>
|
||
#endif
|
||
|
||
|
||
@@ -74,13 +131,13 @@
|
||
# define dprintf rpl_dprintf
|
||
# endif
|
||
_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
|
||
_GL_ARG_NONNULL ((2)));
|
||
_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...));
|
||
# else
|
||
# if !@HAVE_DPRINTF@
|
||
_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
|
||
_GL_ARG_NONNULL ((2)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...));
|
||
@@ -113,6 +170,26 @@ _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - "
|
||
"use gnulib module fclose for portable POSIX compliance");
|
||
#endif
|
||
|
||
+#if @GNULIB_FDOPEN@
|
||
+# if @REPLACE_FDOPEN@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef fdopen
|
||
+# define fdopen rpl_fdopen
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode)
|
||
+ _GL_ARG_NONNULL ((2)));
|
||
+_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (fdopen);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef fdopen
|
||
+/* Assume fdopen is always declared. */
|
||
+_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - "
|
||
+ "use gnulib module fdopen for portability");
|
||
+#endif
|
||
+
|
||
#if @GNULIB_FFLUSH@
|
||
/* Flush all pending data on STREAM according to POSIX rules. Both
|
||
output and seekable input streams are supported.
|
||
@@ -137,12 +214,33 @@ _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
|
||
"use gnulib module fflush for portable POSIX compliance");
|
||
#endif
|
||
|
||
-/* It is very rare that the developer ever has full control of stdin,
|
||
- so any use of gets warrants an unconditional warning; besides, C11
|
||
- removed it. */
|
||
-#undef gets
|
||
-#if HAVE_RAW_DECL_GETS
|
||
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
|
||
+#if @GNULIB_FGETC@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef fgetc
|
||
+# define fgetc rpl_fgetc
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (fgetc);
|
||
+#endif
|
||
+
|
||
+#if @GNULIB_FGETS@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef fgets
|
||
+# define fgets rpl_fgets
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream)
|
||
+ _GL_ARG_NONNULL ((1, 3)));
|
||
+_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (fgets);
|
||
#endif
|
||
|
||
#if @GNULIB_FOPEN@
|
||
@@ -161,20 +259,26 @@ _GL_CXXALIASWARN (fopen);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef fopen
|
||
/* Assume fopen is always declared. */
|
||
-_GL_WARN_ON_USE (fopen, "fopen on Win32 platforms is not POSIX compatible - "
|
||
+_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - "
|
||
"use gnulib module fopen for portability");
|
||
#endif
|
||
|
||
#if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@
|
||
# if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \
|
||
- || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@)
|
||
+ || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define fprintf rpl_fprintf
|
||
# endif
|
||
# define GNULIB_overrides_fprintf 1
|
||
+# if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
|
||
_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
+# else
|
||
+_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3)
|
||
+ _GL_ARG_NONNULL ((1, 2)));
|
||
+# endif
|
||
_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...));
|
||
# else
|
||
_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...));
|
||
@@ -220,7 +324,7 @@ _GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
|
||
#endif
|
||
|
||
#if @GNULIB_FPUTC@
|
||
-# if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
|
||
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef fputc
|
||
# define fputc rpl_fputc
|
||
@@ -234,7 +338,7 @@ _GL_CXXALIASWARN (fputc);
|
||
#endif
|
||
|
||
#if @GNULIB_FPUTS@
|
||
-# if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
|
||
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef fputs
|
||
# define fputs rpl_fputs
|
||
@@ -248,6 +352,21 @@ _GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
|
||
_GL_CXXALIASWARN (fputs);
|
||
#endif
|
||
|
||
+#if @GNULIB_FREAD@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef fread
|
||
+# define fread rpl_fread
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)
|
||
+ _GL_ARG_NONNULL ((4)));
|
||
+_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (fread);
|
||
+#endif
|
||
+
|
||
#if @GNULIB_FREOPEN@
|
||
# if @REPLACE_FREOPEN@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
@@ -267,10 +386,27 @@ _GL_CXXALIASWARN (freopen);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef freopen
|
||
/* Assume freopen is always declared. */
|
||
-_GL_WARN_ON_USE (freopen, "freopen on Win32 platforms is not POSIX compatible - "
|
||
+_GL_WARN_ON_USE (freopen,
|
||
+ "freopen on native Windows platforms is not POSIX compliant - "
|
||
"use gnulib module freopen for portability");
|
||
#endif
|
||
|
||
+#if @GNULIB_FSCANF@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef fscanf
|
||
+# define fscanf rpl_fscanf
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...)
|
||
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3)
|
||
+ _GL_ARG_NONNULL ((1, 2)));
|
||
+_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (fscanf);
|
||
+#endif
|
||
+
|
||
|
||
/* Set up the following warnings, based on which modules are in use.
|
||
GNU Coding Standards discourage the use of fseek, since it imposes
|
||
@@ -338,29 +474,13 @@ _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
|
||
_GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
|
||
# else
|
||
-# if ! @HAVE_FSEEKO@
|
||
+# if ! @HAVE_DECL_FSEEKO@
|
||
_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
|
||
_GL_ARG_NONNULL ((1)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
|
||
# endif
|
||
_GL_CXXALIASWARN (fseeko);
|
||
-# if (@REPLACE_FSEEKO@ || !@HAVE_FSEEKO@) && !@GNULIB_FSEEK@
|
||
- /* Provide an fseek function that is consistent with fseeko. */
|
||
- /* In order to avoid that fseek gets defined as a macro here, the
|
||
- developer can request the 'fseek' module. */
|
||
-# undef fseek
|
||
-# define fseek rpl_fseek
|
||
-static inline int _GL_ARG_NONNULL ((1))
|
||
-rpl_fseek (FILE *fp, long offset, int whence)
|
||
-{
|
||
-# if @REPLACE_FSEEKO@
|
||
- return rpl_fseeko (fp, offset, whence);
|
||
-# else
|
||
- return fseeko (fp, offset, whence);
|
||
-# endif
|
||
-}
|
||
-# endif
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# define _GL_FSEEK_WARN /* Category 1, above. */
|
||
# undef fseek
|
||
@@ -414,28 +534,12 @@ _GL_CXXALIASWARN (ftell);
|
||
_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
|
||
# else
|
||
-# if ! @HAVE_FTELLO@
|
||
+# if ! @HAVE_DECL_FTELLO@
|
||
_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
|
||
# endif
|
||
_GL_CXXALIASWARN (ftello);
|
||
-# if (@REPLACE_FTELLO@ || !@HAVE_FTELLO@) && !@GNULIB_FTELL@
|
||
- /* Provide an ftell function that is consistent with ftello. */
|
||
- /* In order to avoid that ftell gets defined as a macro here, the
|
||
- developer can request the 'ftell' module. */
|
||
-# undef ftell
|
||
-# define ftell rpl_ftell
|
||
-static inline long _GL_ARG_NONNULL ((1))
|
||
-rpl_ftell (FILE *f)
|
||
-{
|
||
-# if @REPLACE_FTELLO@
|
||
- return rpl_ftello (f);
|
||
-# else
|
||
- return ftello (f);
|
||
-# endif
|
||
-}
|
||
-# endif
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# define _GL_FTELL_WARN /* Category 1, above. */
|
||
# undef ftell
|
||
@@ -457,7 +561,7 @@ _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
|
||
|
||
|
||
#if @GNULIB_FWRITE@
|
||
-# if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
|
||
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef fwrite
|
||
# define fwrite rpl_fwrite
|
||
@@ -470,10 +574,51 @@ _GL_CXXALIAS_RPL (fwrite, size_t,
|
||
# else
|
||
_GL_CXXALIAS_SYS (fwrite, size_t,
|
||
(const void *ptr, size_t s, size_t n, FILE *stream));
|
||
+
|
||
+/* Work around bug 11959 when fortifying glibc 2.4 through 2.15
|
||
+ <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,
|
||
+ which sometimes causes an unwanted diagnostic for fwrite calls.
|
||
+ This affects only function declaration attributes under certain
|
||
+ versions of gcc, and is not needed for C++. */
|
||
+# if (0 < __USE_FORTIFY_LEVEL \
|
||
+ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
|
||
+ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \
|
||
+ && !defined __cplusplus)
|
||
+# undef fwrite
|
||
+# define fwrite(a, b, c, d) ({size_t __r = fwrite (a, b, c, d); __r; })
|
||
+# endif
|
||
# endif
|
||
_GL_CXXALIASWARN (fwrite);
|
||
#endif
|
||
|
||
+#if @GNULIB_GETC@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef getc
|
||
+# define getc rpl_fgetc
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (getc, int, (FILE *stream));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (getc);
|
||
+#endif
|
||
+
|
||
+#if @GNULIB_GETCHAR@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef getchar
|
||
+# define getchar rpl_getchar
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (getchar, int, (void));
|
||
+_GL_CXXALIAS_RPL (getchar, int, (void));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (getchar, int, (void));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (getchar);
|
||
+#endif
|
||
+
|
||
#if @GNULIB_GETDELIM@
|
||
/* Read input, up to (and including) the next occurrence of DELIMITER, from
|
||
STREAM, store it in *LINEPTR (and NUL-terminate it).
|
||
@@ -550,6 +695,14 @@ _GL_WARN_ON_USE (getline, "getline is unportable - "
|
||
# endif
|
||
#endif
|
||
|
||
+/* It is very rare that the developer ever has full control of stdin,
|
||
+ so any use of gets warrants an unconditional warning; besides, C11
|
||
+ removed it. */
|
||
+#undef gets
|
||
+#if HAVE_RAW_DECL_GETS
|
||
+#endif
|
||
+
|
||
+
|
||
#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
|
||
struct obstack;
|
||
/* Grow an obstack with formatted output. Return the number of
|
||
@@ -563,7 +716,7 @@ struct obstack;
|
||
# endif
|
||
_GL_FUNCDECL_RPL (obstack_printf, int,
|
||
(struct obstack *obs, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_RPL (obstack_printf, int,
|
||
(struct obstack *obs, const char *format, ...));
|
||
@@ -571,7 +724,7 @@ _GL_CXXALIAS_RPL (obstack_printf, int,
|
||
# if !@HAVE_DECL_OBSTACK_PRINTF@
|
||
_GL_FUNCDECL_SYS (obstack_printf, int,
|
||
(struct obstack *obs, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (obstack_printf, int,
|
||
@@ -584,7 +737,7 @@ _GL_CXXALIASWARN (obstack_printf);
|
||
# endif
|
||
_GL_FUNCDECL_RPL (obstack_vprintf, int,
|
||
(struct obstack *obs, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 2, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_RPL (obstack_vprintf, int,
|
||
(struct obstack *obs, const char *format, va_list args));
|
||
@@ -592,7 +745,7 @@ _GL_CXXALIAS_RPL (obstack_vprintf, int,
|
||
# if !@HAVE_DECL_OBSTACK_PRINTF@
|
||
_GL_FUNCDECL_SYS (obstack_vprintf, int,
|
||
(struct obstack *obs, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 2, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (obstack_vprintf, int,
|
||
@@ -601,6 +754,20 @@ _GL_CXXALIAS_SYS (obstack_vprintf, int,
|
||
_GL_CXXALIASWARN (obstack_vprintf);
|
||
#endif
|
||
|
||
+#if @GNULIB_PCLOSE@
|
||
+# if !@HAVE_PCLOSE@
|
||
+_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (pclose, int, (FILE *stream));
|
||
+_GL_CXXALIASWARN (pclose);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef pclose
|
||
+# if HAVE_RAW_DECL_PCLOSE
|
||
+_GL_WARN_ON_USE (pclose, "pclose is unportable - "
|
||
+ "use gnulib module pclose for more portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
#if @GNULIB_PERROR@
|
||
/* Print a message to standard error, describing the value of ERRNO,
|
||
(if STRING is not NULL and not empty) prefixed with STRING and ": ",
|
||
@@ -632,6 +799,10 @@ _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
|
||
# else
|
||
+# if !@HAVE_POPEN@
|
||
+_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode)
|
||
+ _GL_ARG_NONNULL ((1, 2)));
|
||
+# endif
|
||
_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
|
||
# endif
|
||
_GL_CXXALIASWARN (popen);
|
||
@@ -645,23 +816,35 @@ _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
|
||
|
||
#if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
|
||
# if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
|
||
- || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@)
|
||
+ || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
|
||
# if defined __GNUC__
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
/* Don't break __attribute__((format(printf,M,N))). */
|
||
# define printf __printf__
|
||
# endif
|
||
+# if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
|
||
+_GL_FUNCDECL_RPL_1 (__printf__, int,
|
||
+ (const char *format, ...)
|
||
+ __asm__ (@ASM_SYMBOL_PREFIX@
|
||
+ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+# else
|
||
_GL_FUNCDECL_RPL_1 (__printf__, int,
|
||
(const char *format, ...)
|
||
__asm__ (@ASM_SYMBOL_PREFIX@
|
||
_GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
|
||
- __attribute__ ((__format__ (__printf__, 1, 2)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2)
|
||
_GL_ARG_NONNULL ((1)));
|
||
+# endif
|
||
_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
|
||
# else
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define printf rpl_printf
|
||
+# endif
|
||
_GL_FUNCDECL_RPL (printf, int,
|
||
(const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 1, 2)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
|
||
_GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
|
||
# endif
|
||
@@ -682,7 +865,7 @@ _GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
|
||
#endif
|
||
|
||
#if @GNULIB_PUTC@
|
||
-# if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
|
||
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef putc
|
||
# define putc rpl_fputc
|
||
@@ -696,7 +879,7 @@ _GL_CXXALIASWARN (putc);
|
||
#endif
|
||
|
||
#if @GNULIB_PUTCHAR@
|
||
-# if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
|
||
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef putchar
|
||
# define putchar rpl_putchar
|
||
@@ -710,7 +893,7 @@ _GL_CXXALIASWARN (putchar);
|
||
#endif
|
||
|
||
#if @GNULIB_PUTS@
|
||
-# if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
|
||
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef puts
|
||
# define puts rpl_puts
|
||
@@ -794,6 +977,37 @@ _GL_WARN_ON_USE (renameat, "renameat is not portable - "
|
||
# endif
|
||
#endif
|
||
|
||
+#if @GNULIB_SCANF@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if defined __GNUC__
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef scanf
|
||
+/* Don't break __attribute__((format(scanf,M,N))). */
|
||
+# define scanf __scanf__
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL_1 (__scanf__, int,
|
||
+ (const char *format, ...)
|
||
+ __asm__ (@ASM_SYMBOL_PREFIX@
|
||
+ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf))
|
||
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...));
|
||
+# else
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef scanf
|
||
+# define scanf rpl_scanf
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...)
|
||
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...));
|
||
+# endif
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (scanf);
|
||
+#endif
|
||
+
|
||
#if @GNULIB_SNPRINTF@
|
||
# if @REPLACE_SNPRINTF@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
@@ -801,7 +1015,7 @@ _GL_WARN_ON_USE (renameat, "renameat is not portable - "
|
||
# endif
|
||
_GL_FUNCDECL_RPL (snprintf, int,
|
||
(char *str, size_t size, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 3, 4)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
|
||
_GL_ARG_NONNULL ((3)));
|
||
_GL_CXXALIAS_RPL (snprintf, int,
|
||
(char *str, size_t size, const char *format, ...));
|
||
@@ -809,7 +1023,7 @@ _GL_CXXALIAS_RPL (snprintf, int,
|
||
# if !@HAVE_DECL_SNPRINTF@
|
||
_GL_FUNCDECL_SYS (snprintf, int,
|
||
(char *str, size_t size, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 3, 4)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
|
||
_GL_ARG_NONNULL ((3)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (snprintf, int,
|
||
@@ -824,9 +1038,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
|
||
# endif
|
||
#endif
|
||
|
||
-/* Some people would argue that sprintf should be handled like gets
|
||
- (for example, OpenBSD issues a link warning for both functions),
|
||
- since both can cause security holes due to buffer overruns.
|
||
+/* Some people would argue that all sprintf uses should be warned about
|
||
+ (for example, OpenBSD issues a link warning for it),
|
||
+ since it can cause security holes due to buffer overruns.
|
||
However, we believe that sprintf can be used safely, and is more
|
||
efficient than snprintf in those safe cases; and as proof of our
|
||
belief, we use sprintf in several gnulib modules. So this header
|
||
@@ -839,7 +1053,7 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
|
||
# define sprintf rpl_sprintf
|
||
# endif
|
||
_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
|
||
# else
|
||
@@ -884,7 +1098,7 @@ _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
|
||
# endif
|
||
_GL_FUNCDECL_RPL (asprintf, int,
|
||
(char **result, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_RPL (asprintf, int,
|
||
(char **result, const char *format, ...));
|
||
@@ -892,7 +1106,7 @@ _GL_CXXALIAS_RPL (asprintf, int,
|
||
# if !@HAVE_VASPRINTF@
|
||
_GL_FUNCDECL_SYS (asprintf, int,
|
||
(char **result, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 2, 3)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (asprintf, int,
|
||
@@ -905,7 +1119,7 @@ _GL_CXXALIASWARN (asprintf);
|
||
# endif
|
||
_GL_FUNCDECL_RPL (vasprintf, int,
|
||
(char **result, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 2, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_RPL (vasprintf, int,
|
||
(char **result, const char *format, va_list args));
|
||
@@ -913,7 +1127,7 @@ _GL_CXXALIAS_RPL (vasprintf, int,
|
||
# if !@HAVE_VASPRINTF@
|
||
_GL_FUNCDECL_SYS (vasprintf, int,
|
||
(char **result, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 2, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (vasprintf, int,
|
||
@@ -928,13 +1142,13 @@ _GL_CXXALIASWARN (vasprintf);
|
||
# define vdprintf rpl_vdprintf
|
||
# endif
|
||
_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 2, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
|
||
_GL_ARG_NONNULL ((2)));
|
||
_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args));
|
||
# else
|
||
# if !@HAVE_VDPRINTF@
|
||
_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 2, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
|
||
_GL_ARG_NONNULL ((2)));
|
||
# endif
|
||
/* Need to cast, because on Solaris, the third parameter will likely be
|
||
@@ -953,14 +1167,20 @@ _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
|
||
|
||
#if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@
|
||
# if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \
|
||
- || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@)
|
||
+ || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define vfprintf rpl_vfprintf
|
||
# endif
|
||
# define GNULIB_overrides_vfprintf 1
|
||
+# if @GNULIB_VFPRINTF_POSIX@
|
||
+_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
|
||
+ _GL_ARG_NONNULL ((1, 2)));
|
||
+# else
|
||
_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 2, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
+# endif
|
||
_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
|
||
# else
|
||
/* Need to cast, because on Solaris, the third parameter is
|
||
@@ -981,16 +1201,41 @@ _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
|
||
"POSIX compliance");
|
||
#endif
|
||
|
||
+#if @GNULIB_VFSCANF@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef vfscanf
|
||
+# define vfscanf rpl_vfscanf
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (vfscanf, int,
|
||
+ (FILE *stream, const char *format, va_list args)
|
||
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0)
|
||
+ _GL_ARG_NONNULL ((1, 2)));
|
||
+_GL_CXXALIAS_RPL (vfscanf, int,
|
||
+ (FILE *stream, const char *format, va_list args));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (vfscanf, int,
|
||
+ (FILE *stream, const char *format, va_list args));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (vfscanf);
|
||
+#endif
|
||
+
|
||
#if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@
|
||
# if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \
|
||
- || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@)
|
||
+ || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define vprintf rpl_vprintf
|
||
# endif
|
||
# define GNULIB_overrides_vprintf 1
|
||
+# if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
|
||
_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 1, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0)
|
||
_GL_ARG_NONNULL ((1)));
|
||
+# else
|
||
+_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0)
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+# endif
|
||
_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
|
||
# else
|
||
/* Need to cast, because on Solaris, the second parameter is
|
||
@@ -1010,6 +1255,22 @@ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
|
||
"POSIX compliance");
|
||
#endif
|
||
|
||
+#if @GNULIB_VSCANF@
|
||
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef vscanf
|
||
+# define vscanf rpl_vscanf
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args)
|
||
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0)
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (vscanf);
|
||
+#endif
|
||
+
|
||
#if @GNULIB_VSNPRINTF@
|
||
# if @REPLACE_VSNPRINTF@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
@@ -1017,7 +1278,7 @@ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
|
||
# endif
|
||
_GL_FUNCDECL_RPL (vsnprintf, int,
|
||
(char *str, size_t size, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 3, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
|
||
_GL_ARG_NONNULL ((3)));
|
||
_GL_CXXALIAS_RPL (vsnprintf, int,
|
||
(char *str, size_t size, const char *format, va_list args));
|
||
@@ -1025,7 +1286,7 @@ _GL_CXXALIAS_RPL (vsnprintf, int,
|
||
# if !@HAVE_DECL_VSNPRINTF@
|
||
_GL_FUNCDECL_SYS (vsnprintf, int,
|
||
(char *str, size_t size, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 3, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
|
||
_GL_ARG_NONNULL ((3)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (vsnprintf, int,
|
||
@@ -1047,7 +1308,7 @@ _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
|
||
# endif
|
||
_GL_FUNCDECL_RPL (vsprintf, int,
|
||
(char *str, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 2, 0)))
|
||
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_RPL (vsprintf, int,
|
||
(char *str, const char *format, va_list args));
|
||
@@ -1067,7 +1328,6 @@ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
|
||
"POSIX compliance");
|
||
#endif
|
||
|
||
-
|
||
-#endif /* _GL_STDIO_H */
|
||
-#endif /* _GL_STDIO_H */
|
||
+#endif /* _@GUARD_PREFIX@_STDIO_H */
|
||
+#endif /* _@GUARD_PREFIX@_STDIO_H */
|
||
#endif
|
||
diff --git a/grub-core/gnulib/stdlib.in.h b/grub-core/gnulib/stdlib.in.h
|
||
index f4309ed..c955248 100644
|
||
--- a/grub-core/gnulib/stdlib.in.h
|
||
+++ b/grub-core/gnulib/stdlib.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A GNU-like <stdlib.h>.
|
||
|
||
- Copyright (C) 1995, 2001-2004, 2006-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1995, 2001-2004, 2006-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -18,28 +18,30 @@
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
-#if defined __need_malloc_and_calloc
|
||
-/* Special invocation convention inside glibc header files. */
|
||
+#if defined __need_system_stdlib_h || defined __need_malloc_and_calloc
|
||
+/* Special invocation conventions inside some gnulib header files,
|
||
+ and inside some glibc header files, respectively. */
|
||
|
||
#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
|
||
|
||
#else
|
||
/* Normal invocation convention. */
|
||
|
||
-#ifndef _GL_STDLIB_H
|
||
+#ifndef _@GUARD_PREFIX@_STDLIB_H
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
|
||
|
||
-#ifndef _GL_STDLIB_H
|
||
-#define _GL_STDLIB_H
|
||
+#ifndef _@GUARD_PREFIX@_STDLIB_H
|
||
+#define _@GUARD_PREFIX@_STDLIB_H
|
||
|
||
/* NetBSD 5.0 mis-defines NULL. */
|
||
#include <stddef.h>
|
||
|
||
/* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>. */
|
||
-#ifndef WEXITSTATUS
|
||
+#if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS
|
||
# include <sys/wait.h>
|
||
#endif
|
||
|
||
@@ -48,18 +50,28 @@
|
||
# include <sys/loadavg.h>
|
||
#endif
|
||
|
||
-/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
|
||
- from <stdlib.h> if _REENTRANT is defined. Include it always. */
|
||
-#if @HAVE_RANDOM_H@
|
||
-# include <random.h>
|
||
+/* Native Windows platforms declare mktemp() in <io.h>. */
|
||
+#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
|
||
+# include <io.h>
|
||
#endif
|
||
|
||
-#if !@HAVE_STRUCT_RANDOM_DATA@ || (@GNULIB_RANDOM_R@ && !@HAVE_RANDOM_R@) \
|
||
- || defined GNULIB_POSIXCHECK
|
||
-# include <stdint.h>
|
||
-#endif
|
||
+#if @GNULIB_RANDOM_R@
|
||
+
|
||
+/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
|
||
+ from <stdlib.h> if _REENTRANT is defined. Include it whenever we need
|
||
+ 'struct random_data'. */
|
||
+# if @HAVE_RANDOM_H@
|
||
+# include <random.h>
|
||
+# endif
|
||
+
|
||
+# if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@
|
||
+# include <stdint.h>
|
||
+# endif
|
||
|
||
-#if !@HAVE_STRUCT_RANDOM_DATA@
|
||
+# if !@HAVE_STRUCT_RANDOM_DATA@
|
||
+/* Define 'struct random_data'.
|
||
+ But allow multiple gnulib generated <stdlib.h> replacements to coexist. */
|
||
+# if !GNULIB_defined_struct_random_data
|
||
struct random_data
|
||
{
|
||
int32_t *fptr; /* Front pointer. */
|
||
@@ -70,21 +82,29 @@ struct random_data
|
||
int rand_sep; /* Distance between front and rear. */
|
||
int32_t *end_ptr; /* Pointer behind state table. */
|
||
};
|
||
+# define GNULIB_defined_struct_random_data 1
|
||
+# endif
|
||
+# endif
|
||
#endif
|
||
|
||
-#if (@GNULIB_MKSTEMP@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
|
||
-/* On MacOS X 10.3, only <unistd.h> declares mkstemp. */
|
||
+#if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
|
||
+/* On Mac OS X 10.3, only <unistd.h> declares mkstemp. */
|
||
+/* On Mac OS X 10.5, only <unistd.h> declares mkstemps. */
|
||
/* On Cygwin 1.7.1, only <unistd.h> declares getsubopt. */
|
||
/* But avoid namespace pollution on glibc systems and native Windows. */
|
||
# include <unistd.h>
|
||
#endif
|
||
|
||
-#ifndef __attribute__
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
||
+ The attribute __pure__ was added in gcc 2.96. */
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_PURE /* empty */
|
||
#endif
|
||
|
||
+/* The definition of _Noreturn is copied here. */
|
||
+
|
||
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||
|
||
/* The definition of _GL_ARG_NONNULL is copied here. */
|
||
@@ -110,7 +130,7 @@ struct random_data
|
||
/* Terminate the current process with the given return code, without running
|
||
the 'atexit' handlers. */
|
||
# if !@HAVE__EXIT@
|
||
-_GL_FUNCDECL_SYS (_Exit, void, (int status) __attribute__ ((__noreturn__)));
|
||
+_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (_Exit, void, (int status));
|
||
_GL_CXXALIASWARN (_Exit);
|
||
@@ -127,7 +147,9 @@ _GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
|
||
/* Parse a signed decimal integer.
|
||
Returns the value of the integer. Errors are not detected. */
|
||
# if !@HAVE_ATOLL@
|
||
-_GL_FUNCDECL_SYS (atoll, long long, (const char *string) _GL_ARG_NONNULL ((1)));
|
||
+_GL_FUNCDECL_SYS (atoll, long long, (const char *string)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (atoll, long long, (const char *string));
|
||
_GL_CXXALIASWARN (atoll);
|
||
@@ -177,7 +199,8 @@ _GL_CXXALIASWARN (canonicalize_file_name);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef canonicalize_file_name
|
||
# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
|
||
-_GL_WARN_ON_USE (canonicalize_file_name, "canonicalize_file_name is unportable - "
|
||
+_GL_WARN_ON_USE (canonicalize_file_name,
|
||
+ "canonicalize_file_name is unportable - "
|
||
"use gnulib module canonicalize-lgpl for portability");
|
||
# endif
|
||
#endif
|
||
@@ -240,14 +263,19 @@ _GL_CXXALIASWARN (grantpt);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef grantpt
|
||
# if HAVE_RAW_DECL_GRANTPT
|
||
-_GL_WARN_ON_USE (ptsname, "grantpt is not portable - "
|
||
+_GL_WARN_ON_USE (grantpt, "grantpt is not portable - "
|
||
"use gnulib module grantpt for portability");
|
||
# endif
|
||
#endif
|
||
|
||
+/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not
|
||
+ rely on GNU or POSIX semantics for malloc and realloc (for example,
|
||
+ by never specifying a zero size), so it does not need malloc or
|
||
+ realloc to be redefined. */
|
||
#if @GNULIB_MALLOC_POSIX@
|
||
# if @REPLACE_MALLOC@
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
|
||
+ || _GL_USE_STDLIB_ALLOC)
|
||
# undef malloc
|
||
# define malloc rpl_malloc
|
||
# endif
|
||
@@ -257,13 +285,28 @@ _GL_CXXALIAS_RPL (malloc, void *, (size_t size));
|
||
_GL_CXXALIAS_SYS (malloc, void *, (size_t size));
|
||
# endif
|
||
_GL_CXXALIASWARN (malloc);
|
||
-#elif defined GNULIB_POSIXCHECK
|
||
+#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
|
||
# undef malloc
|
||
/* Assume malloc is always declared. */
|
||
_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
|
||
"use gnulib module malloc-posix for portability");
|
||
#endif
|
||
|
||
+/* Convert a multibyte character to a wide character. */
|
||
+#if @GNULIB_MBTOWC@
|
||
+# if @REPLACE_MBTOWC@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef mbtowc
|
||
+# define mbtowc rpl_mbtowc
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
|
||
+_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (mbtowc);
|
||
+#endif
|
||
+
|
||
#if @GNULIB_MKDTEMP@
|
||
/* Create a unique temporary directory from TEMPLATE.
|
||
The last six characters of TEMPLATE must be "XXXXXX";
|
||
@@ -396,13 +439,38 @@ _GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - "
|
||
# endif
|
||
#endif
|
||
|
||
+#if @GNULIB_POSIX_OPENPT@
|
||
+/* Return an FD open to the master side of a pseudo-terminal. Flags should
|
||
+ include O_RDWR, and may also include O_NOCTTY. */
|
||
+# if !@HAVE_POSIX_OPENPT@
|
||
+_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
|
||
+_GL_CXXALIASWARN (posix_openpt);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef posix_openpt
|
||
+# if HAVE_RAW_DECL_POSIX_OPENPT
|
||
+_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
|
||
+ "use gnulib module posix_openpt for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
#if @GNULIB_PTSNAME@
|
||
/* Return the pathname of the pseudo-terminal slave associated with
|
||
the master FD is open on, or NULL on errors. */
|
||
-# if !@HAVE_PTSNAME@
|
||
+# if @REPLACE_PTSNAME@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef ptsname
|
||
+# define ptsname rpl_ptsname
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (ptsname, char *, (int fd));
|
||
+_GL_CXXALIAS_RPL (ptsname, char *, (int fd));
|
||
+# else
|
||
+# if !@HAVE_PTSNAME@
|
||
_GL_FUNCDECL_SYS (ptsname, char *, (int fd));
|
||
-# endif
|
||
+# endif
|
||
_GL_CXXALIAS_SYS (ptsname, char *, (int fd));
|
||
+# endif
|
||
_GL_CXXALIASWARN (ptsname);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef ptsname
|
||
@@ -412,6 +480,32 @@ _GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
|
||
# endif
|
||
#endif
|
||
|
||
+#if @GNULIB_PTSNAME_R@
|
||
+/* Set the pathname of the pseudo-terminal slave associated with
|
||
+ the master FD is open on and return 0, or set errno and return
|
||
+ non-zero on errors. */
|
||
+# if @REPLACE_PTSNAME_R@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef ptsname_r
|
||
+# define ptsname_r rpl_ptsname_r
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
|
||
+_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
|
||
+# else
|
||
+# if !@HAVE_PTSNAME_R@
|
||
+_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (ptsname_r);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef ptsname_r
|
||
+# if HAVE_RAW_DECL_PTSNAME_R
|
||
+_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - "
|
||
+ "use gnulib module ptsname_r for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
#if @GNULIB_PUTENV@
|
||
# if @REPLACE_PUTENV@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
@@ -435,12 +529,83 @@ _GL_CXXALIASWARN (putenv);
|
||
# endif
|
||
#endif
|
||
|
||
+
|
||
+#if @GNULIB_RANDOM@
|
||
+# if !@HAVE_RANDOM@
|
||
+_GL_FUNCDECL_SYS (random, long, (void));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (random, long, (void));
|
||
+_GL_CXXALIASWARN (random);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef random
|
||
+# if HAVE_RAW_DECL_RANDOM
|
||
+_GL_WARN_ON_USE (random, "random is unportable - "
|
||
+ "use gnulib module random for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#if @GNULIB_RANDOM@
|
||
+# if !@HAVE_RANDOM@
|
||
+_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (srandom, void, (unsigned int seed));
|
||
+_GL_CXXALIASWARN (srandom);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef srandom
|
||
+# if HAVE_RAW_DECL_SRANDOM
|
||
+_GL_WARN_ON_USE (srandom, "srandom is unportable - "
|
||
+ "use gnulib module random for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#if @GNULIB_RANDOM@
|
||
+# if !@HAVE_RANDOM@
|
||
+_GL_FUNCDECL_SYS (initstate, char *,
|
||
+ (unsigned int seed, char *buf, size_t buf_size)
|
||
+ _GL_ARG_NONNULL ((2)));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (initstate, char *,
|
||
+ (unsigned int seed, char *buf, size_t buf_size));
|
||
+_GL_CXXALIASWARN (initstate);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef initstate
|
||
+# if HAVE_RAW_DECL_INITSTATE_R
|
||
+_GL_WARN_ON_USE (initstate, "initstate is unportable - "
|
||
+ "use gnulib module random for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#if @GNULIB_RANDOM@
|
||
+# if !@HAVE_RANDOM@
|
||
+_GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1)));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (setstate, char *, (char *arg_state));
|
||
+_GL_CXXALIASWARN (setstate);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef setstate
|
||
+# if HAVE_RAW_DECL_SETSTATE_R
|
||
+_GL_WARN_ON_USE (setstate, "setstate is unportable - "
|
||
+ "use gnulib module random for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
#if @GNULIB_RANDOM_R@
|
||
-# if !@HAVE_RANDOM_R@
|
||
+# if @REPLACE_RANDOM_R@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef random_r
|
||
+# define random_r rpl_random_r
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result)
|
||
+ _GL_ARG_NONNULL ((1, 2)));
|
||
+_GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result));
|
||
+# else
|
||
+# if !@HAVE_RANDOM_R@
|
||
_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
-# endif
|
||
+# endif
|
||
_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result));
|
||
+# endif
|
||
_GL_CXXALIASWARN (random_r);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef random_r
|
||
@@ -451,13 +616,25 @@ _GL_WARN_ON_USE (random_r, "random_r is unportable - "
|
||
#endif
|
||
|
||
#if @GNULIB_RANDOM_R@
|
||
-# if !@HAVE_RANDOM_R@
|
||
+# if @REPLACE_RANDOM_R@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef srandom_r
|
||
+# define srandom_r rpl_srandom_r
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (srandom_r, int,
|
||
+ (unsigned int seed, struct random_data *rand_state)
|
||
+ _GL_ARG_NONNULL ((2)));
|
||
+_GL_CXXALIAS_RPL (srandom_r, int,
|
||
+ (unsigned int seed, struct random_data *rand_state));
|
||
+# else
|
||
+# if !@HAVE_RANDOM_R@
|
||
_GL_FUNCDECL_SYS (srandom_r, int,
|
||
(unsigned int seed, struct random_data *rand_state)
|
||
_GL_ARG_NONNULL ((2)));
|
||
-# endif
|
||
+# endif
|
||
_GL_CXXALIAS_SYS (srandom_r, int,
|
||
(unsigned int seed, struct random_data *rand_state));
|
||
+# endif
|
||
_GL_CXXALIASWARN (srandom_r);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef srandom_r
|
||
@@ -468,15 +645,29 @@ _GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - "
|
||
#endif
|
||
|
||
#if @GNULIB_RANDOM_R@
|
||
-# if !@HAVE_RANDOM_R@
|
||
+# if @REPLACE_RANDOM_R@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef initstate_r
|
||
+# define initstate_r rpl_initstate_r
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (initstate_r, int,
|
||
+ (unsigned int seed, char *buf, size_t buf_size,
|
||
+ struct random_data *rand_state)
|
||
+ _GL_ARG_NONNULL ((2, 4)));
|
||
+_GL_CXXALIAS_RPL (initstate_r, int,
|
||
+ (unsigned int seed, char *buf, size_t buf_size,
|
||
+ struct random_data *rand_state));
|
||
+# else
|
||
+# if !@HAVE_RANDOM_R@
|
||
_GL_FUNCDECL_SYS (initstate_r, int,
|
||
(unsigned int seed, char *buf, size_t buf_size,
|
||
struct random_data *rand_state)
|
||
_GL_ARG_NONNULL ((2, 4)));
|
||
-# endif
|
||
+# endif
|
||
_GL_CXXALIAS_SYS (initstate_r, int,
|
||
(unsigned int seed, char *buf, size_t buf_size,
|
||
struct random_data *rand_state));
|
||
+# endif
|
||
_GL_CXXALIASWARN (initstate_r);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef initstate_r
|
||
@@ -487,13 +678,25 @@ _GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - "
|
||
#endif
|
||
|
||
#if @GNULIB_RANDOM_R@
|
||
-# if !@HAVE_RANDOM_R@
|
||
+# if @REPLACE_RANDOM_R@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef setstate_r
|
||
+# define setstate_r rpl_setstate_r
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (setstate_r, int,
|
||
+ (char *arg_state, struct random_data *rand_state)
|
||
+ _GL_ARG_NONNULL ((1, 2)));
|
||
+_GL_CXXALIAS_RPL (setstate_r, int,
|
||
+ (char *arg_state, struct random_data *rand_state));
|
||
+# else
|
||
+# if !@HAVE_RANDOM_R@
|
||
_GL_FUNCDECL_SYS (setstate_r, int,
|
||
(char *arg_state, struct random_data *rand_state)
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
-# endif
|
||
+# endif
|
||
_GL_CXXALIAS_SYS (setstate_r, int,
|
||
(char *arg_state, struct random_data *rand_state));
|
||
+# endif
|
||
_GL_CXXALIASWARN (setstate_r);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef setstate_r
|
||
@@ -506,7 +709,8 @@ _GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - "
|
||
|
||
#if @GNULIB_REALLOC_POSIX@
|
||
# if @REPLACE_REALLOC@
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
|
||
+ || _GL_USE_STDLIB_ALLOC)
|
||
# undef realloc
|
||
# define realloc rpl_realloc
|
||
# endif
|
||
@@ -516,7 +720,7 @@ _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
|
||
_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
|
||
# endif
|
||
_GL_CXXALIASWARN (realloc);
|
||
-#elif defined GNULIB_POSIXCHECK
|
||
+#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
|
||
# undef realloc
|
||
/* Assume realloc is always declared. */
|
||
_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - "
|
||
@@ -563,6 +767,22 @@ _GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - "
|
||
# endif
|
||
#endif
|
||
|
||
+#if @GNULIB_SECURE_GETENV@
|
||
+/* Look up NAME in the environment, returning 0 in insecure situations. */
|
||
+# if !@HAVE_SECURE_GETENV@
|
||
+_GL_FUNCDECL_SYS (secure_getenv, char *,
|
||
+ (char const *name) _GL_ARG_NONNULL ((1)));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name));
|
||
+_GL_CXXALIASWARN (secure_getenv);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef secure_getenv
|
||
+# if HAVE_RAW_DECL_SECURE_GETENV
|
||
+_GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - "
|
||
+ "use gnulib module secure_getenv for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
#if @GNULIB_SETENV@
|
||
/* Set NAME to VALUE in the environment.
|
||
If REPLACE is nonzero, overwrite an existing value. */
|
||
@@ -577,7 +797,7 @@ _GL_FUNCDECL_RPL (setenv, int,
|
||
_GL_CXXALIAS_RPL (setenv, int,
|
||
(const char *name, const char *value, int replace));
|
||
# else
|
||
-# if !@HAVE_SETENV@
|
||
+# if !@HAVE_DECL_SETENV@
|
||
_GL_FUNCDECL_SYS (setenv, int,
|
||
(const char *name, const char *value, int replace)
|
||
_GL_ARG_NONNULL ((1)));
|
||
@@ -585,7 +805,9 @@ _GL_FUNCDECL_SYS (setenv, int,
|
||
_GL_CXXALIAS_SYS (setenv, int,
|
||
(const char *name, const char *value, int replace));
|
||
# endif
|
||
+# if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@)
|
||
_GL_CXXALIASWARN (setenv);
|
||
+# endif
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef setenv
|
||
# if HAVE_RAW_DECL_SETENV
|
||
@@ -695,12 +917,14 @@ _GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - "
|
||
_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_RPL (unsetenv, int, (const char *name));
|
||
# else
|
||
-# if !@HAVE_UNSETENV@
|
||
+# if !@HAVE_DECL_UNSETENV@
|
||
_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (unsetenv, int, (const char *name));
|
||
# endif
|
||
+# if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@)
|
||
_GL_CXXALIASWARN (unsetenv);
|
||
+# endif
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef unsetenv
|
||
# if HAVE_RAW_DECL_UNSETENV
|
||
@@ -709,7 +933,22 @@ _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
|
||
# endif
|
||
#endif
|
||
|
||
+/* Convert a wide character to a multibyte character. */
|
||
+#if @GNULIB_WCTOMB@
|
||
+# if @REPLACE_WCTOMB@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef wctomb
|
||
+# define wctomb rpl_wctomb
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc));
|
||
+_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (wctomb);
|
||
+#endif
|
||
+
|
||
|
||
-#endif /* _GL_STDLIB_H */
|
||
-#endif /* _GL_STDLIB_H */
|
||
+#endif /* _@GUARD_PREFIX@_STDLIB_H */
|
||
+#endif /* _@GUARD_PREFIX@_STDLIB_H */
|
||
#endif
|
||
diff --git a/grub-core/gnulib/strcasecmp.c b/grub-core/gnulib/strcasecmp.c
|
||
index 612c80f..0f0a742 100644
|
||
--- a/grub-core/gnulib/strcasecmp.c
|
||
+++ b/grub-core/gnulib/strcasecmp.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Case-insensitive string comparison function.
|
||
- Copyright (C) 1998-1999, 2005-2007, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1998-1999, 2005-2007, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#include <config.h>
|
||
|
||
diff --git a/grub-core/gnulib/strchrnul.c b/grub-core/gnulib/strchrnul.c
|
||
index f834d34..f6b0722 100644
|
||
--- a/grub-core/gnulib/strchrnul.c
|
||
+++ b/grub-core/gnulib/strchrnul.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Searching in a string.
|
||
- Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2003, 2007-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
diff --git a/grub-core/gnulib/streq.h b/grub-core/gnulib/streq.h
|
||
index aa65bb8..12c1867 100644
|
||
--- a/grub-core/gnulib/streq.h
|
||
+++ b/grub-core/gnulib/streq.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Optimized string comparison.
|
||
- Copyright (C) 2001-2002, 2007, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2001-2002, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify it
|
||
under the terms of the GNU General Public License as published
|
||
@@ -9,7 +9,7 @@
|
||
This program is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
- Lesser General Public License for more details.
|
||
+ General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
@@ -21,8 +21,8 @@
|
||
|
||
#include <string.h>
|
||
|
||
-/* STREQ allows to optimize string comparison with a small literal string.
|
||
- STREQ (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
|
||
+/* STREQ_OPT allows to optimize string comparison with a small literal string.
|
||
+ STREQ_OPT (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
|
||
is semantically equivalent to
|
||
strcmp (s, "EUC-KR") == 0
|
||
just faster. */
|
||
@@ -163,12 +163,12 @@ streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23,
|
||
return 0;
|
||
}
|
||
|
||
-#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
|
||
+#define STREQ_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
|
||
streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
|
||
|
||
#else
|
||
|
||
-#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
|
||
+#define STREQ_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
|
||
(strcmp (s1, s2) == 0)
|
||
|
||
#endif
|
||
diff --git a/grub-core/gnulib/strerror-override.c b/grub-core/gnulib/strerror-override.c
|
||
new file mode 100644
|
||
index 0000000..d0ed2fb
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/strerror-override.c
|
||
@@ -0,0 +1,302 @@
|
||
+/* strerror-override.c --- POSIX compatible system error routine
|
||
+
|
||
+ Copyright (C) 2010-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+/* Written by Bruno Haible <bruno@clisp.org>, 2010. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+#include "strerror-override.h"
|
||
+
|
||
+#include <errno.h>
|
||
+
|
||
+#if GNULIB_defined_EWINSOCK /* native Windows platforms */
|
||
+# if HAVE_WINSOCK2_H
|
||
+# include <winsock2.h>
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+/* If ERRNUM maps to an errno value defined by gnulib, return a string
|
||
+ describing the error. Otherwise return NULL. */
|
||
+const char *
|
||
+strerror_override (int errnum)
|
||
+{
|
||
+ /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */
|
||
+ switch (errnum)
|
||
+ {
|
||
+#if REPLACE_STRERROR_0
|
||
+ case 0:
|
||
+ return "Success";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
|
||
+ case EINPROGRESS:
|
||
+ return "Operation now in progress";
|
||
+ case EALREADY:
|
||
+ return "Operation already in progress";
|
||
+ case ENOTSOCK:
|
||
+ return "Socket operation on non-socket";
|
||
+ case EDESTADDRREQ:
|
||
+ return "Destination address required";
|
||
+ case EMSGSIZE:
|
||
+ return "Message too long";
|
||
+ case EPROTOTYPE:
|
||
+ return "Protocol wrong type for socket";
|
||
+ case ENOPROTOOPT:
|
||
+ return "Protocol not available";
|
||
+ case EPROTONOSUPPORT:
|
||
+ return "Protocol not supported";
|
||
+ case EOPNOTSUPP:
|
||
+ return "Operation not supported";
|
||
+ case EAFNOSUPPORT:
|
||
+ return "Address family not supported by protocol";
|
||
+ case EADDRINUSE:
|
||
+ return "Address already in use";
|
||
+ case EADDRNOTAVAIL:
|
||
+ return "Cannot assign requested address";
|
||
+ case ENETDOWN:
|
||
+ return "Network is down";
|
||
+ case ENETUNREACH:
|
||
+ return "Network is unreachable";
|
||
+ case ECONNRESET:
|
||
+ return "Connection reset by peer";
|
||
+ case ENOBUFS:
|
||
+ return "No buffer space available";
|
||
+ case EISCONN:
|
||
+ return "Transport endpoint is already connected";
|
||
+ case ENOTCONN:
|
||
+ return "Transport endpoint is not connected";
|
||
+ case ETIMEDOUT:
|
||
+ return "Connection timed out";
|
||
+ case ECONNREFUSED:
|
||
+ return "Connection refused";
|
||
+ case ELOOP:
|
||
+ return "Too many levels of symbolic links";
|
||
+ case EHOSTUNREACH:
|
||
+ return "No route to host";
|
||
+ case EWOULDBLOCK:
|
||
+ return "Operation would block";
|
||
+#endif
|
||
+#if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
|
||
+ case ETXTBSY:
|
||
+ return "Text file busy";
|
||
+ case ENODATA:
|
||
+ return "No data available";
|
||
+ case ENOSR:
|
||
+ return "Out of streams resources";
|
||
+ case ENOSTR:
|
||
+ return "Device not a stream";
|
||
+ case ETIME:
|
||
+ return "Timer expired";
|
||
+ case EOTHER:
|
||
+ return "Other error";
|
||
+#endif
|
||
+#if GNULIB_defined_EWINSOCK /* native Windows platforms */
|
||
+ case ESOCKTNOSUPPORT:
|
||
+ return "Socket type not supported";
|
||
+ case EPFNOSUPPORT:
|
||
+ return "Protocol family not supported";
|
||
+ case ESHUTDOWN:
|
||
+ return "Cannot send after transport endpoint shutdown";
|
||
+ case ETOOMANYREFS:
|
||
+ return "Too many references: cannot splice";
|
||
+ case EHOSTDOWN:
|
||
+ return "Host is down";
|
||
+ case EPROCLIM:
|
||
+ return "Too many processes";
|
||
+ case EUSERS:
|
||
+ return "Too many users";
|
||
+ case EDQUOT:
|
||
+ return "Disk quota exceeded";
|
||
+ case ESTALE:
|
||
+ return "Stale NFS file handle";
|
||
+ case EREMOTE:
|
||
+ return "Object is remote";
|
||
+# if HAVE_WINSOCK2_H
|
||
+ /* WSA_INVALID_HANDLE maps to EBADF */
|
||
+ /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
|
||
+ /* WSA_INVALID_PARAMETER maps to EINVAL */
|
||
+ case WSA_OPERATION_ABORTED:
|
||
+ return "Overlapped operation aborted";
|
||
+ case WSA_IO_INCOMPLETE:
|
||
+ return "Overlapped I/O event object not in signaled state";
|
||
+ case WSA_IO_PENDING:
|
||
+ return "Overlapped operations will complete later";
|
||
+ /* WSAEINTR maps to EINTR */
|
||
+ /* WSAEBADF maps to EBADF */
|
||
+ /* WSAEACCES maps to EACCES */
|
||
+ /* WSAEFAULT maps to EFAULT */
|
||
+ /* WSAEINVAL maps to EINVAL */
|
||
+ /* WSAEMFILE maps to EMFILE */
|
||
+ /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
|
||
+ /* WSAEINPROGRESS maps to EINPROGRESS */
|
||
+ /* WSAEALREADY maps to EALREADY */
|
||
+ /* WSAENOTSOCK maps to ENOTSOCK */
|
||
+ /* WSAEDESTADDRREQ maps to EDESTADDRREQ */
|
||
+ /* WSAEMSGSIZE maps to EMSGSIZE */
|
||
+ /* WSAEPROTOTYPE maps to EPROTOTYPE */
|
||
+ /* WSAENOPROTOOPT maps to ENOPROTOOPT */
|
||
+ /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */
|
||
+ /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
|
||
+ /* WSAEOPNOTSUPP maps to EOPNOTSUPP */
|
||
+ /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
|
||
+ /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */
|
||
+ /* WSAEADDRINUSE maps to EADDRINUSE */
|
||
+ /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */
|
||
+ /* WSAENETDOWN maps to ENETDOWN */
|
||
+ /* WSAENETUNREACH maps to ENETUNREACH */
|
||
+ /* WSAENETRESET maps to ENETRESET */
|
||
+ /* WSAECONNABORTED maps to ECONNABORTED */
|
||
+ /* WSAECONNRESET maps to ECONNRESET */
|
||
+ /* WSAENOBUFS maps to ENOBUFS */
|
||
+ /* WSAEISCONN maps to EISCONN */
|
||
+ /* WSAENOTCONN maps to ENOTCONN */
|
||
+ /* WSAESHUTDOWN is ESHUTDOWN */
|
||
+ /* WSAETOOMANYREFS is ETOOMANYREFS */
|
||
+ /* WSAETIMEDOUT maps to ETIMEDOUT */
|
||
+ /* WSAECONNREFUSED maps to ECONNREFUSED */
|
||
+ /* WSAELOOP maps to ELOOP */
|
||
+ /* WSAENAMETOOLONG maps to ENAMETOOLONG */
|
||
+ /* WSAEHOSTDOWN is EHOSTDOWN */
|
||
+ /* WSAEHOSTUNREACH maps to EHOSTUNREACH */
|
||
+ /* WSAENOTEMPTY maps to ENOTEMPTY */
|
||
+ /* WSAEPROCLIM is EPROCLIM */
|
||
+ /* WSAEUSERS is EUSERS */
|
||
+ /* WSAEDQUOT is EDQUOT */
|
||
+ /* WSAESTALE is ESTALE */
|
||
+ /* WSAEREMOTE is EREMOTE */
|
||
+ case WSASYSNOTREADY:
|
||
+ return "Network subsystem is unavailable";
|
||
+ case WSAVERNOTSUPPORTED:
|
||
+ return "Winsock.dll version out of range";
|
||
+ case WSANOTINITIALISED:
|
||
+ return "Successful WSAStartup not yet performed";
|
||
+ case WSAEDISCON:
|
||
+ return "Graceful shutdown in progress";
|
||
+ case WSAENOMORE: case WSA_E_NO_MORE:
|
||
+ return "No more results";
|
||
+ case WSAECANCELLED: case WSA_E_CANCELLED:
|
||
+ return "Call was canceled";
|
||
+ case WSAEINVALIDPROCTABLE:
|
||
+ return "Procedure call table is invalid";
|
||
+ case WSAEINVALIDPROVIDER:
|
||
+ return "Service provider is invalid";
|
||
+ case WSAEPROVIDERFAILEDINIT:
|
||
+ return "Service provider failed to initialize";
|
||
+ case WSASYSCALLFAILURE:
|
||
+ return "System call failure";
|
||
+ case WSASERVICE_NOT_FOUND:
|
||
+ return "Service not found";
|
||
+ case WSATYPE_NOT_FOUND:
|
||
+ return "Class type not found";
|
||
+ case WSAEREFUSED:
|
||
+ return "Database query was refused";
|
||
+ case WSAHOST_NOT_FOUND:
|
||
+ return "Host not found";
|
||
+ case WSATRY_AGAIN:
|
||
+ return "Nonauthoritative host not found";
|
||
+ case WSANO_RECOVERY:
|
||
+ return "Nonrecoverable error";
|
||
+ case WSANO_DATA:
|
||
+ return "Valid name, no data record of requested type";
|
||
+ /* WSA_QOS_* omitted */
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ENOMSG
|
||
+ case ENOMSG:
|
||
+ return "No message of desired type";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_EIDRM
|
||
+ case EIDRM:
|
||
+ return "Identifier removed";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ENOLINK
|
||
+ case ENOLINK:
|
||
+ return "Link has been severed";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_EPROTO
|
||
+ case EPROTO:
|
||
+ return "Protocol error";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_EMULTIHOP
|
||
+ case EMULTIHOP:
|
||
+ return "Multihop attempted";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_EBADMSG
|
||
+ case EBADMSG:
|
||
+ return "Bad message";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_EOVERFLOW
|
||
+ case EOVERFLOW:
|
||
+ return "Value too large for defined data type";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ENOTSUP
|
||
+ case ENOTSUP:
|
||
+ return "Not supported";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ENETRESET
|
||
+ case ENETRESET:
|
||
+ return "Network dropped connection on reset";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ECONNABORTED
|
||
+ case ECONNABORTED:
|
||
+ return "Software caused connection abort";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ESTALE
|
||
+ case ESTALE:
|
||
+ return "Stale NFS file handle";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_EDQUOT
|
||
+ case EDQUOT:
|
||
+ return "Disk quota exceeded";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ECANCELED
|
||
+ case ECANCELED:
|
||
+ return "Operation canceled";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_EOWNERDEAD
|
||
+ case EOWNERDEAD:
|
||
+ return "Owner died";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_ENOTRECOVERABLE
|
||
+ case ENOTRECOVERABLE:
|
||
+ return "State not recoverable";
|
||
+#endif
|
||
+
|
||
+#if GNULIB_defined_EILSEQ
|
||
+ case EILSEQ:
|
||
+ return "Invalid or incomplete multibyte or wide character";
|
||
+#endif
|
||
+
|
||
+ default:
|
||
+ return NULL;
|
||
+ }
|
||
+}
|
||
diff --git a/grub-core/gnulib/strerror-override.h b/grub-core/gnulib/strerror-override.h
|
||
new file mode 100644
|
||
index 0000000..3b8f24b
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/strerror-override.h
|
||
@@ -0,0 +1,56 @@
|
||
+/* strerror-override.h --- POSIX compatible system error routine
|
||
+
|
||
+ Copyright (C) 2010-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#ifndef _GL_STRERROR_OVERRIDE_H
|
||
+# define _GL_STRERROR_OVERRIDE_H
|
||
+
|
||
+# include <errno.h>
|
||
+# include <stddef.h>
|
||
+
|
||
+/* Reasonable buffer size that should never trigger ERANGE; if this
|
||
+ proves too small, we intentionally abort(), to remind us to fix
|
||
+ this value. */
|
||
+# define STACKBUF_LEN 256
|
||
+
|
||
+/* If ERRNUM maps to an errno value defined by gnulib, return a string
|
||
+ describing the error. Otherwise return NULL. */
|
||
+# if REPLACE_STRERROR_0 \
|
||
+ || GNULIB_defined_ESOCK \
|
||
+ || GNULIB_defined_ESTREAMS \
|
||
+ || GNULIB_defined_EWINSOCK \
|
||
+ || GNULIB_defined_ENOMSG \
|
||
+ || GNULIB_defined_EIDRM \
|
||
+ || GNULIB_defined_ENOLINK \
|
||
+ || GNULIB_defined_EPROTO \
|
||
+ || GNULIB_defined_EMULTIHOP \
|
||
+ || GNULIB_defined_EBADMSG \
|
||
+ || GNULIB_defined_EOVERFLOW \
|
||
+ || GNULIB_defined_ENOTSUP \
|
||
+ || GNULIB_defined_ENETRESET \
|
||
+ || GNULIB_defined_ECONNABORTED \
|
||
+ || GNULIB_defined_ESTALE \
|
||
+ || GNULIB_defined_EDQUOT \
|
||
+ || GNULIB_defined_ECANCELED \
|
||
+ || GNULIB_defined_EOWNERDEAD \
|
||
+ || GNULIB_defined_ENOTRECOVERABLE \
|
||
+ || GNULIB_defined_EILSEQ
|
||
+extern const char *strerror_override (int errnum);
|
||
+# else
|
||
+# define strerror_override(ignored) NULL
|
||
+# endif
|
||
+
|
||
+#endif /* _GL_STRERROR_OVERRIDE_H */
|
||
diff --git a/grub-core/gnulib/strerror.c b/grub-core/gnulib/strerror.c
|
||
index 46153ab..80a2f2e 100644
|
||
--- a/grub-core/gnulib/strerror.c
|
||
+++ b/grub-core/gnulib/strerror.c
|
||
@@ -1,6 +1,6 @@
|
||
/* strerror.c --- POSIX compatible system error routine
|
||
|
||
- Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -17,334 +17,54 @@
|
||
|
||
#include <config.h>
|
||
|
||
+/* Specification. */
|
||
#include <string.h>
|
||
|
||
-#if REPLACE_STRERROR
|
||
-
|
||
-# include <errno.h>
|
||
-# include <stdio.h>
|
||
-
|
||
-# if GNULIB_defined_ESOCK /* native Windows platforms */
|
||
-# if HAVE_WINSOCK2_H
|
||
-# include <winsock2.h>
|
||
-# endif
|
||
-# endif
|
||
+#include <errno.h>
|
||
+#include <stdio.h>
|
||
+#include <stdlib.h>
|
||
+#include <string.h>
|
||
|
||
-# include "intprops.h"
|
||
+#include "intprops.h"
|
||
+#include "strerror-override.h"
|
||
+#include "verify.h"
|
||
|
||
/* Use the system functions, not the gnulib overrides in this file. */
|
||
-# undef sprintf
|
||
-
|
||
-# undef strerror
|
||
-# if ! HAVE_DECL_STRERROR
|
||
-# define strerror(n) NULL
|
||
-# endif
|
||
+#undef sprintf
|
||
|
||
char *
|
||
-rpl_strerror (int n)
|
||
+strerror (int n)
|
||
+#undef strerror
|
||
{
|
||
- char const *msg = NULL;
|
||
- /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */
|
||
- switch (n)
|
||
- {
|
||
-# if GNULIB_defined_ETXTBSY
|
||
- case ETXTBSY:
|
||
- msg = "Text file busy";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_ESOCK /* native Windows platforms */
|
||
- /* EWOULDBLOCK is the same as EAGAIN. */
|
||
- case EINPROGRESS:
|
||
- msg = "Operation now in progress";
|
||
- break;
|
||
- case EALREADY:
|
||
- msg = "Operation already in progress";
|
||
- break;
|
||
- case ENOTSOCK:
|
||
- msg = "Socket operation on non-socket";
|
||
- break;
|
||
- case EDESTADDRREQ:
|
||
- msg = "Destination address required";
|
||
- break;
|
||
- case EMSGSIZE:
|
||
- msg = "Message too long";
|
||
- break;
|
||
- case EPROTOTYPE:
|
||
- msg = "Protocol wrong type for socket";
|
||
- break;
|
||
- case ENOPROTOOPT:
|
||
- msg = "Protocol not available";
|
||
- break;
|
||
- case EPROTONOSUPPORT:
|
||
- msg = "Protocol not supported";
|
||
- break;
|
||
- case ESOCKTNOSUPPORT:
|
||
- msg = "Socket type not supported";
|
||
- break;
|
||
- case EOPNOTSUPP:
|
||
- msg = "Operation not supported";
|
||
- break;
|
||
- case EPFNOSUPPORT:
|
||
- msg = "Protocol family not supported";
|
||
- break;
|
||
- case EAFNOSUPPORT:
|
||
- msg = "Address family not supported by protocol";
|
||
- break;
|
||
- case EADDRINUSE:
|
||
- msg = "Address already in use";
|
||
- break;
|
||
- case EADDRNOTAVAIL:
|
||
- msg = "Cannot assign requested address";
|
||
- break;
|
||
- case ENETDOWN:
|
||
- msg = "Network is down";
|
||
- break;
|
||
- case ENETUNREACH:
|
||
- msg = "Network is unreachable";
|
||
- break;
|
||
- case ENETRESET:
|
||
- msg = "Network dropped connection on reset";
|
||
- break;
|
||
- case ECONNABORTED:
|
||
- msg = "Software caused connection abort";
|
||
- break;
|
||
- case ECONNRESET:
|
||
- msg = "Connection reset by peer";
|
||
- break;
|
||
- case ENOBUFS:
|
||
- msg = "No buffer space available";
|
||
- break;
|
||
- case EISCONN:
|
||
- msg = "Transport endpoint is already connected";
|
||
- break;
|
||
- case ENOTCONN:
|
||
- msg = "Transport endpoint is not connected";
|
||
- break;
|
||
- case ESHUTDOWN:
|
||
- msg = "Cannot send after transport endpoint shutdown";
|
||
- break;
|
||
- case ETOOMANYREFS:
|
||
- msg = "Too many references: cannot splice";
|
||
- break;
|
||
- case ETIMEDOUT:
|
||
- msg = "Connection timed out";
|
||
- break;
|
||
- case ECONNREFUSED:
|
||
- msg = "Connection refused";
|
||
- break;
|
||
- case ELOOP:
|
||
- msg = "Too many levels of symbolic links";
|
||
- break;
|
||
- case EHOSTDOWN:
|
||
- msg = "Host is down";
|
||
- break;
|
||
- case EHOSTUNREACH:
|
||
- msg = "No route to host";
|
||
- break;
|
||
- case EPROCLIM:
|
||
- msg = "Too many processes";
|
||
- break;
|
||
- case EUSERS:
|
||
- msg = "Too many users";
|
||
- break;
|
||
- case EDQUOT:
|
||
- msg = "Disk quota exceeded";
|
||
- break;
|
||
- case ESTALE:
|
||
- msg = "Stale NFS file handle";
|
||
- break;
|
||
- case EREMOTE:
|
||
- msg = "Object is remote";
|
||
- break;
|
||
-# if HAVE_WINSOCK2_H
|
||
- /* WSA_INVALID_HANDLE maps to EBADF */
|
||
- /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
|
||
- /* WSA_INVALID_PARAMETER maps to EINVAL */
|
||
- case WSA_OPERATION_ABORTED:
|
||
- msg = "Overlapped operation aborted";
|
||
- break;
|
||
- case WSA_IO_INCOMPLETE:
|
||
- msg = "Overlapped I/O event object not in signaled state";
|
||
- break;
|
||
- case WSA_IO_PENDING:
|
||
- msg = "Overlapped operations will complete later";
|
||
- break;
|
||
- /* WSAEINTR maps to EINTR */
|
||
- /* WSAEBADF maps to EBADF */
|
||
- /* WSAEACCES maps to EACCES */
|
||
- /* WSAEFAULT maps to EFAULT */
|
||
- /* WSAEINVAL maps to EINVAL */
|
||
- /* WSAEMFILE maps to EMFILE */
|
||
- /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
|
||
- /* WSAEINPROGRESS is EINPROGRESS */
|
||
- /* WSAEALREADY is EALREADY */
|
||
- /* WSAENOTSOCK is ENOTSOCK */
|
||
- /* WSAEDESTADDRREQ is EDESTADDRREQ */
|
||
- /* WSAEMSGSIZE is EMSGSIZE */
|
||
- /* WSAEPROTOTYPE is EPROTOTYPE */
|
||
- /* WSAENOPROTOOPT is ENOPROTOOPT */
|
||
- /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */
|
||
- /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
|
||
- /* WSAEOPNOTSUPP is EOPNOTSUPP */
|
||
- /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
|
||
- /* WSAEAFNOSUPPORT is EAFNOSUPPORT */
|
||
- /* WSAEADDRINUSE is EADDRINUSE */
|
||
- /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */
|
||
- /* WSAENETDOWN is ENETDOWN */
|
||
- /* WSAENETUNREACH is ENETUNREACH */
|
||
- /* WSAENETRESET is ENETRESET */
|
||
- /* WSAECONNABORTED is ECONNABORTED */
|
||
- /* WSAECONNRESET is ECONNRESET */
|
||
- /* WSAENOBUFS is ENOBUFS */
|
||
- /* WSAEISCONN is EISCONN */
|
||
- /* WSAENOTCONN is ENOTCONN */
|
||
- /* WSAESHUTDOWN is ESHUTDOWN */
|
||
- /* WSAETOOMANYREFS is ETOOMANYREFS */
|
||
- /* WSAETIMEDOUT is ETIMEDOUT */
|
||
- /* WSAECONNREFUSED is ECONNREFUSED */
|
||
- /* WSAELOOP is ELOOP */
|
||
- /* WSAENAMETOOLONG maps to ENAMETOOLONG */
|
||
- /* WSAEHOSTDOWN is EHOSTDOWN */
|
||
- /* WSAEHOSTUNREACH is EHOSTUNREACH */
|
||
- /* WSAENOTEMPTY maps to ENOTEMPTY */
|
||
- /* WSAEPROCLIM is EPROCLIM */
|
||
- /* WSAEUSERS is EUSERS */
|
||
- /* WSAEDQUOT is EDQUOT */
|
||
- /* WSAESTALE is ESTALE */
|
||
- /* WSAEREMOTE is EREMOTE */
|
||
- case WSASYSNOTREADY:
|
||
- msg = "Network subsystem is unavailable";
|
||
- break;
|
||
- case WSAVERNOTSUPPORTED:
|
||
- msg = "Winsock.dll version out of range";
|
||
- break;
|
||
- case WSANOTINITIALISED:
|
||
- msg = "Successful WSAStartup not yet performed";
|
||
- break;
|
||
- case WSAEDISCON:
|
||
- msg = "Graceful shutdown in progress";
|
||
- break;
|
||
- case WSAENOMORE: case WSA_E_NO_MORE:
|
||
- msg = "No more results";
|
||
- break;
|
||
- case WSAECANCELLED: case WSA_E_CANCELLED:
|
||
- msg = "Call was canceled";
|
||
- break;
|
||
- case WSAEINVALIDPROCTABLE:
|
||
- msg = "Procedure call table is invalid";
|
||
- break;
|
||
- case WSAEINVALIDPROVIDER:
|
||
- msg = "Service provider is invalid";
|
||
- break;
|
||
- case WSAEPROVIDERFAILEDINIT:
|
||
- msg = "Service provider failed to initialize";
|
||
- break;
|
||
- case WSASYSCALLFAILURE:
|
||
- msg = "System call failure";
|
||
- break;
|
||
- case WSASERVICE_NOT_FOUND:
|
||
- msg = "Service not found";
|
||
- break;
|
||
- case WSATYPE_NOT_FOUND:
|
||
- msg = "Class type not found";
|
||
- break;
|
||
- case WSAEREFUSED:
|
||
- msg = "Database query was refused";
|
||
- break;
|
||
- case WSAHOST_NOT_FOUND:
|
||
- msg = "Host not found";
|
||
- break;
|
||
- case WSATRY_AGAIN:
|
||
- msg = "Nonauthoritative host not found";
|
||
- break;
|
||
- case WSANO_RECOVERY:
|
||
- msg = "Nonrecoverable error";
|
||
- break;
|
||
- case WSANO_DATA:
|
||
- msg = "Valid name, no data record of requested type";
|
||
- break;
|
||
- /* WSA_QOS_* omitted */
|
||
-# endif
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_ENOMSG
|
||
- case ENOMSG:
|
||
- msg = "No message of desired type";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_EIDRM
|
||
- case EIDRM:
|
||
- msg = "Identifier removed";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_ENOLINK
|
||
- case ENOLINK:
|
||
- msg = "Link has been severed";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_EPROTO
|
||
- case EPROTO:
|
||
- msg = "Protocol error";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_EMULTIHOP
|
||
- case EMULTIHOP:
|
||
- msg = "Multihop attempted";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_EBADMSG
|
||
- case EBADMSG:
|
||
- msg = "Bad message";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_EOVERFLOW
|
||
- case EOVERFLOW:
|
||
- msg = "Value too large for defined data type";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_ENOTSUP
|
||
- case ENOTSUP:
|
||
- msg = "Not supported";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_ESTALE
|
||
- case ESTALE:
|
||
- msg = "Stale NFS file handle";
|
||
- break;
|
||
-# endif
|
||
-
|
||
-# if GNULIB_defined_ECANCELED
|
||
- case ECANCELED:
|
||
- msg = "Operation canceled";
|
||
- break;
|
||
-# endif
|
||
- }
|
||
+ static char buf[STACKBUF_LEN];
|
||
+ size_t len;
|
||
|
||
+ /* Cast away const, due to the historical signature of strerror;
|
||
+ callers should not be modifying the string. */
|
||
+ const char *msg = strerror_override (n);
|
||
if (msg)
|
||
return (char *) msg;
|
||
|
||
- {
|
||
- char *result = strerror (n);
|
||
+ msg = strerror (n);
|
||
|
||
- if (result == NULL || result[0] == '\0')
|
||
- {
|
||
- static char const fmt[] = "Unknown error (%d)";
|
||
- static char msg_buf[sizeof fmt + INT_STRLEN_BOUND (n)];
|
||
- sprintf (msg_buf, fmt, n);
|
||
- return msg_buf;
|
||
- }
|
||
+ /* Our strerror_r implementation might use the system's strerror
|
||
+ buffer, so all other clients of strerror have to see the error
|
||
+ copied into a buffer that we manage. This is not thread-safe,
|
||
+ even if the system strerror is, but portable programs shouldn't
|
||
+ be using strerror if they care about thread-safety. */
|
||
+ if (!msg || !*msg)
|
||
+ {
|
||
+ static char const fmt[] = "Unknown error %d";
|
||
+ verify (sizeof buf >= sizeof (fmt) + INT_STRLEN_BOUND (n));
|
||
+ sprintf (buf, fmt, n);
|
||
+ errno = EINVAL;
|
||
+ return buf;
|
||
+ }
|
||
|
||
- return result;
|
||
- }
|
||
-}
|
||
+ /* Fix STACKBUF_LEN if this ever aborts. */
|
||
+ len = strlen (msg);
|
||
+ if (sizeof buf <= len)
|
||
+ abort ();
|
||
|
||
-#endif
|
||
+ return memcpy (buf, msg, len + 1);
|
||
+}
|
||
diff --git a/grub-core/gnulib/string.in.h b/grub-core/gnulib/string.in.h
|
||
index 49c711d..d7a6c9c 100644
|
||
--- a/grub-core/gnulib/string.in.h
|
||
+++ b/grub-core/gnulib/string.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A GNU-like <string.h>.
|
||
|
||
- Copyright (C) 1995-1996, 2001-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1995-1996, 2001-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,20 +13,20 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
-#ifndef _GL_STRING_H
|
||
+#ifndef _@GUARD_PREFIX@_STRING_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
#@INCLUDE_NEXT@ @NEXT_STRING_H@
|
||
|
||
-#ifndef _GL_STRING_H
|
||
-#define _GL_STRING_H
|
||
+#ifndef _@GUARD_PREFIX@_STRING_H
|
||
+#define _@GUARD_PREFIX@_STRING_H
|
||
|
||
/* NetBSD 5.0 mis-defines NULL. */
|
||
#include <stddef.h>
|
||
@@ -36,13 +36,8 @@
|
||
# include <wchar.h>
|
||
#endif
|
||
|
||
-#ifndef __attribute__
|
||
-/* This feature is available in gcc versions 2.5 and later. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
-#endif
|
||
-/* The attribute __pure__ was added in gcc 2.96. */
|
||
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
||
+ The attribute __pure__ was added in gcc 2.96. */
|
||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
||
#else
|
||
@@ -50,8 +45,8 @@
|
||
#endif
|
||
|
||
/* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>. */
|
||
-/* But avoid namespace pollution on glibc systems. */
|
||
-#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) \
|
||
+/* But in any case avoid namespace pollution on glibc systems. */
|
||
+#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \
|
||
&& ! defined __GLIBC__
|
||
# include <unistd.h>
|
||
#endif
|
||
@@ -63,6 +58,36 @@
|
||
/* The definition of _GL_WARN_ON_USE is copied here. */
|
||
|
||
|
||
+/* Find the index of the least-significant set bit. */
|
||
+#if @GNULIB_FFSL@
|
||
+# if !@HAVE_FFSL@
|
||
+_GL_FUNCDECL_SYS (ffsl, int, (long int i));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (ffsl, int, (long int i));
|
||
+_GL_CXXALIASWARN (ffsl);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef ffsl
|
||
+# if HAVE_RAW_DECL_FFSL
|
||
+_GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Find the index of the least-significant set bit. */
|
||
+#if @GNULIB_FFSLL@
|
||
+# if !@HAVE_FFSLL@
|
||
+_GL_FUNCDECL_SYS (ffsll, int, (long long int i));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (ffsll, int, (long long int i));
|
||
+_GL_CXXALIASWARN (ffsll);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef ffsll
|
||
+# if HAVE_RAW_DECL_FFSLL
|
||
+_GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
/* Return the first instance of C within N bytes of S, or NULL. */
|
||
#if @GNULIB_MEMCHR@
|
||
# if @REPLACE_MEMCHR@
|
||
@@ -86,7 +111,7 @@ _GL_CXXALIAS_SYS_CAST2 (memchr,
|
||
void *, (void const *__s, int __c, size_t __n),
|
||
void const *, (void const *__s, int __c, size_t __n));
|
||
# endif
|
||
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n));
|
||
_GL_CXXALIASWARN1 (memchr, void const *,
|
||
@@ -171,7 +196,7 @@ _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t)
|
||
_GL_CXXALIAS_SYS_CAST2 (memrchr,
|
||
void *, (void const *, int, size_t),
|
||
void const *, (void const *, int, size_t));
|
||
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t));
|
||
_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t));
|
||
@@ -201,7 +226,7 @@ _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in)
|
||
_GL_CXXALIAS_SYS_CAST2 (rawmemchr,
|
||
void *, (void const *__s, int __c_in),
|
||
void const *, (void const *__s, int __c_in));
|
||
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in));
|
||
_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in));
|
||
@@ -281,18 +306,29 @@ _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings "
|
||
|
||
/* Find the first occurrence of C in S or the final NUL byte. */
|
||
#if @GNULIB_STRCHRNUL@
|
||
-# if ! @HAVE_STRCHRNUL@
|
||
+# if @REPLACE_STRCHRNUL@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define strchrnul rpl_strchrnul
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL (strchrnul, char *,
|
||
+ (const char *str, int ch));
|
||
+# else
|
||
+# if ! @HAVE_STRCHRNUL@
|
||
_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in)
|
||
_GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1)));
|
||
-# endif
|
||
+# endif
|
||
/* On some systems, this function is defined as an overloaded function:
|
||
extern "C++" { const char * std::strchrnul (const char *, int); }
|
||
extern "C++" { char * std::strchrnul (char *, int); } */
|
||
_GL_CXXALIAS_SYS_CAST2 (strchrnul,
|
||
char *, (char const *__s, int __c_in),
|
||
char const *, (char const *__s, int __c_in));
|
||
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
|
||
+# endif
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in));
|
||
_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in));
|
||
@@ -438,7 +474,7 @@ _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept)
|
||
_GL_CXXALIAS_SYS_CAST2 (strpbrk,
|
||
char *, (char const *__s, char const *__accept),
|
||
const char *, (char const *__s, char const *__accept));
|
||
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept));
|
||
_GL_CXXALIASWARN1 (strpbrk, char const *,
|
||
@@ -540,7 +576,7 @@ _GL_CXXALIAS_SYS_CAST2 (strstr,
|
||
char *, (const char *haystack, const char *needle),
|
||
const char *, (const char *haystack, const char *needle));
|
||
# endif
|
||
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle));
|
||
_GL_CXXALIASWARN1 (strstr, const char *,
|
||
@@ -589,7 +625,7 @@ _GL_CXXALIAS_SYS_CAST2 (strcasestr,
|
||
char *, (const char *haystack, const char *needle),
|
||
const char *, (const char *haystack, const char *needle));
|
||
# endif
|
||
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle));
|
||
_GL_CXXALIASWARN1 (strcasestr, const char *,
|
||
@@ -688,10 +724,14 @@ _GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - "
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define mbslen rpl_mbslen
|
||
# endif
|
||
-_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) _GL_ARG_NONNULL ((1)));
|
||
+_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string));
|
||
# else
|
||
-_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) _GL_ARG_NONNULL ((1)));
|
||
+_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string));
|
||
# endif
|
||
_GL_CXXALIASWARN (mbslen);
|
||
@@ -701,6 +741,7 @@ _GL_CXXALIASWARN (mbslen);
|
||
/* Return the number of multibyte characters in the character string starting
|
||
at STRING and ending at STRING + LEN. */
|
||
_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1));
|
||
#endif
|
||
|
||
@@ -714,10 +755,12 @@ _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len)
|
||
# define mbschr rpl_mbschr /* avoid collision with HP-UX function */
|
||
# endif
|
||
_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c));
|
||
# else
|
||
_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c));
|
||
# endif
|
||
@@ -729,15 +772,17 @@ _GL_CXXALIASWARN (mbschr);
|
||
and return a pointer to it. Return NULL if C is not found in STRING.
|
||
Unlike strrchr(), this function works correctly in multibyte locales with
|
||
encodings such as GB18030. */
|
||
-# if defined __hpux
|
||
+# if defined __hpux || defined __INTERIX
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
-# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */
|
||
+# define mbsrchr rpl_mbsrchr /* avoid collision with system function */
|
||
# endif
|
||
_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c));
|
||
# else
|
||
_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1)));
|
||
_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c));
|
||
# endif
|
||
@@ -750,6 +795,7 @@ _GL_CXXALIASWARN (mbsrchr);
|
||
Unlike strstr(), this function works correctly in multibyte locales with
|
||
encodings different from UTF-8. */
|
||
_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2));
|
||
#endif
|
||
|
||
@@ -761,6 +807,7 @@ _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle)
|
||
different lengths!
|
||
Unlike strcasecmp(), this function works correctly in multibyte locales. */
|
||
_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2));
|
||
#endif
|
||
|
||
@@ -775,6 +822,7 @@ _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2)
|
||
Unlike strncasecmp(), this function works correctly in multibyte locales.
|
||
But beware that N is not a byte count but a character count! */
|
||
_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2));
|
||
#endif
|
||
|
||
@@ -788,6 +836,7 @@ _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n)
|
||
Unlike strncasecmp(), this function works correctly in multibyte
|
||
locales. */
|
||
_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2));
|
||
#endif
|
||
|
||
@@ -798,6 +847,7 @@ _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix)
|
||
strlen (haystack) < strlen (needle) !
|
||
Unlike strcasestr(), this function works correctly in multibyte locales. */
|
||
_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2));
|
||
#endif
|
||
|
||
@@ -808,6 +858,7 @@ _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle)
|
||
if none exists.
|
||
Unlike strcspn(), this function works correctly in multibyte locales. */
|
||
_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2));
|
||
#endif
|
||
|
||
@@ -821,10 +872,12 @@ _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept)
|
||
# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
|
||
# endif
|
||
_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept));
|
||
# else
|
||
_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept));
|
||
# endif
|
||
@@ -838,6 +891,7 @@ _GL_CXXALIASWARN (mbspbrk);
|
||
if none exists.
|
||
Unlike strspn(), this function works correctly in multibyte locales. */
|
||
_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2));
|
||
#endif
|
||
|
||
@@ -901,6 +955,35 @@ _GL_WARN_ON_USE (strerror, "strerror is unportable - "
|
||
"use gnulib module strerror to guarantee non-NULL result");
|
||
#endif
|
||
|
||
+/* Map any int, typically from errno, into an error message. Multithread-safe.
|
||
+ Uses the POSIX declaration, not the glibc declaration. */
|
||
+#if @GNULIB_STRERROR_R@
|
||
+# if @REPLACE_STRERROR_R@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef strerror_r
|
||
+# define strerror_r rpl_strerror_r
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)
|
||
+ _GL_ARG_NONNULL ((2)));
|
||
+_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen));
|
||
+# else
|
||
+# if !@HAVE_DECL_STRERROR_R@
|
||
+_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)
|
||
+ _GL_ARG_NONNULL ((2)));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen));
|
||
+# endif
|
||
+# if @HAVE_DECL_STRERROR_R@
|
||
+_GL_CXXALIASWARN (strerror_r);
|
||
+# endif
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef strerror_r
|
||
+# if HAVE_RAW_DECL_STRERROR_R
|
||
+_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - "
|
||
+ "use gnulib module strerror_r-posix for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
#if @GNULIB_STRSIGNAL@
|
||
# if @REPLACE_STRSIGNAL@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
@@ -928,6 +1011,7 @@ _GL_WARN_ON_USE (strsignal, "strsignal is unportable - "
|
||
#if @GNULIB_STRVERSCMP@
|
||
# if !@HAVE_STRVERSCMP@
|
||
_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *)
|
||
+ _GL_ATTRIBUTE_PURE
|
||
_GL_ARG_NONNULL ((1, 2)));
|
||
# endif
|
||
_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *));
|
||
@@ -941,5 +1025,5 @@ _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - "
|
||
#endif
|
||
|
||
|
||
-#endif /* _GL_STRING_H */
|
||
-#endif /* _GL_STRING_H */
|
||
+#endif /* _@GUARD_PREFIX@_STRING_H */
|
||
+#endif /* _@GUARD_PREFIX@_STRING_H */
|
||
diff --git a/grub-core/gnulib/strings.in.h b/grub-core/gnulib/strings.in.h
|
||
index c726a16..4469f86 100644
|
||
--- a/grub-core/gnulib/strings.in.h
|
||
+++ b/grub-core/gnulib/strings.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A substitute <strings.h>.
|
||
|
||
- Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,22 +13,37 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
-#ifndef _GL_STRINGS_H
|
||
+#ifndef _@GUARD_PREFIX@_STRINGS_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
+
|
||
+/* Minix 3.1.8 has a bug: <sys/types.h> must be included before <strings.h>.
|
||
+ But avoid namespace pollution on glibc systems. */
|
||
+#if defined __minix && !defined __GLIBC__
|
||
+# include <sys/types.h>
|
||
+#endif
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
-#@INCLUDE_NEXT@ @NEXT_STRINGS_H@
|
||
+#if @HAVE_STRINGS_H@
|
||
+# @INCLUDE_NEXT@ @NEXT_STRINGS_H@
|
||
+#endif
|
||
|
||
-#ifndef _GL_STRINGS_H
|
||
-#define _GL_STRINGS_H
|
||
+#ifndef _@GUARD_PREFIX@_STRINGS_H
|
||
+#define _@GUARD_PREFIX@_STRINGS_H
|
||
+
|
||
+#if ! @HAVE_DECL_STRNCASECMP@
|
||
+/* Get size_t. */
|
||
+# include <stddef.h>
|
||
+#endif
|
||
|
||
|
||
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||
+
|
||
/* The definition of _GL_ARG_NONNULL is copied here. */
|
||
|
||
/* The definition of _GL_WARN_ON_USE is copied here. */
|
||
@@ -38,6 +53,20 @@ extern "C" {
|
||
#endif
|
||
|
||
|
||
+ /* Find the index of the least-significant set bit. */
|
||
+#if @GNULIB_FFS@
|
||
+# if !@HAVE_FFS@
|
||
+_GL_FUNCDECL_SYS (ffs, int, (int i));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (ffs, int, (int i));
|
||
+_GL_CXXALIASWARN (ffs);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef ffs
|
||
+# if HAVE_RAW_DECL_FFS
|
||
+_GL_WARN_ON_USE (ffs, "ffs is not portable - use the ffs module");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
|
||
greater than zero if S1 is lexicographically less than, equal to or greater
|
||
than S2.
|
||
@@ -89,5 +118,5 @@ _GL_WARN_ON_USE (strncasecmp, "strncasecmp cannot work correctly on character "
|
||
}
|
||
#endif
|
||
|
||
-#endif /* _GL_STRING_H */
|
||
-#endif /* _GL_STRING_H */
|
||
+#endif /* _@GUARD_PREFIX@_STRING_H */
|
||
+#endif /* _@GUARD_PREFIX@_STRING_H */
|
||
diff --git a/grub-core/gnulib/stripslash.c b/grub-core/gnulib/stripslash.c
|
||
index 3a5996f..0e452a9 100644
|
||
--- a/grub-core/gnulib/stripslash.c
|
||
+++ b/grub-core/gnulib/stripslash.c
|
||
@@ -1,6 +1,6 @@
|
||
/* stripslash.c -- remove redundant trailing slashes from a file name
|
||
|
||
- Copyright (C) 1990, 2001, 2003-2006, 2009-2010 Free Software Foundation,
|
||
+ Copyright (C) 1990, 2001, 2003-2006, 2009-2013 Free Software Foundation,
|
||
Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
@@ -35,7 +35,7 @@ strip_trailing_slashes (char *file)
|
||
bool had_slash;
|
||
|
||
/* last_component returns "" for file system roots, but we need to turn
|
||
- `///' into `/'. */
|
||
+ "///" into "/". */
|
||
if (! *base)
|
||
base = file;
|
||
base_lim = base + base_len (base);
|
||
diff --git a/grub-core/gnulib/strncasecmp.c b/grub-core/gnulib/strncasecmp.c
|
||
index 8c806a6..35840bc 100644
|
||
--- a/grub-core/gnulib/strncasecmp.c
|
||
+++ b/grub-core/gnulib/strncasecmp.c
|
||
@@ -1,5 +1,5 @@
|
||
/* strncasecmp.c -- case insensitive string comparator
|
||
- Copyright (C) 1998-1999, 2005-2007, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1998-1999, 2005-2007, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#include <config.h>
|
||
|
||
diff --git a/grub-core/gnulib/strndup.c b/grub-core/gnulib/strndup.c
|
||
index 3de3dbc..e60268b 100644
|
||
--- a/grub-core/gnulib/strndup.c
|
||
+++ b/grub-core/gnulib/strndup.c
|
||
@@ -1,7 +1,7 @@
|
||
/* A replacement function, for systems that lack strndup.
|
||
|
||
- Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2005, 2006, 2007, 2009,
|
||
- 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2013 Free Software
|
||
+ Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify it
|
||
under the terms of the GNU General Public License as published by the
|
||
@@ -14,8 +14,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#include <config.h>
|
||
|
||
diff --git a/grub-core/gnulib/strnlen.c b/grub-core/gnulib/strnlen.c
|
||
index f1ec356..57fdfe7 100644
|
||
--- a/grub-core/gnulib/strnlen.c
|
||
+++ b/grub-core/gnulib/strnlen.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Find the length of STRING, but scan at most MAXLEN characters.
|
||
- Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2005-2007, 2009-2013 Free Software Foundation, Inc.
|
||
Written by Simon Josefsson.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#include <config.h>
|
||
|
||
diff --git a/grub-core/gnulib/strnlen1.c b/grub-core/gnulib/strnlen1.c
|
||
index b8cd2bf..0c22d21 100644
|
||
--- a/grub-core/gnulib/strnlen1.c
|
||
+++ b/grub-core/gnulib/strnlen1.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
|
||
- Copyright (C) 2005-2006, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2005-2006, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
diff --git a/grub-core/gnulib/strnlen1.h b/grub-core/gnulib/strnlen1.h
|
||
index dfaf62d..7c65e31 100644
|
||
--- a/grub-core/gnulib/strnlen1.h
|
||
+++ b/grub-core/gnulib/strnlen1.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
|
||
- Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2005, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -28,7 +28,8 @@ extern "C" {
|
||
/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
|
||
If no '\0' terminator is found in that many characters, return MAXLEN. */
|
||
/* This is the same as strnlen (string, maxlen - 1) + 1. */
|
||
-extern size_t strnlen1 (const char *string, size_t maxlen);
|
||
+extern size_t strnlen1 (const char *string, size_t maxlen)
|
||
+ _GL_ATTRIBUTE_PURE;
|
||
|
||
|
||
#ifdef __cplusplus
|
||
diff --git a/grub-core/gnulib/sys_types.in.h b/grub-core/gnulib/sys_types.in.h
|
||
new file mode 100644
|
||
index 0000000..d7da356
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/sys_types.in.h
|
||
@@ -0,0 +1,51 @@
|
||
+/* Provide a more complete sys/types.h.
|
||
+
|
||
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software; you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3, or (at your option)
|
||
+ any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#if __GNUC__ >= 3
|
||
+@PRAGMA_SYSTEM_HEADER@
|
||
+#endif
|
||
+@PRAGMA_COLUMNS@
|
||
+
|
||
+#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
|
||
+
|
||
+/* The include_next requires a split double-inclusion guard. */
|
||
+#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
|
||
+
|
||
+#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
|
||
+#define _@GUARD_PREFIX@_SYS_TYPES_H
|
||
+
|
||
+/* Override off_t if Large File Support is requested on native Windows. */
|
||
+#if @WINDOWS_64_BIT_OFF_T@
|
||
+/* Same as int64_t in <stdint.h>. */
|
||
+# if defined _MSC_VER
|
||
+# define off_t __int64
|
||
+# else
|
||
+# define off_t long long int
|
||
+# endif
|
||
+/* Indicator, for gnulib internal purposes. */
|
||
+# define _GL_WINDOWS_64_BIT_OFF_T 1
|
||
+#endif
|
||
+
|
||
+/* MSVC 9 defines size_t in <stddef.h>, not in <sys/types.h>. */
|
||
+/* But avoid namespace pollution on glibc systems. */
|
||
+#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \
|
||
+ && ! defined __GLIBC__
|
||
+# include <stddef.h>
|
||
+#endif
|
||
+
|
||
+#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
|
||
+#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
|
||
diff --git a/grub-core/gnulib/sys_wait.in.h b/grub-core/gnulib/sys_wait.in.h
|
||
deleted file mode 100644
|
||
index 009fa21..0000000
|
||
--- a/grub-core/gnulib/sys_wait.in.h
|
||
+++ /dev/null
|
||
@@ -1,106 +0,0 @@
|
||
-/* A POSIX-like <sys/wait.h>.
|
||
- Copyright (C) 2001-2003, 2005-2010 Free Software Foundation, Inc.
|
||
-
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 3, or (at your option)
|
||
- any later version.
|
||
-
|
||
- This program is distributed in the hope that it will be useful,
|
||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
-
|
||
- You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
-
|
||
-
|
||
-#ifndef _GL_SYS_WAIT_H
|
||
-
|
||
-#if __GNUC__ >= 3
|
||
-@PRAGMA_SYSTEM_HEADER@
|
||
-#endif
|
||
-
|
||
-/* The include_next requires a split double-inclusion guard. */
|
||
-#if !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
|
||
-# @INCLUDE_NEXT@ @NEXT_SYS_WAIT_H@
|
||
-#endif
|
||
-
|
||
-#ifndef _GL_SYS_WAIT_H
|
||
-#define _GL_SYS_WAIT_H
|
||
-
|
||
-#if !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
|
||
-/* Unix API. */
|
||
-
|
||
-/* The following macros apply to an argument x, that is a status of a process,
|
||
- as returned by waitpid().
|
||
- On nearly all systems, including Linux/x86, WEXITSTATUS are bits 15..8 and
|
||
- WTERMSIG are bits 7..0, while BeOS uses the opposite. Therefore programs
|
||
- have to use the abstract macros. */
|
||
-
|
||
-/* For valid x, exactly one of WIFSIGNALED(x), WIFEXITED(x), WIFSTOPPED(x)
|
||
- is true. */
|
||
-# ifndef WIFSIGNALED
|
||
-# define WIFSIGNALED(x) (WTERMSIG (x) != 0 && WTERMSIG(x) != 0x7f)
|
||
-# endif
|
||
-# ifndef WIFEXITED
|
||
-# define WIFEXITED(x) (WTERMSIG (x) == 0)
|
||
-# endif
|
||
-# ifndef WIFSTOPPED
|
||
-# define WIFSTOPPED(x) (WTERMSIG (x) == 0x7f)
|
||
-# endif
|
||
-
|
||
-/* The termination signal. Only to be accessed if WIFSIGNALED(x) is true. */
|
||
-# ifndef WTERMSIG
|
||
-# define WTERMSIG(x) ((x) & 0x7f)
|
||
-# endif
|
||
-
|
||
-/* The exit status. Only to be accessed if WIFEXITED(x) is true. */
|
||
-# ifndef WEXITSTATUS
|
||
-# define WEXITSTATUS(x) (((x) >> 8) & 0xff)
|
||
-# endif
|
||
-
|
||
-/* True if the process dumped core. Not standardized by POSIX. */
|
||
-# ifndef WCOREDUMP
|
||
-# define WCOREDUMP(x) ((x) & 0x80)
|
||
-# endif
|
||
-
|
||
-# ifdef __cplusplus
|
||
-extern "C" {
|
||
-# endif
|
||
-
|
||
-/* Declarations of functions. */
|
||
-
|
||
-# ifdef __cplusplus
|
||
-}
|
||
-# endif
|
||
-
|
||
-#else
|
||
-/* Native Windows API. */
|
||
-
|
||
-# include <process.h>
|
||
-
|
||
-# define waitpid(pid,statusp,options) _cwait (statusp, pid, WAIT_CHILD)
|
||
-
|
||
-/* The following macros apply to an argument x, that is a status of a process,
|
||
- as returned by waitpid() or, equivalently, _cwait() or GetExitCodeProcess().
|
||
- This value is simply an 'int', not composed of bit fields. */
|
||
-
|
||
-/* When an unhandled fatal signal terminates a process, the exit code is 3. */
|
||
-# define WIFSIGNALED(x) ((x) == 3)
|
||
-# define WIFEXITED(x) ((x) != 3)
|
||
-# define WIFSTOPPED(x) 0
|
||
-
|
||
-/* The signal that terminated a process is not known posthum. */
|
||
-# define WTERMSIG(x) SIGTERM
|
||
-
|
||
-# define WEXITSTATUS(x) (x)
|
||
-
|
||
-/* There are no core dumps. */
|
||
-# define WCOREDUMP(x) 0
|
||
-
|
||
-#endif
|
||
-
|
||
-#endif /* _GL_SYS_WAIT_H */
|
||
-#endif /* _GL_SYS_WAIT_H */
|
||
diff --git a/grub-core/gnulib/sysexits.in.h b/grub-core/gnulib/sysexits.in.h
|
||
index 45255df..fa8db83 100644
|
||
--- a/grub-core/gnulib/sysexits.in.h
|
||
+++ b/grub-core/gnulib/sysexits.in.h
|
||
@@ -1,5 +1,5 @@
|
||
/* exit() exit codes for some BSD system programs.
|
||
- Copyright (C) 2003, 2006-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2003, 2006-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -16,11 +16,12 @@
|
||
|
||
/* Written by Simon Josefsson based on sysexits(3) man page */
|
||
|
||
-#ifndef _GL_SYSEXITS_H
|
||
+#ifndef _@GUARD_PREFIX@_SYSEXITS_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
#if @HAVE_SYSEXITS_H@
|
||
|
||
@@ -42,8 +43,8 @@
|
||
|
||
#endif
|
||
|
||
-#ifndef _GL_SYSEXITS_H
|
||
-#define _GL_SYSEXITS_H
|
||
+#ifndef _@GUARD_PREFIX@_SYSEXITS_H
|
||
+#define _@GUARD_PREFIX@_SYSEXITS_H
|
||
|
||
#if !@HAVE_SYSEXITS_H@
|
||
|
||
@@ -67,5 +68,5 @@
|
||
|
||
#endif
|
||
|
||
-#endif /* _GL_SYSEXITS_H */
|
||
-#endif /* _GL_SYSEXITS_H */
|
||
+#endif /* _@GUARD_PREFIX@_SYSEXITS_H */
|
||
+#endif /* _@GUARD_PREFIX@_SYSEXITS_H */
|
||
diff --git a/grub-core/gnulib/unistd.c b/grub-core/gnulib/unistd.c
|
||
new file mode 100644
|
||
index 0000000..6c6a8e2
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/unistd.c
|
||
@@ -0,0 +1,3 @@
|
||
+#include <config.h>
|
||
+#define _GL_UNISTD_INLINE _GL_EXTERN_INLINE
|
||
+#include "unistd.h"
|
||
diff --git a/grub-core/gnulib/unistd.in.h b/grub-core/gnulib/unistd.in.h
|
||
index 26a4cbd..2ea9af4 100644
|
||
--- a/grub-core/gnulib/unistd.in.h
|
||
+++ b/grub-core/gnulib/unistd.in.h
|
||
@@ -1,5 +1,5 @@
|
||
/* Substitute for and wrapper around <unistd.h>.
|
||
- Copyright (C) 2003-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2003-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,30 +12,14 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#ifndef _@GUARD_PREFIX@_UNISTD_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
-
|
||
-/* Special invocation convention:
|
||
- - On mingw, several headers, including <winsock2.h>, include <unistd.h>,
|
||
- but we need to ensure that both the system <unistd.h> and <winsock2.h>
|
||
- are completely included before we replace gethostname. */
|
||
-#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
|
||
- && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H
|
||
-/* <unistd.h> is being indirectly included for the first time from
|
||
- <winsock2.h>; avoid declaring any overrides. */
|
||
-# if @HAVE_UNISTD_H@
|
||
-# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
|
||
-# else
|
||
-# error unexpected; report this to bug-gnulib@gnu.org
|
||
-# endif
|
||
-# define _GL_WINSOCK2_H_WITNESS
|
||
-
|
||
-/* Normal invocation. */
|
||
-#elif !defined _GL_UNISTD_H
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
/* The include_next requires a split double-inclusion guard. */
|
||
#if @HAVE_UNISTD_H@
|
||
@@ -50,8 +34,8 @@
|
||
# undef _GL_INCLUDING_WINSOCK2_H
|
||
#endif
|
||
|
||
-#if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
|
||
-#define _GL_UNISTD_H
|
||
+#if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
|
||
+#define _@GUARD_PREFIX@_UNISTD_H
|
||
|
||
/* NetBSD 5.0 mis-defines NULL. Also get size_t. */
|
||
#include <stddef.h>
|
||
@@ -60,32 +44,66 @@
|
||
/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>. */
|
||
/* But avoid namespace pollution on glibc systems. */
|
||
#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \
|
||
- || (@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK)) \
|
||
+ || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \
|
||
+ && defined __CYGWIN__)) \
|
||
&& ! defined __GLIBC__
|
||
# include <stdio.h>
|
||
#endif
|
||
|
||
/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>. */
|
||
/* But avoid namespace pollution on glibc systems. */
|
||
-#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__
|
||
+#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \
|
||
+ && ! defined __GLIBC__
|
||
# include <fcntl.h>
|
||
#endif
|
||
|
||
/* mingw fails to declare _exit in <unistd.h>. */
|
||
-/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */
|
||
+/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
|
||
+ <unistd.h>. */
|
||
/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */
|
||
+/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system <stdlib.h> is
|
||
+ included here. */
|
||
/* But avoid namespace pollution on glibc systems. */
|
||
-#ifndef __GLIBC__
|
||
+#if !defined __GLIBC__ && !defined __osf__
|
||
+# define __need_system_stdlib_h
|
||
# include <stdlib.h>
|
||
+# undef __need_system_stdlib_h
|
||
#endif
|
||
|
||
-/* mingw declares getcwd in <io.h>, not in <unistd.h>. */
|
||
-#if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \
|
||
+/* Native Windows platforms declare chdir, getcwd, rmdir in
|
||
+ <io.h> and/or <direct.h>, not in <unistd.h>.
|
||
+ They also declare access(), chmod(), close(), dup(), dup2(), isatty(),
|
||
+ lseek(), read(), unlink(), write() in <io.h>. */
|
||
+#if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \
|
||
+ || defined GNULIB_POSIXCHECK) \
|
||
&& ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
|
||
+# include <io.h> /* mingw32, mingw64 */
|
||
+# include <direct.h> /* mingw64, MSVC 9 */
|
||
+#elif (@GNULIB_CLOSE@ || @GNULIB_DUP@ || @GNULIB_DUP2@ || @GNULIB_ISATTY@ \
|
||
+ || @GNULIB_LSEEK@ || @GNULIB_READ@ || @GNULIB_UNLINK@ || @GNULIB_WRITE@ \
|
||
+ || defined GNULIB_POSIXCHECK) \
|
||
+ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
|
||
# include <io.h>
|
||
#endif
|
||
|
||
-#if (@GNULIB_WRITE@ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
|
||
+/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
|
||
+ NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>. */
|
||
+/* But avoid namespace pollution on glibc systems. */
|
||
+#if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \
|
||
+ || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \
|
||
+ && !defined __GLIBC__
|
||
+# include <netdb.h>
|
||
+#endif
|
||
+
|
||
+/* MSVC defines off_t in <sys/types.h>.
|
||
+ May also define off_t to a 64-bit type on native Windows. */
|
||
+#if !@HAVE_UNISTD_H@ || @WINDOWS_64_BIT_OFF_T@
|
||
+/* Get off_t. */
|
||
+# include <sys/types.h>
|
||
+#endif
|
||
+
|
||
+#if (@GNULIB_READ@ || @GNULIB_WRITE@ \
|
||
+ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
|
||
|| @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK)
|
||
/* Get ssize_t. */
|
||
# include <sys/types.h>
|
||
@@ -94,9 +112,15 @@
|
||
/* Get getopt(), optarg, optind, opterr, optopt.
|
||
But avoid namespace pollution on glibc systems. */
|
||
#if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT
|
||
+# define __need_getopt
|
||
# include <getopt.h>
|
||
#endif
|
||
|
||
+_GL_INLINE_HEADER_BEGIN
|
||
+#ifndef _GL_UNISTD_INLINE
|
||
+# define _GL_UNISTD_INLINE _GL_INLINE
|
||
+#endif
|
||
+
|
||
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||
|
||
/* The definition of _GL_ARG_NONNULL is copied here. */
|
||
@@ -104,78 +128,77 @@
|
||
/* The definition of _GL_WARN_ON_USE is copied here. */
|
||
|
||
|
||
-#if @GNULIB_GETHOSTNAME@
|
||
-/* Get all possible declarations of gethostname(). */
|
||
-# if @UNISTD_H_HAVE_WINSOCK2_H@
|
||
-# if !defined _GL_SYS_SOCKET_H
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
-# undef socket
|
||
-# define socket socket_used_without_including_sys_socket_h
|
||
-# undef connect
|
||
-# define connect connect_used_without_including_sys_socket_h
|
||
-# undef accept
|
||
-# define accept accept_used_without_including_sys_socket_h
|
||
-# undef bind
|
||
-# define bind bind_used_without_including_sys_socket_h
|
||
-# undef getpeername
|
||
-# define getpeername getpeername_used_without_including_sys_socket_h
|
||
-# undef getsockname
|
||
-# define getsockname getsockname_used_without_including_sys_socket_h
|
||
-# undef getsockopt
|
||
-# define getsockopt getsockopt_used_without_including_sys_socket_h
|
||
-# undef listen
|
||
-# define listen listen_used_without_including_sys_socket_h
|
||
-# undef recv
|
||
-# define recv recv_used_without_including_sys_socket_h
|
||
-# undef send
|
||
-# define send send_used_without_including_sys_socket_h
|
||
-# undef recvfrom
|
||
-# define recvfrom recvfrom_used_without_including_sys_socket_h
|
||
-# undef sendto
|
||
-# define sendto sendto_used_without_including_sys_socket_h
|
||
-# undef setsockopt
|
||
-# define setsockopt setsockopt_used_without_including_sys_socket_h
|
||
-# undef shutdown
|
||
-# define shutdown shutdown_used_without_including_sys_socket_h
|
||
-# else
|
||
- _GL_WARN_ON_USE (socket,
|
||
- "socket() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (connect,
|
||
- "connect() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (accept,
|
||
- "accept() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (bind,
|
||
- "bind() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (getpeername,
|
||
- "getpeername() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (getsockname,
|
||
- "getsockname() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (getsockopt,
|
||
- "getsockopt() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (listen,
|
||
- "listen() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (recv,
|
||
- "recv() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (send,
|
||
- "send() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (recvfrom,
|
||
- "recvfrom() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (sendto,
|
||
- "sendto() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (setsockopt,
|
||
- "setsockopt() used without including <sys/socket.h>");
|
||
- _GL_WARN_ON_USE (shutdown,
|
||
- "shutdown() used without including <sys/socket.h>");
|
||
-# endif
|
||
+/* Hide some function declarations from <winsock2.h>. */
|
||
+
|
||
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@
|
||
+# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef socket
|
||
+# define socket socket_used_without_including_sys_socket_h
|
||
+# undef connect
|
||
+# define connect connect_used_without_including_sys_socket_h
|
||
+# undef accept
|
||
+# define accept accept_used_without_including_sys_socket_h
|
||
+# undef bind
|
||
+# define bind bind_used_without_including_sys_socket_h
|
||
+# undef getpeername
|
||
+# define getpeername getpeername_used_without_including_sys_socket_h
|
||
+# undef getsockname
|
||
+# define getsockname getsockname_used_without_including_sys_socket_h
|
||
+# undef getsockopt
|
||
+# define getsockopt getsockopt_used_without_including_sys_socket_h
|
||
+# undef listen
|
||
+# define listen listen_used_without_including_sys_socket_h
|
||
+# undef recv
|
||
+# define recv recv_used_without_including_sys_socket_h
|
||
+# undef send
|
||
+# define send send_used_without_including_sys_socket_h
|
||
+# undef recvfrom
|
||
+# define recvfrom recvfrom_used_without_including_sys_socket_h
|
||
+# undef sendto
|
||
+# define sendto sendto_used_without_including_sys_socket_h
|
||
+# undef setsockopt
|
||
+# define setsockopt setsockopt_used_without_including_sys_socket_h
|
||
+# undef shutdown
|
||
+# define shutdown shutdown_used_without_including_sys_socket_h
|
||
+# else
|
||
+ _GL_WARN_ON_USE (socket,
|
||
+ "socket() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (connect,
|
||
+ "connect() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (accept,
|
||
+ "accept() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (bind,
|
||
+ "bind() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (getpeername,
|
||
+ "getpeername() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (getsockname,
|
||
+ "getsockname() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (getsockopt,
|
||
+ "getsockopt() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (listen,
|
||
+ "listen() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (recv,
|
||
+ "recv() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (send,
|
||
+ "send() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (recvfrom,
|
||
+ "recvfrom() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (sendto,
|
||
+ "sendto() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (setsockopt,
|
||
+ "setsockopt() used without including <sys/socket.h>");
|
||
+ _GL_WARN_ON_USE (shutdown,
|
||
+ "shutdown() used without including <sys/socket.h>");
|
||
# endif
|
||
-# if !defined _GL_SYS_SELECT_H
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
-# undef select
|
||
-# define select select_used_without_including_sys_select_h
|
||
-# else
|
||
- _GL_WARN_ON_USE (select,
|
||
- "select() used without including <sys/select.h>");
|
||
-# endif
|
||
+# endif
|
||
+# if !defined _@GUARD_PREFIX@_SYS_SELECT_H
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef select
|
||
+# define select select_used_without_including_sys_select_h
|
||
+# else
|
||
+ _GL_WARN_ON_USE (select,
|
||
+ "select() used without including <sys/select.h>");
|
||
# endif
|
||
# endif
|
||
#endif
|
||
@@ -211,12 +234,24 @@ _GL_WARN_ON_USE (access, "the access function is a security risk - "
|
||
#endif
|
||
|
||
|
||
+#if @GNULIB_CHDIR@
|
||
+_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIASWARN (chdir);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef chdir
|
||
+# if HAVE_RAW_DECL_CHDIR
|
||
+_GL_WARN_ON_USE (chown, "chdir is not always in <unistd.h> - "
|
||
+ "use gnulib module chdir for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
#if @GNULIB_CHOWN@
|
||
/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
|
||
to GID (if GID is not -1). Follow symbolic links.
|
||
Return 0 if successful, otherwise -1 and errno set.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/chown.html>. */
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html. */
|
||
# if @REPLACE_CHOWN@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef chown
|
||
@@ -267,24 +302,32 @@ _GL_WARN_ON_USE (close, "close does not portably work on sockets - "
|
||
#endif
|
||
|
||
|
||
-#if @REPLACE_DUP@
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
-# define dup rpl_dup
|
||
-# endif
|
||
+#if @GNULIB_DUP@
|
||
+# if @REPLACE_DUP@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define dup rpl_dup
|
||
+# endif
|
||
_GL_FUNCDECL_RPL (dup, int, (int oldfd));
|
||
_GL_CXXALIAS_RPL (dup, int, (int oldfd));
|
||
-#else
|
||
+# else
|
||
_GL_CXXALIAS_SYS (dup, int, (int oldfd));
|
||
-#endif
|
||
+# endif
|
||
_GL_CXXALIASWARN (dup);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef dup
|
||
+# if HAVE_RAW_DECL_DUP
|
||
+_GL_WARN_ON_USE (dup, "dup is unportable - "
|
||
+ "use gnulib module dup for portability");
|
||
+# endif
|
||
+#endif
|
||
|
||
|
||
#if @GNULIB_DUP2@
|
||
/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if
|
||
NEWFD = OLDFD, otherwise close NEWFD first if it is open.
|
||
Return newfd if successful, otherwise -1 and errno set.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/dup2.html>. */
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>. */
|
||
# if @REPLACE_DUP2@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define dup2 rpl_dup2
|
||
@@ -355,7 +398,7 @@ extern char **environ;
|
||
# endif
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# if HAVE_RAW_DECL_ENVIRON
|
||
-static inline char ***
|
||
+_GL_UNISTD_INLINE char ***
|
||
rpl_environ (void)
|
||
{
|
||
return &environ;
|
||
@@ -413,8 +456,8 @@ _GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
|
||
/* Change the process' current working directory to the directory on which
|
||
the given file descriptor is open.
|
||
Return 0 if successful, otherwise -1 and errno set.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/fchdir.html>. */
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>. */
|
||
# if ! @HAVE_FCHDIR@
|
||
_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
|
||
|
||
@@ -425,6 +468,10 @@ _GL_EXTERN_C void _gl_unregister_fd (int fd);
|
||
_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
|
||
_GL_EXTERN_C const char *_gl_directory_name (int fd);
|
||
|
||
+# else
|
||
+# if !@HAVE_DECL_FCHDIR@
|
||
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
|
||
+# endif
|
||
# endif
|
||
_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
|
||
_GL_CXXALIASWARN (fchdir);
|
||
@@ -467,11 +514,30 @@ _GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
|
||
#endif
|
||
|
||
|
||
-#if @GNULIB_FSYNC@
|
||
+#if @GNULIB_FDATASYNC@
|
||
/* Synchronize changes to a file.
|
||
Return 0 if successful, otherwise -1 and errno set.
|
||
- See POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/fsync.html>. */
|
||
+ See POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>. */
|
||
+# if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@
|
||
+_GL_FUNCDECL_SYS (fdatasync, int, (int fd));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (fdatasync, int, (int fd));
|
||
+_GL_CXXALIASWARN (fdatasync);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef fdatasync
|
||
+# if HAVE_RAW_DECL_FDATASYNC
|
||
+_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - "
|
||
+ "use gnulib module fdatasync for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+#if @GNULIB_FSYNC@
|
||
+/* Synchronize changes, including metadata, to a file.
|
||
+ Return 0 if successful, otherwise -1 and errno set.
|
||
+ See POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>. */
|
||
# if !@HAVE_FSYNC@
|
||
_GL_FUNCDECL_SYS (fsync, int, (int fd));
|
||
# endif
|
||
@@ -489,12 +555,21 @@ _GL_WARN_ON_USE (fsync, "fsync is unportable - "
|
||
#if @GNULIB_FTRUNCATE@
|
||
/* Change the size of the file to which FD is opened to become equal to LENGTH.
|
||
Return 0 if successful, otherwise -1 and errno set.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/ftruncate.html>. */
|
||
-# if !@HAVE_FTRUNCATE@
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>. */
|
||
+# if @REPLACE_FTRUNCATE@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef ftruncate
|
||
+# define ftruncate rpl_ftruncate
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length));
|
||
+_GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length));
|
||
+# else
|
||
+# if !@HAVE_FTRUNCATE@
|
||
_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
|
||
-# endif
|
||
+# endif
|
||
_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
|
||
+# endif
|
||
_GL_CXXALIASWARN (ftruncate);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef ftruncate
|
||
@@ -510,8 +585,8 @@ _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
|
||
of BUF.
|
||
Return BUF if successful, or NULL if the directory couldn't be determined
|
||
or SIZE was too small.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/getcwd.html>.
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
|
||
Additionally, the gnulib module 'getcwd' guarantees the following GNU
|
||
extension: If BUF is NULL, an array is allocated with 'malloc'; the array
|
||
is SIZE bytes long, unless SIZE == 0, in which case it is as big as
|
||
@@ -548,13 +623,21 @@ _GL_WARN_ON_USE (getcwd, "getcwd is unportable - "
|
||
Null terminate it if the name is shorter than LEN.
|
||
If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
|
||
Return 0 if successful, otherwise set errno and return -1. */
|
||
-# if !@HAVE_GETDOMAINNAME@
|
||
+# if @REPLACE_GETDOMAINNAME@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef getdomainname
|
||
+# define getdomainname rpl_getdomainname
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len)
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len));
|
||
+# else
|
||
+# if !@HAVE_DECL_GETDOMAINNAME@
|
||
_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len)
|
||
_GL_ARG_NONNULL ((1)));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len));
|
||
# endif
|
||
-/* Need to cast, because on MacOS X 10.5 systems, the second parameter is
|
||
- int len. */
|
||
-_GL_CXXALIAS_SYS_CAST (getdomainname, int, (char *name, size_t len));
|
||
_GL_CXXALIASWARN (getdomainname);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef getdomainname
|
||
@@ -632,7 +715,8 @@ _GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len));
|
||
_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len)
|
||
_GL_ARG_NONNULL ((1)));
|
||
# endif
|
||
-/* Need to cast, because on Solaris 10 systems, the second parameter is
|
||
+/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second
|
||
+ parameter is
|
||
int len. */
|
||
_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len));
|
||
# endif
|
||
@@ -689,13 +773,22 @@ _GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
|
||
${LOGNAME-$USER} on Unix platforms,
|
||
$USERNAME on native Windows platforms.
|
||
*/
|
||
-# if !@HAVE_DECL_GETLOGIN_R@
|
||
+# if @REPLACE_GETLOGIN_R@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define getlogin_r rpl_getlogin_r
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size)
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size));
|
||
+# else
|
||
+# if !@HAVE_DECL_GETLOGIN_R@
|
||
_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
|
||
_GL_ARG_NONNULL ((1)));
|
||
-# endif
|
||
+# endif
|
||
/* Need to cast, because on Solaris 10 systems, the second argument is
|
||
int size. */
|
||
_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size));
|
||
+# endif
|
||
_GL_CXXALIASWARN (getlogin_r);
|
||
#elif defined GNULIB_POSIXCHECK
|
||
# undef getlogin_r
|
||
@@ -762,11 +855,14 @@ _GL_CXXALIAS_RPL (getpagesize, int, (void));
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define getpagesize() _gl_getpagesize ()
|
||
# else
|
||
-static inline int
|
||
+# if !GNULIB_defined_getpagesize_function
|
||
+_GL_UNISTD_INLINE int
|
||
getpagesize ()
|
||
{
|
||
return _gl_getpagesize ();
|
||
}
|
||
+# define GNULIB_defined_getpagesize_function 1
|
||
+# endif
|
||
# endif
|
||
# endif
|
||
# endif
|
||
@@ -833,12 +929,49 @@ _GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
|
||
#endif
|
||
|
||
|
||
+#if @GNULIB_GROUP_MEMBER@
|
||
+/* Determine whether group id is in calling user's group list. */
|
||
+# if !@HAVE_GROUP_MEMBER@
|
||
+_GL_FUNCDECL_SYS (group_member, int, (gid_t gid));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (group_member, int, (gid_t gid));
|
||
+_GL_CXXALIASWARN (group_member);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef group_member
|
||
+# if HAVE_RAW_DECL_GROUP_MEMBER
|
||
+_GL_WARN_ON_USE (group_member, "group_member is unportable - "
|
||
+ "use gnulib module group-member for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+#if @GNULIB_ISATTY@
|
||
+# if @REPLACE_ISATTY@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef isatty
|
||
+# define isatty rpl_isatty
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (isatty, int, (int fd));
|
||
+_GL_CXXALIAS_RPL (isatty, int, (int fd));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (isatty, int, (int fd));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (isatty);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef isatty
|
||
+# if HAVE_RAW_DECL_ISATTY
|
||
+_GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - "
|
||
+ "use gnulib module isatty for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
#if @GNULIB_LCHOWN@
|
||
/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
|
||
to GID (if GID is not -1). Do not follow symbolic links.
|
||
Return 0 if successful, otherwise -1 and errno set.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/lchown.html>. */
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>. */
|
||
# if @REPLACE_LCHOWN@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef lchown
|
||
@@ -867,8 +1000,8 @@ _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
|
||
#if @GNULIB_LINK@
|
||
/* Create a new hard link for an existing file.
|
||
Return 0 if successful, otherwise -1 and errno set.
|
||
- See POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/link.html>. */
|
||
+ See POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>. */
|
||
# if @REPLACE_LINK@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define link rpl_link
|
||
@@ -933,8 +1066,8 @@ _GL_WARN_ON_USE (linkat, "linkat is unportable - "
|
||
#if @GNULIB_LSEEK@
|
||
/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
|
||
Return the new offset if successful, otherwise -1 and errno set.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/lseek.html>. */
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>. */
|
||
# if @REPLACE_LSEEK@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define lseek rpl_lseek
|
||
@@ -954,6 +1087,24 @@ _GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
|
||
#endif
|
||
|
||
|
||
+#if @GNULIB_PIPE@
|
||
+/* Create a pipe, defaulting to O_BINARY mode.
|
||
+ Store the read-end as fd[0] and the write-end as fd[1].
|
||
+ Return 0 upon success, or -1 with errno set upon failure. */
|
||
+# if !@HAVE_PIPE@
|
||
+_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1)));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (pipe, int, (int fd[2]));
|
||
+_GL_CXXALIASWARN (pipe);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef pipe
|
||
+# if HAVE_RAW_DECL_PIPE
|
||
+_GL_WARN_ON_USE (pipe, "pipe is unportable - "
|
||
+ "use gnulib module pipe-posix for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
#if @GNULIB_PIPE2@
|
||
/* Create a pipe, applying the given flags when opening the read-end of the
|
||
pipe and the write-end of the pipe.
|
||
@@ -986,10 +1137,12 @@ _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
|
||
#if @GNULIB_PREAD@
|
||
/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
|
||
Return the number of bytes placed into BUF if successful, otherwise
|
||
- set errno and return -1. 0 indicates EOF. See the POSIX:2001
|
||
- specification <http://www.opengroup.org/susv3xsh/pread.html>. */
|
||
+ set errno and return -1. 0 indicates EOF.
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>. */
|
||
# if @REPLACE_PREAD@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef pread
|
||
# define pread rpl_pread
|
||
# endif
|
||
_GL_FUNCDECL_RPL (pread, ssize_t,
|
||
@@ -1020,10 +1173,11 @@ _GL_WARN_ON_USE (pread, "pread is unportable - "
|
||
/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
|
||
Return the number of bytes written if successful, otherwise
|
||
set errno and return -1. 0 indicates nothing written. See the
|
||
- POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/pwrite.html>. */
|
||
+ POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>. */
|
||
# if @REPLACE_PWRITE@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef pwrite
|
||
# define pwrite rpl_pwrite
|
||
# endif
|
||
_GL_FUNCDECL_RPL (pwrite, ssize_t,
|
||
@@ -1050,12 +1204,34 @@ _GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
|
||
#endif
|
||
|
||
|
||
+#if @GNULIB_READ@
|
||
+/* Read up to COUNT bytes from file descriptor FD into the buffer starting
|
||
+ at BUF. See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>. */
|
||
+# if @REPLACE_READ@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef read
|
||
+# define read rpl_read
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count)
|
||
+ _GL_ARG_NONNULL ((2)));
|
||
+_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count));
|
||
+# else
|
||
+/* Need to cast, because on mingw, the third parameter is
|
||
+ unsigned int count
|
||
+ and the return type is 'int'. */
|
||
+_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (read);
|
||
+#endif
|
||
+
|
||
+
|
||
#if @GNULIB_READLINK@
|
||
/* Read the contents of the symbolic link FILE and place the first BUFSIZE
|
||
bytes of it into BUF. Return the number of bytes placed into BUF if
|
||
successful, otherwise -1 and errno set.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/readlink.html>. */
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>. */
|
||
# if @REPLACE_READLINK@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# define readlink rpl_readlink
|
||
@@ -1123,11 +1299,38 @@ _GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
|
||
#endif
|
||
|
||
|
||
+#if @GNULIB_SETHOSTNAME@
|
||
+/* Set the host name of the machine.
|
||
+ The host name may or may not be fully qualified.
|
||
+
|
||
+ Put LEN bytes of NAME into the host name.
|
||
+ Return 0 if successful, otherwise, set errno and return -1.
|
||
+
|
||
+ Platforms with no ability to set the hostname return -1 and set
|
||
+ errno = ENOSYS. */
|
||
+# if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@
|
||
+_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len)
|
||
+ _GL_ARG_NONNULL ((1)));
|
||
+# endif
|
||
+/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5
|
||
+ and FreeBSD 6.4 the second parameter is int. On Solaris 11
|
||
+ 2011-10, the first parameter is not const. */
|
||
+_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len));
|
||
+_GL_CXXALIASWARN (sethostname);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef sethostname
|
||
+# if HAVE_RAW_DECL_SETHOSTNAME
|
||
+_GL_WARN_ON_USE (sethostname, "sethostname is unportable - "
|
||
+ "use gnulib module sethostname for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
#if @GNULIB_SLEEP@
|
||
/* Pause the execution of the current thread for N seconds.
|
||
Returns the number of seconds left to sleep.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/sleep.html>. */
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>. */
|
||
# if @REPLACE_SLEEP@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef sleep
|
||
@@ -1208,7 +1411,7 @@ _GL_FUNCDECL_RPL (ttyname_r, int,
|
||
_GL_CXXALIAS_RPL (ttyname_r, int,
|
||
(int fd, char *buf, size_t buflen));
|
||
# else
|
||
-# if !@HAVE_TTYNAME_R@
|
||
+# if !@HAVE_DECL_TTYNAME_R@
|
||
_GL_FUNCDECL_SYS (ttyname_r, int,
|
||
(int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
|
||
# endif
|
||
@@ -1276,7 +1479,7 @@ _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
|
||
/* Pause the execution of the current thread for N microseconds.
|
||
Returns 0 on completion, or -1 on range error.
|
||
See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/sleep.html>. */
|
||
+ <http://www.opengroup.org/susv3xsh/usleep.html>. */
|
||
# if @REPLACE_USLEEP@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef usleep
|
||
@@ -1302,9 +1505,9 @@ _GL_WARN_ON_USE (usleep, "usleep is unportable - "
|
||
|
||
#if @GNULIB_WRITE@
|
||
/* Write up to COUNT bytes starting at BUF to file descriptor FD.
|
||
- See the POSIX:2001 specification
|
||
- <http://www.opengroup.org/susv3xsh/write.html>. */
|
||
-# if @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
|
||
+ See the POSIX:2008 specification
|
||
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>. */
|
||
+# if @REPLACE_WRITE@
|
||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
# undef write
|
||
# define write rpl_write
|
||
@@ -1321,6 +1524,7 @@ _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
|
||
_GL_CXXALIASWARN (write);
|
||
#endif
|
||
|
||
+_GL_INLINE_HEADER_END
|
||
|
||
-#endif /* _GL_UNISTD_H */
|
||
-#endif /* _GL_UNISTD_H */
|
||
+#endif /* _@GUARD_PREFIX@_UNISTD_H */
|
||
+#endif /* _@GUARD_PREFIX@_UNISTD_H */
|
||
diff --git a/grub-core/gnulib/unitypes.in.h b/grub-core/gnulib/unitypes.in.h
|
||
new file mode 100644
|
||
index 0000000..06eef05
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/unitypes.in.h
|
||
@@ -0,0 +1,46 @@
|
||
+/* Elementary types and macros for the GNU UniString library.
|
||
+ Copyright (C) 2002, 2005-2006, 2009-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify it
|
||
+ under the terms of the GNU General Public License as published
|
||
+ by the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#ifndef _UNITYPES_H
|
||
+#define _UNITYPES_H
|
||
+
|
||
+/* Get uint8_t, uint16_t, uint32_t. */
|
||
+#include <stdint.h>
|
||
+
|
||
+/* Type representing a Unicode character. */
|
||
+typedef uint32_t ucs4_t;
|
||
+
|
||
+/* Attribute of a function whose result depends only on the arguments
|
||
+ (not pointers!) and which has no side effects. */
|
||
+#ifndef _UC_ATTRIBUTE_CONST
|
||
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
|
||
+# define _UC_ATTRIBUTE_CONST __attribute__ ((__const__))
|
||
+# else
|
||
+# define _UC_ATTRIBUTE_CONST
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+/* Attribute of a function whose result depends only on the arguments
|
||
+ (possibly pointers) and global memory, and which has no side effects. */
|
||
+#ifndef _UC_ATTRIBUTE_PURE
|
||
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||
+# define _UC_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
||
+# else
|
||
+# define _UC_ATTRIBUTE_PURE
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#endif /* _UNITYPES_H */
|
||
diff --git a/grub-core/gnulib/uniwidth.in.h b/grub-core/gnulib/uniwidth.in.h
|
||
new file mode 100644
|
||
index 0000000..8931cc9
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/uniwidth.in.h
|
||
@@ -0,0 +1,72 @@
|
||
+/* Display width functions.
|
||
+ Copyright (C) 2001-2002, 2005, 2007, 2009-2013 Free Software Foundation,
|
||
+ Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify it
|
||
+ under the terms of the GNU General Public License as published
|
||
+ by the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#ifndef _UNIWIDTH_H
|
||
+#define _UNIWIDTH_H
|
||
+
|
||
+#include "unitypes.h"
|
||
+
|
||
+/* Get size_t. */
|
||
+#include <stddef.h>
|
||
+
|
||
+/* Get locale_charset() declaration. */
|
||
+#include "localcharset.h"
|
||
+
|
||
+#ifdef __cplusplus
|
||
+extern "C" {
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Display width. */
|
||
+
|
||
+/* These functions are locale dependent. The encoding argument identifies
|
||
+ the encoding (e.g. "ISO-8859-2" for Polish). */
|
||
+
|
||
+/* Determine number of column positions required for UC. */
|
||
+extern int
|
||
+ uc_width (ucs4_t uc, const char *encoding)
|
||
+ _UC_ATTRIBUTE_PURE;
|
||
+
|
||
+/* Determine number of column positions required for first N units
|
||
+ (or fewer if S ends before this) in S. */
|
||
+extern int
|
||
+ u8_width (const uint8_t *s, size_t n, const char *encoding)
|
||
+ _UC_ATTRIBUTE_PURE;
|
||
+extern int
|
||
+ u16_width (const uint16_t *s, size_t n, const char *encoding)
|
||
+ _UC_ATTRIBUTE_PURE;
|
||
+extern int
|
||
+ u32_width (const uint32_t *s, size_t n, const char *encoding)
|
||
+ _UC_ATTRIBUTE_PURE;
|
||
+
|
||
+/* Determine number of column positions required for S. */
|
||
+extern int
|
||
+ u8_strwidth (const uint8_t *s, const char *encoding)
|
||
+ _UC_ATTRIBUTE_PURE;
|
||
+extern int
|
||
+ u16_strwidth (const uint16_t *s, const char *encoding)
|
||
+ _UC_ATTRIBUTE_PURE;
|
||
+extern int
|
||
+ u32_strwidth (const uint32_t *s, const char *encoding)
|
||
+ _UC_ATTRIBUTE_PURE;
|
||
+
|
||
+
|
||
+#ifdef __cplusplus
|
||
+}
|
||
+#endif
|
||
+
|
||
+#endif /* _UNIWIDTH_H */
|
||
diff --git a/grub-core/gnulib/uniwidth/cjk.h b/grub-core/gnulib/uniwidth/cjk.h
|
||
new file mode 100644
|
||
index 0000000..11b14df
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/uniwidth/cjk.h
|
||
@@ -0,0 +1,37 @@
|
||
+/* Test for CJK encoding.
|
||
+ Copyright (C) 2001-2002, 2005-2007, 2009-2013 Free Software Foundation, Inc.
|
||
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify it
|
||
+ under the terms of the GNU General Public License as published
|
||
+ by the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include "streq.h"
|
||
+
|
||
+static int
|
||
+is_cjk_encoding (const char *encoding)
|
||
+{
|
||
+ if (0
|
||
+ /* Legacy Japanese encodings */
|
||
+ || STREQ_OPT (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0)
|
||
+ /* Legacy Chinese encodings */
|
||
+ || STREQ_OPT (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
|
||
+ || STREQ_OPT (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
|
||
+ || STREQ_OPT (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
|
||
+ || STREQ_OPT (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
|
||
+ /* Legacy Korean encodings */
|
||
+ || STREQ_OPT (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
|
||
+ || STREQ_OPT (encoding, "CP949", 'C', 'P', '9', '4', '9', 0, 0, 0, 0)
|
||
+ || STREQ_OPT (encoding, "JOHAB", 'J', 'O', 'H', 'A', 'B', 0, 0, 0, 0))
|
||
+ return 1;
|
||
+ return 0;
|
||
+}
|
||
diff --git a/grub-core/gnulib/uniwidth/width.c b/grub-core/gnulib/uniwidth/width.c
|
||
new file mode 100644
|
||
index 0000000..173d087
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/uniwidth/width.c
|
||
@@ -0,0 +1,368 @@
|
||
+/* Determine display width of Unicode character.
|
||
+ Copyright (C) 2001-2002, 2006-2013 Free Software Foundation, Inc.
|
||
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify it
|
||
+ under the terms of the GNU General Public License as published
|
||
+ by the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
+ General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+/* Specification. */
|
||
+#include "uniwidth.h"
|
||
+
|
||
+#include "cjk.h"
|
||
+
|
||
+/*
|
||
+ * Non-spacing attribute table.
|
||
+ * Consists of:
|
||
+ * - Non-spacing characters; generated from PropList.txt or
|
||
+ * "grep '^[^;]*;[^;]*;[^;]*;[^;]*;NSM;' UnicodeData.txt"
|
||
+ * - Format control characters; generated from
|
||
+ * "grep '^[^;]*;[^;]*;Cf;' UnicodeData.txt"
|
||
+ * - Zero width characters; generated from
|
||
+ * "grep '^[^;]*;ZERO WIDTH ' UnicodeData.txt"
|
||
+ */
|
||
+static const unsigned char nonspacing_table_data[27*64] = {
|
||
+ /* 0x0000-0x01ff */
|
||
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0000-0x003f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x0040-0x007f */
|
||
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x20, 0x00, 0x00, /* 0x0080-0x00bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00c0-0x00ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0100-0x013f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0140-0x017f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0180-0x01bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01c0-0x01ff */
|
||
+ /* 0x0200-0x03ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0200-0x023f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0240-0x027f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0280-0x02bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02c0-0x02ff */
|
||
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x0300-0x033f */
|
||
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, /* 0x0340-0x037f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0380-0x03bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x03c0-0x03ff */
|
||
+ /* 0x0400-0x05ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0400-0x043f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0440-0x047f */
|
||
+ 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0480-0x04bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x04c0-0x04ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0500-0x053f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0540-0x057f */
|
||
+ 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, /* 0x0580-0x05bf */
|
||
+ 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05c0-0x05ff */
|
||
+ /* 0x0600-0x07ff */
|
||
+ 0x0f, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
|
||
+ 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, /* 0x0640-0x067f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0680-0x06bf */
|
||
+ 0x00, 0x00, 0xc0, 0xbf, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
|
||
+ 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, /* 0x0700-0x073f */
|
||
+ 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0740-0x077f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, /* 0x0780-0x07bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x07c0-0x07ff */
|
||
+ /* 0x0800-0x09ff */
|
||
+ 0x00, 0x00, 0xc0, 0xfb, 0xef, 0x3e, 0x00, 0x00, /* 0x0800-0x083f */
|
||
+ 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08c0-0x08ff */
|
||
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, /* 0x0900-0x093f */
|
||
+ 0xfe, 0x21, 0xfe, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0940-0x097f */
|
||
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0980-0x09bf */
|
||
+ 0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x09c0-0x09ff */
|
||
+ /* 0x0a00-0x0bff */
|
||
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0a00-0x0a3f */
|
||
+ 0x86, 0x39, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, /* 0x0a40-0x0a7f */
|
||
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0a80-0x0abf */
|
||
+ 0xbe, 0x21, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0ac0-0x0aff */
|
||
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0x0b00-0x0b3f */
|
||
+ 0x1e, 0x20, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0b40-0x0b7f */
|
||
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0b80-0x0bbf */
|
||
+ 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0bc0-0x0bff */
|
||
+ /* 0x0c00-0x0dff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, /* 0x0c00-0x0c3f */
|
||
+ 0xc1, 0x3d, 0x60, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0c40-0x0c7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0c80-0x0cbf */
|
||
+ 0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0cc0-0x0cff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d00-0x0d3f */
|
||
+ 0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0d40-0x0d7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d80-0x0dbf */
|
||
+ 0x00, 0x04, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0dc0-0x0dff */
|
||
+ /* 0x0e00-0x0fff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x07, /* 0x0e00-0x0e3f */
|
||
+ 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0e40-0x0e7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x1b, /* 0x0e80-0x0ebf */
|
||
+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0ec0-0x0eff */
|
||
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xa0, 0x02, /* 0x0f00-0x0f3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, /* 0x0f40-0x0f7f */
|
||
+ 0xdf, 0xe0, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x1f, /* 0x0f80-0x0fbf */
|
||
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0fc0-0x0fff */
|
||
+ /* 0x1000-0x11ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfd, 0x66, /* 0x1000-0x103f */
|
||
+ 0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x1e, 0x00, /* 0x1040-0x107f */
|
||
+ 0x64, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, /* 0x1080-0x10bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10c0-0x10ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1100-0x113f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1140-0x117f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1180-0x11bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11c0-0x11ff */
|
||
+ /* 0x1200-0x13ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1200-0x123f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1240-0x127f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1280-0x12bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x12c0-0x12ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1300-0x133f */
|
||
+ 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, /* 0x1340-0x137f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1380-0x13bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13c0-0x13ff */
|
||
+ /* 0x1600-0x17ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1600-0x163f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1640-0x167f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1680-0x16bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16c0-0x16ff */
|
||
+ 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, /* 0x1700-0x173f */
|
||
+ 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, /* 0x1740-0x177f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x3f, /* 0x1780-0x17bf */
|
||
+ 0x40, 0xfe, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x00, /* 0x17c0-0x17ff */
|
||
+ /* 0x1800-0x19ff */
|
||
+ 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1800-0x183f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1840-0x187f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0x1880-0x18bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18c0-0x18ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x01, 0x04, 0x0e, /* 0x1900-0x193f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1940-0x197f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1980-0x19bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x19c0-0x19ff */
|
||
+ /* 0x1a00-0x1bff */
|
||
+ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0x1a00-0x1a3f */
|
||
+ 0x00, 0x00, 0x40, 0x7f, 0xe5, 0x1f, 0xf8, 0x9f, /* 0x1a40-0x1a7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a80-0x1abf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1ac0-0x1aff */
|
||
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x17, /* 0x1b00-0x1b3f */
|
||
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x1b40-0x1b7f */
|
||
+ 0x03, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x00, /* 0x1b80-0x1bbf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0xa3, 0x03, 0x00, /* 0x1bc0-0x1bff */
|
||
+ /* 0x1c00-0x1dff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0x00, /* 0x1c00-0x1c3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c40-0x1c7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c80-0x1cbf */
|
||
+ 0x00, 0x00, 0xf7, 0xff, 0xfd, 0x21, 0x00, 0x00, /* 0x1cc0-0x1cff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d00-0x1d3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d40-0x1d7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d80-0x1dbf */
|
||
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, /* 0x1dc0-0x1dff */
|
||
+ /* 0x2000-0x21ff */
|
||
+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, /* 0x2000-0x203f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, /* 0x2040-0x207f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2080-0x20bf */
|
||
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, /* 0x20c0-0x20ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2100-0x213f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2140-0x217f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2180-0x21bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x21c0-0x21ff */
|
||
+ /* 0x2c00-0x2dff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c00-0x2c3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c40-0x2c7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c80-0x2cbf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, /* 0x2cc0-0x2cff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d00-0x2d3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x2d40-0x2d7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d80-0x2dbf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, /* 0x2dc0-0x2dff */
|
||
+ /* 0x3000-0x31ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, /* 0x3000-0x303f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3040-0x307f */
|
||
+ 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, /* 0x3080-0x30bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30c0-0x30ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3100-0x313f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3140-0x317f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3180-0x31bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x31c0-0x31ff */
|
||
+ /* 0xa600-0xa7ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa600-0xa63f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x30, /* 0xa640-0xa67f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa680-0xa6bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0xa6c0-0xa6ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa700-0xa73f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa740-0xa77f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa780-0xa7bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa7c0-0xa7ff */
|
||
+ /* 0xa800-0xa9ff */
|
||
+ 0x44, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, /* 0xa800-0xa83f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa840-0xa87f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa880-0xa8bf */
|
||
+ 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, /* 0xa8c0-0xa8ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, /* 0xa900-0xa93f */
|
||
+ 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa940-0xa97f */
|
||
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x13, /* 0xa980-0xa9bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa9c0-0xa9ff */
|
||
+ /* 0xaa00-0xabff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x66, 0x00, /* 0xaa00-0xaa3f */
|
||
+ 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaa40-0xaa7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xc1, /* 0xaa80-0xaabf */
|
||
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaac0-0xaaff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab00-0xab3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab40-0xab7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab80-0xabbf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00, /* 0xabc0-0xabff */
|
||
+ /* 0xfa00-0xfbff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa00-0xfa3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa40-0xfa7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa80-0xfabf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfac0-0xfaff */
|
||
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, /* 0xfb00-0xfb3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb40-0xfb7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb80-0xfbbf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfbc0-0xfbff */
|
||
+ /* 0xfe00-0xffff */
|
||
+ 0xff, 0xff, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, /* 0xfe00-0xfe3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe40-0xfe7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe80-0xfebf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0xfec0-0xfeff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff00-0xff3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff40-0xff7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff80-0xffbf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, /* 0xffc0-0xffff */
|
||
+ /* 0x10000-0x101ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10000-0x1003f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10040-0x1007f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10080-0x100bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x100c0-0x100ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10100-0x1013f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10140-0x1017f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10180-0x101bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, /* 0x101c0-0x101ff */
|
||
+ /* 0x10a00-0x10bff */
|
||
+ 0x6e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, /* 0x10a00-0x10a3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a40-0x10a7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a80-0x10abf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10ac0-0x10aff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b00-0x10b3f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b40-0x10b7f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b80-0x10bbf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10bc0-0x10bff */
|
||
+ /* 0x11000-0x111ff */
|
||
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, /* 0x11000-0x1103f */
|
||
+ 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11040-0x1107f */
|
||
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26, /* 0x11080-0x110bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x110c0-0x110ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11100-0x1113f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11140-0x1117f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11180-0x111bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x111c0-0x111ff */
|
||
+ /* 0x1d000-0x1d1ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d000-0x1d03f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d040-0x1d07f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d080-0x1d0bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d0c0-0x1d0ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d100-0x1d13f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xf8, 0xff, /* 0x1d140-0x1d17f */
|
||
+ 0xe7, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, /* 0x1d180-0x1d1bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d1c0-0x1d1ff */
|
||
+ /* 0x1d200-0x1d3ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d200-0x1d23f */
|
||
+ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d240-0x1d27f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d280-0x1d2bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d2c0-0x1d2ff */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d300-0x1d33f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d340-0x1d37f */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d380-0x1d3bf */
|
||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* 0x1d3c0-0x1d3ff */
|
||
+};
|
||
+static const signed char nonspacing_table_ind[240] = {
|
||
+ 0, 1, 2, 3, 4, 5, 6, 7, /* 0x0000-0x0fff */
|
||
+ 8, 9, -1, 10, 11, 12, 13, -1, /* 0x1000-0x1fff */
|
||
+ 14, -1, -1, -1, -1, -1, 15, -1, /* 0x2000-0x2fff */
|
||
+ 16, -1, -1, -1, -1, -1, -1, -1, /* 0x3000-0x3fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x4000-0x4fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x5000-0x5fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x6000-0x6fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x7000-0x7fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x8000-0x8fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x9000-0x9fff */
|
||
+ -1, -1, -1, 17, 18, 19, -1, -1, /* 0xa000-0xafff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb000-0xbfff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc000-0xcfff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd000-0xdfff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xe000-0xefff */
|
||
+ -1, -1, -1, -1, -1, 20, -1, 21, /* 0xf000-0xffff */
|
||
+ 22, -1, -1, -1, -1, 23, -1, -1, /* 0x10000-0x10fff */
|
||
+ 24, -1, -1, -1, -1, -1, -1, -1, /* 0x11000-0x11fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x12000-0x12fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x13000-0x13fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x14000-0x14fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x15000-0x15fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x16000-0x16fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x17000-0x17fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x18000-0x18fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x19000-0x19fff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1a000-0x1afff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1b000-0x1bfff */
|
||
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1c000-0x1cfff */
|
||
+ 25, 26, -1, -1, -1, -1, -1, -1 /* 0x1d000-0x1dfff */
|
||
+};
|
||
+
|
||
+/* Determine number of column positions required for UC. */
|
||
+int
|
||
+uc_width (ucs4_t uc, const char *encoding)
|
||
+{
|
||
+ /* Test for non-spacing or control character. */
|
||
+ if ((uc >> 9) < 240)
|
||
+ {
|
||
+ int ind = nonspacing_table_ind[uc >> 9];
|
||
+ if (ind >= 0)
|
||
+ if ((nonspacing_table_data[64*ind + ((uc >> 3) & 63)] >> (uc & 7)) & 1)
|
||
+ {
|
||
+ if (uc > 0 && uc < 0xa0)
|
||
+ return -1;
|
||
+ else
|
||
+ return 0;
|
||
+ }
|
||
+ }
|
||
+ else if ((uc >> 9) == (0xe0000 >> 9))
|
||
+ {
|
||
+ if (uc >= 0xe0100)
|
||
+ {
|
||
+ if (uc <= 0xe01ef)
|
||
+ return 0;
|
||
+ }
|
||
+ else
|
||
+ {
|
||
+ if (uc >= 0xe0020 ? uc <= 0xe007f : uc == 0xe0001)
|
||
+ return 0;
|
||
+ }
|
||
+ }
|
||
+ /* Test for double-width character.
|
||
+ * Generated from "grep '^[^;]\{4,5\};[WF]' EastAsianWidth.txt"
|
||
+ * and "grep '^[^;]\{4,5\};[^WF]' EastAsianWidth.txt"
|
||
+ */
|
||
+ if (uc >= 0x1100
|
||
+ && ((uc < 0x1160) /* Hangul Jamo */
|
||
+ || (uc >= 0x2329 && uc < 0x232b) /* Angle Brackets */
|
||
+ || (uc >= 0x2e80 && uc < 0xa4d0 /* CJK ... Yi */
|
||
+ && !(uc == 0x303f) && !(uc >= 0x4dc0 && uc < 0x4e00))
|
||
+ || (uc >= 0xac00 && uc < 0xd7a4) /* Hangul Syllables */
|
||
+ || (uc >= 0xf900 && uc < 0xfb00) /* CJK Compatibility Ideographs */
|
||
+ || (uc >= 0xfe10 && uc < 0xfe20) /* Presentation Forms for Vertical */
|
||
+ || (uc >= 0xfe30 && uc < 0xfe70) /* CJK Compatibility Forms */
|
||
+ || (uc >= 0xff00 && uc < 0xff61) /* Fullwidth Forms */
|
||
+ || (uc >= 0xffe0 && uc < 0xffe7) /* Fullwidth Signs */
|
||
+ || (uc >= 0x20000 && uc <= 0x2ffff) /* Supplementary Ideographic Plane */
|
||
+ || (uc >= 0x30000 && uc <= 0x3ffff) /* Tertiary Ideographic Plane */
|
||
+ ) )
|
||
+ return 2;
|
||
+ /* In ancient CJK encodings, Cyrillic and most other characters are
|
||
+ double-width as well. */
|
||
+ if (uc >= 0x00A1 && uc < 0xFF61 && uc != 0x20A9
|
||
+ && is_cjk_encoding (encoding))
|
||
+ return 2;
|
||
+ return 1;
|
||
+}
|
||
diff --git a/grub-core/gnulib/vasnprintf.c b/grub-core/gnulib/vasnprintf.c
|
||
index e618901..8fdab32 100644
|
||
--- a/grub-core/gnulib/vasnprintf.c
|
||
+++ b/grub-core/gnulib/vasnprintf.c
|
||
@@ -1,5 +1,5 @@
|
||
/* vsprintf with automatic memory allocation.
|
||
- Copyright (C) 1999, 2002-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 1999, 2002-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* This file can be parametrized with the following macros:
|
||
VASNPRINTF The name of the function being defined.
|
||
@@ -88,6 +87,8 @@
|
||
/* Checked size_t computations. */
|
||
#include "xsize.h"
|
||
|
||
+#include "verify.h"
|
||
+
|
||
#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
|
||
# include <math.h>
|
||
# include "float+.h"
|
||
@@ -274,10 +275,10 @@ decimal_point_char (void)
|
||
{
|
||
const char *point;
|
||
/* Determine it in a multithread-safe way. We know nl_langinfo is
|
||
- multithread-safe on glibc systems and MacOS X systems, but is not required
|
||
+ multithread-safe on glibc systems and Mac OS X systems, but is not required
|
||
to be multithread-safe by POSIX. sprintf(), however, is multithread-safe.
|
||
localeconv() is rarely multithread-safe. */
|
||
-# if HAVE_NL_LANGINFO && (__GLIBC__ || (defined __APPLE__ && defined __MACH__))
|
||
+# if HAVE_NL_LANGINFO && (__GLIBC__ || defined __UCLIBC__ || (defined __APPLE__ && defined __MACH__))
|
||
point = nl_langinfo (RADIXCHAR);
|
||
# elif 1
|
||
char pointbuf[5];
|
||
@@ -322,11 +323,11 @@ is_infinite_or_zerol (long double x)
|
||
|
||
typedef unsigned int mp_limb_t;
|
||
# define GMP_LIMB_BITS 32
|
||
-typedef int mp_limb_verify[2 * (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS) - 1];
|
||
+verify (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS);
|
||
|
||
typedef unsigned long long mp_twolimb_t;
|
||
# define GMP_TWOLIMB_BITS 64
|
||
-typedef int mp_twolimb_verify[2 * (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS) - 1];
|
||
+verify (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS);
|
||
|
||
/* Representation of a bignum >= 0. */
|
||
typedef struct
|
||
@@ -551,32 +552,61 @@ divide (mpn_t a, mpn_t b, mpn_t *q)
|
||
size_t s;
|
||
{
|
||
mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */
|
||
- s = 31;
|
||
- if (msd >= 0x10000)
|
||
- {
|
||
- msd = msd >> 16;
|
||
- s -= 16;
|
||
- }
|
||
- if (msd >= 0x100)
|
||
- {
|
||
- msd = msd >> 8;
|
||
- s -= 8;
|
||
- }
|
||
- if (msd >= 0x10)
|
||
- {
|
||
- msd = msd >> 4;
|
||
- s -= 4;
|
||
- }
|
||
- if (msd >= 0x4)
|
||
+ /* Determine s = GMP_LIMB_BITS - integer_length (msd).
|
||
+ Code copied from gnulib's integer_length.c. */
|
||
+# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
||
+ s = __builtin_clz (msd);
|
||
+# else
|
||
+# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
|
||
+ if (GMP_LIMB_BITS <= DBL_MANT_BIT)
|
||
{
|
||
- msd = msd >> 2;
|
||
- s -= 2;
|
||
+ /* Use 'double' operations.
|
||
+ Assumes an IEEE 754 'double' implementation. */
|
||
+# define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
|
||
+# define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1)
|
||
+# define NWORDS \
|
||
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||
+ union { double value; unsigned int word[NWORDS]; } m;
|
||
+
|
||
+ /* Use a single integer to floating-point conversion. */
|
||
+ m.value = msd;
|
||
+
|
||
+ s = GMP_LIMB_BITS
|
||
+ - (((m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & DBL_EXP_MASK)
|
||
+ - DBL_EXP_BIAS);
|
||
}
|
||
- if (msd >= 0x2)
|
||
+ else
|
||
+# undef NWORDS
|
||
+# endif
|
||
{
|
||
- msd = msd >> 1;
|
||
- s -= 1;
|
||
+ s = 31;
|
||
+ if (msd >= 0x10000)
|
||
+ {
|
||
+ msd = msd >> 16;
|
||
+ s -= 16;
|
||
+ }
|
||
+ if (msd >= 0x100)
|
||
+ {
|
||
+ msd = msd >> 8;
|
||
+ s -= 8;
|
||
+ }
|
||
+ if (msd >= 0x10)
|
||
+ {
|
||
+ msd = msd >> 4;
|
||
+ s -= 4;
|
||
+ }
|
||
+ if (msd >= 0x4)
|
||
+ {
|
||
+ msd = msd >> 2;
|
||
+ s -= 2;
|
||
+ }
|
||
+ if (msd >= 0x2)
|
||
+ {
|
||
+ msd = msd >> 1;
|
||
+ s -= 1;
|
||
+ }
|
||
}
|
||
+# endif
|
||
}
|
||
/* 0 <= s < GMP_LIMB_BITS.
|
||
Copy b, shifting it left by s bits. */
|
||
@@ -883,9 +913,9 @@ decode_long_double (long double x, int *ep, mpn_t *mp)
|
||
y = frexpl (x, &exp);
|
||
if (!(y >= 0.0L && y < 1.0L))
|
||
abort ();
|
||
- /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * LDBL_MANT_BIT), and the
|
||
+ /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the
|
||
latter is an integer. */
|
||
- /* Convert the mantissa (y * LDBL_MANT_BIT) to a sequence of limbs.
|
||
+ /* Convert the mantissa (y * 2^LDBL_MANT_BIT) to a sequence of limbs.
|
||
I'm not sure whether it's safe to cast a 'long double' value between
|
||
2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
|
||
'long double' values between 0 and 2^16 (to 'unsigned int' or 'int',
|
||
@@ -933,11 +963,11 @@ decode_long_double (long double x, int *ep, mpn_t *mp)
|
||
abort ();
|
||
m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
|
||
}
|
||
-#if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess
|
||
- precision. */
|
||
+# if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess
|
||
+ precision. */
|
||
if (!(y == 0.0L))
|
||
abort ();
|
||
-#endif
|
||
+# endif
|
||
/* Normalise. */
|
||
while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
|
||
m.nlimbs--;
|
||
@@ -971,9 +1001,9 @@ decode_double (double x, int *ep, mpn_t *mp)
|
||
y = frexp (x, &exp);
|
||
if (!(y >= 0.0 && y < 1.0))
|
||
abort ();
|
||
- /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * DBL_MANT_BIT), and the
|
||
+ /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the
|
||
latter is an integer. */
|
||
- /* Convert the mantissa (y * DBL_MANT_BIT) to a sequence of limbs.
|
||
+ /* Convert the mantissa (y * 2^DBL_MANT_BIT) to a sequence of limbs.
|
||
I'm not sure whether it's safe to cast a 'double' value between
|
||
2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
|
||
'double' values between 0 and 2^16 (to 'unsigned int' or 'int',
|
||
@@ -1500,7 +1530,7 @@ is_borderline (const char *digits, size_t precision)
|
||
|
||
/* Returns the number of TCHAR_T units needed as temporary space for the result
|
||
of sprintf or SNPRINTF of a single conversion directive. */
|
||
-static inline size_t
|
||
+static size_t
|
||
MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion,
|
||
arg_type type, int flags, size_t width, int has_precision,
|
||
size_t precision, int pad_ourselves)
|
||
@@ -1751,8 +1781,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
return NULL;
|
||
|
||
#define CLEANUP() \
|
||
- free (d.dir); \
|
||
- if (a.arg) \
|
||
+ if (d.dir != d.direct_alloc_dir) \
|
||
+ free (d.dir); \
|
||
+ if (a.arg != a.direct_alloc_arg) \
|
||
free (a.arg);
|
||
|
||
if (PRINTF_FETCHARGS (args, &a) < 0)
|
||
@@ -2621,7 +2652,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
size_t characters;
|
||
# if !DCHAR_IS_TCHAR
|
||
/* This code assumes that TCHAR_T is 'char'. */
|
||
- typedef int TCHAR_T_verify[2 * (sizeof (TCHAR_T) == 1) - 1];
|
||
+ verify (sizeof (TCHAR_T) == 1);
|
||
TCHAR_T *tmpsrc;
|
||
DCHAR_T *tmpdst;
|
||
size_t tmpdst_len;
|
||
@@ -2782,7 +2813,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
if (has_width)
|
||
{
|
||
# if ENABLE_UNISTDIO
|
||
- /* Outside POSIX, it's preferrable to compare the width
|
||
+ /* Outside POSIX, it's preferable to compare the width
|
||
against the number of _characters_ of the converted
|
||
value. */
|
||
w = DCHAR_MBSNLEN (result + length, characters);
|
||
@@ -4597,6 +4628,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
TCHAR_T *fbp;
|
||
unsigned int prefix_count;
|
||
int prefixes[2] IF_LINT (= { 0 });
|
||
+ int orig_errno;
|
||
#if !USE_SNPRINTF
|
||
size_t tmp_length;
|
||
TCHAR_T tmpbuf[700];
|
||
@@ -4751,6 +4783,10 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
*fbp++ = ' ';
|
||
if (flags & FLAG_ALT)
|
||
*fbp++ = '#';
|
||
+#if __GLIBC__ >= 2 && !defined __UCLIBC__
|
||
+ if (flags & FLAG_LOCALIZED)
|
||
+ *fbp++ = 'I';
|
||
+#endif
|
||
if (!pad_ourselves)
|
||
{
|
||
if (flags & FLAG_ZERO)
|
||
@@ -4834,20 +4870,21 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
#endif
|
||
*fbp = dp->conversion;
|
||
#if USE_SNPRINTF
|
||
-# if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
|
||
+# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
|
||
fbp[1] = '%';
|
||
fbp[2] = 'n';
|
||
fbp[3] = '\0';
|
||
# else
|
||
/* On glibc2 systems from glibc >= 2.3 - probably also older
|
||
- ones - we know that snprintf's returns value conforms to
|
||
- ISO C 99: the gl_SNPRINTF_DIRECTIVE_N test passes.
|
||
+ ones - we know that snprintf's return value conforms to
|
||
+ ISO C 99: the tests gl_SNPRINTF_RETVAL_C99 and
|
||
+ gl_SNPRINTF_TRUNCATION_C99 pass.
|
||
Therefore we can avoid using %n in this situation.
|
||
On glibc2 systems from 2004-10-18 or newer, the use of %n
|
||
in format strings in writable memory may crash the program
|
||
(if compiled with _FORTIFY_SOURCE=2), so we should avoid it
|
||
in this situation. */
|
||
- /* On native Win32 systems (such as mingw), we can avoid using
|
||
+ /* On native Windows systems (such as mingw), we can avoid using
|
||
%n because:
|
||
- Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
|
||
snprintf does not write more than the specified number
|
||
@@ -4856,7 +4893,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
- Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf
|
||
allows us to recognize the case of an insufficient
|
||
buffer size: it returns -1 in this case.
|
||
- On native Win32 systems (such as mingw) where the OS is
|
||
+ On native Windows systems (such as mingw) where the OS is
|
||
Windows Vista, the use of %n in format strings by default
|
||
crashes the program. See
|
||
<http://gcc.gnu.org/ml/gcc/2007-06/msg00122.html> and
|
||
@@ -4900,6 +4937,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
*(TCHAR_T *) (result + length) = '\0';
|
||
#endif
|
||
|
||
+ orig_errno = errno;
|
||
+
|
||
for (;;)
|
||
{
|
||
int count = -1;
|
||
@@ -5284,8 +5323,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
DCHAR_T *tmpdst;
|
||
size_t tmpdst_len;
|
||
/* This code assumes that TCHAR_T is 'char'. */
|
||
- typedef int TCHAR_T_verify
|
||
- [2 * (sizeof (TCHAR_T) == 1) - 1];
|
||
+ verify (sizeof (TCHAR_T) == 1);
|
||
# if USE_SNPRINTF
|
||
tmpsrc = (TCHAR_T *) (result + length);
|
||
# else
|
||
@@ -5378,7 +5416,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
{
|
||
size_t w;
|
||
# if ENABLE_UNISTDIO
|
||
- /* Outside POSIX, it's preferrable to compare the width
|
||
+ /* Outside POSIX, it's preferable to compare the width
|
||
against the number of _characters_ of the converted
|
||
value. */
|
||
w = DCHAR_MBSNLEN (result + length, count);
|
||
@@ -5498,6 +5536,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||
length += count;
|
||
break;
|
||
}
|
||
+ errno = orig_errno;
|
||
#undef pad_ourselves
|
||
#undef prec_ourselves
|
||
}
|
||
diff --git a/grub-core/gnulib/vasnprintf.h b/grub-core/gnulib/vasnprintf.h
|
||
index a689bad..7658f50 100644
|
||
--- a/grub-core/gnulib/vasnprintf.h
|
||
+++ b/grub-core/gnulib/vasnprintf.h
|
||
@@ -1,5 +1,5 @@
|
||
/* vsprintf with automatic memory allocation.
|
||
- Copyright (C) 2002-2004, 2007-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2002-2004, 2007-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -12,8 +12,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _VASNPRINTF_H
|
||
#define _VASNPRINTF_H
|
||
@@ -24,16 +23,16 @@
|
||
/* Get size_t. */
|
||
#include <stddef.h>
|
||
|
||
-#ifndef __attribute__
|
||
/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
||
The __-protected variants of the attributes 'format' and 'printf' are
|
||
accepted by gcc versions 2.6.4 (effectively 2.7) and later.
|
||
- We enable __attribute__ only if these are supported too, because
|
||
+ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
|
||
gnulib and libintl do '#define printf __printf__' when they override
|
||
the 'printf' function. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
|
||
#endif
|
||
|
||
#ifdef __cplusplus
|
||
@@ -69,9 +68,9 @@ extern "C" {
|
||
# define vasnprintf rpl_vasnprintf
|
||
#endif
|
||
extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
|
||
- __attribute__ ((__format__ (__printf__, 3, 4)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4));
|
||
extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
|
||
- __attribute__ ((__format__ (__printf__, 3, 0)));
|
||
+ _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 0));
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
diff --git a/grub-core/gnulib/verify.h b/grub-core/gnulib/verify.h
|
||
index 4ad780c..cb8e90b 100644
|
||
--- a/grub-core/gnulib/verify.h
|
||
+++ b/grub-core/gnulib/verify.h
|
||
@@ -1,6 +1,6 @@
|
||
/* Compile-time assert-like macros.
|
||
|
||
- Copyright (C) 2005-2006, 2009-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2005-2006, 2009-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -17,21 +17,39 @@
|
||
|
||
/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */
|
||
|
||
-#ifndef VERIFY_H
|
||
-# define VERIFY_H 1
|
||
+#ifndef _GL_VERIFY_H
|
||
+# define _GL_VERIFY_H
|
||
+
|
||
+
|
||
+/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert works as per C11.
|
||
+ This is supported by GCC 4.6.0 and later, in C mode, and its use
|
||
+ here generates easier-to-read diagnostics when verify (R) fails.
|
||
+
|
||
+ Define _GL_HAVE_STATIC_ASSERT to 1 if static_assert works as per C++11.
|
||
+ This will likely be supported by future GCC versions, in C++ mode.
|
||
+
|
||
+ Use this only with GCC. If we were willing to slow 'configure'
|
||
+ down we could also use it with other compilers, but since this
|
||
+ affects only the quality of diagnostics, why bother? */
|
||
+# if (4 < __GNUC__ || (__GNUC__ == 4 && 6 <= __GNUC_MINOR__)) && !defined __cplusplus
|
||
+# define _GL_HAVE__STATIC_ASSERT 1
|
||
+# endif
|
||
+/* The condition (99 < __GNUC__) is temporary, until we know about the
|
||
+ first G++ release that supports static_assert. */
|
||
+# if (99 < __GNUC__) && defined __cplusplus
|
||
+# define _GL_HAVE_STATIC_ASSERT 1
|
||
+# endif
|
||
|
||
/* Each of these macros verifies that its argument R is nonzero. To
|
||
be portable, R should be an integer constant expression. Unlike
|
||
assert (R), there is no run-time overhead.
|
||
|
||
- There are two macros, since no single macro can be used in all
|
||
- contexts in C. verify_true (R) is for scalar contexts, including
|
||
- integer constant expression contexts. verify (R) is for declaration
|
||
- contexts, e.g., the top level.
|
||
-
|
||
- Symbols ending in "__" are private to this header.
|
||
+ If _Static_assert works, verify (R) uses it directly. Similarly,
|
||
+ _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct
|
||
+ that is an operand of sizeof.
|
||
|
||
- The code below uses several ideas.
|
||
+ The code below uses several ideas for C++ compilers, and for C
|
||
+ compilers that do not support _Static_assert:
|
||
|
||
* The first step is ((R) ? 1 : -1). Given an expression R, of
|
||
integral or boolean or floating-point type, this yields an
|
||
@@ -39,7 +57,9 @@
|
||
constant and nonnegative.
|
||
|
||
* Next this expression W is wrapped in a type
|
||
- struct verify_type__ { unsigned int verify_error_if_negative_size__: W; }.
|
||
+ struct _gl_verify_type {
|
||
+ unsigned int _gl_verify_error_if_negative: W;
|
||
+ }.
|
||
If W is negative, this yields a compile-time error. No compiler can
|
||
deal with a bit-field of negative size.
|
||
|
||
@@ -53,7 +73,7 @@
|
||
|
||
void function (int n) { verify (n < 0); }
|
||
|
||
- * For the verify macro, the struct verify_type__ will need to
|
||
+ * For the verify macro, the struct _gl_verify_type will need to
|
||
somehow be embedded into a declaration. To be portable, this
|
||
declaration must declare an object, a constant, a function, or a
|
||
typedef name. If the declared entity uses the type directly,
|
||
@@ -91,11 +111,11 @@
|
||
Which of the following alternatives can be used?
|
||
|
||
extern int dummy [sizeof (struct {...})];
|
||
- extern int dummy [sizeof (struct verify_type__ {...})];
|
||
+ extern int dummy [sizeof (struct _gl_verify_type {...})];
|
||
extern void dummy (int [sizeof (struct {...})]);
|
||
- extern void dummy (int [sizeof (struct verify_type__ {...})]);
|
||
+ extern void dummy (int [sizeof (struct _gl_verify_type {...})]);
|
||
extern int (*dummy (void)) [sizeof (struct {...})];
|
||
- extern int (*dummy (void)) [sizeof (struct verify_type__ {...})];
|
||
+ extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})];
|
||
|
||
In the second and sixth case, the struct type is exported to the
|
||
outer scope; two such declarations therefore collide. GCC warns
|
||
@@ -105,19 +125,17 @@
|
||
extern int (*dummy (void)) [sizeof (struct {...})];
|
||
|
||
* GCC warns about duplicate declarations of the dummy function if
|
||
- -Wredundant_decls is used. GCC 4.3 and later have a builtin
|
||
+ -Wredundant-decls is used. GCC 4.3 and later have a builtin
|
||
__COUNTER__ macro that can let us generate unique identifiers for
|
||
each dummy function, to suppress this warning.
|
||
|
||
- * This implementation exploits the fact that GCC does not warn about
|
||
- the last declaration mentioned above. If a future version of GCC
|
||
- introduces a warning for this, the problem could be worked around
|
||
- by using code specialized to GCC, just as __COUNTER__ is already
|
||
- being used if available.
|
||
+ * This implementation exploits the fact that older versions of GCC,
|
||
+ which do not support _Static_assert, also do not warn about the
|
||
+ last declaration mentioned above.
|
||
|
||
- #if 4 <= __GNUC__
|
||
- # define verify(R) [another version to keep GCC happy]
|
||
- #endif
|
||
+ * GCC warns if -Wnested-externs is enabled and verify() is used
|
||
+ within a function body; but inside a function, you can always
|
||
+ arrange to use verify_expr() instead.
|
||
|
||
* In C++, any struct definition inside sizeof is invalid.
|
||
Use a template type to work around the problem. */
|
||
@@ -140,24 +158,88 @@
|
||
possible. */
|
||
# define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER)
|
||
|
||
-/* Verify requirement R at compile-time, as an integer constant expression.
|
||
- Return 1. */
|
||
+/* Verify requirement R at compile-time, as an integer constant expression
|
||
+ that returns 1. If R is false, fail at compile-time, preferably
|
||
+ with a diagnostic that includes the string-literal DIAGNOSTIC. */
|
||
+
|
||
+# define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \
|
||
+ (!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC)))
|
||
|
||
# ifdef __cplusplus
|
||
+# if !GNULIB_defined_struct__gl_verify_type
|
||
template <int w>
|
||
- struct verify_type__ { unsigned int verify_error_if_negative_size__: w; };
|
||
-# define verify_true(R) \
|
||
- (!!sizeof (verify_type__<(R) ? 1 : -1>))
|
||
+ struct _gl_verify_type {
|
||
+ unsigned int _gl_verify_error_if_negative: w;
|
||
+ };
|
||
+# define GNULIB_defined_struct__gl_verify_type 1
|
||
+# endif
|
||
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
|
||
+ _gl_verify_type<(R) ? 1 : -1>
|
||
+# elif defined _GL_HAVE__STATIC_ASSERT
|
||
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
|
||
+ struct { \
|
||
+ _Static_assert (R, DIAGNOSTIC); \
|
||
+ int _gl_dummy; \
|
||
+ }
|
||
+# else
|
||
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
|
||
+ struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; }
|
||
+# endif
|
||
+
|
||
+/* Verify requirement R at compile-time, as a declaration without a
|
||
+ trailing ';'. If R is false, fail at compile-time, preferably
|
||
+ with a diagnostic that includes the string-literal DIAGNOSTIC.
|
||
+
|
||
+ Unfortunately, unlike C11, this implementation must appear as an
|
||
+ ordinary declaration, and cannot appear inside struct { ... }. */
|
||
+
|
||
+# ifdef _GL_HAVE__STATIC_ASSERT
|
||
+# define _GL_VERIFY _Static_assert
|
||
# else
|
||
-# define verify_true(R) \
|
||
- (!!sizeof \
|
||
- (struct { unsigned int verify_error_if_negative_size__: (R) ? 1 : -1; }))
|
||
+# define _GL_VERIFY(R, DIAGNOSTIC) \
|
||
+ extern int (*_GL_GENSYM (_gl_verify_function) (void)) \
|
||
+ [_GL_VERIFY_TRUE (R, DIAGNOSTIC)]
|
||
# endif
|
||
|
||
+/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */
|
||
+# ifdef _GL_STATIC_ASSERT_H
|
||
+# if !defined _GL_HAVE__STATIC_ASSERT && !defined _Static_assert
|
||
+# define _Static_assert(R, DIAGNOSTIC) _GL_VERIFY (R, DIAGNOSTIC)
|
||
+# endif
|
||
+# if !defined _GL_HAVE_STATIC_ASSERT && !defined static_assert
|
||
+# define static_assert _Static_assert /* C11 requires this #define. */
|
||
+# endif
|
||
+# endif
|
||
+
|
||
+/* @assert.h omit start@ */
|
||
+
|
||
+/* Each of these macros verifies that its argument R is nonzero. To
|
||
+ be portable, R should be an integer constant expression. Unlike
|
||
+ assert (R), there is no run-time overhead.
|
||
+
|
||
+ There are two macros, since no single macro can be used in all
|
||
+ contexts in C. verify_true (R) is for scalar contexts, including
|
||
+ integer constant expression contexts. verify (R) is for declaration
|
||
+ contexts, e.g., the top level. */
|
||
+
|
||
+/* Verify requirement R at compile-time, as an integer constant expression.
|
||
+ Return 1. This is equivalent to verify_expr (R, 1).
|
||
+
|
||
+ verify_true is obsolescent; please use verify_expr instead. */
|
||
+
|
||
+# define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")")
|
||
+
|
||
+/* Verify requirement R at compile-time. Return the value of the
|
||
+ expression E. */
|
||
+
|
||
+# define verify_expr(R, E) \
|
||
+ (_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E))
|
||
+
|
||
/* Verify requirement R at compile-time, as a declaration without a
|
||
trailing ';'. */
|
||
|
||
-# define verify(R) \
|
||
- extern int (* _GL_GENSYM (verify_function) (void)) [verify_true (R)]
|
||
+# define verify(R) _GL_VERIFY (R, "verify (" #R ")")
|
||
+
|
||
+/* @assert.h omit end@ */
|
||
|
||
#endif
|
||
diff --git a/grub-core/gnulib/vsnprintf.c b/grub-core/gnulib/vsnprintf.c
|
||
index d447cc2..7d4dfbe 100644
|
||
--- a/grub-core/gnulib/vsnprintf.c
|
||
+++ b/grub-core/gnulib/vsnprintf.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Formatted output to strings.
|
||
- Copyright (C) 2004, 2006-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2004, 2006-2013 Free Software Foundation, Inc.
|
||
Written by Simon Josefsson and Yoann Vandoorselaere <yoann@prelude-ids.org>.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
- with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifdef HAVE_CONFIG_H
|
||
# include <config.h>
|
||
diff --git a/grub-core/gnulib/wchar.in.h b/grub-core/gnulib/wchar.in.h
|
||
index 88d47db..b6e4362 100644
|
||
--- a/grub-core/gnulib/wchar.in.h
|
||
+++ b/grub-core/gnulib/wchar.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
|
||
|
||
- Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* Written by Eric Blake. */
|
||
|
||
@@ -29,6 +28,7 @@
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
#if defined __need_mbstate_t || defined __need_wint_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
|
||
/* Special invocation convention:
|
||
@@ -48,17 +48,25 @@
|
||
#else
|
||
/* Normal invocation convention. */
|
||
|
||
-#ifndef _GL_WCHAR_H
|
||
+#ifndef _@GUARD_PREFIX@_WCHAR_H
|
||
|
||
#define _GL_ALREADY_INCLUDING_WCHAR_H
|
||
|
||
+#if @HAVE_FEATURES_H@
|
||
+# include <features.h> /* for __GLIBC__ */
|
||
+#endif
|
||
+
|
||
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
<wchar.h>.
|
||
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
included before <wchar.h>.
|
||
+ In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
|
||
+ by <stddef.h>.
|
||
But avoid namespace pollution on glibc systems. */
|
||
-#ifndef __GLIBC__
|
||
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
|
||
# include <stddef.h>
|
||
+#endif
|
||
+#ifndef __GLIBC__
|
||
# include <stdio.h>
|
||
# include <time.h>
|
||
#endif
|
||
@@ -72,8 +80,16 @@
|
||
|
||
#undef _GL_ALREADY_INCLUDING_WCHAR_H
|
||
|
||
-#ifndef _GL_WCHAR_H
|
||
-#define _GL_WCHAR_H
|
||
+#ifndef _@GUARD_PREFIX@_WCHAR_H
|
||
+#define _@GUARD_PREFIX@_WCHAR_H
|
||
+
|
||
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
||
+ The attribute __pure__ was added in gcc 2.96. */
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_PURE /* empty */
|
||
+#endif
|
||
|
||
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||
|
||
@@ -89,6 +105,18 @@
|
||
# define WEOF -1
|
||
# endif
|
||
#else
|
||
+/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
|
||
+ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
|
||
+ "unchanged by default argument promotions". Override it. */
|
||
+# if defined _MSC_VER
|
||
+# if !GNULIB_defined_wint_t
|
||
+# include <crtdefs.h>
|
||
+typedef unsigned int rpl_wint_t;
|
||
+# undef wint_t
|
||
+# define wint_t rpl_wint_t
|
||
+# define GNULIB_defined_wint_t 1
|
||
+# endif
|
||
+# endif
|
||
# ifndef WEOF
|
||
# define WEOF ((wint_t) -1)
|
||
# endif
|
||
@@ -99,10 +127,12 @@
|
||
On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
|
||
implementing mbrtowc for encodings like UTF-8. */
|
||
#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
|
||
+# if !GNULIB_defined_mbstate_t
|
||
typedef int rpl_mbstate_t;
|
||
-# undef mbstate_t
|
||
-# define mbstate_t rpl_mbstate_t
|
||
-# define GNULIB_defined_mbstate_t 1
|
||
+# undef mbstate_t
|
||
+# define mbstate_t rpl_mbstate_t
|
||
+# define GNULIB_defined_mbstate_t 1
|
||
+# endif
|
||
#endif
|
||
|
||
|
||
@@ -113,11 +143,11 @@ typedef int rpl_mbstate_t;
|
||
# undef btowc
|
||
# define btowc rpl_btowc
|
||
# endif
|
||
-_GL_FUNCDECL_RPL (btowc, wint_t, (int c));
|
||
+_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
|
||
_GL_CXXALIAS_RPL (btowc, wint_t, (int c));
|
||
# else
|
||
# if !@HAVE_BTOWC@
|
||
-_GL_FUNCDECL_SYS (btowc, wint_t, (int c));
|
||
+_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
|
||
# endif
|
||
_GL_CXXALIAS_SYS (btowc, wint_t, (int c));
|
||
# endif
|
||
@@ -138,12 +168,12 @@ _GL_WARN_ON_USE (btowc, "btowc is unportable - "
|
||
# undef wctob
|
||
# define wctob rpl_wctob
|
||
# endif
|
||
-_GL_FUNCDECL_RPL (wctob, int, (wint_t wc));
|
||
+_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
|
||
_GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
|
||
# else
|
||
# if !defined wctob && !@HAVE_DECL_WCTOB@
|
||
/* wctob is provided by gnulib, or wctob exists but is not declared. */
|
||
-_GL_FUNCDECL_SYS (wctob, int, (wint_t wc));
|
||
+_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
|
||
# endif
|
||
_GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
|
||
# endif
|
||
@@ -404,12 +434,12 @@ _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
|
||
# undef wcwidth
|
||
# define wcwidth rpl_wcwidth
|
||
# endif
|
||
-_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t));
|
||
+_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
|
||
_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
|
||
# else
|
||
# if !@HAVE_DECL_WCWIDTH@
|
||
/* wcwidth exists but is not declared. */
|
||
-_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t));
|
||
+_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
|
||
# endif
|
||
_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
|
||
# endif
|
||
@@ -423,6 +453,576 @@ _GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
|
||
#endif
|
||
|
||
|
||
-#endif /* _GL_WCHAR_H */
|
||
-#endif /* _GL_WCHAR_H */
|
||
+/* Search N wide characters of S for C. */
|
||
+#if @GNULIB_WMEMCHR@
|
||
+# if !@HAVE_WMEMCHR@
|
||
+_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+ /* On some systems, this function is defined as an overloaded function:
|
||
+ extern "C++" {
|
||
+ const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
|
||
+ wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
|
||
+ } */
|
||
+_GL_CXXALIAS_SYS_CAST2 (wmemchr,
|
||
+ wchar_t *, (const wchar_t *, wchar_t, size_t),
|
||
+ const wchar_t *, (const wchar_t *, wchar_t, size_t));
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
+_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
|
||
+_GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
|
||
+ (const wchar_t *s, wchar_t c, size_t n));
|
||
+# else
|
||
+_GL_CXXALIASWARN (wmemchr);
|
||
+# endif
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wmemchr
|
||
+# if HAVE_RAW_DECL_WMEMCHR
|
||
+_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
|
||
+ "use gnulib module wmemchr for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Compare N wide characters of S1 and S2. */
|
||
+#if @GNULIB_WMEMCMP@
|
||
+# if !@HAVE_WMEMCMP@
|
||
+_GL_FUNCDECL_SYS (wmemcmp, int,
|
||
+ (const wchar_t *s1, const wchar_t *s2, size_t n)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wmemcmp, int,
|
||
+ (const wchar_t *s1, const wchar_t *s2, size_t n));
|
||
+_GL_CXXALIASWARN (wmemcmp);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wmemcmp
|
||
+# if HAVE_RAW_DECL_WMEMCMP
|
||
+_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
|
||
+ "use gnulib module wmemcmp for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Copy N wide characters of SRC to DEST. */
|
||
+#if @GNULIB_WMEMCPY@
|
||
+# if !@HAVE_WMEMCPY@
|
||
+_GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+_GL_CXXALIASWARN (wmemcpy);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wmemcpy
|
||
+# if HAVE_RAW_DECL_WMEMCPY
|
||
+_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
|
||
+ "use gnulib module wmemcpy for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
|
||
+ overlapping memory areas. */
|
||
+#if @GNULIB_WMEMMOVE@
|
||
+# if !@HAVE_WMEMMOVE@
|
||
+_GL_FUNCDECL_SYS (wmemmove, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wmemmove, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+_GL_CXXALIASWARN (wmemmove);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wmemmove
|
||
+# if HAVE_RAW_DECL_WMEMMOVE
|
||
+_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
|
||
+ "use gnulib module wmemmove for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Set N wide characters of S to C. */
|
||
+#if @GNULIB_WMEMSET@
|
||
+# if !@HAVE_WMEMSET@
|
||
+_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
|
||
+_GL_CXXALIASWARN (wmemset);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wmemset
|
||
+# if HAVE_RAW_DECL_WMEMSET
|
||
+_GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
|
||
+ "use gnulib module wmemset for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Return the number of wide characters in S. */
|
||
+#if @GNULIB_WCSLEN@
|
||
+# if !@HAVE_WCSLEN@
|
||
+_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
|
||
+_GL_CXXALIASWARN (wcslen);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcslen
|
||
+# if HAVE_RAW_DECL_WCSLEN
|
||
+_GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
|
||
+ "use gnulib module wcslen for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Return the number of wide characters in S, but at most MAXLEN. */
|
||
+#if @GNULIB_WCSNLEN@
|
||
+# if !@HAVE_WCSNLEN@
|
||
+_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
|
||
+_GL_CXXALIASWARN (wcsnlen);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsnlen
|
||
+# if HAVE_RAW_DECL_WCSNLEN
|
||
+_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
|
||
+ "use gnulib module wcsnlen for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Copy SRC to DEST. */
|
||
+#if @GNULIB_WCSCPY@
|
||
+# if !@HAVE_WCSCPY@
|
||
+_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
|
||
+_GL_CXXALIASWARN (wcscpy);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcscpy
|
||
+# if HAVE_RAW_DECL_WCSCPY
|
||
+_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
|
||
+ "use gnulib module wcscpy for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */
|
||
+#if @GNULIB_WCPCPY@
|
||
+# if !@HAVE_WCPCPY@
|
||
+_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
|
||
+_GL_CXXALIASWARN (wcpcpy);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcpcpy
|
||
+# if HAVE_RAW_DECL_WCPCPY
|
||
+_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
|
||
+ "use gnulib module wcpcpy for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Copy no more than N wide characters of SRC to DEST. */
|
||
+#if @GNULIB_WCSNCPY@
|
||
+# if !@HAVE_WCSNCPY@
|
||
+_GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+_GL_CXXALIASWARN (wcsncpy);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsncpy
|
||
+# if HAVE_RAW_DECL_WCSNCPY
|
||
+_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
|
||
+ "use gnulib module wcsncpy for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Copy no more than N characters of SRC to DEST, returning the address of
|
||
+ the last character written into DEST. */
|
||
+#if @GNULIB_WCPNCPY@
|
||
+# if !@HAVE_WCPNCPY@
|
||
+_GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+_GL_CXXALIASWARN (wcpncpy);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcpncpy
|
||
+# if HAVE_RAW_DECL_WCPNCPY
|
||
+_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
|
||
+ "use gnulib module wcpncpy for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Append SRC onto DEST. */
|
||
+#if @GNULIB_WCSCAT@
|
||
+# if !@HAVE_WCSCAT@
|
||
+_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
|
||
+_GL_CXXALIASWARN (wcscat);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcscat
|
||
+# if HAVE_RAW_DECL_WCSCAT
|
||
+_GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
|
||
+ "use gnulib module wcscat for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Append no more than N wide characters of SRC onto DEST. */
|
||
+#if @GNULIB_WCSNCAT@
|
||
+# if !@HAVE_WCSNCAT@
|
||
+_GL_FUNCDECL_SYS (wcsncat, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcsncat, wchar_t *,
|
||
+ (wchar_t *dest, const wchar_t *src, size_t n));
|
||
+_GL_CXXALIASWARN (wcsncat);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsncat
|
||
+# if HAVE_RAW_DECL_WCSNCAT
|
||
+_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
|
||
+ "use gnulib module wcsncat for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Compare S1 and S2. */
|
||
+#if @GNULIB_WCSCMP@
|
||
+# if !@HAVE_WCSCMP@
|
||
+_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
|
||
+_GL_CXXALIASWARN (wcscmp);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcscmp
|
||
+# if HAVE_RAW_DECL_WCSCMP
|
||
+_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
|
||
+ "use gnulib module wcscmp for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Compare no more than N wide characters of S1 and S2. */
|
||
+#if @GNULIB_WCSNCMP@
|
||
+# if !@HAVE_WCSNCMP@
|
||
+_GL_FUNCDECL_SYS (wcsncmp, int,
|
||
+ (const wchar_t *s1, const wchar_t *s2, size_t n)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcsncmp, int,
|
||
+ (const wchar_t *s1, const wchar_t *s2, size_t n));
|
||
+_GL_CXXALIASWARN (wcsncmp);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsncmp
|
||
+# if HAVE_RAW_DECL_WCSNCMP
|
||
+_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
|
||
+ "use gnulib module wcsncmp for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Compare S1 and S2, ignoring case. */
|
||
+#if @GNULIB_WCSCASECMP@
|
||
+# if !@HAVE_WCSCASECMP@
|
||
+_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
|
||
+_GL_CXXALIASWARN (wcscasecmp);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcscasecmp
|
||
+# if HAVE_RAW_DECL_WCSCASECMP
|
||
+_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
|
||
+ "use gnulib module wcscasecmp for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Compare no more than N chars of S1 and S2, ignoring case. */
|
||
+#if @GNULIB_WCSNCASECMP@
|
||
+# if !@HAVE_WCSNCASECMP@
|
||
+_GL_FUNCDECL_SYS (wcsncasecmp, int,
|
||
+ (const wchar_t *s1, const wchar_t *s2, size_t n)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcsncasecmp, int,
|
||
+ (const wchar_t *s1, const wchar_t *s2, size_t n));
|
||
+_GL_CXXALIASWARN (wcsncasecmp);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsncasecmp
|
||
+# if HAVE_RAW_DECL_WCSNCASECMP
|
||
+_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
|
||
+ "use gnulib module wcsncasecmp for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
|
||
+ category of the current locale. */
|
||
+#if @GNULIB_WCSCOLL@
|
||
+# if !@HAVE_WCSCOLL@
|
||
+_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
|
||
+_GL_CXXALIASWARN (wcscoll);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcscoll
|
||
+# if HAVE_RAW_DECL_WCSCOLL
|
||
+_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
|
||
+ "use gnulib module wcscoll for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Transform S2 into array pointed to by S1 such that if wcscmp is applied
|
||
+ to two transformed strings the result is the as applying 'wcscoll' to the
|
||
+ original strings. */
|
||
+#if @GNULIB_WCSXFRM@
|
||
+# if !@HAVE_WCSXFRM@
|
||
+_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
|
||
+_GL_CXXALIASWARN (wcsxfrm);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsxfrm
|
||
+# if HAVE_RAW_DECL_WCSXFRM
|
||
+_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
|
||
+ "use gnulib module wcsxfrm for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Duplicate S, returning an identical malloc'd string. */
|
||
+#if @GNULIB_WCSDUP@
|
||
+# if !@HAVE_WCSDUP@
|
||
+_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
|
||
+_GL_CXXALIASWARN (wcsdup);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsdup
|
||
+# if HAVE_RAW_DECL_WCSDUP
|
||
+_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
|
||
+ "use gnulib module wcsdup for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Find the first occurrence of WC in WCS. */
|
||
+#if @GNULIB_WCSCHR@
|
||
+# if !@HAVE_WCSCHR@
|
||
+_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+ /* On some systems, this function is defined as an overloaded function:
|
||
+ extern "C++" {
|
||
+ const wchar_t * std::wcschr (const wchar_t *, wchar_t);
|
||
+ wchar_t * std::wcschr (wchar_t *, wchar_t);
|
||
+ } */
|
||
+_GL_CXXALIAS_SYS_CAST2 (wcschr,
|
||
+ wchar_t *, (const wchar_t *, wchar_t),
|
||
+ const wchar_t *, (const wchar_t *, wchar_t));
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
+_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
|
||
+_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
|
||
+# else
|
||
+_GL_CXXALIASWARN (wcschr);
|
||
+# endif
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcschr
|
||
+# if HAVE_RAW_DECL_WCSCHR
|
||
+_GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
|
||
+ "use gnulib module wcschr for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Find the last occurrence of WC in WCS. */
|
||
+#if @GNULIB_WCSRCHR@
|
||
+# if !@HAVE_WCSRCHR@
|
||
+_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+ /* On some systems, this function is defined as an overloaded function:
|
||
+ extern "C++" {
|
||
+ const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
|
||
+ wchar_t * std::wcsrchr (wchar_t *, wchar_t);
|
||
+ } */
|
||
+_GL_CXXALIAS_SYS_CAST2 (wcsrchr,
|
||
+ wchar_t *, (const wchar_t *, wchar_t),
|
||
+ const wchar_t *, (const wchar_t *, wchar_t));
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
+_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
|
||
+_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
|
||
+# else
|
||
+_GL_CXXALIASWARN (wcsrchr);
|
||
+# endif
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsrchr
|
||
+# if HAVE_RAW_DECL_WCSRCHR
|
||
+_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
|
||
+ "use gnulib module wcsrchr for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Return the length of the initial segmet of WCS which consists entirely
|
||
+ of wide characters not in REJECT. */
|
||
+#if @GNULIB_WCSCSPN@
|
||
+# if !@HAVE_WCSCSPN@
|
||
+_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
|
||
+_GL_CXXALIASWARN (wcscspn);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcscspn
|
||
+# if HAVE_RAW_DECL_WCSCSPN
|
||
+_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
|
||
+ "use gnulib module wcscspn for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Return the length of the initial segmet of WCS which consists entirely
|
||
+ of wide characters in ACCEPT. */
|
||
+#if @GNULIB_WCSSPN@
|
||
+# if !@HAVE_WCSSPN@
|
||
+_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
|
||
+_GL_CXXALIASWARN (wcsspn);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsspn
|
||
+# if HAVE_RAW_DECL_WCSSPN
|
||
+_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
|
||
+ "use gnulib module wcsspn for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Find the first occurrence in WCS of any character in ACCEPT. */
|
||
+#if @GNULIB_WCSPBRK@
|
||
+# if !@HAVE_WCSPBRK@
|
||
+_GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
|
||
+ (const wchar_t *wcs, const wchar_t *accept)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+ /* On some systems, this function is defined as an overloaded function:
|
||
+ extern "C++" {
|
||
+ const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
|
||
+ wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
|
||
+ } */
|
||
+_GL_CXXALIAS_SYS_CAST2 (wcspbrk,
|
||
+ wchar_t *, (const wchar_t *, const wchar_t *),
|
||
+ const wchar_t *, (const wchar_t *, const wchar_t *));
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
+_GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
|
||
+ (wchar_t *wcs, const wchar_t *accept));
|
||
+_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
|
||
+ (const wchar_t *wcs, const wchar_t *accept));
|
||
+# else
|
||
+_GL_CXXALIASWARN (wcspbrk);
|
||
+# endif
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcspbrk
|
||
+# if HAVE_RAW_DECL_WCSPBRK
|
||
+_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
|
||
+ "use gnulib module wcspbrk for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Find the first occurrence of NEEDLE in HAYSTACK. */
|
||
+#if @GNULIB_WCSSTR@
|
||
+# if !@HAVE_WCSSTR@
|
||
+_GL_FUNCDECL_SYS (wcsstr, wchar_t *,
|
||
+ (const wchar_t *haystack, const wchar_t *needle)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+ /* On some systems, this function is defined as an overloaded function:
|
||
+ extern "C++" {
|
||
+ const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
|
||
+ wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
|
||
+ } */
|
||
+_GL_CXXALIAS_SYS_CAST2 (wcsstr,
|
||
+ wchar_t *, (const wchar_t *, const wchar_t *),
|
||
+ const wchar_t *, (const wchar_t *, const wchar_t *));
|
||
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
|
||
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||
+_GL_CXXALIASWARN1 (wcsstr, wchar_t *,
|
||
+ (wchar_t *haystack, const wchar_t *needle));
|
||
+_GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
|
||
+ (const wchar_t *haystack, const wchar_t *needle));
|
||
+# else
|
||
+_GL_CXXALIASWARN (wcsstr);
|
||
+# endif
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcsstr
|
||
+# if HAVE_RAW_DECL_WCSSTR
|
||
+_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
|
||
+ "use gnulib module wcsstr for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Divide WCS into tokens separated by characters in DELIM. */
|
||
+#if @GNULIB_WCSTOK@
|
||
+# if !@HAVE_WCSTOK@
|
||
+_GL_FUNCDECL_SYS (wcstok, wchar_t *,
|
||
+ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcstok, wchar_t *,
|
||
+ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
|
||
+_GL_CXXALIASWARN (wcstok);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcstok
|
||
+# if HAVE_RAW_DECL_WCSTOK
|
||
+_GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
|
||
+ "use gnulib module wcstok for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+/* Determine number of column positions required for first N wide
|
||
+ characters (or fewer if S ends before this) in S. */
|
||
+#if @GNULIB_WCSWIDTH@
|
||
+# if @REPLACE_WCSWIDTH@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# undef wcswidth
|
||
+# define wcswidth rpl_wcswidth
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
|
||
+# else
|
||
+# if !@HAVE_WCSWIDTH@
|
||
+_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
|
||
+ _GL_ATTRIBUTE_PURE);
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (wcswidth);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wcswidth
|
||
+# if HAVE_RAW_DECL_WCSWIDTH
|
||
+_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
|
||
+ "use gnulib module wcswidth for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+
|
||
+#endif /* _@GUARD_PREFIX@_WCHAR_H */
|
||
+#endif /* _@GUARD_PREFIX@_WCHAR_H */
|
||
#endif
|
||
diff --git a/grub-core/gnulib/wcrtomb.c b/grub-core/gnulib/wcrtomb.c
|
||
index e7345f6..da42809 100644
|
||
--- a/grub-core/gnulib/wcrtomb.c
|
||
+++ b/grub-core/gnulib/wcrtomb.c
|
||
@@ -1,5 +1,5 @@
|
||
/* Convert wide character to multibyte character.
|
||
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
diff --git a/grub-core/gnulib/wctype-h.c b/grub-core/gnulib/wctype-h.c
|
||
new file mode 100644
|
||
index 0000000..bb5f847
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/wctype-h.c
|
||
@@ -0,0 +1,4 @@
|
||
+/* Normally this would be wctype.c, but that name's already taken. */
|
||
+#include <config.h>
|
||
+#define _GL_WCTYPE_INLINE _GL_EXTERN_INLINE
|
||
+#include "wctype.h"
|
||
diff --git a/grub-core/gnulib/wctype.in.h b/grub-core/gnulib/wctype.in.h
|
||
index 12c8975..0cd02d5 100644
|
||
--- a/grub-core/gnulib/wctype.in.h
|
||
+++ b/grub-core/gnulib/wctype.in.h
|
||
@@ -1,6 +1,6 @@
|
||
/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
|
||
|
||
- Copyright (C) 2006-2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
/* Written by Bruno Haible and Paul Eggert. */
|
||
|
||
@@ -26,11 +25,12 @@
|
||
* wctrans_t, and wctype_t are not yet implemented.
|
||
*/
|
||
|
||
-#ifndef _GL_WCTYPE_H
|
||
+#ifndef _@GUARD_PREFIX@_WCTYPE_H
|
||
|
||
#if __GNUC__ >= 3
|
||
@PRAGMA_SYSTEM_HEADER@
|
||
#endif
|
||
+@PRAGMA_COLUMNS@
|
||
|
||
#if @HAVE_WINT_T@
|
||
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
|
||
@@ -51,13 +51,31 @@
|
||
# @INCLUDE_NEXT@ @NEXT_WCTYPE_H@
|
||
#endif
|
||
|
||
-#ifndef _GL_WCTYPE_H
|
||
-#define _GL_WCTYPE_H
|
||
+#ifndef _@GUARD_PREFIX@_WCTYPE_H
|
||
+#define _@GUARD_PREFIX@_WCTYPE_H
|
||
+
|
||
+_GL_INLINE_HEADER_BEGIN
|
||
+#ifndef _GL_WCTYPE_INLINE
|
||
+# define _GL_WCTYPE_INLINE _GL_INLINE
|
||
+#endif
|
||
|
||
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||
|
||
/* The definition of _GL_WARN_ON_USE is copied here. */
|
||
|
||
+/* Solaris 2.6 <wctype.h> includes <widec.h> which includes <euc.h> which
|
||
+ #defines a number of identifiers in the application namespace. Revert
|
||
+ these #defines. */
|
||
+#ifdef __sun
|
||
+# undef multibyte
|
||
+# undef eucw1
|
||
+# undef eucw2
|
||
+# undef eucw3
|
||
+# undef scrw1
|
||
+# undef scrw2
|
||
+# undef scrw3
|
||
+#endif
|
||
+
|
||
/* Define wint_t and WEOF. (Also done in wchar.in.h.) */
|
||
#if !@HAVE_WINT_T@ && !defined wint_t
|
||
# define wint_t int
|
||
@@ -65,153 +83,171 @@
|
||
# define WEOF -1
|
||
# endif
|
||
#else
|
||
+/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
|
||
+ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
|
||
+ "unchanged by default argument promotions". Override it. */
|
||
+# if defined _MSC_VER
|
||
+# if !GNULIB_defined_wint_t
|
||
+# include <crtdefs.h>
|
||
+typedef unsigned int rpl_wint_t;
|
||
+# undef wint_t
|
||
+# define wint_t rpl_wint_t
|
||
+# define GNULIB_defined_wint_t 1
|
||
+# endif
|
||
+# endif
|
||
# ifndef WEOF
|
||
# define WEOF ((wint_t) -1)
|
||
# endif
|
||
#endif
|
||
|
||
|
||
+#if !GNULIB_defined_wctype_functions
|
||
+
|
||
/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
|
||
Linux libc5 has <wctype.h> and the functions but they are broken.
|
||
Assume all 11 functions (all isw* except iswblank) are implemented the
|
||
same way, or not at all. */
|
||
-#if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
|
||
+# if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
|
||
|
||
/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
|
||
undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
|
||
refer to system functions like _iswctype that are not in the
|
||
standard C library. Rather than try to get ancient buggy
|
||
implementations like this to work, just disable them. */
|
||
-# undef iswalnum
|
||
-# undef iswalpha
|
||
-# undef iswblank
|
||
-# undef iswcntrl
|
||
-# undef iswdigit
|
||
-# undef iswgraph
|
||
-# undef iswlower
|
||
-# undef iswprint
|
||
-# undef iswpunct
|
||
-# undef iswspace
|
||
-# undef iswupper
|
||
-# undef iswxdigit
|
||
-# undef towlower
|
||
-# undef towupper
|
||
+# undef iswalnum
|
||
+# undef iswalpha
|
||
+# undef iswblank
|
||
+# undef iswcntrl
|
||
+# undef iswdigit
|
||
+# undef iswgraph
|
||
+# undef iswlower
|
||
+# undef iswprint
|
||
+# undef iswpunct
|
||
+# undef iswspace
|
||
+# undef iswupper
|
||
+# undef iswxdigit
|
||
+# undef towlower
|
||
+# undef towupper
|
||
|
||
/* Linux libc5 has <wctype.h> and the functions but they are broken. */
|
||
-# if @REPLACE_ISWCNTRL@
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
-# define iswalnum rpl_iswalnum
|
||
-# define iswalpha rpl_iswalpha
|
||
-# define iswblank rpl_iswblank
|
||
-# define iswcntrl rpl_iswcntrl
|
||
-# define iswdigit rpl_iswdigit
|
||
-# define iswgraph rpl_iswgraph
|
||
-# define iswlower rpl_iswlower
|
||
-# define iswprint rpl_iswprint
|
||
-# define iswpunct rpl_iswpunct
|
||
-# define iswspace rpl_iswspace
|
||
-# define iswupper rpl_iswupper
|
||
-# define iswxdigit rpl_iswxdigit
|
||
-# define towlower rpl_towlower
|
||
-# define towupper rpl_towupper
|
||
+# if @REPLACE_ISWCNTRL@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define iswalnum rpl_iswalnum
|
||
+# define iswalpha rpl_iswalpha
|
||
+# define iswblank rpl_iswblank
|
||
+# define iswcntrl rpl_iswcntrl
|
||
+# define iswdigit rpl_iswdigit
|
||
+# define iswgraph rpl_iswgraph
|
||
+# define iswlower rpl_iswlower
|
||
+# define iswprint rpl_iswprint
|
||
+# define iswpunct rpl_iswpunct
|
||
+# define iswspace rpl_iswspace
|
||
+# define iswupper rpl_iswupper
|
||
+# define iswxdigit rpl_iswxdigit
|
||
+# endif
|
||
+# endif
|
||
+# if @REPLACE_TOWLOWER@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define towlower rpl_towlower
|
||
+# define towupper rpl_towupper
|
||
+# endif
|
||
# endif
|
||
-# endif
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswalnum
|
||
-# else
|
||
+# else
|
||
iswalnum
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return ((wc >= '0' && wc <= '9')
|
||
|| ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswalpha
|
||
-# else
|
||
+# else
|
||
iswalpha
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswblank
|
||
-# else
|
||
+# else
|
||
iswblank
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return wc == ' ' || wc == '\t';
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswcntrl
|
||
-# else
|
||
+# else
|
||
iswcntrl
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return (wc & ~0x1f) == 0 || wc == 0x7f;
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswdigit
|
||
-# else
|
||
+# else
|
||
iswdigit
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return wc >= '0' && wc <= '9';
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswgraph
|
||
-# else
|
||
+# else
|
||
iswgraph
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return wc >= '!' && wc <= '~';
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswlower
|
||
-# else
|
||
+# else
|
||
iswlower
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return wc >= 'a' && wc <= 'z';
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswprint
|
||
-# else
|
||
+# else
|
||
iswprint
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return wc >= ' ' && wc <= '~';
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswpunct
|
||
-# else
|
||
+# else
|
||
iswpunct
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return (wc >= '!' && wc <= '~'
|
||
@@ -219,86 +255,78 @@ iswpunct
|
||
|| ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswspace
|
||
-# else
|
||
+# else
|
||
iswspace
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return (wc == ' ' || wc == '\t'
|
||
|| wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswupper
|
||
-# else
|
||
+# else
|
||
iswupper
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return wc >= 'A' && wc <= 'Z';
|
||
}
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE int
|
||
+# if @REPLACE_ISWCNTRL@
|
||
rpl_iswxdigit
|
||
-# else
|
||
+# else
|
||
iswxdigit
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return ((wc >= '0' && wc <= '9')
|
||
|| ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
|
||
}
|
||
|
||
-static inline wint_t
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE wint_t
|
||
+# if @REPLACE_TOWLOWER@
|
||
rpl_towlower
|
||
-# else
|
||
+# else
|
||
towlower
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
|
||
}
|
||
|
||
-static inline wint_t
|
||
-# if @REPLACE_ISWCNTRL@
|
||
+_GL_WCTYPE_INLINE wint_t
|
||
+# if @REPLACE_TOWLOWER@
|
||
rpl_towupper
|
||
-# else
|
||
+# else
|
||
towupper
|
||
-# endif
|
||
+# endif
|
||
(wint_t wc)
|
||
{
|
||
return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
|
||
}
|
||
|
||
-#elif ! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@
|
||
+# elif @GNULIB_ISWBLANK@ && (! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@)
|
||
/* Only the iswblank function is missing. */
|
||
|
||
-# if @REPLACE_ISWBLANK@
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
-# define iswblank rpl_iswblank
|
||
+# if @REPLACE_ISWBLANK@
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define iswblank rpl_iswblank
|
||
+# endif
|
||
+_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc));
|
||
+# else
|
||
+_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
|
||
# endif
|
||
-# endif
|
||
|
||
-static inline int
|
||
-# if @REPLACE_ISWBLANK@
|
||
-rpl_iswblank
|
||
-# else
|
||
-iswblank
|
||
# endif
|
||
- (wint_t wc)
|
||
-{
|
||
- return wc == ' ' || wc == '\t';
|
||
-}
|
||
-
|
||
-#endif
|
||
|
||
-#if defined __MINGW32__
|
||
+# if defined __MINGW32__
|
||
|
||
/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t.
|
||
The functions towlower and towupper are implemented in the MSVCRT library
|
||
@@ -313,30 +341,32 @@ iswblank
|
||
result register. We need to fix this by adding a zero-extend from
|
||
wchar_t to wint_t after the call. */
|
||
|
||
-static inline wint_t
|
||
+_GL_WCTYPE_INLINE wint_t
|
||
rpl_towlower (wint_t wc)
|
||
{
|
||
return (wint_t) (wchar_t) towlower (wc);
|
||
}
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
-# define towlower rpl_towlower
|
||
-# endif
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define towlower rpl_towlower
|
||
+# endif
|
||
|
||
-static inline wint_t
|
||
+_GL_WCTYPE_INLINE wint_t
|
||
rpl_towupper (wint_t wc)
|
||
{
|
||
return (wint_t) (wchar_t) towupper (wc);
|
||
}
|
||
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
-# define towupper rpl_towupper
|
||
-# endif
|
||
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||
+# define towupper rpl_towupper
|
||
+# endif
|
||
|
||
-#endif /* __MINGW32__ */
|
||
+# endif /* __MINGW32__ */
|
||
+
|
||
+# define GNULIB_defined_wctype_functions 1
|
||
+#endif
|
||
|
||
#if @REPLACE_ISWCNTRL@
|
||
_GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc));
|
||
_GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc));
|
||
-_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
|
||
_GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc));
|
||
_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc));
|
||
_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc));
|
||
@@ -349,11 +379,6 @@ _GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc));
|
||
#else
|
||
_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc));
|
||
_GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc));
|
||
-# if @REPLACE_ISWBLANK@
|
||
-_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
|
||
-# else
|
||
-_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
|
||
-# endif
|
||
_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc));
|
||
_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc));
|
||
_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc));
|
||
@@ -366,7 +391,6 @@ _GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc));
|
||
#endif
|
||
_GL_CXXALIASWARN (iswalnum);
|
||
_GL_CXXALIASWARN (iswalpha);
|
||
-_GL_CXXALIASWARN (iswblank);
|
||
_GL_CXXALIASWARN (iswcntrl);
|
||
_GL_CXXALIASWARN (iswdigit);
|
||
_GL_CXXALIASWARN (iswgraph);
|
||
@@ -377,7 +401,55 @@ _GL_CXXALIASWARN (iswspace);
|
||
_GL_CXXALIASWARN (iswupper);
|
||
_GL_CXXALIASWARN (iswxdigit);
|
||
|
||
-#if @REPLACE_ISWCNTRL@ || defined __MINGW32__
|
||
+#if @GNULIB_ISWBLANK@
|
||
+# if @REPLACE_ISWCNTRL@ || @REPLACE_ISWBLANK@
|
||
+_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
|
||
+# else
|
||
+_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
|
||
+# endif
|
||
+_GL_CXXALIASWARN (iswblank);
|
||
+#endif
|
||
+
|
||
+#if !@HAVE_WCTYPE_T@
|
||
+# if !GNULIB_defined_wctype_t
|
||
+typedef void * wctype_t;
|
||
+# define GNULIB_defined_wctype_t 1
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+/* Get a descriptor for a wide character property. */
|
||
+#if @GNULIB_WCTYPE@
|
||
+# if !@HAVE_WCTYPE_T@
|
||
+_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name));
|
||
+_GL_CXXALIASWARN (wctype);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wctype
|
||
+# if HAVE_RAW_DECL_WCTYPE
|
||
+_GL_WARN_ON_USE (wctype, "wctype is unportable - "
|
||
+ "use gnulib module wctype for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+/* Test whether a wide character has a given property.
|
||
+ The argument WC must be either a wchar_t value or WEOF.
|
||
+ The argument DESC must have been returned by the wctype() function. */
|
||
+#if @GNULIB_ISWCTYPE@
|
||
+# if !@HAVE_WCTYPE_T@
|
||
+_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc));
|
||
+_GL_CXXALIASWARN (iswctype);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef iswctype
|
||
+# if HAVE_RAW_DECL_ISWCTYPE
|
||
+_GL_WARN_ON_USE (iswctype, "iswctype is unportable - "
|
||
+ "use gnulib module iswctype for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+#if @REPLACE_TOWLOWER@ || defined __MINGW32__
|
||
_GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc));
|
||
_GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc));
|
||
#else
|
||
@@ -387,6 +459,46 @@ _GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc));
|
||
_GL_CXXALIASWARN (towlower);
|
||
_GL_CXXALIASWARN (towupper);
|
||
|
||
+#if !@HAVE_WCTRANS_T@
|
||
+# if !GNULIB_defined_wctrans_t
|
||
+typedef void * wctrans_t;
|
||
+# define GNULIB_defined_wctrans_t 1
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+/* Get a descriptor for a wide character case conversion. */
|
||
+#if @GNULIB_WCTRANS@
|
||
+# if !@HAVE_WCTRANS_T@
|
||
+_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name));
|
||
+_GL_CXXALIASWARN (wctrans);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef wctrans
|
||
+# if HAVE_RAW_DECL_WCTRANS
|
||
+_GL_WARN_ON_USE (wctrans, "wctrans is unportable - "
|
||
+ "use gnulib module wctrans for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+/* Perform a given case conversion on a wide character.
|
||
+ The argument WC must be either a wchar_t value or WEOF.
|
||
+ The argument DESC must have been returned by the wctrans() function. */
|
||
+#if @GNULIB_TOWCTRANS@
|
||
+# if !@HAVE_WCTRANS_T@
|
||
+_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
|
||
+# endif
|
||
+_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
|
||
+_GL_CXXALIASWARN (towctrans);
|
||
+#elif defined GNULIB_POSIXCHECK
|
||
+# undef towctrans
|
||
+# if HAVE_RAW_DECL_TOWCTRANS
|
||
+_GL_WARN_ON_USE (towctrans, "towctrans is unportable - "
|
||
+ "use gnulib module towctrans for portability");
|
||
+# endif
|
||
+#endif
|
||
+
|
||
+_GL_INLINE_HEADER_END
|
||
|
||
-#endif /* _GL_WCTYPE_H */
|
||
-#endif /* _GL_WCTYPE_H */
|
||
+#endif /* _@GUARD_PREFIX@_WCTYPE_H */
|
||
+#endif /* _@GUARD_PREFIX@_WCTYPE_H */
|
||
diff --git a/grub-core/gnulib/wcwidth.c b/grub-core/gnulib/wcwidth.c
|
||
new file mode 100644
|
||
index 0000000..253fcaa
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/wcwidth.c
|
||
@@ -0,0 +1,50 @@
|
||
+/* Determine the number of screen columns needed for a character.
|
||
+ Copyright (C) 2006-2007, 2010-2013 Free Software Foundation, Inc.
|
||
+
|
||
+ This program is free software: you can redistribute it and/or modify
|
||
+ it under the terms of the GNU General Public License as published by
|
||
+ the Free Software Foundation; either version 3 of the License, or
|
||
+ (at your option) any later version.
|
||
+
|
||
+ This program is distributed in the hope that it will be useful,
|
||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+ GNU General Public License for more details.
|
||
+
|
||
+ You should have received a copy of the GNU General Public License
|
||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||
+
|
||
+#include <config.h>
|
||
+
|
||
+/* Specification. */
|
||
+#include <wchar.h>
|
||
+
|
||
+/* Get iswprint. */
|
||
+#include <wctype.h>
|
||
+
|
||
+#include "localcharset.h"
|
||
+#include "streq.h"
|
||
+#include "uniwidth.h"
|
||
+
|
||
+int
|
||
+wcwidth (wchar_t wc)
|
||
+#undef wcwidth
|
||
+{
|
||
+ /* In UTF-8 locales, use a Unicode aware width function. */
|
||
+ const char *encoding = locale_charset ();
|
||
+ if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0 ,0))
|
||
+ {
|
||
+ /* We assume that in a UTF-8 locale, a wide character is the same as a
|
||
+ Unicode character. */
|
||
+ return uc_width (wc, encoding);
|
||
+ }
|
||
+ else
|
||
+ {
|
||
+ /* Otherwise, fall back to the system's wcwidth function. */
|
||
+#if HAVE_WCWIDTH
|
||
+ return wcwidth (wc);
|
||
+#else
|
||
+ return wc == 0 ? 0 : iswprint (wc) ? 1 : -1;
|
||
+#endif
|
||
+ }
|
||
+}
|
||
diff --git a/grub-core/gnulib/xsize.c b/grub-core/gnulib/xsize.c
|
||
new file mode 100644
|
||
index 0000000..4b4914c
|
||
--- /dev/null
|
||
+++ b/grub-core/gnulib/xsize.c
|
||
@@ -0,0 +1,3 @@
|
||
+#include <config.h>
|
||
+#define XSIZE_INLINE _GL_EXTERN_INLINE
|
||
+#include "xsize.h"
|
||
diff --git a/grub-core/gnulib/xsize.h b/grub-core/gnulib/xsize.h
|
||
index fbd6329..2922f35 100644
|
||
--- a/grub-core/gnulib/xsize.h
|
||
+++ b/grub-core/gnulib/xsize.h
|
||
@@ -1,6 +1,6 @@
|
||
/* xsize.h -- Checked size_t computations.
|
||
|
||
- Copyright (C) 2003, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+ Copyright (C) 2003, 2008-2013 Free Software Foundation, Inc.
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
@@ -13,8 +13,7 @@
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software Foundation,
|
||
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||
|
||
#ifndef _XSIZE_H
|
||
#define _XSIZE_H
|
||
@@ -28,6 +27,11 @@
|
||
# include <stdint.h>
|
||
#endif
|
||
|
||
+_GL_INLINE_HEADER_BEGIN
|
||
+#ifndef XSIZE_INLINE
|
||
+# define XSIZE_INLINE _GL_INLINE
|
||
+#endif
|
||
+
|
||
/* The size of memory objects is often computed through expressions of
|
||
type size_t. Example:
|
||
void* p = malloc (header_size + n * element_size).
|
||
@@ -49,7 +53,7 @@
|
||
((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
|
||
|
||
/* Sum of two sizes, with overflow check. */
|
||
-static inline size_t
|
||
+XSIZE_INLINE size_t
|
||
#if __GNUC__ >= 3
|
||
__attribute__ ((__pure__))
|
||
#endif
|
||
@@ -60,7 +64,7 @@ xsum (size_t size1, size_t size2)
|
||
}
|
||
|
||
/* Sum of three sizes, with overflow check. */
|
||
-static inline size_t
|
||
+XSIZE_INLINE size_t
|
||
#if __GNUC__ >= 3
|
||
__attribute__ ((__pure__))
|
||
#endif
|
||
@@ -70,7 +74,7 @@ xsum3 (size_t size1, size_t size2, size_t size3)
|
||
}
|
||
|
||
/* Sum of four sizes, with overflow check. */
|
||
-static inline size_t
|
||
+XSIZE_INLINE size_t
|
||
#if __GNUC__ >= 3
|
||
__attribute__ ((__pure__))
|
||
#endif
|
||
@@ -80,7 +84,7 @@ xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
|
||
}
|
||
|
||
/* Maximum of two sizes, with overflow check. */
|
||
-static inline size_t
|
||
+XSIZE_INLINE size_t
|
||
#if __GNUC__ >= 3
|
||
__attribute__ ((__pure__))
|
||
#endif
|
||
@@ -93,7 +97,7 @@ xmax (size_t size1, size_t size2)
|
||
|
||
/* Multiplication of a count with an element size, with overflow check.
|
||
The count must be >= 0 and the element size must be > 0.
|
||
- This is a macro, not an inline function, so that it works correctly even
|
||
+ This is a macro, not a function, so that it works correctly even
|
||
when N is of a wider type and N > SIZE_MAX. */
|
||
#define xtimes(N, ELSIZE) \
|
||
((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
|
||
@@ -105,4 +109,6 @@ xmax (size_t size1, size_t size2)
|
||
#define size_in_bounds_p(SIZE) \
|
||
((SIZE) != SIZE_MAX)
|
||
|
||
+_GL_INLINE_HEADER_END
|
||
+
|
||
#endif /* _XSIZE_H */
|
||
diff --git a/grub-core/kern/emu/argp_common.c b/grub-core/kern/emu/argp_common.c
|
||
index d6080ba..e519b52 100644
|
||
--- a/grub-core/kern/emu/argp_common.c
|
||
+++ b/grub-core/kern/emu/argp_common.c
|
||
@@ -18,6 +18,7 @@
|
||
*/
|
||
|
||
#include <config.h>
|
||
+#include <config-util.h>
|
||
|
||
#define _GNU_SOURCE 1
|
||
#include <stdlib.h>
|
||
diff --git a/grub-core/kern/emu/error.c b/grub-core/kern/emu/error.c
|
||
new file mode 100644
|
||
index 0000000..559412a
|
||
--- /dev/null
|
||
+++ b/grub-core/kern/emu/error.c
|
||
@@ -0,0 +1,2 @@
|
||
+#include <config-util.h>
|
||
+#include "../../gnulib/error.c"
|
||
diff --git a/grub-core/kern/emu/hostdisk.c b/grub-core/kern/emu/hostdisk.c
|
||
index 4a5eee0..3142332 100644
|
||
--- a/grub-core/kern/emu/hostdisk.c
|
||
+++ b/grub-core/kern/emu/hostdisk.c
|
||
@@ -17,6 +17,8 @@
|
||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||
*/
|
||
|
||
+#include <config-util.h>
|
||
+
|
||
#include <grub/disk.h>
|
||
#include <grub/partition.h>
|
||
#include <grub/msdos_partition.h>
|
||
diff --git a/grub-core/kern/emu/hostfs.c b/grub-core/kern/emu/hostfs.c
|
||
index 46bf5e8..0bb3232 100644
|
||
--- a/grub-core/kern/emu/hostfs.c
|
||
+++ b/grub-core/kern/emu/hostfs.c
|
||
@@ -16,6 +16,9 @@
|
||
* You should have received a copy of the GNU General Public License
|
||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||
*/
|
||
+
|
||
+#include <config-util.h>
|
||
+
|
||
#define _BSD_SOURCE
|
||
#include <grub/fs.h>
|
||
#include <grub/file.h>
|
||
diff --git a/grub-core/kern/emu/main.c b/grub-core/kern/emu/main.c
|
||
index 0418aae..4a88905 100644
|
||
--- a/grub-core/kern/emu/main.c
|
||
+++ b/grub-core/kern/emu/main.c
|
||
@@ -16,6 +16,9 @@
|
||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||
*/
|
||
|
||
+#include <config.h>
|
||
+#include <config-util.h>
|
||
+
|
||
#include <time.h>
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
diff --git a/grub-core/lib/posix_wrap/limits.h b/grub-core/lib/posix_wrap/limits.h
|
||
index 588e589..9552954 100644
|
||
--- a/grub-core/lib/posix_wrap/limits.h
|
||
+++ b/grub-core/lib/posix_wrap/limits.h
|
||
@@ -25,6 +25,7 @@
|
||
#define USHRT_MAX GRUB_USHRT_MAX
|
||
#define UINT_MAX GRUB_UINT_MAX
|
||
#define ULONG_MAX GRUB_ULONG_MAX
|
||
+#define SIZE_MAX GRUB_SIZE_MAX
|
||
|
||
#define SHRT_MAX GRUB_SHRT_MAX
|
||
#define INT_MAX GRUB_INT_MAX
|
||
diff --git a/grub-core/lib/posix_wrap/sys/types.h b/grub-core/lib/posix_wrap/sys/types.h
|
||
index 62a2672..c88a96e 100644
|
||
--- a/grub-core/lib/posix_wrap/sys/types.h
|
||
+++ b/grub-core/lib/posix_wrap/sys/types.h
|
||
@@ -51,6 +51,8 @@ typedef grub_uint16_t u16;
|
||
#define HAVE_BYTE_TYPEDEF 1
|
||
typedef grub_uint8_t byte;
|
||
|
||
+typedef grub_addr_t uintptr_t;
|
||
+
|
||
#define SIZEOF_UNSIGNED_LONG GRUB_CPU_SIZEOF_LONG
|
||
#define SIZEOF_UNSIGNED_INT 4
|
||
#define SIZEOF_UNSIGNED_LONG_LONG 8
|
||
diff --git a/include/grub/types.h b/include/grub/types.h
|
||
index 7c56f40..775e03a 100644
|
||
--- a/include/grub/types.h
|
||
+++ b/include/grub/types.h
|
||
@@ -90,6 +90,8 @@ typedef grub_uint64_t grub_addr_t;
|
||
typedef grub_uint64_t grub_size_t;
|
||
typedef grub_int64_t grub_ssize_t;
|
||
|
||
+# define GRUB_SIZE_MAX 18446744073709551615UL
|
||
+
|
||
# if GRUB_CPU_SIZEOF_LONG == 8
|
||
# define PRIxGRUB_SIZE "lx"
|
||
# define PRIxGRUB_ADDR "lx"
|
||
@@ -106,6 +108,8 @@ typedef grub_uint32_t grub_addr_t;
|
||
typedef grub_uint32_t grub_size_t;
|
||
typedef grub_int32_t grub_ssize_t;
|
||
|
||
+# define GRUB_SIZE_MAX 4294967295UL
|
||
+
|
||
# define PRIxGRUB_SIZE "x"
|
||
# define PRIxGRUB_ADDR "x"
|
||
# define PRIuGRUB_SIZE "u"
|
||
diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4
|
||
index 301469b..d4ad759 100644
|
||
--- a/m4/00gnulib.m4
|
||
+++ b/m4/00gnulib.m4
|
||
@@ -1,5 +1,5 @@
|
||
# 00gnulib.m4 serial 2
|
||
-dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/alloca.m4 b/m4/alloca.m4
|
||
index f3ee343..270abd0 100644
|
||
--- a/m4/alloca.m4
|
||
+++ b/m4/alloca.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# alloca.m4 serial 9
|
||
-dnl Copyright (C) 2002-2004, 2006-2007, 2009-2010 Free Software Foundation,
|
||
+# alloca.m4 serial 14
|
||
+dnl Copyright (C) 2002-2004, 2006-2007, 2009-2013 Free Software Foundation,
|
||
dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
@@ -7,10 +7,6 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
AC_DEFUN([gl_FUNC_ALLOCA],
|
||
[
|
||
- dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
|
||
- AC_REQUIRE([AC_PROG_CPP])
|
||
- AC_REQUIRE([AC_PROG_EGREP])
|
||
-
|
||
AC_REQUIRE([AC_FUNC_ALLOCA])
|
||
if test $ac_cv_func_alloca_works = no; then
|
||
gl_PREREQ_ALLOCA
|
||
@@ -40,8 +36,86 @@ AC_DEFUN([gl_FUNC_ALLOCA],
|
||
ALLOCA_H=alloca.h
|
||
fi
|
||
AC_SUBST([ALLOCA_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"])
|
||
])
|
||
|
||
# Prerequisites of lib/alloca.c.
|
||
# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
|
||
AC_DEFUN([gl_PREREQ_ALLOCA], [:])
|
||
+
|
||
+# This works around a bug in autoconf <= 2.68.
|
||
+# See <http://lists.gnu.org/archive/html/bug-gnulib/2011-06/msg00277.html>.
|
||
+
|
||
+m4_version_prereq([2.69], [] ,[
|
||
+
|
||
+# This is taken from the following Autoconf patch:
|
||
+# http://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497
|
||
+
|
||
+# _AC_LIBOBJ_ALLOCA
|
||
+# -----------------
|
||
+# Set up the LIBOBJ replacement of 'alloca'. Well, not exactly
|
||
+# AC_LIBOBJ since we actually set the output variable 'ALLOCA'.
|
||
+# Nevertheless, for Automake, AC_LIBSOURCES it.
|
||
+m4_define([_AC_LIBOBJ_ALLOCA],
|
||
+[# The SVR3 libPW and SVR4 libucb both contain incompatible functions
|
||
+# that cause trouble. Some versions do not even contain alloca or
|
||
+# contain a buggy version. If you still want to use their alloca,
|
||
+# use ar to extract alloca.o from them instead of compiling alloca.c.
|
||
+AC_LIBSOURCES(alloca.c)
|
||
+AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl
|
||
+AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.])
|
||
+
|
||
+AC_CACHE_CHECK(whether 'alloca.c' needs Cray hooks, ac_cv_os_cray,
|
||
+[AC_EGREP_CPP(webecray,
|
||
+[#if defined CRAY && ! defined CRAY2
|
||
+webecray
|
||
+#else
|
||
+wenotbecray
|
||
+#endif
|
||
+], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
|
||
+if test $ac_cv_os_cray = yes; then
|
||
+ for ac_func in _getb67 GETB67 getb67; do
|
||
+ AC_CHECK_FUNC($ac_func,
|
||
+ [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
|
||
+ [Define to one of '_getb67', 'GETB67',
|
||
+ 'getb67' for Cray-2 and Cray-YMP
|
||
+ systems. This function is required for
|
||
+ 'alloca.c' support on those systems.])
|
||
+ break])
|
||
+ done
|
||
+fi
|
||
+
|
||
+AC_CACHE_CHECK([stack direction for C alloca],
|
||
+ [ac_cv_c_stack_direction],
|
||
+[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||
+[AC_INCLUDES_DEFAULT
|
||
+int
|
||
+find_stack_direction (int *addr, int depth)
|
||
+{
|
||
+ int dir, dummy = 0;
|
||
+ if (! addr)
|
||
+ addr = &dummy;
|
||
+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
|
||
+ dir = depth ? find_stack_direction (addr, depth - 1) : 0;
|
||
+ return dir + dummy;
|
||
+}
|
||
+
|
||
+int
|
||
+main (int argc, char **argv)
|
||
+{
|
||
+ return find_stack_direction (0, argc + !argv + 20) < 0;
|
||
+}])],
|
||
+ [ac_cv_c_stack_direction=1],
|
||
+ [ac_cv_c_stack_direction=-1],
|
||
+ [ac_cv_c_stack_direction=0])])
|
||
+AH_VERBATIM([STACK_DIRECTION],
|
||
+[/* If using the C implementation of alloca, define if you know the
|
||
+ direction of stack growth for your system; otherwise it will be
|
||
+ automatically deduced at runtime.
|
||
+ STACK_DIRECTION > 0 => grows toward higher addresses
|
||
+ STACK_DIRECTION < 0 => grows toward lower addresses
|
||
+ STACK_DIRECTION = 0 => direction of growth unknown */
|
||
+@%:@undef STACK_DIRECTION])dnl
|
||
+AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
|
||
+])# _AC_LIBOBJ_ALLOCA
|
||
+])
|
||
diff --git a/m4/argp.m4 b/m4/argp.m4
|
||
index d3ca5ba..4445d8e 100644
|
||
--- a/m4/argp.m4
|
||
+++ b/m4/argp.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# argp.m4 serial 11
|
||
-dnl Copyright (C) 2003-2010 Free Software Foundation, Inc.
|
||
+# argp.m4 serial 14
|
||
+dnl Copyright (C) 2003-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -9,23 +9,15 @@ AC_DEFUN([gl_ARGP],
|
||
AC_REQUIRE([AC_C_INLINE])
|
||
AC_REQUIRE([AC_C_RESTRICT])
|
||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||
- dnl argp-parse.c depends on GNU getopt internals, therefore use GNU getopt
|
||
- dnl always.
|
||
- gl_REPLACE_GETOPT
|
||
- dnl Note: gl_REPLACE_GETOPT does AC_LIBOBJ([getopt]), AC_LIBOBJ([getopt1]).
|
||
|
||
- AC_CHECK_DECL([program_invocation_name],
|
||
- [AC_DEFINE([HAVE_DECL_PROGRAM_INVOCATION_NAME], [1],
|
||
- [Define if program_invocation_name is declared])],
|
||
- [AC_DEFINE([GNULIB_PROGRAM_INVOCATION_NAME], [1],
|
||
- [Define to 1 to add extern declaration of program_invocation_name to argp.h])],
|
||
- [#include <errno.h>])
|
||
- AC_CHECK_DECL([program_invocation_short_name],
|
||
- [AC_DEFINE([HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME], [1],
|
||
- [Define if program_invocation_short_name is declared])],
|
||
- [AC_DEFINE([GNULIB_PROGRAM_INVOCATION_SHORT_NAME], [1],
|
||
- [Define to 1 to add extern declaration of program_invocation_short_name to argp.h])],
|
||
- [#include <errno.h>])
|
||
+ AC_CHECK_DECLS([program_invocation_name], [],
|
||
+ [AC_DEFINE([GNULIB_PROGRAM_INVOCATION_NAME], [1],
|
||
+ [Define to 1 to add extern declaration of program_invocation_name to argp.h])],
|
||
+ [[#include <errno.h>]])
|
||
+ AC_CHECK_DECLS([program_invocation_short_name], [],
|
||
+ [AC_DEFINE([GNULIB_PROGRAM_INVOCATION_SHORT_NAME], [1],
|
||
+ [Define to 1 to add extern declaration of program_invocation_short_name to argp.h])],
|
||
+ [[#include <errno.h>]])
|
||
|
||
# Check if program_invocation_name and program_invocation_short_name
|
||
# are defined elsewhere. It is improbable that only one of them will
|
||
@@ -63,3 +55,7 @@ AC_DEFUN([gl_ARGP],
|
||
AC_CHECK_FUNCS_ONCE([flockfile funlockfile])
|
||
AC_CHECK_HEADERS_ONCE([features.h linewrap.h])
|
||
])
|
||
+
|
||
+dnl argp-parse.c depends on GNU getopt internals, therefore use GNU getopt
|
||
+dnl always.
|
||
+AC_DEFUN([gl_REPLACE_GETOPT_ALWAYS], [])
|
||
diff --git a/m4/asm-underscore.m4 b/m4/asm-underscore.m4
|
||
deleted file mode 100644
|
||
index 1736cc4..0000000
|
||
--- a/m4/asm-underscore.m4
|
||
+++ /dev/null
|
||
@@ -1,48 +0,0 @@
|
||
-# asm-underscore.m4 serial 1
|
||
-dnl Copyright (C) 2010 Free Software Foundation, Inc.
|
||
-dnl This file is free software; the Free Software Foundation
|
||
-dnl gives unlimited permission to copy and/or distribute it,
|
||
-dnl with or without modifications, as long as this notice is preserved.
|
||
-
|
||
-dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp.
|
||
-
|
||
-# gl_ASM_SYMBOL_PREFIX
|
||
-# Tests for the prefix of C symbols at the assembly language level and the
|
||
-# linker level. This prefix is either an underscore or empty. Defines the
|
||
-# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to
|
||
-# a stringified variant of this prefix.
|
||
-
|
||
-AC_DEFUN([gl_ASM_SYMBOL_PREFIX],
|
||
-[
|
||
- dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because
|
||
- dnl 1. It works only for GCC.
|
||
- dnl 2. It is incorrectly defined on some platforms, in some GCC versions.
|
||
- AC_CACHE_CHECK(
|
||
- [whether C symbols are prefixed with underscore at the linker level],
|
||
- [gl_cv_prog_as_underscore],
|
||
- [cat > conftest.c <<EOF
|
||
-#ifdef __cplusplus
|
||
-extern "C" int foo (void);
|
||
-#endif
|
||
-int foo(void) { return 0; }
|
||
-EOF
|
||
- # Look for the assembly language name in the .s file.
|
||
- AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c) >/dev/null 2>&1
|
||
- if grep _foo conftest.s >/dev/null ; then
|
||
- gl_cv_prog_as_underscore=yes
|
||
- else
|
||
- gl_cv_prog_as_underscore=no
|
||
- fi
|
||
- rm -f conftest*
|
||
- ])
|
||
- if test $gl_cv_prog_as_underscore = yes; then
|
||
- USER_LABEL_PREFIX=_
|
||
- else
|
||
- USER_LABEL_PREFIX=
|
||
- fi
|
||
- AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX],
|
||
- [Define to the prefix of C symbols at the assembler and linker level,
|
||
- either an underscore or empty.])
|
||
- ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
|
||
- AC_SUBST([ASM_SYMBOL_PREFIX])
|
||
-])
|
||
diff --git a/m4/btowc.m4 b/m4/btowc.m4
|
||
index b16b1f0..978a06e 100644
|
||
--- a/m4/btowc.m4
|
||
+++ b/m4/btowc.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# btowc.m4 serial 7
|
||
-dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
|
||
+# btowc.m4 serial 10
|
||
+dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -28,8 +28,14 @@ AC_DEFUN([gl_FUNC_BTOWC],
|
||
[
|
||
AC_RUN_IFELSE(
|
||
[AC_LANG_SOURCE([[
|
||
-#include <stdio.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
@@ -69,8 +75,14 @@ changequote([,])dnl
|
||
AC_RUN_IFELSE(
|
||
[AC_LANG_SOURCE([[
|
||
#include <locale.h>
|
||
-#include <stdio.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
@@ -96,11 +108,6 @@ int main ()
|
||
*) REPLACE_BTOWC=1 ;;
|
||
esac
|
||
fi
|
||
- if test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1; then
|
||
- gl_REPLACE_WCHAR_H
|
||
- AC_LIBOBJ([btowc])
|
||
- gl_PREREQ_BTOWC
|
||
- fi
|
||
])
|
||
|
||
# Prerequisites of lib/btowc.c.
|
||
diff --git a/m4/codeset.m4 b/m4/codeset.m4
|
||
index f722b2e..c2761be 100644
|
||
--- a/m4/codeset.m4
|
||
+++ b/m4/codeset.m4
|
||
@@ -1,5 +1,5 @@
|
||
# codeset.m4 serial 5 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2000-2002, 2006, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/configmake.m4 b/m4/configmake.m4
|
||
new file mode 100644
|
||
index 0000000..823ffc0
|
||
--- /dev/null
|
||
+++ b/m4/configmake.m4
|
||
@@ -0,0 +1,50 @@
|
||
+# configmake.m4 serial 1
|
||
+dnl Copyright (C) 2010-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+# gl_CONFIGMAKE_PREP
|
||
+# ------------------
|
||
+# Guarantee all of the standard directory variables, even when used with
|
||
+# autoconf 2.59 (datarootdir wasn't supported until 2.59c) or automake
|
||
+# 1.9.6 (pkglibexecdir wasn't supported until 1.10b.).
|
||
+AC_DEFUN([gl_CONFIGMAKE_PREP],
|
||
+[
|
||
+ dnl Technically, datadir should default to datarootdir. But if
|
||
+ dnl autoconf is too old to provide datarootdir, then reversing the
|
||
+ dnl definition is a reasonable compromise. Only AC_SUBST a variable
|
||
+ dnl if it was not already defined earlier by autoconf.
|
||
+ if test "x$datarootdir" = x; then
|
||
+ AC_SUBST([datarootdir], ['${datadir}'])
|
||
+ fi
|
||
+ dnl Copy the approach used in autoconf 2.60.
|
||
+ if test "x$docdir" = x; then
|
||
+ AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
|
||
+ ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
|
||
+ ['${datarootdir}/doc/${PACKAGE}'])])
|
||
+ fi
|
||
+ dnl The remaining variables missing from autoconf 2.59 are easier.
|
||
+ if test "x$htmldir" = x; then
|
||
+ AC_SUBST([htmldir], ['${docdir}'])
|
||
+ fi
|
||
+ if test "x$dvidir" = x; then
|
||
+ AC_SUBST([dvidir], ['${docdir}'])
|
||
+ fi
|
||
+ if test "x$pdfdir" = x; then
|
||
+ AC_SUBST([pdfdir], ['${docdir}'])
|
||
+ fi
|
||
+ if test "x$psdir" = x; then
|
||
+ AC_SUBST([psdir], ['${docdir}'])
|
||
+ fi
|
||
+ if test "x$lispdir" = x; then
|
||
+ AC_SUBST([lispdir], ['${datarootdir}/emacs/site-lisp'])
|
||
+ fi
|
||
+ if test "x$localedir" = x; then
|
||
+ AC_SUBST([localedir], ['${datarootdir}/locale'])
|
||
+ fi
|
||
+
|
||
+ dnl Automake 1.9.6 only lacks pkglibexecdir; and since 1.11 merely
|
||
+ dnl provides it without AC_SUBST, this blind use of AC_SUBST is safe.
|
||
+ AC_SUBST([pkglibexecdir], ['${libexecdir}/${PACKAGE}'])
|
||
+])
|
||
diff --git a/m4/dirname.m4 b/m4/dirname.m4
|
||
index 576b5be..5897a2a 100644
|
||
--- a/m4/dirname.m4
|
||
+++ b/m4/dirname.m4
|
||
@@ -1,5 +1,5 @@
|
||
-#serial 8 -*- autoconf -*-
|
||
-dnl Copyright (C) 2002-2006, 2009-2010 Free Software Foundation, Inc.
|
||
+#serial 10 -*- autoconf -*-
|
||
+dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -7,18 +7,11 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
AC_DEFUN([gl_DIRNAME],
|
||
[
|
||
AC_REQUIRE([gl_DIRNAME_LGPL])
|
||
- AC_LIBOBJ([basename])
|
||
- AC_LIBOBJ([dirname])
|
||
])
|
||
|
||
AC_DEFUN([gl_DIRNAME_LGPL],
|
||
[
|
||
- AC_LIBOBJ([basename-lgpl])
|
||
- AC_LIBOBJ([dirname-lgpl])
|
||
- AC_LIBOBJ([stripslash])
|
||
-
|
||
dnl Prerequisites of lib/dirname.h.
|
||
- AC_REQUIRE([gl_AC_DOS])
|
||
AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
|
||
|
||
dnl No prerequisites of lib/basename-lgpl.c, lib/dirname-lgpl.c,
|
||
diff --git a/m4/dos.m4 b/m4/dos.m4
|
||
deleted file mode 100644
|
||
index 5660542..0000000
|
||
--- a/m4/dos.m4
|
||
+++ /dev/null
|
||
@@ -1,71 +0,0 @@
|
||
-#serial 11 -*- autoconf -*-
|
||
-
|
||
-# Define some macros required for proper operation of code in lib/*.c
|
||
-# on MSDOS/Windows systems.
|
||
-
|
||
-# Copyright (C) 2000-2001, 2004-2006, 2009-2010 Free Software Foundation, Inc.
|
||
-# This file is free software; the Free Software Foundation
|
||
-# gives unlimited permission to copy and/or distribute it,
|
||
-# with or without modifications, as long as this notice is preserved.
|
||
-
|
||
-# From Jim Meyering.
|
||
-
|
||
-AC_DEFUN([gl_AC_DOS],
|
||
- [
|
||
- AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos],
|
||
- [
|
||
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
|
||
-#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __CYGWIN__
|
||
-neither MSDOS nor Windows
|
||
-#endif]])],
|
||
- [ac_cv_win_or_dos=yes],
|
||
- [ac_cv_win_or_dos=no])
|
||
- ])
|
||
-
|
||
- if test x"$ac_cv_win_or_dos" = xyes; then
|
||
- ac_fs_accepts_drive_letter_prefix=1
|
||
- ac_fs_backslash_is_file_name_separator=1
|
||
- AC_CACHE_CHECK([whether drive letter can start relative path],
|
||
- [ac_cv_drive_letter_can_be_relative],
|
||
- [
|
||
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
|
||
-#if defined __CYGWIN__
|
||
-drive letters are always absolute
|
||
-#endif]])],
|
||
- [ac_cv_drive_letter_can_be_relative=yes],
|
||
- [ac_cv_drive_letter_can_be_relative=no])
|
||
- ])
|
||
- if test x"$ac_cv_drive_letter_can_be_relative" = xyes; then
|
||
- ac_fs_drive_letter_can_be_relative=1
|
||
- else
|
||
- ac_fs_drive_letter_can_be_relative=0
|
||
- fi
|
||
- else
|
||
- ac_fs_accepts_drive_letter_prefix=0
|
||
- ac_fs_backslash_is_file_name_separator=0
|
||
- ac_fs_drive_letter_can_be_relative=0
|
||
- fi
|
||
-
|
||
- AC_DEFINE_UNQUOTED([FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX],
|
||
- $ac_fs_accepts_drive_letter_prefix,
|
||
- [Define on systems for which file names may have a so-called
|
||
- `drive letter' prefix, define this to compute the length of that
|
||
- prefix, including the colon.])
|
||
-
|
||
- AH_VERBATIM(ISSLASH,
|
||
- [#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
|
||
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
|
||
-#else
|
||
-# define ISSLASH(C) ((C) == '/')
|
||
-#endif])
|
||
-
|
||
- AC_DEFINE_UNQUOTED([FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR],
|
||
- $ac_fs_backslash_is_file_name_separator,
|
||
- [Define if the backslash character may also serve as a file name
|
||
- component separator.])
|
||
-
|
||
- AC_DEFINE_UNQUOTED([FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE],
|
||
- $ac_fs_drive_letter_can_be_relative,
|
||
- [Define if a drive letter prefix denotes a relative path if it is
|
||
- not followed by a file name component separator.])
|
||
- ])
|
||
diff --git a/m4/double-slash-root.m4 b/m4/double-slash-root.m4
|
||
index 66a79c0..bd6f867 100644
|
||
--- a/m4/double-slash-root.m4
|
||
+++ b/m4/double-slash-root.m4
|
||
@@ -1,5 +1,5 @@
|
||
# double-slash-root.m4 serial 4 -*- Autoconf -*-
|
||
-dnl Copyright (C) 2006, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2006, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/eealloc.m4 b/m4/eealloc.m4
|
||
new file mode 100644
|
||
index 0000000..c640ec1
|
||
--- /dev/null
|
||
+++ b/m4/eealloc.m4
|
||
@@ -0,0 +1,31 @@
|
||
+# eealloc.m4 serial 3
|
||
+dnl Copyright (C) 2003, 2009-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_EEALLOC],
|
||
+[
|
||
+ AC_REQUIRE([gl_EEMALLOC])
|
||
+ AC_REQUIRE([gl_EEREALLOC])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_EEMALLOC],
|
||
+[
|
||
+ _AC_FUNC_MALLOC_IF(
|
||
+ [gl_cv_func_malloc_0_nonnull=1],
|
||
+ [gl_cv_func_malloc_0_nonnull=0])
|
||
+ AC_DEFINE_UNQUOTED([MALLOC_0_IS_NONNULL], [$gl_cv_func_malloc_0_nonnull],
|
||
+ [If malloc(0) is != NULL, define this to 1. Otherwise define this
|
||
+ to 0.])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_EEREALLOC],
|
||
+[
|
||
+ _AC_FUNC_REALLOC_IF(
|
||
+ [gl_cv_func_realloc_0_nonnull=1],
|
||
+ [gl_cv_func_realloc_0_nonnull=0])
|
||
+ AC_DEFINE_UNQUOTED([REALLOC_0_IS_NONNULL], [$gl_cv_func_realloc_0_nonnull],
|
||
+ [If realloc(NULL,0) is != NULL, define this to 1. Otherwise define this
|
||
+ to 0.])
|
||
+])
|
||
diff --git a/m4/errno_h.m4 b/m4/errno_h.m4
|
||
index d02a039..c813ea5 100644
|
||
--- a/m4/errno_h.m4
|
||
+++ b/m4/errno_h.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# errno_h.m4 serial 6
|
||
-dnl Copyright (C) 2004, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+# errno_h.m4 serial 12
|
||
+dnl Copyright (C) 2004, 2006, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -10,6 +10,9 @@ AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
|
||
AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
|
||
AC_EGREP_CPP([booboo],[
|
||
#include <errno.h>
|
||
+#if !defined ETXTBSY
|
||
+booboo
|
||
+#endif
|
||
#if !defined ENOMSG
|
||
booboo
|
||
#endif
|
||
@@ -34,12 +37,30 @@ booboo
|
||
#if !defined ENOTSUP
|
||
booboo
|
||
#endif
|
||
+#if !defined ENETRESET
|
||
+booboo
|
||
+#endif
|
||
+#if !defined ECONNABORTED
|
||
+booboo
|
||
+#endif
|
||
#if !defined ESTALE
|
||
booboo
|
||
#endif
|
||
+#if !defined EDQUOT
|
||
+booboo
|
||
+#endif
|
||
#if !defined ECANCELED
|
||
booboo
|
||
#endif
|
||
+#if !defined EOWNERDEAD
|
||
+booboo
|
||
+#endif
|
||
+#if !defined ENOTRECOVERABLE
|
||
+booboo
|
||
+#endif
|
||
+#if !defined EILSEQ
|
||
+booboo
|
||
+#endif
|
||
],
|
||
[gl_cv_header_errno_h_complete=no],
|
||
[gl_cv_header_errno_h_complete=yes])
|
||
@@ -47,10 +68,11 @@ booboo
|
||
if test $gl_cv_header_errno_h_complete = yes; then
|
||
ERRNO_H=''
|
||
else
|
||
- gl_CHECK_NEXT_HEADERS([errno.h])
|
||
+ gl_NEXT_HEADERS([errno.h])
|
||
ERRNO_H='errno.h'
|
||
fi
|
||
AC_SUBST([ERRNO_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"])
|
||
gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
|
||
gl_REPLACE_ERRNO_VALUE([ENOLINK])
|
||
gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
|
||
diff --git a/m4/error.m4 b/m4/error.m4
|
||
index dd5a197..29e6fdc 100644
|
||
--- a/m4/error.m4
|
||
+++ b/m4/error.m4
|
||
@@ -1,6 +1,6 @@
|
||
-#serial 13
|
||
+#serial 14
|
||
|
||
-# Copyright (C) 1996-1998, 2001-2004, 2009-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 1996-1998, 2001-2004, 2009-2013 Free Software Foundation, Inc.
|
||
#
|
||
# This file is free software; the Free Software Foundation
|
||
# gives unlimited permission to copy and/or distribute it,
|
||
@@ -8,16 +8,8 @@
|
||
|
||
AC_DEFUN([gl_ERROR],
|
||
[
|
||
- AC_FUNC_ERROR_AT_LINE
|
||
- dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]).
|
||
- gl_PREREQ_ERROR
|
||
-])
|
||
-
|
||
-# Redefine AC_FUNC_ERROR_AT_LINE, because it is no longer maintained in
|
||
-# Autoconf.
|
||
-AC_DEFUN([AC_FUNC_ERROR_AT_LINE],
|
||
-[
|
||
- AC_LIBSOURCES([error.h, error.c])dnl
|
||
+ dnl We don't use AC_FUNC_ERROR_AT_LINE any more, because it is no longer
|
||
+ dnl maintained in Autoconf and because it invokes AC_LIBOBJ.
|
||
AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line],
|
||
[AC_LINK_IFELSE(
|
||
[AC_LANG_PROGRAM(
|
||
@@ -25,15 +17,11 @@ AC_DEFUN([AC_FUNC_ERROR_AT_LINE],
|
||
[[error_at_line (0, 0, "", 0, "an error occurred");]])],
|
||
[ac_cv_lib_error_at_line=yes],
|
||
[ac_cv_lib_error_at_line=no])])
|
||
- if test $ac_cv_lib_error_at_line = no; then
|
||
- AC_LIBOBJ([error])
|
||
- fi
|
||
])
|
||
|
||
# Prerequisites of lib/error.c.
|
||
AC_DEFUN([gl_PREREQ_ERROR],
|
||
[
|
||
AC_REQUIRE([AC_FUNC_STRERROR_R])
|
||
- AC_REQUIRE([AC_C_INLINE])
|
||
:
|
||
])
|
||
diff --git a/m4/exponentd.m4 b/m4/exponentd.m4
|
||
new file mode 100644
|
||
index 0000000..09df468
|
||
--- /dev/null
|
||
+++ b/m4/exponentd.m4
|
||
@@ -0,0 +1,116 @@
|
||
+# exponentd.m4 serial 3
|
||
+dnl Copyright (C) 2007-2008, 2010-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+AC_DEFUN([gl_DOUBLE_EXPONENT_LOCATION],
|
||
+[
|
||
+ AC_CACHE_CHECK([where to find the exponent in a 'double'],
|
||
+ [gl_cv_cc_double_expbit0],
|
||
+ [
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_SOURCE([[
|
||
+#include <float.h>
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <string.h>
|
||
+#define NWORDS \
|
||
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
|
||
+static unsigned int ored_words[NWORDS];
|
||
+static unsigned int anded_words[NWORDS];
|
||
+static void add_to_ored_words (double x)
|
||
+{
|
||
+ memory_double m;
|
||
+ size_t i;
|
||
+ /* Clear it first, in case sizeof (double) < sizeof (memory_double). */
|
||
+ memset (&m, 0, sizeof (memory_double));
|
||
+ m.value = x;
|
||
+ for (i = 0; i < NWORDS; i++)
|
||
+ {
|
||
+ ored_words[i] |= m.word[i];
|
||
+ anded_words[i] &= m.word[i];
|
||
+ }
|
||
+}
|
||
+int main ()
|
||
+{
|
||
+ size_t j;
|
||
+ FILE *fp = fopen ("conftest.out", "w");
|
||
+ if (fp == NULL)
|
||
+ return 1;
|
||
+ for (j = 0; j < NWORDS; j++)
|
||
+ anded_words[j] = ~ (unsigned int) 0;
|
||
+ add_to_ored_words (0.25);
|
||
+ add_to_ored_words (0.5);
|
||
+ add_to_ored_words (1.0);
|
||
+ add_to_ored_words (2.0);
|
||
+ add_to_ored_words (4.0);
|
||
+ /* Remove bits that are common (e.g. if representation of the first mantissa
|
||
+ bit is explicit). */
|
||
+ for (j = 0; j < NWORDS; j++)
|
||
+ ored_words[j] &= ~anded_words[j];
|
||
+ /* Now find the nonzero word. */
|
||
+ for (j = 0; j < NWORDS; j++)
|
||
+ if (ored_words[j] != 0)
|
||
+ break;
|
||
+ if (j < NWORDS)
|
||
+ {
|
||
+ size_t i;
|
||
+ for (i = j + 1; i < NWORDS; i++)
|
||
+ if (ored_words[i] != 0)
|
||
+ {
|
||
+ fprintf (fp, "unknown");
|
||
+ return (fclose (fp) != 0);
|
||
+ }
|
||
+ for (i = 0; ; i++)
|
||
+ if ((ored_words[j] >> i) & 1)
|
||
+ {
|
||
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
|
||
+ return (fclose (fp) != 0);
|
||
+ }
|
||
+ }
|
||
+ fprintf (fp, "unknown");
|
||
+ return (fclose (fp) != 0);
|
||
+}
|
||
+ ]])],
|
||
+ [gl_cv_cc_double_expbit0=`cat conftest.out`],
|
||
+ [gl_cv_cc_double_expbit0="unknown"],
|
||
+ [
|
||
+ dnl On ARM, there are two 'double' floating-point formats, used by
|
||
+ dnl different sets of instructions: The older FPA instructions assume
|
||
+ dnl that they are stored in big-endian word order, while the words
|
||
+ dnl (like integer types) are stored in little-endian byte order.
|
||
+ dnl The newer VFP instructions assume little-endian order
|
||
+ dnl consistently.
|
||
+ AC_EGREP_CPP([mixed_endianness], [
|
||
+#if defined arm || defined __arm || defined __arm__
|
||
+ mixed_endianness
|
||
+#endif
|
||
+ ],
|
||
+ [gl_cv_cc_double_expbit0="unknown"],
|
||
+ [
|
||
+ pushdef([AC_MSG_CHECKING],[:])dnl
|
||
+ pushdef([AC_MSG_RESULT],[:])dnl
|
||
+ pushdef([AC_MSG_RESULT_UNQUOTED],[:])dnl
|
||
+ AC_C_BIGENDIAN(
|
||
+ [gl_cv_cc_double_expbit0="word 0 bit 20"],
|
||
+ [gl_cv_cc_double_expbit0="word 1 bit 20"],
|
||
+ [gl_cv_cc_double_expbit0="unknown"])
|
||
+ popdef([AC_MSG_RESULT_UNQUOTED])dnl
|
||
+ popdef([AC_MSG_RESULT])dnl
|
||
+ popdef([AC_MSG_CHECKING])dnl
|
||
+ ])
|
||
+ ])
|
||
+ rm -f conftest.out
|
||
+ ])
|
||
+ case "$gl_cv_cc_double_expbit0" in
|
||
+ word*bit*)
|
||
+ word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
|
||
+ bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'`
|
||
+ AC_DEFINE_UNQUOTED([DBL_EXPBIT0_WORD], [$word],
|
||
+ [Define as the word index where to find the exponent of 'double'.])
|
||
+ AC_DEFINE_UNQUOTED([DBL_EXPBIT0_BIT], [$bit],
|
||
+ [Define as the bit index in the word where to find bit 0 of the exponent of 'double'.])
|
||
+ ;;
|
||
+ esac
|
||
+])
|
||
diff --git a/m4/extensions.m4 b/m4/extensions.m4
|
||
index 7d9458a..07ba376 100644
|
||
--- a/m4/extensions.m4
|
||
+++ b/m4/extensions.m4
|
||
@@ -1,14 +1,14 @@
|
||
-# serial 9 -*- Autoconf -*-
|
||
+# serial 13 -*- Autoconf -*-
|
||
# Enable extensions on systems that normally disable them.
|
||
|
||
-# Copyright (C) 2003, 2006-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2003, 2006-2013 Free Software Foundation, Inc.
|
||
# This file is free software; the Free Software Foundation
|
||
# gives unlimited permission to copy and/or distribute it,
|
||
# with or without modifications, as long as this notice is preserved.
|
||
|
||
# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS
|
||
# Autoconf. Perhaps we can remove this once we can assume Autoconf
|
||
-# 2.62 or later everywhere, but since CVS Autoconf mutates rapidly
|
||
+# 2.70 or later everywhere, but since Autoconf mutates rapidly
|
||
# enough in this area it's likely we'll need to redefine
|
||
# AC_USE_SYSTEM_EXTENSIONS for quite some time.
|
||
|
||
@@ -30,6 +30,7 @@
|
||
# ------------------------
|
||
# Enable extensions on systems that normally disable them,
|
||
# typically due to standards-conformance issues.
|
||
+#
|
||
# Remember that #undef in AH_VERBATIM gets replaced with #define by
|
||
# AC_DEFINE. The goal here is to define all known feature-enabling
|
||
# macros, then, if reports of conflicts are made, disable macros that
|
||
@@ -38,35 +39,31 @@ AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
|
||
[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
|
||
AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
|
||
|
||
- AC_REQUIRE([AC_CANONICAL_HOST])
|
||
-
|
||
AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
|
||
if test "$MINIX" = yes; then
|
||
AC_DEFINE([_POSIX_SOURCE], [1],
|
||
- [Define to 1 if you need to in order for `stat' and other
|
||
+ [Define to 1 if you need to in order for 'stat' and other
|
||
things to work.])
|
||
AC_DEFINE([_POSIX_1_SOURCE], [2],
|
||
[Define to 2 if the system does not provide POSIX.1 features
|
||
except with this defined.])
|
||
AC_DEFINE([_MINIX], [1],
|
||
[Define to 1 if on MINIX.])
|
||
+ AC_DEFINE([_NETBSD_SOURCE], [1],
|
||
+ [Define to 1 to make NetBSD features available. MINIX 3 needs this.])
|
||
fi
|
||
|
||
- dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
|
||
- dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already
|
||
- dnl provided.
|
||
- case "$host_os" in
|
||
- hpux*)
|
||
- AC_DEFINE([_XOPEN_SOURCE], [500],
|
||
- [Define to 500 only on HP-UX.])
|
||
- ;;
|
||
- esac
|
||
-
|
||
- AH_VERBATIM([__EXTENSIONS__],
|
||
+dnl Use a different key than __EXTENSIONS__, as that name broke existing
|
||
+dnl configure.ac when using autoheader 2.62.
|
||
+ AH_VERBATIM([USE_SYSTEM_EXTENSIONS],
|
||
[/* Enable extensions on AIX 3, Interix. */
|
||
#ifndef _ALL_SOURCE
|
||
# undef _ALL_SOURCE
|
||
#endif
|
||
+/* Enable general extensions on OS X. */
|
||
+#ifndef _DARWIN_C_SOURCE
|
||
+# undef _DARWIN_C_SOURCE
|
||
+#endif
|
||
/* Enable GNU extensions on systems that have them. */
|
||
#ifndef _GNU_SOURCE
|
||
# undef _GNU_SOURCE
|
||
@@ -79,6 +76,12 @@ AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
|
||
#ifndef _TANDEM_SOURCE
|
||
# undef _TANDEM_SOURCE
|
||
#endif
|
||
+/* Enable X/Open extensions if necessary. HP-UX 11.11 defines
|
||
+ mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
|
||
+ whether compiling with -Ae or -D_HPUX_SOURCE=1. */
|
||
+#ifndef _XOPEN_SOURCE
|
||
+# undef _XOPEN_SOURCE
|
||
+#endif
|
||
/* Enable general extensions on Solaris. */
|
||
#ifndef __EXTENSIONS__
|
||
# undef __EXTENSIONS__
|
||
@@ -95,9 +98,26 @@ AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
|
||
test $ac_cv_safe_to_define___extensions__ = yes &&
|
||
AC_DEFINE([__EXTENSIONS__])
|
||
AC_DEFINE([_ALL_SOURCE])
|
||
+ AC_DEFINE([_DARWIN_C_SOURCE])
|
||
AC_DEFINE([_GNU_SOURCE])
|
||
AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
|
||
AC_DEFINE([_TANDEM_SOURCE])
|
||
+ AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined],
|
||
+ [ac_cv_should_define__xopen_source],
|
||
+ [ac_cv_should_define__xopen_source=no
|
||
+ AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM([[
|
||
+ #include <wchar.h>
|
||
+ mbstate_t x;]])],
|
||
+ [],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM([[
|
||
+ #define _XOPEN_SOURCE 500
|
||
+ #include <wchar.h>
|
||
+ mbstate_t x;]])],
|
||
+ [ac_cv_should_define__xopen_source=yes])])])
|
||
+ test $ac_cv_should_define__xopen_source = yes &&
|
||
+ AC_DEFINE([_XOPEN_SOURCE], [500])
|
||
])# AC_USE_SYSTEM_EXTENSIONS
|
||
|
||
# gl_USE_SYSTEM_EXTENSIONS
|
||
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
|
||
new file mode 100644
|
||
index 0000000..0152f29
|
||
--- /dev/null
|
||
+++ b/m4/extern-inline.m4
|
||
@@ -0,0 +1,65 @@
|
||
+dnl 'extern inline' a la ISO C99.
|
||
+
|
||
+dnl Copyright 2012-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_EXTERN_INLINE],
|
||
+[
|
||
+ AH_VERBATIM([extern_inline],
|
||
+[/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
|
||
+ _GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
|
||
+ _GL_INLINE_HEADER_BEGIN contains useful stuff to put
|
||
+ in an include file, before uses of _GL_INLINE.
|
||
+ It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic,
|
||
+ when FOO is an inline function in the header; see
|
||
+ <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
|
||
+ _GL_INLINE_HEADER_END contains useful stuff to put
|
||
+ in the same include file, after uses of _GL_INLINE.
|
||
+
|
||
+ Suppress extern inline with HP-UX cc, as it appears to be broken; see
|
||
+ <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
|
||
+
|
||
+ Suppress the use of extern inline on Apple's platforms,
|
||
+ as Libc-825.25 (2012-09-19) is incompatible with it; see
|
||
+ <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
|
||
+ Perhaps Apple will fix this some day. */
|
||
+#if ((__GNUC__ \
|
||
+ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
|
||
+ : 199901L <= __STDC_VERSION__ && !defined __HP_cc) \
|
||
+ && !defined __APPLE__)
|
||
+# define _GL_INLINE inline
|
||
+# define _GL_EXTERN_INLINE extern inline
|
||
+#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__
|
||
+# if __GNUC_GNU_INLINE__
|
||
+ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
|
||
+# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
|
||
+# else
|
||
+# define _GL_INLINE extern inline
|
||
+# endif
|
||
+# define _GL_EXTERN_INLINE extern
|
||
+#else
|
||
+# define _GL_INLINE static _GL_UNUSED
|
||
+# define _GL_EXTERN_INLINE static _GL_UNUSED
|
||
+#endif
|
||
+
|
||
+#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
|
||
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
|
||
+# define _GL_INLINE_HEADER_CONST_PRAGMA
|
||
+# else
|
||
+# define _GL_INLINE_HEADER_CONST_PRAGMA \
|
||
+ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
|
||
+# endif
|
||
+# define _GL_INLINE_HEADER_BEGIN \
|
||
+ _Pragma ("GCC diagnostic push") \
|
||
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
|
||
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
|
||
+ _GL_INLINE_HEADER_CONST_PRAGMA
|
||
+# define _GL_INLINE_HEADER_END \
|
||
+ _Pragma ("GCC diagnostic pop")
|
||
+#else
|
||
+# define _GL_INLINE_HEADER_BEGIN
|
||
+# define _GL_INLINE_HEADER_END
|
||
+#endif])
|
||
+])
|
||
diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4
|
||
index 1adacc8..87cc4bd 100644
|
||
--- a/m4/fcntl-o.m4
|
||
+++ b/m4/fcntl-o.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# fcntl-o.m4 serial 2
|
||
-dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
|
||
+# fcntl-o.m4 serial 4
|
||
+dnl Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -17,12 +17,21 @@ AC_DEFUN([gl_FCNTL_O_FLAGS],
|
||
m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
|
||
[AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
|
||
[AC_REQUIRE([AC_GNU_SOURCE])])
|
||
+
|
||
+ AC_CHECK_HEADERS_ONCE([unistd.h])
|
||
+ AC_CHECK_FUNCS_ONCE([symlink])
|
||
AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
|
||
[AC_RUN_IFELSE(
|
||
[AC_LANG_PROGRAM(
|
||
[[#include <sys/types.h>
|
||
#include <sys/stat.h>
|
||
- #include <unistd.h>
|
||
+ #if HAVE_UNISTD_H
|
||
+ # include <unistd.h>
|
||
+ #else /* on Windows with MSVC */
|
||
+ # include <io.h>
|
||
+ # include <stdlib.h>
|
||
+ # defined sleep(n) _sleep ((n) * 1000)
|
||
+ #endif
|
||
#include <fcntl.h>
|
||
#ifndef O_NOATIME
|
||
#define O_NOATIME 0
|
||
@@ -37,34 +46,74 @@ AC_DEFUN([gl_FCNTL_O_FLAGS],
|
||
};
|
||
]],
|
||
[[
|
||
- int status = !constants;
|
||
+ int result = !constants;
|
||
+ #if HAVE_SYMLINK
|
||
{
|
||
static char const sym[] = "conftest.sym";
|
||
- if (symlink (".", sym) != 0
|
||
- || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
|
||
- status |= 32;
|
||
+ if (symlink ("/dev/null", sym) != 0)
|
||
+ result |= 2;
|
||
+ else
|
||
+ {
|
||
+ int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
|
||
+ if (fd >= 0)
|
||
+ {
|
||
+ close (fd);
|
||
+ result |= 4;
|
||
+ }
|
||
+ }
|
||
+ if (unlink (sym) != 0 || symlink (".", sym) != 0)
|
||
+ result |= 2;
|
||
+ else
|
||
+ {
|
||
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW);
|
||
+ if (fd >= 0)
|
||
+ {
|
||
+ close (fd);
|
||
+ result |= 4;
|
||
+ }
|
||
+ }
|
||
unlink (sym);
|
||
}
|
||
+ #endif
|
||
{
|
||
static char const file[] = "confdefs.h";
|
||
int fd = open (file, O_RDONLY | O_NOATIME);
|
||
- char c;
|
||
- struct stat st0, st1;
|
||
- if (fd < 0
|
||
- || fstat (fd, &st0) != 0
|
||
- || sleep (1) != 0
|
||
- || read (fd, &c, 1) != 1
|
||
- || close (fd) != 0
|
||
- || stat (file, &st1) != 0
|
||
- || st0.st_atime != st1.st_atime)
|
||
- status |= 64;
|
||
+ if (fd < 0)
|
||
+ result |= 8;
|
||
+ else
|
||
+ {
|
||
+ struct stat st0;
|
||
+ if (fstat (fd, &st0) != 0)
|
||
+ result |= 16;
|
||
+ else
|
||
+ {
|
||
+ char c;
|
||
+ sleep (1);
|
||
+ if (read (fd, &c, 1) != 1)
|
||
+ result |= 24;
|
||
+ else
|
||
+ {
|
||
+ if (close (fd) != 0)
|
||
+ result |= 32;
|
||
+ else
|
||
+ {
|
||
+ struct stat st1;
|
||
+ if (stat (file, &st1) != 0)
|
||
+ result |= 40;
|
||
+ else
|
||
+ if (st0.st_atime != st1.st_atime)
|
||
+ result |= 64;
|
||
+ }
|
||
+ }
|
||
+ }
|
||
+ }
|
||
}
|
||
- return status;]])],
|
||
+ return result;]])],
|
||
[gl_cv_header_working_fcntl_h=yes],
|
||
[case $? in #(
|
||
- 32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
|
||
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
|
||
64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
|
||
- 96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
|
||
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
|
||
*) gl_cv_header_working_fcntl_h='no';;
|
||
esac],
|
||
[gl_cv_header_working_fcntl_h=cross-compiling])])
|
||
diff --git a/m4/float_h.m4 b/m4/float_h.m4
|
||
index f6099db..397f2d1 100644
|
||
--- a/m4/float_h.m4
|
||
+++ b/m4/float_h.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# float_h.m4 serial 4
|
||
-dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+# float_h.m4 serial 9
|
||
+dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -9,11 +9,90 @@ AC_DEFUN([gl_FLOAT_H],
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||
FLOAT_H=
|
||
+ REPLACE_FLOAT_LDBL=0
|
||
case "$host_os" in
|
||
- beos* | openbsd* | mirbsd*)
|
||
+ aix* | beos* | openbsd* | mirbsd* | irix*)
|
||
FLOAT_H=float.h
|
||
- gl_CHECK_NEXT_HEADERS([float.h])
|
||
+ ;;
|
||
+ freebsd*)
|
||
+ case "$host_cpu" in
|
||
+changequote(,)dnl
|
||
+ i[34567]86 )
|
||
+changequote([,])dnl
|
||
+ FLOAT_H=float.h
|
||
+ ;;
|
||
+ x86_64 )
|
||
+ # On x86_64 systems, the C compiler may still be generating
|
||
+ # 32-bit code.
|
||
+ AC_EGREP_CPP([yes],
|
||
+ [#if defined __LP64__ || defined __x86_64__ || defined __amd64__
|
||
+ yes
|
||
+ #endif],
|
||
+ [],
|
||
+ [FLOAT_H=float.h])
|
||
+ ;;
|
||
+ esac
|
||
+ ;;
|
||
+ linux*)
|
||
+ case "$host_cpu" in
|
||
+ powerpc*)
|
||
+ FLOAT_H=float.h
|
||
+ ;;
|
||
+ esac
|
||
+ ;;
|
||
+ esac
|
||
+ case "$host_os" in
|
||
+ aix* | freebsd* | linux*)
|
||
+ if test -n "$FLOAT_H"; then
|
||
+ REPLACE_FLOAT_LDBL=1
|
||
+ fi
|
||
;;
|
||
esac
|
||
+
|
||
+ dnl Test against glibc-2.7 Linux/SPARC64 bug.
|
||
+ REPLACE_ITOLD=0
|
||
+ AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works],
|
||
+ [gl_cv_func_itold_works],
|
||
+ [
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_SOURCE([[
|
||
+int i = -1;
|
||
+volatile long double ld;
|
||
+int main ()
|
||
+{
|
||
+ ld += i * 1.0L;
|
||
+ if (ld > 0)
|
||
+ return 1;
|
||
+ return 0;
|
||
+}]])],
|
||
+ [gl_cv_func_itold_works=yes],
|
||
+ [gl_cv_func_itold_works=no],
|
||
+ [case "$host" in
|
||
+ sparc*-*-linux*)
|
||
+ AC_EGREP_CPP([yes],
|
||
+ [#if defined __LP64__ || defined __arch64__
|
||
+ yes
|
||
+ #endif],
|
||
+ [gl_cv_func_itold_works="guessing no"],
|
||
+ [gl_cv_func_itold_works="guessing yes"])
|
||
+ ;;
|
||
+ *) gl_cv_func_itold_works="guessing yes" ;;
|
||
+ esac
|
||
+ ])
|
||
+ ])
|
||
+ case "$gl_cv_func_itold_works" in
|
||
+ *no)
|
||
+ REPLACE_ITOLD=1
|
||
+ dnl We add the workaround to <float.h> but also to <math.h>,
|
||
+ dnl to increase the chances that the fix function gets pulled in.
|
||
+ FLOAT_H=float.h
|
||
+ ;;
|
||
+ esac
|
||
+
|
||
+ if test -n "$FLOAT_H"; then
|
||
+ gl_NEXT_HEADERS([float.h])
|
||
+ fi
|
||
AC_SUBST([FLOAT_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"])
|
||
+ AC_SUBST([REPLACE_ITOLD])
|
||
])
|
||
diff --git a/m4/fnmatch.m4 b/m4/fnmatch.m4
|
||
index 212ead5..fa0ba4d 100644
|
||
--- a/m4/fnmatch.m4
|
||
+++ b/m4/fnmatch.m4
|
||
@@ -1,6 +1,6 @@
|
||
-# Check for fnmatch - serial 4.
|
||
+# Check for fnmatch - serial 9.
|
||
|
||
-# Copyright (C) 2000-2007, 2009-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2000-2007, 2009-2013 Free Software Foundation, Inc.
|
||
# This file is free software; the Free Software Foundation
|
||
# gives unlimited permission to copy and/or distribute it,
|
||
# with or without modifications, as long as this notice is preserved.
|
||
@@ -20,7 +20,9 @@ AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
|
||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||
|
||
FNMATCH_H=
|
||
- gl_fnmatch_required_lowercase=`echo $gl_fnmatch_required | tr 'A-Z' 'a-z'`
|
||
+ gl_fnmatch_required_lowercase=`
|
||
+ echo $gl_fnmatch_required | LC_ALL=C tr '[[A-Z]]' '[[a-z]]'
|
||
+ `
|
||
gl_fnmatch_cache_var="gl_cv_func_fnmatch_${gl_fnmatch_required_lowercase}"
|
||
AC_CACHE_CHECK([for working $gl_fnmatch_required fnmatch],
|
||
[$gl_fnmatch_cache_var],
|
||
@@ -58,33 +60,62 @@ AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
|
||
static char const a01[] = { 'a' + 1, 0 };
|
||
static char const bs_1[] = { '\\\\' - 1, 0 };
|
||
static char const bs01[] = { '\\\\' + 1, 0 };
|
||
- return
|
||
- !(n ("a*", "", 0)
|
||
- && y ("a*", "abc", 0)
|
||
- && n ("d*/*1", "d/s/1", FNM_PATHNAME)
|
||
- && y ("a\\\\bc", "abc", 0)
|
||
- && n ("a\\\\bc", "abc", FNM_NOESCAPE)
|
||
- && y ("*x", ".x", 0)
|
||
- && n ("*x", ".x", FNM_PERIOD)
|
||
- && y (Apat, "\\\\", 0) && y (Apat, "A", 0)
|
||
- && y (apat, "\\\\", 0) && y (apat, "a", 0)
|
||
- && n (Apat, A_1, 0) == ('A' < '\\\\')
|
||
- && n (apat, a_1, 0) == ('a' < '\\\\')
|
||
- && y (Apat, A01, 0) == ('A' < '\\\\')
|
||
- && y (apat, a01, 0) == ('a' < '\\\\')
|
||
- && y (Apat, bs_1, 0) == ('A' < '\\\\')
|
||
- && y (apat, bs_1, 0) == ('a' < '\\\\')
|
||
- && n (Apat, bs01, 0) == ('A' < '\\\\')
|
||
- && n (apat, bs01, 0) == ('a' < '\\\\')
|
||
- $gl_fnmatch_gnu_start
|
||
- && y ("xxXX", "xXxX", FNM_CASEFOLD)
|
||
- && y ("a++(x|yy)b", "a+xyyyyxb", FNM_EXTMATCH)
|
||
- && n ("d*/*1", "d/s/1", FNM_FILE_NAME)
|
||
- && y ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR)
|
||
- && y ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR)
|
||
- && y ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR)
|
||
- $gl_fnmatch_gnu_end
|
||
- );
|
||
+ int result = 0;
|
||
+ if (!n ("a*", "", 0))
|
||
+ return 1;
|
||
+ if (!y ("a*", "abc", 0))
|
||
+ return 1;
|
||
+ if (!y ("[/b", "[/b", 0)) /*"]]"*/ /* glibc Bugzilla bug 12378 */
|
||
+ return 1;
|
||
+ if (!n ("d*/*1", "d/s/1", FNM_PATHNAME))
|
||
+ return 2;
|
||
+ if (!y ("a\\\\bc", "abc", 0))
|
||
+ return 3;
|
||
+ if (!n ("a\\\\bc", "abc", FNM_NOESCAPE))
|
||
+ return 3;
|
||
+ if (!y ("*x", ".x", 0))
|
||
+ return 4;
|
||
+ if (!n ("*x", ".x", FNM_PERIOD))
|
||
+ return 4;
|
||
+ if (!y (Apat, "\\\\", 0))
|
||
+ return 5;
|
||
+ if (!y (Apat, "A", 0))
|
||
+ return 5;
|
||
+ if (!y (apat, "\\\\", 0))
|
||
+ return 5;
|
||
+ if (!y (apat, "a", 0))
|
||
+ return 5;
|
||
+ if (!(n (Apat, A_1, 0) == ('A' < '\\\\')))
|
||
+ return 5;
|
||
+ if (!(n (apat, a_1, 0) == ('a' < '\\\\')))
|
||
+ return 5;
|
||
+ if (!(y (Apat, A01, 0) == ('A' < '\\\\')))
|
||
+ return 5;
|
||
+ if (!(y (apat, a01, 0) == ('a' < '\\\\')))
|
||
+ return 5;
|
||
+ if (!(y (Apat, bs_1, 0) == ('A' < '\\\\')))
|
||
+ return 5;
|
||
+ if (!(y (apat, bs_1, 0) == ('a' < '\\\\')))
|
||
+ return 5;
|
||
+ if (!(n (Apat, bs01, 0) == ('A' < '\\\\')))
|
||
+ return 5;
|
||
+ if (!(n (apat, bs01, 0) == ('a' < '\\\\')))
|
||
+ return 5;
|
||
+ $gl_fnmatch_gnu_start
|
||
+ if (!y ("xxXX", "xXxX", FNM_CASEFOLD))
|
||
+ result |= 8;
|
||
+ if (!y ("a++(x|yy)b", "a+xyyyyxb", FNM_EXTMATCH))
|
||
+ result |= 16;
|
||
+ if (!n ("d*/*1", "d/s/1", FNM_FILE_NAME))
|
||
+ result |= 32;
|
||
+ if (!y ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR))
|
||
+ result |= 64;
|
||
+ if (!y ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR))
|
||
+ result |= 64;
|
||
+ if (!y ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR))
|
||
+ result |= 64;
|
||
+ $gl_fnmatch_gnu_end
|
||
+ return result;
|
||
]])],
|
||
[eval "$gl_fnmatch_cache_var=yes"],
|
||
[eval "$gl_fnmatch_cache_var=no"],
|
||
@@ -97,19 +128,9 @@ AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
|
||
rm -f "$gl_source_base/fnmatch.h"
|
||
else
|
||
FNMATCH_H=fnmatch.h
|
||
- AC_LIBOBJ([fnmatch])
|
||
- dnl We must choose a different name for our function, since on ELF systems
|
||
- dnl a broken fnmatch() in libc.so would override our fnmatch() if it is
|
||
- dnl compiled into a shared library.
|
||
- AC_DEFINE_UNQUOTED([fnmatch], [${gl_fnmatch_required_lowercase}_fnmatch],
|
||
- [Define to a replacement function name for fnmatch().])
|
||
- dnl Prerequisites of lib/fnmatch.c.
|
||
- AC_REQUIRE([AC_TYPE_MBSTATE_T])
|
||
- AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
|
||
- AC_CHECK_FUNCS_ONCE([btowc isblank iswctype mbsrtowcs mempcpy wmemchr wmemcpy wmempcpy])
|
||
- AC_CHECK_HEADERS_ONCE([wctype.h])
|
||
fi
|
||
AC_SUBST([FNMATCH_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_FNMATCH_H], [test -n "$FNMATCH_H"])
|
||
])
|
||
|
||
# Request a POSIX compliant fnmatch function with GNU extensions.
|
||
@@ -119,3 +140,17 @@ AC_DEFUN([gl_FUNC_FNMATCH_GNU],
|
||
|
||
AC_REQUIRE([gl_FUNC_FNMATCH_POSIX])
|
||
])
|
||
+
|
||
+AC_DEFUN([gl_PREREQ_FNMATCH],
|
||
+[
|
||
+ dnl We must choose a different name for our function, since on ELF systems
|
||
+ dnl a broken fnmatch() in libc.so would override our fnmatch() if it is
|
||
+ dnl compiled into a shared library.
|
||
+ AC_DEFINE_UNQUOTED([fnmatch], [${gl_fnmatch_required_lowercase}_fnmatch],
|
||
+ [Define to a replacement function name for fnmatch().])
|
||
+ dnl Prerequisites of lib/fnmatch.c.
|
||
+ AC_REQUIRE([AC_TYPE_MBSTATE_T])
|
||
+ AC_CHECK_DECLS([isblank], [], [], [[#include <ctype.h>]])
|
||
+ AC_CHECK_FUNCS_ONCE([btowc isblank iswctype mbsrtowcs mempcpy wmemchr wmemcpy wmempcpy])
|
||
+ AC_CHECK_HEADERS_ONCE([wctype.h])
|
||
+])
|
||
diff --git a/m4/getdelim.m4 b/m4/getdelim.m4
|
||
index 4beb150..36f66a1 100644
|
||
--- a/m4/getdelim.m4
|
||
+++ b/m4/getdelim.m4
|
||
@@ -1,6 +1,6 @@
|
||
-# getdelim.m4 serial 6
|
||
+# getdelim.m4 serial 10
|
||
|
||
-dnl Copyright (C) 2005-2007, 2009-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2005-2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
@@ -19,6 +19,7 @@ AC_DEFUN([gl_FUNC_GETDELIM],
|
||
|
||
AC_CHECK_FUNCS_ONCE([getdelim])
|
||
if test $ac_cv_func_getdelim = yes; then
|
||
+ HAVE_GETDELIM=1
|
||
dnl Found it in some library. Verify that it works.
|
||
AC_CACHE_CHECK([for working getdelim function], [gl_cv_func_working_getdelim],
|
||
[echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
|
||
@@ -38,7 +39,7 @@ AC_DEFUN([gl_FUNC_GETDELIM],
|
||
size_t siz = 0;
|
||
int len = getdelim (&line, &siz, '\n', in);
|
||
if (!(len == 4 && line && strcmp (line, "foo\n") == 0))
|
||
- return 1;
|
||
+ return 2;
|
||
}
|
||
{
|
||
/* Test result for a NULL buffer and a non-zero size.
|
||
@@ -46,7 +47,7 @@ AC_DEFUN([gl_FUNC_GETDELIM],
|
||
char *line = NULL;
|
||
size_t siz = (size_t)(~0) / 4;
|
||
if (getdelim (&line, &siz, '\n', in) == -1)
|
||
- return 1;
|
||
+ return 3;
|
||
}
|
||
return 0;
|
||
}
|
||
@@ -57,29 +58,26 @@ AC_DEFUN([gl_FUNC_GETDELIM],
|
||
[
|
||
#include <features.h>
|
||
#ifdef __GNU_LIBRARY__
|
||
- #if (__GLIBC__ >= 2)
|
||
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
|
||
Lucky GNU user
|
||
#endif
|
||
#endif
|
||
],
|
||
- [gl_cv_func_working_getdelim=yes],
|
||
- [gl_cv_func_working_getdelim=no])]
|
||
+ [gl_cv_func_working_getdelim="guessing yes"],
|
||
+ [gl_cv_func_working_getdelim="guessing no"])]
|
||
)])
|
||
+ case "$gl_cv_func_working_getdelim" in
|
||
+ *no)
|
||
+ REPLACE_GETDELIM=1
|
||
+ ;;
|
||
+ esac
|
||
else
|
||
- gl_cv_func_working_getdelim=no
|
||
+ HAVE_GETDELIM=0
|
||
fi
|
||
|
||
if test $ac_cv_have_decl_getdelim = no; then
|
||
HAVE_DECL_GETDELIM=0
|
||
fi
|
||
-
|
||
- if test $gl_cv_func_working_getdelim = no; then
|
||
- if test $ac_cv_func_getdelim = yes; then
|
||
- REPLACE_GETDELIM=1
|
||
- fi
|
||
- AC_LIBOBJ([getdelim])
|
||
- gl_PREREQ_GETDELIM
|
||
- fi
|
||
])
|
||
|
||
# Prerequisites of lib/getdelim.c.
|
||
diff --git a/m4/getline.m4 b/m4/getline.m4
|
||
index 8300560..342bc99 100644
|
||
--- a/m4/getline.m4
|
||
+++ b/m4/getline.m4
|
||
@@ -1,6 +1,6 @@
|
||
-# getline.m4 serial 21
|
||
+# getline.m4 serial 26
|
||
|
||
-dnl Copyright (C) 1998-2003, 2005-2007, 2009-2010 Free Software Foundation,
|
||
+dnl Copyright (C) 1998-2003, 2005-2007, 2009-2013 Free Software Foundation,
|
||
dnl Inc.
|
||
dnl
|
||
dnl This file is free software; the Free Software Foundation
|
||
@@ -46,7 +46,7 @@ AC_DEFUN([gl_FUNC_GETLINE],
|
||
size_t siz = 0;
|
||
int len = getline (&line, &siz, in);
|
||
if (!(len == 4 && line && strcmp (line, "foo\n") == 0))
|
||
- return 1;
|
||
+ return 2;
|
||
}
|
||
{
|
||
/* Test result for a NULL buffer and a non-zero size.
|
||
@@ -54,7 +54,7 @@ AC_DEFUN([gl_FUNC_GETLINE],
|
||
char *line = NULL;
|
||
size_t siz = (size_t)(~0) / 4;
|
||
if (getline (&line, &siz, in) == -1)
|
||
- return 1;
|
||
+ return 3;
|
||
}
|
||
return 0;
|
||
}
|
||
@@ -65,13 +65,13 @@ AC_DEFUN([gl_FUNC_GETLINE],
|
||
[
|
||
#include <features.h>
|
||
#ifdef __GNU_LIBRARY__
|
||
- #if (__GLIBC__ >= 2)
|
||
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
|
||
Lucky GNU user
|
||
#endif
|
||
#endif
|
||
],
|
||
- [am_cv_func_working_getline=yes],
|
||
- [am_cv_func_working_getline=no])]
|
||
+ [am_cv_func_working_getline="guessing yes"],
|
||
+ [am_cv_func_working_getline="guessing no"])]
|
||
)])
|
||
fi
|
||
|
||
@@ -79,19 +79,18 @@ AC_DEFUN([gl_FUNC_GETLINE],
|
||
HAVE_DECL_GETLINE=0
|
||
fi
|
||
|
||
- if test $am_cv_func_working_getline = no; then
|
||
- dnl Set REPLACE_GETLINE always: Even if we have not found the broken
|
||
- dnl getline function among $LIBS, it may exist in libinet and the
|
||
- dnl executable may be linked with -linet.
|
||
- REPLACE_GETLINE=1
|
||
- AC_LIBOBJ([getline])
|
||
-
|
||
- gl_PREREQ_GETLINE
|
||
- fi
|
||
+ case "$am_cv_func_working_getline" in
|
||
+ *no)
|
||
+ dnl Set REPLACE_GETLINE always: Even if we have not found the broken
|
||
+ dnl getline function among $LIBS, it may exist in libinet and the
|
||
+ dnl executable may be linked with -linet.
|
||
+ REPLACE_GETLINE=1
|
||
+ ;;
|
||
+ esac
|
||
])
|
||
|
||
# Prerequisites of lib/getline.c.
|
||
AC_DEFUN([gl_PREREQ_GETLINE],
|
||
[
|
||
- gl_FUNC_GETDELIM
|
||
+ :
|
||
])
|
||
diff --git a/m4/getopt.m4 b/m4/getopt.m4
|
||
index d05e9d9..50f4509 100644
|
||
--- a/m4/getopt.m4
|
||
+++ b/m4/getopt.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# getopt.m4 serial 31
|
||
-dnl Copyright (C) 2002-2006, 2008-2010 Free Software Foundation, Inc.
|
||
+# getopt.m4 serial 44
|
||
+dnl Copyright (C) 2002-2006, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -9,10 +9,22 @@ AC_DEFUN([gl_FUNC_GETOPT_POSIX],
|
||
[
|
||
m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX])
|
||
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
||
- gl_GETOPT_IFELSE([
|
||
- gl_REPLACE_GETOPT
|
||
- ],
|
||
- [])
|
||
+ AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
|
||
+ dnl Other modules can request the gnulib implementation of the getopt
|
||
+ dnl functions unconditionally, by defining gl_REPLACE_GETOPT_ALWAYS.
|
||
+ dnl argp.m4 does this.
|
||
+ m4_ifdef([gl_REPLACE_GETOPT_ALWAYS], [
|
||
+ REPLACE_GETOPT=1
|
||
+ ], [
|
||
+ REPLACE_GETOPT=0
|
||
+ if test -n "$gl_replace_getopt"; then
|
||
+ REPLACE_GETOPT=1
|
||
+ fi
|
||
+ ])
|
||
+ if test $REPLACE_GETOPT = 1; then
|
||
+ dnl Arrange for getopt.h to be created.
|
||
+ gl_GETOPT_SUBSTITUTE_HEADER
|
||
+ fi
|
||
])
|
||
|
||
# Request a POSIX compliant getopt function with GNU extensions (such as
|
||
@@ -25,27 +37,6 @@ AC_DEFUN([gl_FUNC_GETOPT_GNU],
|
||
AC_REQUIRE([gl_FUNC_GETOPT_POSIX])
|
||
])
|
||
|
||
-# Request the gnulib implementation of the getopt functions unconditionally.
|
||
-# argp.m4 uses this.
|
||
-AC_DEFUN([gl_REPLACE_GETOPT],
|
||
-[
|
||
- dnl Arrange for getopt.h to be created.
|
||
- gl_GETOPT_SUBSTITUTE_HEADER
|
||
- dnl Arrange for unistd.h to include getopt.h.
|
||
- GNULIB_UNISTD_H_GETOPT=1
|
||
- dnl Arrange to compile the getopt implementation.
|
||
- AC_LIBOBJ([getopt])
|
||
- AC_LIBOBJ([getopt1])
|
||
- gl_PREREQ_GETOPT
|
||
-])
|
||
-
|
||
-# emacs' configure.in uses this.
|
||
-AC_DEFUN([gl_GETOPT_IFELSE],
|
||
-[
|
||
- AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
|
||
- AS_IF([test -n "$gl_replace_getopt"], [$1], [$2])
|
||
-])
|
||
-
|
||
# Determine whether to replace the entire getopt facility.
|
||
AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
|
||
[
|
||
@@ -56,7 +47,6 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
|
||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||
|
||
gl_CHECK_NEXT_HEADERS([getopt.h])
|
||
- AC_CHECK_HEADERS_ONCE([getopt.h])
|
||
if test $ac_cv_header_getopt_h = yes; then
|
||
HAVE_GETOPT_H=1
|
||
else
|
||
@@ -76,25 +66,6 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
|
||
AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes])
|
||
fi
|
||
|
||
- dnl BSD getopt_long uses an incompatible method to reset option processing.
|
||
- dnl Existence of the variable, in and of itself, is not a reason to replace
|
||
- dnl getopt, but knowledge of the variable is needed to determine how to
|
||
- dnl reset and whether a reset reparses the environment.
|
||
- dnl Solaris supports neither optreset nor optind=0, but keeps no state that
|
||
- dnl needs a reset beyond setting optind=1; detect Solaris by getopt_clip.
|
||
- if test -z "$gl_replace_getopt"; then
|
||
- AC_CHECK_DECLS([optreset], [],
|
||
- [AC_CHECK_DECLS([getopt_clip], [], [],
|
||
- [[#include <getopt.h>]])
|
||
- ],
|
||
- [[#include <getopt.h>]])
|
||
- fi
|
||
-
|
||
- dnl mingw's getopt (in libmingwex.a) does weird things when the options
|
||
- dnl strings starts with '+' and it's not the first call. Some internal state
|
||
- dnl is left over from earlier calls, and neither setting optind = 0 nor
|
||
- dnl setting optreset = 1 get rid of this internal state.
|
||
- dnl POSIX is silent on optind vs. optreset, so we allow either behavior.
|
||
dnl POSIX 2008 does not specify leading '+' behavior, but see
|
||
dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on
|
||
dnl the next version of POSIX. For now, we only guarantee leading '+'
|
||
@@ -103,105 +74,124 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
|
||
AC_CACHE_CHECK([whether getopt is POSIX compatible],
|
||
[gl_cv_func_getopt_posix],
|
||
[
|
||
- dnl This test fails on mingw and succeeds on many other platforms.
|
||
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||
+ dnl Merging these three different test programs into a single one
|
||
+ dnl would require a reset mechanism. On BSD systems, it can be done
|
||
+ dnl through 'optreset'; on some others (glibc), it can be done by
|
||
+ dnl setting 'optind' to 0; on others again (HP-UX, IRIX, OSF/1,
|
||
+ dnl Solaris 9, musl libc), there is no such mechanism.
|
||
+ if test $cross_compiling = no; then
|
||
+ dnl Sanity check. Succeeds everywhere (except on MSVC,
|
||
+ dnl which lacks <unistd.h> and getopt() entirely).
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_SOURCE([[
|
||
#include <unistd.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
|
||
-#if !HAVE_DECL_OPTRESET && !HAVE_DECL_GETOPT_CLIP
|
||
-# define OPTIND_MIN 0
|
||
-#else
|
||
-# define OPTIND_MIN 1
|
||
-#endif
|
||
-
|
||
int
|
||
main ()
|
||
{
|
||
- {
|
||
- int argc = 0;
|
||
- char *argv[10];
|
||
- int c;
|
||
-
|
||
- argv[argc++] = "program";
|
||
- argv[argc++] = "-a";
|
||
- argv[argc++] = "foo";
|
||
- argv[argc++] = "bar";
|
||
- argv[argc] = NULL;
|
||
- optind = OPTIND_MIN;
|
||
- opterr = 0;
|
||
+ static char program[] = "program";
|
||
+ static char a[] = "-a";
|
||
+ static char foo[] = "foo";
|
||
+ static char bar[] = "bar";
|
||
+ char *argv[] = { program, a, foo, bar, NULL };
|
||
+ int c;
|
||
|
||
- c = getopt (argc, argv, "ab");
|
||
- if (!(c == 'a'))
|
||
- return 1;
|
||
- c = getopt (argc, argv, "ab");
|
||
- if (!(c == -1))
|
||
- return 2;
|
||
- if (!(optind == 2))
|
||
- return 3;
|
||
- }
|
||
- /* Some internal state exists at this point. */
|
||
- {
|
||
- int argc = 0;
|
||
- char *argv[10];
|
||
- int c;
|
||
+ c = getopt (4, argv, "ab");
|
||
+ if (!(c == 'a'))
|
||
+ return 1;
|
||
+ c = getopt (4, argv, "ab");
|
||
+ if (!(c == -1))
|
||
+ return 2;
|
||
+ if (!(optind == 2))
|
||
+ return 3;
|
||
+ return 0;
|
||
+}
|
||
+]])],
|
||
+ [gl_cv_func_getopt_posix=maybe],
|
||
+ [gl_cv_func_getopt_posix=no])
|
||
+ if test $gl_cv_func_getopt_posix = maybe; then
|
||
+ dnl Sanity check with '+'. Succeeds everywhere (except on MSVC,
|
||
+ dnl which lacks <unistd.h> and getopt() entirely).
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_SOURCE([[
|
||
+#include <unistd.h>
|
||
+#include <stdlib.h>
|
||
+#include <string.h>
|
||
|
||
- argv[argc++] = "program";
|
||
- argv[argc++] = "donald";
|
||
- argv[argc++] = "-p";
|
||
- argv[argc++] = "billy";
|
||
- argv[argc++] = "duck";
|
||
- argv[argc++] = "-a";
|
||
- argv[argc++] = "bar";
|
||
- argv[argc] = NULL;
|
||
- optind = OPTIND_MIN;
|
||
- opterr = 0;
|
||
+int
|
||
+main ()
|
||
+{
|
||
+ static char program[] = "program";
|
||
+ static char donald[] = "donald";
|
||
+ static char p[] = "-p";
|
||
+ static char billy[] = "billy";
|
||
+ static char duck[] = "duck";
|
||
+ static char a[] = "-a";
|
||
+ static char bar[] = "bar";
|
||
+ char *argv[] = { program, donald, p, billy, duck, a, bar, NULL };
|
||
+ int c;
|
||
|
||
- c = getopt (argc, argv, "+abp:q:");
|
||
- if (!(c == -1))
|
||
- return 4;
|
||
- if (!(strcmp (argv[0], "program") == 0))
|
||
- return 5;
|
||
- if (!(strcmp (argv[1], "donald") == 0))
|
||
- return 6;
|
||
- if (!(strcmp (argv[2], "-p") == 0))
|
||
- return 7;
|
||
- if (!(strcmp (argv[3], "billy") == 0))
|
||
- return 8;
|
||
- if (!(strcmp (argv[4], "duck") == 0))
|
||
- return 9;
|
||
- if (!(strcmp (argv[5], "-a") == 0))
|
||
- return 10;
|
||
- if (!(strcmp (argv[6], "bar") == 0))
|
||
- return 11;
|
||
- if (!(optind == 1))
|
||
- return 12;
|
||
- }
|
||
- /* Detect MacOS 10.5, AIX 7.1 bug. */
|
||
- {
|
||
- char *argv[3] = { "program", "-ab", NULL };
|
||
- optind = OPTIND_MIN;
|
||
- opterr = 0;
|
||
- if (getopt (2, argv, "ab:") != 'a')
|
||
- return 13;
|
||
- if (getopt (2, argv, "ab:") != '?')
|
||
- return 14;
|
||
- if (optopt != 'b')
|
||
- return 15;
|
||
- if (optind != 2)
|
||
- return 16;
|
||
- }
|
||
+ c = getopt (7, argv, "+abp:q:");
|
||
+ if (!(c == -1))
|
||
+ return 4;
|
||
+ if (!(strcmp (argv[0], "program") == 0))
|
||
+ return 5;
|
||
+ if (!(strcmp (argv[1], "donald") == 0))
|
||
+ return 6;
|
||
+ if (!(strcmp (argv[2], "-p") == 0))
|
||
+ return 7;
|
||
+ if (!(strcmp (argv[3], "billy") == 0))
|
||
+ return 8;
|
||
+ if (!(strcmp (argv[4], "duck") == 0))
|
||
+ return 9;
|
||
+ if (!(strcmp (argv[5], "-a") == 0))
|
||
+ return 10;
|
||
+ if (!(strcmp (argv[6], "bar") == 0))
|
||
+ return 11;
|
||
+ if (!(optind == 1))
|
||
+ return 12;
|
||
+ return 0;
|
||
+}
|
||
+]])],
|
||
+ [gl_cv_func_getopt_posix=maybe],
|
||
+ [gl_cv_func_getopt_posix=no])
|
||
+ fi
|
||
+ if test $gl_cv_func_getopt_posix = maybe; then
|
||
+ dnl Detect Mac OS X 10.5, AIX 7.1, mingw bug.
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_SOURCE([[
|
||
+#include <unistd.h>
|
||
+#include <stdlib.h>
|
||
+#include <string.h>
|
||
|
||
+int
|
||
+main ()
|
||
+{
|
||
+ static char program[] = "program";
|
||
+ static char ab[] = "-ab";
|
||
+ char *argv[3] = { program, ab, NULL };
|
||
+ if (getopt (2, argv, "ab:") != 'a')
|
||
+ return 13;
|
||
+ if (getopt (2, argv, "ab:") != '?')
|
||
+ return 14;
|
||
+ if (optopt != 'b')
|
||
+ return 15;
|
||
+ if (optind != 2)
|
||
+ return 16;
|
||
return 0;
|
||
}
|
||
]])],
|
||
- [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no],
|
||
- [case "$host_os" in
|
||
- mingw*) gl_cv_func_getopt_posix="guessing no";;
|
||
- darwin* | aix*) gl_cv_func_getopt_posix="guessing no";;
|
||
- *) gl_cv_func_getopt_posix="guessing yes";;
|
||
- esac
|
||
- ])
|
||
+ [gl_cv_func_getopt_posix=yes],
|
||
+ [gl_cv_func_getopt_posix=no])
|
||
+ fi
|
||
+ else
|
||
+ case "$host_os" in
|
||
+ darwin* | aix* | mingw*) gl_cv_func_getopt_posix="guessing no";;
|
||
+ *) gl_cv_func_getopt_posix="guessing yes";;
|
||
+ esac
|
||
+ fi
|
||
])
|
||
case "$gl_cv_func_getopt_posix" in
|
||
*no) gl_replace_getopt=yes ;;
|
||
@@ -230,63 +220,83 @@ dnl is ambiguous with environment values that contain newlines.
|
||
[AC_LANG_PROGRAM([[#include <getopt.h>
|
||
#include <stddef.h>
|
||
#include <string.h>
|
||
+ ]GL_NOCRASH[
|
||
]], [[
|
||
+ int result = 0;
|
||
+
|
||
+ nocrash_init();
|
||
+
|
||
/* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw,
|
||
- and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
|
||
+ and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
|
||
OSF/1 5.1, Solaris 10. */
|
||
{
|
||
- char *myargv[3];
|
||
- myargv[0] = "conftest";
|
||
- myargv[1] = "-+";
|
||
- myargv[2] = 0;
|
||
+ static char conftest[] = "conftest";
|
||
+ static char plus[] = "-+";
|
||
+ char *argv[3] = { conftest, plus, NULL };
|
||
opterr = 0;
|
||
- if (getopt (2, myargv, "+a") != '?')
|
||
- return 1;
|
||
+ if (getopt (2, argv, "+a") != '?')
|
||
+ result |= 1;
|
||
}
|
||
/* This code succeeds on glibc 2.8, mingw,
|
||
- and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
|
||
+ and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
|
||
IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */
|
||
{
|
||
- char *argv[] = { "program", "-p", "foo", "bar", NULL };
|
||
+ static char program[] = "program";
|
||
+ static char p[] = "-p";
|
||
+ static char foo[] = "foo";
|
||
+ static char bar[] = "bar";
|
||
+ char *argv[] = { program, p, foo, bar, NULL };
|
||
|
||
optind = 1;
|
||
if (getopt (4, argv, "p::") != 'p')
|
||
- return 2;
|
||
- if (optarg != NULL)
|
||
- return 3;
|
||
- if (getopt (4, argv, "p::") != -1)
|
||
- return 4;
|
||
- if (optind != 2)
|
||
- return 5;
|
||
+ result |= 2;
|
||
+ else if (optarg != NULL)
|
||
+ result |= 4;
|
||
+ else if (getopt (4, argv, "p::") != -1)
|
||
+ result |= 6;
|
||
+ else if (optind != 2)
|
||
+ result |= 8;
|
||
}
|
||
/* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */
|
||
{
|
||
- char *argv[] = { "program", "foo", "-p", NULL };
|
||
+ static char program[] = "program";
|
||
+ static char foo[] = "foo";
|
||
+ static char p[] = "-p";
|
||
+ char *argv[] = { program, foo, p, NULL };
|
||
optind = 0;
|
||
if (getopt (3, argv, "-p") != 1)
|
||
- return 6;
|
||
- if (getopt (3, argv, "-p") != 'p')
|
||
- return 7;
|
||
+ result |= 16;
|
||
+ else if (getopt (3, argv, "-p") != 'p')
|
||
+ result |= 16;
|
||
}
|
||
/* This code fails on glibc 2.11. */
|
||
{
|
||
- char *argv[] = { "program", "-b", "-a", NULL };
|
||
+ static char program[] = "program";
|
||
+ static char b[] = "-b";
|
||
+ static char a[] = "-a";
|
||
+ char *argv[] = { program, b, a, NULL };
|
||
optind = opterr = 0;
|
||
if (getopt (3, argv, "+:a:b") != 'b')
|
||
- return 8;
|
||
- if (getopt (3, argv, "+:a:b") != ':')
|
||
- return 9;
|
||
+ result |= 32;
|
||
+ else if (getopt (3, argv, "+:a:b") != ':')
|
||
+ result |= 32;
|
||
+ }
|
||
+ /* This code dumps core on glibc 2.14. */
|
||
+ {
|
||
+ static char program[] = "program";
|
||
+ static char w[] = "-W";
|
||
+ static char dummy[] = "dummy";
|
||
+ char *argv[] = { program, w, dummy, NULL };
|
||
+ optind = opterr = 1;
|
||
+ if (getopt (3, argv, "W;") != 'W')
|
||
+ result |= 64;
|
||
}
|
||
- return 0;
|
||
+ return result;
|
||
]])],
|
||
[gl_cv_func_getopt_gnu=yes],
|
||
[gl_cv_func_getopt_gnu=no],
|
||
- [dnl Cross compiling. Guess based on host and declarations.
|
||
- case $host_os:$ac_cv_have_decl_optreset in
|
||
- *-gnu*:* | mingw*:*) gl_cv_func_getopt_gnu=no;;
|
||
- *:yes) gl_cv_func_getopt_gnu=no;;
|
||
- *) gl_cv_func_getopt_gnu=yes;;
|
||
- esac
|
||
+ [dnl Cross compiling. Assume the worst, even on glibc platforms.
|
||
+ gl_cv_func_getopt_gnu="guessing no"
|
||
])
|
||
case $gl_had_POSIXLY_CORRECT in
|
||
exported) ;;
|
||
@@ -294,13 +304,54 @@ dnl is ambiguous with environment values that contain newlines.
|
||
*) AS_UNSET([POSIXLY_CORRECT]) ;;
|
||
esac
|
||
])
|
||
- if test "$gl_cv_func_getopt_gnu" = "no"; then
|
||
+ if test "$gl_cv_func_getopt_gnu" != yes; then
|
||
gl_replace_getopt=yes
|
||
+ else
|
||
+ AC_CACHE_CHECK([for working GNU getopt_long function],
|
||
+ [gl_cv_func_getopt_long_gnu],
|
||
+ [AC_RUN_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[#include <getopt.h>
|
||
+ #include <stddef.h>
|
||
+ #include <string.h>
|
||
+ ]],
|
||
+ [[static const struct option long_options[] =
|
||
+ {
|
||
+ { "xtremely-",no_argument, NULL, 1003 },
|
||
+ { "xtra", no_argument, NULL, 1001 },
|
||
+ { "xtreme", no_argument, NULL, 1002 },
|
||
+ { "xtremely", no_argument, NULL, 1003 },
|
||
+ { NULL, 0, NULL, 0 }
|
||
+ };
|
||
+ /* This code fails on OpenBSD 5.0. */
|
||
+ {
|
||
+ static char program[] = "program";
|
||
+ static char xtremel[] = "--xtremel";
|
||
+ char *argv[] = { program, xtremel, NULL };
|
||
+ int option_index;
|
||
+ optind = 1; opterr = 0;
|
||
+ if (getopt_long (2, argv, "", long_options, &option_index) != 1003)
|
||
+ return 1;
|
||
+ }
|
||
+ return 0;
|
||
+ ]])],
|
||
+ [gl_cv_func_getopt_long_gnu=yes],
|
||
+ [gl_cv_func_getopt_long_gnu=no],
|
||
+ [dnl Cross compiling. Guess no on OpenBSD, yes otherwise.
|
||
+ case "$host_os" in
|
||
+ openbsd*) gl_cv_func_getopt_long_gnu="guessing no";;
|
||
+ *) gl_cv_func_getopt_long_gnu="guessing yes";;
|
||
+ esac
|
||
+ ])
|
||
+ ])
|
||
+ case "$gl_cv_func_getopt_long_gnu" in
|
||
+ *yes) ;;
|
||
+ *) gl_replace_getopt=yes ;;
|
||
+ esac
|
||
fi
|
||
fi
|
||
])
|
||
|
||
-# emacs' configure.in uses this.
|
||
AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
|
||
[
|
||
GETOPT_H=getopt.h
|
||
@@ -311,7 +362,6 @@ AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
|
||
])
|
||
|
||
# Prerequisites of lib/getopt*.
|
||
-# emacs' configure.in uses this.
|
||
AC_DEFUN([gl_PREREQ_GETOPT],
|
||
[
|
||
AC_CHECK_DECLS_ONCE([getenv])
|
||
diff --git a/m4/gettext.m4 b/m4/gettext.m4
|
||
index 979c52c..8d1f066 100644
|
||
--- a/m4/gettext.m4
|
||
+++ b/m4/gettext.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# gettext.m4 serial 64 (gettext-0.18.2)
|
||
-dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||
+# gettext.m4 serial 66 (gettext-0.18.2)
|
||
+dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -35,7 +35,7 @@ dnl will be ignored. If NEEDSYMBOL is specified and is
|
||
dnl 'need-formatstring-macros', then GNU gettext implementations that don't
|
||
dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
|
||
dnl INTLDIR is used to find the intl libraries. If empty,
|
||
-dnl the value `$(top_builddir)/intl/' is used.
|
||
+dnl the value '$(top_builddir)/intl/' is used.
|
||
dnl
|
||
dnl The result of the configuration is one of three cases:
|
||
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
|
||
@@ -97,7 +97,7 @@ AC_DEFUN([AM_GNU_GETTEXT],
|
||
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
||
])
|
||
|
||
- dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
|
||
+ dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
|
||
gt_INTL_MACOSX
|
||
|
||
dnl Set USE_NLS.
|
||
diff --git a/m4/glibc2.m4 b/m4/glibc2.m4
|
||
index f148c12..0e50682 100644
|
||
--- a/m4/glibc2.m4
|
||
+++ b/m4/glibc2.m4
|
||
@@ -1,5 +1,6 @@
|
||
-# glibc2.m4 serial 2
|
||
-dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
|
||
+# glibc2.m4 serial 3
|
||
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation,
|
||
+dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -15,7 +16,7 @@ AC_DEFUN([gt_GLIBC2],
|
||
[
|
||
#include <features.h>
|
||
#ifdef __GNU_LIBRARY__
|
||
- #if (__GLIBC__ >= 2)
|
||
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
|
||
Lucky GNU user
|
||
#endif
|
||
#endif
|
||
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
|
||
index 68ada9d..613fb2a 100644
|
||
--- a/m4/glibc21.m4
|
||
+++ b/m4/glibc21.m4
|
||
@@ -1,17 +1,18 @@
|
||
-# glibc21.m4 serial 4
|
||
-dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
|
||
+# glibc21.m4 serial 5
|
||
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation,
|
||
+dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
-# Test for the GNU C Library, version 2.1 or newer.
|
||
+# Test for the GNU C Library, version 2.1 or newer, or uClibc.
|
||
# From Bruno Haible.
|
||
|
||
AC_DEFUN([gl_GLIBC21],
|
||
[
|
||
- AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
|
||
+ AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc],
|
||
[ac_cv_gnu_library_2_1],
|
||
- [AC_EGREP_CPP([Lucky GNU user],
|
||
+ [AC_EGREP_CPP([Lucky],
|
||
[
|
||
#include <features.h>
|
||
#ifdef __GNU_LIBRARY__
|
||
@@ -19,6 +20,9 @@ AC_DEFUN([gl_GLIBC21],
|
||
Lucky GNU user
|
||
#endif
|
||
#endif
|
||
+#ifdef __UCLIBC__
|
||
+ Lucky user
|
||
+#endif
|
||
],
|
||
[ac_cv_gnu_library_2_1=yes],
|
||
[ac_cv_gnu_library_2_1=no])
|
||
diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4
|
||
index 3c094bc..4089184 100644
|
||
--- a/m4/gnulib-cache.m4
|
||
+++ b/m4/gnulib-cache.m4
|
||
@@ -1,9 +1,21 @@
|
||
-# Copyright (C) 2002-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||
#
|
||
-# This file is free software, distributed under the terms of the GNU
|
||
-# General Public License. As a special exception to the GNU General
|
||
-# Public License, this file may be distributed as part of a program
|
||
-# that contains a configuration script generated by Autoconf, under
|
||
+# This file is free software; you can redistribute it and/or modify
|
||
+# it under the terms of the GNU General Public License as published by
|
||
+# the Free Software Foundation; either version 3 of the License, or
|
||
+# (at your option) any later version.
|
||
+#
|
||
+# This file is distributed in the hope that it will be useful,
|
||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+# GNU General Public License for more details.
|
||
+#
|
||
+# You should have received a copy of the GNU General Public License
|
||
+# along with this file. If not, see <http://www.gnu.org/licenses/>.
|
||
+#
|
||
+# As a special exception to the GNU General Public License,
|
||
+# this file may be distributed as part of a program that
|
||
+# contains a configuration script generated by Autoconf, under
|
||
# the same distribution terms as the rest of that program.
|
||
#
|
||
# Generated by gnulib-tool.
|
||
@@ -15,7 +27,7 @@
|
||
|
||
|
||
# Specification in the form of a command-line invocation:
|
||
-# gnulib-tool --import --dir=. --lib=libgnu --source-base=grub-core/gnulib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=gl --no-vc-files argp error fnmatch getdelim getline gettext progname regex
|
||
+# gnulib-tool --import --dir=. --lib=libgnu --source-base=grub-core/gnulib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files argp error fnmatch getdelim getline gettext progname regex
|
||
|
||
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
||
gl_LOCAL_DIR([])
|
||
@@ -39,4 +51,5 @@ gl_LIB([libgnu])
|
||
gl_MAKEFILE_NAME([])
|
||
gl_MACRO_PREFIX([gl])
|
||
gl_PO_DOMAIN([])
|
||
+gl_WITNESS_C_MACRO([])
|
||
gl_VC_FILES([false])
|
||
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
|
||
index 4c7ac30..0ae5a9e 100644
|
||
--- a/m4/gnulib-common.m4
|
||
+++ b/m4/gnulib-common.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# gnulib-common.m4 serial 20
|
||
-dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+# gnulib-common.m4 serial 33
|
||
+dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -12,11 +12,25 @@ AC_DEFUN([gl_COMMON], [
|
||
AC_REQUIRE([gl_COMMON_BODY])
|
||
])
|
||
AC_DEFUN([gl_COMMON_BODY], [
|
||
+ AH_VERBATIM([_Noreturn],
|
||
+[/* The _Noreturn keyword of C11. */
|
||
+#if ! (defined _Noreturn \
|
||
+ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
|
||
+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
|
||
+ || 0x5110 <= __SUNPRO_C)
|
||
+# define _Noreturn __attribute__ ((__noreturn__))
|
||
+# elif defined _MSC_VER && 1200 <= _MSC_VER
|
||
+# define _Noreturn __declspec (noreturn)
|
||
+# else
|
||
+# define _Noreturn
|
||
+# endif
|
||
+#endif
|
||
+])
|
||
AH_VERBATIM([isoc99_inline],
|
||
[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
|
||
the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
|
||
earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
|
||
- __APPLE__ && __MACH__ test for MacOS X.
|
||
+ __APPLE__ && __MACH__ test for Mac OS X.
|
||
__APPLE_CC__ tests for the Apple compiler and its version.
|
||
__STDC_VERSION__ tests for the C99 mode. */
|
||
#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
|
||
@@ -34,6 +48,20 @@ AC_DEFUN([gl_COMMON_BODY], [
|
||
/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
|
||
is a misnomer outside of parameter lists. */
|
||
#define _UNUSED_PARAMETER_ _GL_UNUSED
|
||
+
|
||
+/* The __pure__ attribute was added in gcc 2.96. */
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_PURE /* empty */
|
||
+#endif
|
||
+
|
||
+/* The __const__ attribute was added in gcc 2.95. */
|
||
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
|
||
+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
|
||
+#else
|
||
+# define _GL_ATTRIBUTE_CONST /* empty */
|
||
+#endif
|
||
])
|
||
dnl Preparation for running test programs:
|
||
dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
|
||
@@ -47,16 +75,49 @@ AC_DEFUN([gl_COMMON_BODY], [
|
||
# expands to a C preprocessor expression that evaluates to 1 or 0, depending
|
||
# whether a gnulib module that has been requested shall be considered present
|
||
# or not.
|
||
-AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1])
|
||
+m4_define([gl_MODULE_INDICATOR_CONDITION], [1])
|
||
|
||
# gl_MODULE_INDICATOR_SET_VARIABLE([modulename])
|
||
# sets the shell variable that indicates the presence of the given module to
|
||
# a C preprocessor expression that will evaluate to 1.
|
||
AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
|
||
[
|
||
- GNULIB_[]m4_translit([[$1]],
|
||
- [abcdefghijklmnopqrstuvwxyz./-],
|
||
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
|
||
+ gl_MODULE_INDICATOR_SET_VARIABLE_AUX(
|
||
+ [GNULIB_[]m4_translit([[$1]],
|
||
+ [abcdefghijklmnopqrstuvwxyz./-],
|
||
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])],
|
||
+ [gl_MODULE_INDICATOR_CONDITION])
|
||
+])
|
||
+
|
||
+# gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable])
|
||
+# modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION.
|
||
+# The shell variable's value is a C preprocessor expression that evaluates
|
||
+# to 0 or 1.
|
||
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX],
|
||
+[
|
||
+ m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1],
|
||
+ [
|
||
+ dnl Simplify the expression VALUE || 1 to 1.
|
||
+ $1=1
|
||
+ ],
|
||
+ [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1],
|
||
+ [gl_MODULE_INDICATOR_CONDITION])])
|
||
+])
|
||
+
|
||
+# gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition])
|
||
+# modifies the shell variable to include the given condition. The shell
|
||
+# variable's value is a C preprocessor expression that evaluates to 0 or 1.
|
||
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR],
|
||
+[
|
||
+ dnl Simplify the expression 1 || CONDITION to 1.
|
||
+ if test "$[]$1" != 1; then
|
||
+ dnl Simplify the expression 0 || CONDITION to CONDITION.
|
||
+ if test "$[]$1" = 0; then
|
||
+ $1=$2
|
||
+ else
|
||
+ $1="($[]$1 || $2)"
|
||
+ fi
|
||
+ fi
|
||
])
|
||
|
||
# gl_MODULE_INDICATOR([modulename])
|
||
@@ -102,6 +163,40 @@ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
|
||
[Define to 1 when the gnulib module $1 should be tested.])
|
||
])
|
||
|
||
+# gl_ASSERT_NO_GNULIB_POSIXCHECK
|
||
+# asserts that there will never be a need to #define GNULIB_POSIXCHECK.
|
||
+# and thereby enables an optimization of configure and config.h.
|
||
+# Used by Emacs.
|
||
+AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK],
|
||
+[
|
||
+ dnl Override gl_WARN_ON_USE_PREPARE.
|
||
+ dnl But hide this definition from 'aclocal'.
|
||
+ AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], [])
|
||
+])
|
||
+
|
||
+# gl_ASSERT_NO_GNULIB_TESTS
|
||
+# asserts that there will be no gnulib tests in the scope of the configure.ac
|
||
+# and thereby enables an optimization of config.h.
|
||
+# Used by Emacs.
|
||
+AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS],
|
||
+[
|
||
+ dnl Override gl_MODULE_INDICATOR_FOR_TESTS.
|
||
+ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [])
|
||
+])
|
||
+
|
||
+# Test whether <features.h> exists.
|
||
+# Set HAVE_FEATURES_H.
|
||
+AC_DEFUN([gl_FEATURES_H],
|
||
+[
|
||
+ AC_CHECK_HEADERS_ONCE([features.h])
|
||
+ if test $ac_cv_header_features_h = yes; then
|
||
+ HAVE_FEATURES_H=1
|
||
+ else
|
||
+ HAVE_FEATURES_H=0
|
||
+ fi
|
||
+ AC_SUBST([HAVE_FEATURES_H])
|
||
+])
|
||
+
|
||
# m4_foreach_w
|
||
# is a backport of autoconf-2.59c's m4_foreach_w.
|
||
# Remove this macro when we can assume autoconf >= 2.60.
|
||
@@ -117,11 +212,90 @@ m4_ifndef([AS_VAR_IF],
|
||
[m4_define([AS_VAR_IF],
|
||
[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])])
|
||
|
||
+# gl_PROG_CC_C99
|
||
+# Modifies the value of the shell variable CC in an attempt to make $CC
|
||
+# understand ISO C99 source code.
|
||
+# This is like AC_PROG_CC_C99, except that
|
||
+# - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60,
|
||
+# - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC
|
||
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00367.html>,
|
||
+# but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99
|
||
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00441.html>.
|
||
+# Remaining problems:
|
||
+# - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options
|
||
+# to CC twice
|
||
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00431.html>.
|
||
+# - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard.
|
||
+AC_DEFUN([gl_PROG_CC_C99],
|
||
+[
|
||
+ dnl Change that version number to the minimum Autoconf version that supports
|
||
+ dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls.
|
||
+ m4_version_prereq([9.0],
|
||
+ [AC_REQUIRE([AC_PROG_CC_C99])],
|
||
+ [AC_REQUIRE([AC_PROG_CC_STDC])])
|
||
+])
|
||
+
|
||
+# gl_PROG_AR_RANLIB
|
||
+# Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler.
|
||
+# The user can set the variables AR, ARFLAGS, RANLIB if he wants to override
|
||
+# the values.
|
||
+AC_DEFUN([gl_PROG_AR_RANLIB],
|
||
+[
|
||
+ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler
|
||
+ dnl as "cc", and GCC as "gcc". They have different object file formats and
|
||
+ dnl library formats. In particular, the GNU binutils programs ar, ranlib
|
||
+ dnl produce libraries that work only with gcc, not with cc.
|
||
+ AC_REQUIRE([AC_PROG_CC])
|
||
+ AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler],
|
||
+ [
|
||
+ AC_EGREP_CPP([Amsterdam],
|
||
+ [
|
||
+#ifdef __ACK__
|
||
+Amsterdam
|
||
+#endif
|
||
+ ],
|
||
+ [gl_cv_c_amsterdam_compiler=yes],
|
||
+ [gl_cv_c_amsterdam_compiler=no])
|
||
+ ])
|
||
+ if test -z "$AR"; then
|
||
+ if test $gl_cv_c_amsterdam_compiler = yes; then
|
||
+ AR='cc -c.a'
|
||
+ if test -z "$ARFLAGS"; then
|
||
+ ARFLAGS='-o'
|
||
+ fi
|
||
+ else
|
||
+ dnl Use the Automake-documented default values for AR and ARFLAGS,
|
||
+ dnl but prefer ${host}-ar over ar (useful for cross-compiling).
|
||
+ AC_CHECK_TOOL([AR], [ar], [ar])
|
||
+ if test -z "$ARFLAGS"; then
|
||
+ ARFLAGS='cru'
|
||
+ fi
|
||
+ fi
|
||
+ else
|
||
+ if test -z "$ARFLAGS"; then
|
||
+ ARFLAGS='cru'
|
||
+ fi
|
||
+ fi
|
||
+ AC_SUBST([AR])
|
||
+ AC_SUBST([ARFLAGS])
|
||
+ if test -z "$RANLIB"; then
|
||
+ if test $gl_cv_c_amsterdam_compiler = yes; then
|
||
+ RANLIB=':'
|
||
+ else
|
||
+ dnl Use the ranlib program if it is available.
|
||
+ AC_PROG_RANLIB
|
||
+ fi
|
||
+ fi
|
||
+ AC_SUBST([RANLIB])
|
||
+])
|
||
+
|
||
# AC_PROG_MKDIR_P
|
||
# is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix
|
||
# for interoperability with automake-1.9.6 from autoconf-2.62.
|
||
# Remove this macro when we can assume autoconf >= 2.62 or
|
||
# autoconf >= 2.60 && automake >= 1.10.
|
||
+# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness.
|
||
+m4_ifndef([AC_AUTOCONF_VERSION],[
|
||
m4_ifdef([AC_PROG_MKDIR_P], [
|
||
dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed.
|
||
m4_define([AC_PROG_MKDIR_P],
|
||
@@ -132,13 +306,15 @@ m4_ifdef([AC_PROG_MKDIR_P], [
|
||
[AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
|
||
MKDIR_P='$(mkdir_p)'
|
||
AC_SUBST([MKDIR_P])])])
|
||
+])
|
||
|
||
# AC_C_RESTRICT
|
||
# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
|
||
# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
|
||
# works.
|
||
# This definition can be removed once autoconf >= 2.62 can be assumed.
|
||
-m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
|
||
+# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness.
|
||
+m4_ifndef([AC_AUTOCONF_VERSION],[
|
||
AC_DEFUN([AC_C_RESTRICT],
|
||
[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
|
||
[ac_cv_c_restrict=no
|
||
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
|
||
index d3490c9..7a19f60 100644
|
||
--- a/m4/gnulib-comp.m4
|
||
+++ b/m4/gnulib-comp.m4
|
||
@@ -1,10 +1,22 @@
|
||
# DO NOT EDIT! GENERATED AUTOMATICALLY!
|
||
-# Copyright (C) 2002-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||
#
|
||
-# This file is free software, distributed under the terms of the GNU
|
||
-# General Public License. As a special exception to the GNU General
|
||
-# Public License, this file may be distributed as part of a program
|
||
-# that contains a configuration script generated by Autoconf, under
|
||
+# This file is free software; you can redistribute it and/or modify
|
||
+# it under the terms of the GNU General Public License as published by
|
||
+# the Free Software Foundation; either version 3 of the License, or
|
||
+# (at your option) any later version.
|
||
+#
|
||
+# This file is distributed in the hope that it will be useful,
|
||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
+# GNU General Public License for more details.
|
||
+#
|
||
+# You should have received a copy of the GNU General Public License
|
||
+# along with this file. If not, see <http://www.gnu.org/licenses/>.
|
||
+#
|
||
+# As a special exception to the GNU General Public License,
|
||
+# this file may be distributed as part of a program that
|
||
+# contains a configuration script generated by Autoconf, under
|
||
# the same distribution terms as the rest of that program.
|
||
#
|
||
# Generated by gnulib-tool.
|
||
@@ -25,20 +37,21 @@ AC_DEFUN([gl_EARLY],
|
||
m4_pattern_allow([^gl_ES$])dnl a valid locale name
|
||
m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
|
||
m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
|
||
- AC_REQUIRE([AC_PROG_RANLIB])
|
||
+ AC_REQUIRE([gl_PROG_AR_RANLIB])
|
||
+ AC_REQUIRE([AM_PROG_CC_C_O])
|
||
# Code from module alloca:
|
||
# Code from module alloca-opt:
|
||
- # Code from module arg-nonnull:
|
||
# Code from module argp:
|
||
# Code from module btowc:
|
||
- # Code from module c++defs:
|
||
# Code from module configmake:
|
||
# Code from module dirname-lgpl:
|
||
+ # Code from module dosname:
|
||
# Code from module double-slash-root:
|
||
# Code from module errno:
|
||
# Code from module error:
|
||
# Code from module extensions:
|
||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||
+ # Code from module extern-inline:
|
||
# Code from module float:
|
||
# Code from module fnmatch:
|
||
# Code from module getdelim:
|
||
@@ -52,22 +65,34 @@ AC_DEFUN([gl_EARLY],
|
||
# Code from module intprops:
|
||
# Code from module langinfo:
|
||
# Code from module localcharset:
|
||
+ # Code from module locale:
|
||
+ # Code from module localeconv:
|
||
# Code from module malloc-gnu:
|
||
# Code from module malloc-posix:
|
||
# Code from module mbrtowc:
|
||
# Code from module mbsinit:
|
||
# Code from module mbsrtowcs:
|
||
+ # Code from module mbswidth:
|
||
+ # Code from module mbtowc:
|
||
# Code from module memchr:
|
||
# Code from module mempcpy:
|
||
+ # Code from module msvc-inval:
|
||
+ # Code from module msvc-nothrow:
|
||
# Code from module multiarch:
|
||
# Code from module nl_langinfo:
|
||
+ # Code from module nocrash:
|
||
# Code from module progname:
|
||
# Code from module rawmemchr:
|
||
# Code from module realloc-posix:
|
||
# Code from module regex:
|
||
# Code from module size_max:
|
||
# Code from module sleep:
|
||
+ # Code from module snippet/_Noreturn:
|
||
+ # Code from module snippet/arg-nonnull:
|
||
+ # Code from module snippet/c++defs:
|
||
+ # Code from module snippet/warn-on-use:
|
||
# Code from module ssize_t:
|
||
+ # Code from module stdalign:
|
||
# Code from module stdbool:
|
||
# Code from module stddef:
|
||
# Code from module stdint:
|
||
@@ -77,21 +102,25 @@ AC_DEFUN([gl_EARLY],
|
||
# Code from module strchrnul:
|
||
# Code from module streq:
|
||
# Code from module strerror:
|
||
+ # Code from module strerror-override:
|
||
# Code from module string:
|
||
# Code from module strings:
|
||
# Code from module strndup:
|
||
# Code from module strnlen:
|
||
# Code from module strnlen1:
|
||
- # Code from module sys_wait:
|
||
+ # Code from module sys_types:
|
||
# Code from module sysexits:
|
||
# Code from module unistd:
|
||
+ # Code from module unitypes:
|
||
+ # Code from module uniwidth/base:
|
||
+ # Code from module uniwidth/width:
|
||
# Code from module vasnprintf:
|
||
# Code from module verify:
|
||
# Code from module vsnprintf:
|
||
- # Code from module warn-on-use:
|
||
# Code from module wchar:
|
||
# Code from module wcrtomb:
|
||
- # Code from module wctype:
|
||
+ # Code from module wctype-h:
|
||
+ # Code from module wcwidth:
|
||
# Code from module xsize:
|
||
])
|
||
|
||
@@ -111,158 +140,244 @@ AC_DEFUN([gl_INIT],
|
||
m4_pushdef([gl_LIBSOURCES_DIR], [])
|
||
gl_COMMON
|
||
gl_source_base='grub-core/gnulib'
|
||
- # Code from module alloca:
|
||
- # Code from module alloca-opt:
|
||
gl_FUNC_ALLOCA
|
||
- # Code from module arg-nonnull:
|
||
- # Code from module argp:
|
||
gl_ARGP
|
||
m4_ifdef([AM_XGETTEXT_OPTION],
|
||
[AM_][XGETTEXT_OPTION([--flag=argp_error:2:c-format])
|
||
AM_][XGETTEXT_OPTION([--flag=argp_failure:4:c-format])])
|
||
- # Code from module btowc:
|
||
gl_FUNC_BTOWC
|
||
+ if test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1; then
|
||
+ AC_LIBOBJ([btowc])
|
||
+ gl_PREREQ_BTOWC
|
||
+ fi
|
||
gl_WCHAR_MODULE_INDICATOR([btowc])
|
||
- # Code from module c++defs:
|
||
- # Code from module configmake:
|
||
- # Code from module dirname-lgpl:
|
||
+ gl_CONFIGMAKE_PREP
|
||
gl_DIRNAME_LGPL
|
||
- # Code from module double-slash-root:
|
||
gl_DOUBLE_SLASH_ROOT
|
||
- # Code from module errno:
|
||
gl_HEADER_ERRNO_H
|
||
- # Code from module error:
|
||
gl_ERROR
|
||
+ if test $ac_cv_lib_error_at_line = no; then
|
||
+ AC_LIBOBJ([error])
|
||
+ gl_PREREQ_ERROR
|
||
+ fi
|
||
m4_ifdef([AM_XGETTEXT_OPTION],
|
||
[AM_][XGETTEXT_OPTION([--flag=error:3:c-format])
|
||
AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
|
||
- # Code from module extensions:
|
||
- # Code from module float:
|
||
+ AC_REQUIRE([gl_EXTERN_INLINE])
|
||
gl_FLOAT_H
|
||
- # Code from module fnmatch:
|
||
+ if test $REPLACE_FLOAT_LDBL = 1; then
|
||
+ AC_LIBOBJ([float])
|
||
+ fi
|
||
+ if test $REPLACE_ITOLD = 1; then
|
||
+ AC_LIBOBJ([itold])
|
||
+ fi
|
||
gl_FUNC_FNMATCH_POSIX
|
||
- # Code from module getdelim:
|
||
+ if test -n "$FNMATCH_H"; then
|
||
+ AC_LIBOBJ([fnmatch])
|
||
+ gl_PREREQ_FNMATCH
|
||
+ fi
|
||
gl_FUNC_GETDELIM
|
||
+ if test $HAVE_GETDELIM = 0 || test $REPLACE_GETDELIM = 1; then
|
||
+ AC_LIBOBJ([getdelim])
|
||
+ gl_PREREQ_GETDELIM
|
||
+ fi
|
||
gl_STDIO_MODULE_INDICATOR([getdelim])
|
||
- # Code from module getline:
|
||
gl_FUNC_GETLINE
|
||
+ if test $REPLACE_GETLINE = 1; then
|
||
+ AC_LIBOBJ([getline])
|
||
+ gl_PREREQ_GETLINE
|
||
+ fi
|
||
gl_STDIO_MODULE_INDICATOR([getline])
|
||
- # Code from module getopt-gnu:
|
||
gl_FUNC_GETOPT_GNU
|
||
+ if test $REPLACE_GETOPT = 1; then
|
||
+ AC_LIBOBJ([getopt])
|
||
+ AC_LIBOBJ([getopt1])
|
||
+ gl_PREREQ_GETOPT
|
||
+ dnl Arrange for unistd.h to include getopt.h.
|
||
+ GNULIB_GL_UNISTD_H_GETOPT=1
|
||
+ fi
|
||
+ AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
|
||
gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
|
||
- # Code from module getopt-posix:
|
||
gl_FUNC_GETOPT_POSIX
|
||
- # Code from module gettext:
|
||
+ if test $REPLACE_GETOPT = 1; then
|
||
+ AC_LIBOBJ([getopt])
|
||
+ AC_LIBOBJ([getopt1])
|
||
+ gl_PREREQ_GETOPT
|
||
+ dnl Arrange for unistd.h to include getopt.h.
|
||
+ GNULIB_GL_UNISTD_H_GETOPT=1
|
||
+ fi
|
||
+ AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
|
||
dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac.
|
||
AM_GNU_GETTEXT_VERSION([0.18.1])
|
||
- # Code from module gettext-h:
|
||
AC_SUBST([LIBINTL])
|
||
AC_SUBST([LTLIBINTL])
|
||
- # Code from module havelib:
|
||
- # Code from module include_next:
|
||
- # Code from module intprops:
|
||
- # Code from module langinfo:
|
||
gl_LANGINFO_H
|
||
- # Code from module localcharset:
|
||
gl_LOCALCHARSET
|
||
- LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
|
||
+ LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
|
||
AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
|
||
- # Code from module malloc-gnu:
|
||
+ gl_LOCALE_H
|
||
+ gl_FUNC_LOCALECONV
|
||
+ if test $REPLACE_LOCALECONV = 1; then
|
||
+ AC_LIBOBJ([localeconv])
|
||
+ gl_PREREQ_LOCALECONV
|
||
+ fi
|
||
+ gl_LOCALE_MODULE_INDICATOR([localeconv])
|
||
gl_FUNC_MALLOC_GNU
|
||
+ if test $REPLACE_MALLOC = 1; then
|
||
+ AC_LIBOBJ([malloc])
|
||
+ fi
|
||
gl_MODULE_INDICATOR([malloc-gnu])
|
||
- # Code from module malloc-posix:
|
||
gl_FUNC_MALLOC_POSIX
|
||
+ if test $REPLACE_MALLOC = 1; then
|
||
+ AC_LIBOBJ([malloc])
|
||
+ fi
|
||
gl_STDLIB_MODULE_INDICATOR([malloc-posix])
|
||
- # Code from module mbrtowc:
|
||
gl_FUNC_MBRTOWC
|
||
+ if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
|
||
+ AC_LIBOBJ([mbrtowc])
|
||
+ gl_PREREQ_MBRTOWC
|
||
+ fi
|
||
gl_WCHAR_MODULE_INDICATOR([mbrtowc])
|
||
- # Code from module mbsinit:
|
||
gl_FUNC_MBSINIT
|
||
+ if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
|
||
+ AC_LIBOBJ([mbsinit])
|
||
+ gl_PREREQ_MBSINIT
|
||
+ fi
|
||
gl_WCHAR_MODULE_INDICATOR([mbsinit])
|
||
- # Code from module mbsrtowcs:
|
||
gl_FUNC_MBSRTOWCS
|
||
+ if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then
|
||
+ AC_LIBOBJ([mbsrtowcs])
|
||
+ AC_LIBOBJ([mbsrtowcs-state])
|
||
+ gl_PREREQ_MBSRTOWCS
|
||
+ fi
|
||
gl_WCHAR_MODULE_INDICATOR([mbsrtowcs])
|
||
- # Code from module memchr:
|
||
+ gl_MBSWIDTH
|
||
+ gl_FUNC_MBTOWC
|
||
+ if test $REPLACE_MBTOWC = 1; then
|
||
+ AC_LIBOBJ([mbtowc])
|
||
+ gl_PREREQ_MBTOWC
|
||
+ fi
|
||
+ gl_STDLIB_MODULE_INDICATOR([mbtowc])
|
||
gl_FUNC_MEMCHR
|
||
+ if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
|
||
+ AC_LIBOBJ([memchr])
|
||
+ gl_PREREQ_MEMCHR
|
||
+ fi
|
||
gl_STRING_MODULE_INDICATOR([memchr])
|
||
- # Code from module mempcpy:
|
||
gl_FUNC_MEMPCPY
|
||
+ if test $HAVE_MEMPCPY = 0; then
|
||
+ AC_LIBOBJ([mempcpy])
|
||
+ gl_PREREQ_MEMPCPY
|
||
+ fi
|
||
gl_STRING_MODULE_INDICATOR([mempcpy])
|
||
- # Code from module multiarch:
|
||
+ gl_MSVC_INVAL
|
||
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
|
||
+ AC_LIBOBJ([msvc-inval])
|
||
+ fi
|
||
+ gl_MSVC_NOTHROW
|
||
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
|
||
+ AC_LIBOBJ([msvc-nothrow])
|
||
+ fi
|
||
gl_MULTIARCH
|
||
- # Code from module nl_langinfo:
|
||
gl_FUNC_NL_LANGINFO
|
||
+ if test $HAVE_NL_LANGINFO = 0 || test $REPLACE_NL_LANGINFO = 1; then
|
||
+ AC_LIBOBJ([nl_langinfo])
|
||
+ fi
|
||
gl_LANGINFO_MODULE_INDICATOR([nl_langinfo])
|
||
- # Code from module progname:
|
||
AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
|
||
AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
|
||
- # Code from module rawmemchr:
|
||
gl_FUNC_RAWMEMCHR
|
||
+ if test $HAVE_RAWMEMCHR = 0; then
|
||
+ AC_LIBOBJ([rawmemchr])
|
||
+ gl_PREREQ_RAWMEMCHR
|
||
+ fi
|
||
gl_STRING_MODULE_INDICATOR([rawmemchr])
|
||
- # Code from module realloc-posix:
|
||
gl_FUNC_REALLOC_POSIX
|
||
+ if test $REPLACE_REALLOC = 1; then
|
||
+ AC_LIBOBJ([realloc])
|
||
+ fi
|
||
gl_STDLIB_MODULE_INDICATOR([realloc-posix])
|
||
- # Code from module regex:
|
||
gl_REGEX
|
||
- # Code from module size_max:
|
||
+ if test $ac_use_included_regex = yes; then
|
||
+ AC_LIBOBJ([regex])
|
||
+ gl_PREREQ_REGEX
|
||
+ fi
|
||
gl_SIZE_MAX
|
||
- # Code from module sleep:
|
||
gl_FUNC_SLEEP
|
||
+ if test $HAVE_SLEEP = 0 || test $REPLACE_SLEEP = 1; then
|
||
+ AC_LIBOBJ([sleep])
|
||
+ fi
|
||
gl_UNISTD_MODULE_INDICATOR([sleep])
|
||
- # Code from module ssize_t:
|
||
gt_TYPE_SSIZE_T
|
||
- # Code from module stdbool:
|
||
+ gl_STDALIGN_H
|
||
AM_STDBOOL_H
|
||
- # Code from module stddef:
|
||
gl_STDDEF_H
|
||
- # Code from module stdint:
|
||
gl_STDINT_H
|
||
- # Code from module stdio:
|
||
gl_STDIO_H
|
||
- # Code from module stdlib:
|
||
gl_STDLIB_H
|
||
- # Code from module strcase:
|
||
gl_STRCASE
|
||
- # Code from module strchrnul:
|
||
+ if test $HAVE_STRCASECMP = 0; then
|
||
+ AC_LIBOBJ([strcasecmp])
|
||
+ gl_PREREQ_STRCASECMP
|
||
+ fi
|
||
+ if test $HAVE_STRNCASECMP = 0; then
|
||
+ AC_LIBOBJ([strncasecmp])
|
||
+ gl_PREREQ_STRNCASECMP
|
||
+ fi
|
||
gl_FUNC_STRCHRNUL
|
||
+ if test $HAVE_STRCHRNUL = 0 || test $REPLACE_STRCHRNUL = 1; then
|
||
+ AC_LIBOBJ([strchrnul])
|
||
+ gl_PREREQ_STRCHRNUL
|
||
+ fi
|
||
gl_STRING_MODULE_INDICATOR([strchrnul])
|
||
- # Code from module streq:
|
||
- # Code from module strerror:
|
||
gl_FUNC_STRERROR
|
||
+ if test $REPLACE_STRERROR = 1; then
|
||
+ AC_LIBOBJ([strerror])
|
||
+ fi
|
||
+ gl_MODULE_INDICATOR([strerror])
|
||
gl_STRING_MODULE_INDICATOR([strerror])
|
||
- # Code from module string:
|
||
+ AC_REQUIRE([gl_HEADER_ERRNO_H])
|
||
+ AC_REQUIRE([gl_FUNC_STRERROR_0])
|
||
+ if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then
|
||
+ AC_LIBOBJ([strerror-override])
|
||
+ gl_PREREQ_SYS_H_WINSOCK2
|
||
+ fi
|
||
gl_HEADER_STRING_H
|
||
- # Code from module strings:
|
||
gl_HEADER_STRINGS_H
|
||
- # Code from module strndup:
|
||
gl_FUNC_STRNDUP
|
||
+ if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then
|
||
+ AC_LIBOBJ([strndup])
|
||
+ fi
|
||
gl_STRING_MODULE_INDICATOR([strndup])
|
||
- # Code from module strnlen:
|
||
gl_FUNC_STRNLEN
|
||
+ if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
|
||
+ AC_LIBOBJ([strnlen])
|
||
+ gl_PREREQ_STRNLEN
|
||
+ fi
|
||
gl_STRING_MODULE_INDICATOR([strnlen])
|
||
- # Code from module strnlen1:
|
||
- # Code from module sys_wait:
|
||
- gl_SYS_WAIT_H
|
||
+ gl_SYS_TYPES_H
|
||
AC_PROG_MKDIR_P
|
||
- # Code from module sysexits:
|
||
gl_SYSEXITS
|
||
- # Code from module unistd:
|
||
gl_UNISTD_H
|
||
- # Code from module vasnprintf:
|
||
+ gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
|
||
+ gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
|
||
+ gl_LIBUNISTRING_MODULE([0.9.4], [uniwidth/width])
|
||
gl_FUNC_VASNPRINTF
|
||
- # Code from module verify:
|
||
- # Code from module vsnprintf:
|
||
gl_FUNC_VSNPRINTF
|
||
gl_STDIO_MODULE_INDICATOR([vsnprintf])
|
||
- # Code from module warn-on-use:
|
||
- # Code from module wchar:
|
||
gl_WCHAR_H
|
||
- # Code from module wcrtomb:
|
||
gl_FUNC_WCRTOMB
|
||
+ if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then
|
||
+ AC_LIBOBJ([wcrtomb])
|
||
+ gl_PREREQ_WCRTOMB
|
||
+ fi
|
||
gl_WCHAR_MODULE_INDICATOR([wcrtomb])
|
||
- # Code from module wctype:
|
||
gl_WCTYPE_H
|
||
- # Code from module xsize:
|
||
+ gl_FUNC_WCWIDTH
|
||
+ if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
|
||
+ AC_LIBOBJ([wcwidth])
|
||
+ fi
|
||
+ gl_WCHAR_MODULE_INDICATOR([wcwidth])
|
||
gl_XSIZE
|
||
# End of code from modules
|
||
m4_ifval(gl_LIBSOURCES_LIST, [
|
||
@@ -404,10 +519,11 @@ AC_DEFUN([gltests_LIBSOURCES], [
|
||
# This macro records the list of files which have been installed by
|
||
# gnulib-tool and may be removed by future gnulib-tool invocations.
|
||
AC_DEFUN([gl_FILE_LIST], [
|
||
- build-aux/arg-nonnull.h
|
||
- build-aux/c++defs.h
|
||
build-aux/config.rpath
|
||
- build-aux/warn-on-use.h
|
||
+ build-aux/snippet/_Noreturn.h
|
||
+ build-aux/snippet/arg-nonnull.h
|
||
+ build-aux/snippet/c++defs.h
|
||
+ build-aux/snippet/warn-on-use.h
|
||
lib/alloca.c
|
||
lib/alloca.in.h
|
||
lib/argp-ba.c
|
||
@@ -429,10 +545,12 @@ AC_DEFUN([gl_FILE_LIST], [
|
||
lib/config.charset
|
||
lib/dirname-lgpl.c
|
||
lib/dirname.h
|
||
+ lib/dosname.h
|
||
lib/errno.in.h
|
||
lib/error.c
|
||
lib/error.h
|
||
lib/float+.h
|
||
+ lib/float.c
|
||
lib/float.in.h
|
||
lib/fnmatch.c
|
||
lib/fnmatch.in.h
|
||
@@ -445,17 +563,29 @@ AC_DEFUN([gl_FILE_LIST], [
|
||
lib/getopt_int.h
|
||
lib/gettext.h
|
||
lib/intprops.h
|
||
+ lib/itold.c
|
||
lib/langinfo.in.h
|
||
lib/localcharset.c
|
||
lib/localcharset.h
|
||
+ lib/locale.in.h
|
||
+ lib/localeconv.c
|
||
lib/malloc.c
|
||
lib/mbrtowc.c
|
||
lib/mbsinit.c
|
||
+ lib/mbsrtowcs-impl.h
|
||
lib/mbsrtowcs-state.c
|
||
lib/mbsrtowcs.c
|
||
+ lib/mbswidth.c
|
||
+ lib/mbswidth.h
|
||
+ lib/mbtowc-impl.h
|
||
+ lib/mbtowc.c
|
||
lib/memchr.c
|
||
lib/memchr.valgrind
|
||
lib/mempcpy.c
|
||
+ lib/msvc-inval.c
|
||
+ lib/msvc-inval.h
|
||
+ lib/msvc-nothrow.c
|
||
+ lib/msvc-nothrow.h
|
||
lib/nl_langinfo.c
|
||
lib/printf-args.c
|
||
lib/printf-args.h
|
||
@@ -476,16 +606,18 @@ AC_DEFUN([gl_FILE_LIST], [
|
||
lib/regexec.c
|
||
lib/size_max.h
|
||
lib/sleep.c
|
||
+ lib/stdalign.in.h
|
||
lib/stdbool.in.h
|
||
lib/stddef.in.h
|
||
lib/stdint.in.h
|
||
- lib/stdio-write.c
|
||
lib/stdio.in.h
|
||
lib/stdlib.in.h
|
||
lib/strcasecmp.c
|
||
lib/strchrnul.c
|
||
lib/strchrnul.valgrind
|
||
lib/streq.h
|
||
+ lib/strerror-override.c
|
||
+ lib/strerror-override.h
|
||
lib/strerror.c
|
||
lib/string.in.h
|
||
lib/strings.in.h
|
||
@@ -495,29 +627,39 @@ AC_DEFUN([gl_FILE_LIST], [
|
||
lib/strnlen.c
|
||
lib/strnlen1.c
|
||
lib/strnlen1.h
|
||
- lib/sys_wait.in.h
|
||
+ lib/sys_types.in.h
|
||
lib/sysexits.in.h
|
||
+ lib/unistd.c
|
||
lib/unistd.in.h
|
||
+ lib/unitypes.in.h
|
||
+ lib/uniwidth.in.h
|
||
+ lib/uniwidth/cjk.h
|
||
+ lib/uniwidth/width.c
|
||
lib/vasnprintf.c
|
||
lib/vasnprintf.h
|
||
lib/verify.h
|
||
lib/vsnprintf.c
|
||
lib/wchar.in.h
|
||
lib/wcrtomb.c
|
||
+ lib/wctype-h.c
|
||
lib/wctype.in.h
|
||
+ lib/wcwidth.c
|
||
+ lib/xsize.c
|
||
lib/xsize.h
|
||
m4/00gnulib.m4
|
||
m4/alloca.m4
|
||
m4/argp.m4
|
||
- m4/asm-underscore.m4
|
||
m4/btowc.m4
|
||
m4/codeset.m4
|
||
+ m4/configmake.m4
|
||
m4/dirname.m4
|
||
- m4/dos.m4
|
||
m4/double-slash-root.m4
|
||
+ m4/eealloc.m4
|
||
m4/errno_h.m4
|
||
m4/error.m4
|
||
+ m4/exponentd.m4
|
||
m4/extensions.m4
|
||
+ m4/extern-inline.m4
|
||
m4/fcntl-o.m4
|
||
m4/float_h.m4
|
||
m4/fnmatch.m4
|
||
@@ -543,23 +685,33 @@ AC_DEFUN([gl_FILE_LIST], [
|
||
m4/lib-ld.m4
|
||
m4/lib-link.m4
|
||
m4/lib-prefix.m4
|
||
+ m4/libunistring-base.m4
|
||
m4/localcharset.m4
|
||
m4/locale-fr.m4
|
||
m4/locale-ja.m4
|
||
m4/locale-zh.m4
|
||
+ m4/locale_h.m4
|
||
+ m4/localeconv.m4
|
||
m4/lock.m4
|
||
m4/longlong.m4
|
||
m4/malloc.m4
|
||
+ m4/math_h.m4
|
||
m4/mbrtowc.m4
|
||
m4/mbsinit.m4
|
||
m4/mbsrtowcs.m4
|
||
m4/mbstate_t.m4
|
||
+ m4/mbswidth.m4
|
||
+ m4/mbtowc.m4
|
||
m4/memchr.m4
|
||
m4/mempcpy.m4
|
||
m4/mmap-anon.m4
|
||
+ m4/msvc-inval.m4
|
||
+ m4/msvc-nothrow.m4
|
||
m4/multiarch.m4
|
||
m4/nl_langinfo.m4
|
||
m4/nls.m4
|
||
+ m4/nocrash.m4
|
||
+ m4/off_t.m4
|
||
m4/po.m4
|
||
m4/printf-posix.m4
|
||
m4/printf.m4
|
||
@@ -570,6 +722,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
||
m4/size_max.m4
|
||
m4/sleep.m4
|
||
m4/ssize_t.m4
|
||
+ m4/stdalign.m4
|
||
m4/stdbool.m4
|
||
m4/stddef_h.m4
|
||
m4/stdint.m4
|
||
@@ -583,7 +736,8 @@ AC_DEFUN([gl_FILE_LIST], [
|
||
m4/strings_h.m4
|
||
m4/strndup.m4
|
||
m4/strnlen.m4
|
||
- m4/sys_wait_h.m4
|
||
+ m4/sys_socket_h.m4
|
||
+ m4/sys_types_h.m4
|
||
m4/sysexits.m4
|
||
m4/threadlib.m4
|
||
m4/uintmax_t.m4
|
||
@@ -596,6 +750,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
||
m4/wchar_t.m4
|
||
m4/wcrtomb.m4
|
||
m4/wctype_h.m4
|
||
+ m4/wcwidth.m4
|
||
m4/wint_t.m4
|
||
m4/xsize.m4
|
||
])
|
||
diff --git a/m4/gnulib-tool.m4 b/m4/gnulib-tool.m4
|
||
index 69e7733..f3dea1a 100644
|
||
--- a/m4/gnulib-tool.m4
|
||
+++ b/m4/gnulib-tool.m4
|
||
@@ -1,5 +1,5 @@
|
||
# gnulib-tool.m4 serial 2
|
||
-dnl Copyright (C) 2004-2005, 2009-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2004-2005, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/iconv.m4 b/m4/iconv.m4
|
||
index 425145c..a503646 100644
|
||
--- a/m4/iconv.m4
|
||
+++ b/m4/iconv.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# iconv.m4 serial 15 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
|
||
+# iconv.m4 serial 18 (gettext-0.18.2)
|
||
+dnl Copyright (C) 2000-2002, 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -78,6 +78,7 @@ AC_DEFUN([AM_ICONV_LINK],
|
||
#include <string.h>
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
|
||
returns. */
|
||
{
|
||
@@ -94,7 +95,8 @@ int main ()
|
||
(char **) &inptr, &inbytesleft,
|
||
&outptr, &outbytesleft);
|
||
if (res == 0)
|
||
- return 1;
|
||
+ result |= 1;
|
||
+ iconv_close (cd_utf8_to_88591);
|
||
}
|
||
}
|
||
/* Test against Solaris 10 bug: Failures are not distinguishable from
|
||
@@ -113,7 +115,8 @@ int main ()
|
||
(char **) &inptr, &inbytesleft,
|
||
&outptr, &outbytesleft);
|
||
if (res == 0)
|
||
- return 1;
|
||
+ result |= 2;
|
||
+ iconv_close (cd_ascii_to_88591);
|
||
}
|
||
}
|
||
/* Test against AIX 6.1..7.1 bug: Buffer overrun. */
|
||
@@ -131,7 +134,8 @@ int main ()
|
||
(char **) &inptr, &inbytesleft,
|
||
&outptr, &outbytesleft);
|
||
if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
|
||
- return 1;
|
||
+ result |= 4;
|
||
+ iconv_close (cd_88591_to_utf8);
|
||
}
|
||
}
|
||
#if 0 /* This bug could be worked around by the caller. */
|
||
@@ -150,7 +154,8 @@ int main ()
|
||
(char **) &inptr, &inbytesleft,
|
||
&outptr, &outbytesleft);
|
||
if ((int)res > 0)
|
||
- return 1;
|
||
+ result |= 8;
|
||
+ iconv_close (cd_88591_to_utf8);
|
||
}
|
||
}
|
||
#endif
|
||
@@ -164,8 +169,8 @@ int main ()
|
||
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
|
||
/* Try HP-UX names. */
|
||
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
|
||
- return 1;
|
||
- return 0;
|
||
+ result |= 16;
|
||
+ return result;
|
||
}]])],
|
||
[am_cv_func_iconv_works=yes],
|
||
[am_cv_func_iconv_works=no],
|
||
@@ -237,7 +242,7 @@ extern
|
||
#ifdef __cplusplus
|
||
"C"
|
||
#endif
|
||
-#if defined(__STDC__) || defined(__cplusplus)
|
||
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
|
||
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||
#else
|
||
size_t iconv();
|
||
@@ -252,5 +257,12 @@ size_t iconv();
|
||
$am_cv_proto_iconv])
|
||
AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
|
||
[Define as const if the declaration of iconv() needs const.])
|
||
+ dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
|
||
+ m4_ifdef([gl_ICONV_H_DEFAULTS],
|
||
+ [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
|
||
+ if test -n "$am_cv_proto_iconv_arg1"; then
|
||
+ ICONV_CONST="const"
|
||
+ fi
|
||
+ ])
|
||
fi
|
||
])
|
||
diff --git a/m4/include_next.m4 b/m4/include_next.m4
|
||
index 51a719b..108d945 100644
|
||
--- a/m4/include_next.m4
|
||
+++ b/m4/include_next.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# include_next.m4 serial 15
|
||
-dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
|
||
+# include_next.m4 serial 23
|
||
+dnl Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -24,6 +24,13 @@ dnl does not warn about some things, and on some systems (Solaris and Interix)
|
||
dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
|
||
dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
|
||
dnl of plain '__STDC__'.
|
||
+dnl
|
||
+dnl PRAGMA_COLUMNS can be used in files that override system header files, so
|
||
+dnl as to avoid compilation errors on HP NonStop systems when the gnulib file
|
||
+dnl is included by a system header file that does a "#pragma COLUMNS 80" (which
|
||
+dnl has the effect of truncating the lines of that file and all files that it
|
||
+dnl includes to 80 columns) and the gnulib file has lines longer than 80
|
||
+dnl columns.
|
||
|
||
AC_DEFUN([gl_INCLUDE_NEXT],
|
||
[
|
||
@@ -98,6 +105,24 @@ dnl We intentionally avoid using AC_LANG_SOURCE here.
|
||
AC_SUBST([INCLUDE_NEXT])
|
||
AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
|
||
AC_SUBST([PRAGMA_SYSTEM_HEADER])
|
||
+ AC_CACHE_CHECK([whether system header files limit the line length],
|
||
+ [gl_cv_pragma_columns],
|
||
+ [dnl HP NonStop systems, which define __TANDEM, have this misfeature.
|
||
+ AC_EGREP_CPP([choke me],
|
||
+ [
|
||
+#ifdef __TANDEM
|
||
+choke me
|
||
+#endif
|
||
+ ],
|
||
+ [gl_cv_pragma_columns=yes],
|
||
+ [gl_cv_pragma_columns=no])
|
||
+ ])
|
||
+ if test $gl_cv_pragma_columns = yes; then
|
||
+ PRAGMA_COLUMNS="#pragma COLUMNS 10000"
|
||
+ else
|
||
+ PRAGMA_COLUMNS=
|
||
+ fi
|
||
+ AC_SUBST([PRAGMA_COLUMNS])
|
||
])
|
||
|
||
# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
|
||
@@ -118,68 +143,121 @@ dnl We intentionally avoid using AC_LANG_SOURCE here.
|
||
# even if the compiler does not support include_next.
|
||
# The three "///" are to pacify Sun C 5.8, which otherwise would say
|
||
# "warning: #include of /usr/include/... may be non-portable".
|
||
-# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
|
||
+# Use '""', not '<>', so that the /// cannot be confused with a C99 comment.
|
||
# Note: This macro assumes that the header file is not empty after
|
||
# preprocessing, i.e. it does not only define preprocessor macros but also
|
||
# provides some type/enum definitions or function/variable declarations.
|
||
+#
|
||
+# This macro also checks whether each header exists, by invoking
|
||
+# AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument.
|
||
AC_DEFUN([gl_CHECK_NEXT_HEADERS],
|
||
[
|
||
+ gl_NEXT_HEADERS_INTERNAL([$1], [check])
|
||
+])
|
||
+
|
||
+# gl_NEXT_HEADERS(HEADER1 HEADER2 ...)
|
||
+# ------------------------------------
|
||
+# Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist.
|
||
+# This is suitable for headers like <stddef.h> that are standardized by C89
|
||
+# and therefore can be assumed to exist.
|
||
+AC_DEFUN([gl_NEXT_HEADERS],
|
||
+[
|
||
+ gl_NEXT_HEADERS_INTERNAL([$1], [assume])
|
||
+])
|
||
+
|
||
+# The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS.
|
||
+AC_DEFUN([gl_NEXT_HEADERS_INTERNAL],
|
||
+[
|
||
AC_REQUIRE([gl_INCLUDE_NEXT])
|
||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||
- AC_CHECK_HEADERS_ONCE([$1])
|
||
|
||
+ m4_if([$2], [check],
|
||
+ [AC_CHECK_HEADERS_ONCE([$1])
|
||
+ ])
|
||
+
|
||
+dnl FIXME: gl_next_header and gl_header_exists must be used unquoted
|
||
+dnl until we can assume autoconf 2.64 or newer.
|
||
m4_foreach_w([gl_HEADER_NAME], [$1],
|
||
[AS_VAR_PUSHDEF([gl_next_header],
|
||
[gl_cv_next_]m4_defn([gl_HEADER_NAME]))
|
||
if test $gl_cv_have_include_next = yes; then
|
||
- AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
|
||
+ AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
|
||
else
|
||
AC_CACHE_CHECK(
|
||
[absolute name of <]m4_defn([gl_HEADER_NAME])[>],
|
||
m4_defn([gl_next_header]),
|
||
- [AS_VAR_PUSHDEF([gl_header_exists],
|
||
- [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
|
||
- if test AS_VAR_GET(gl_header_exists) = yes; then
|
||
- AC_LANG_CONFTEST(
|
||
- [AC_LANG_SOURCE(
|
||
- [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
|
||
- )])
|
||
- dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
|
||
- dnl that contain only a #include of other header files and no
|
||
- dnl non-comment tokens of their own. This leads to a failure to
|
||
- dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
|
||
- dnl and others. The workaround is to force preservation of comments
|
||
- dnl through option -C. This ensures all necessary #line directives
|
||
- dnl are present. GCC supports option -C as well.
|
||
- case "$host_os" in
|
||
- aix*) gl_absname_cpp="$ac_cpp -C" ;;
|
||
- *) gl_absname_cpp="$ac_cpp" ;;
|
||
- esac
|
||
- dnl eval is necessary to expand gl_absname_cpp.
|
||
- dnl Ultrix and Pyramid sh refuse to redirect output of eval,
|
||
- dnl so use subshell.
|
||
- AS_VAR_SET([gl_next_header],
|
||
- ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
|
||
- sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
|
||
- s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
|
||
- s#^/[^/]#//&#
|
||
- p
|
||
- q
|
||
- }'`'"'])
|
||
- else
|
||
- AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
|
||
- fi
|
||
- AS_VAR_POPDEF([gl_header_exists])])
|
||
+ [m4_if([$2], [check],
|
||
+ [AS_VAR_PUSHDEF([gl_header_exists],
|
||
+ [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
|
||
+ if test AS_VAR_GET(gl_header_exists) = yes; then
|
||
+ AS_VAR_POPDEF([gl_header_exists])
|
||
+ ])
|
||
+ AC_LANG_CONFTEST(
|
||
+ [AC_LANG_SOURCE(
|
||
+ [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
|
||
+ )])
|
||
+ dnl AIX "xlc -E" and "cc -E" omit #line directives for header
|
||
+ dnl files that contain only a #include of other header files and
|
||
+ dnl no non-comment tokens of their own. This leads to a failure
|
||
+ dnl to detect the absolute name of <dirent.h>, <signal.h>,
|
||
+ dnl <poll.h> and others. The workaround is to force preservation
|
||
+ dnl of comments through option -C. This ensures all necessary
|
||
+ dnl #line directives are present. GCC supports option -C as well.
|
||
+ case "$host_os" in
|
||
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
|
||
+ *) gl_absname_cpp="$ac_cpp" ;;
|
||
+ esac
|
||
+changequote(,)
|
||
+ case "$host_os" in
|
||
+ mingw*)
|
||
+ dnl For the sake of native Windows compilers (excluding gcc),
|
||
+ dnl treat backslash as a directory separator, like /.
|
||
+ dnl Actually, these compilers use a double-backslash as
|
||
+ dnl directory separator, inside the
|
||
+ dnl # line "filename"
|
||
+ dnl directives.
|
||
+ gl_dirsep_regex='[/\\]'
|
||
+ ;;
|
||
+ *)
|
||
+ gl_dirsep_regex='\/'
|
||
+ ;;
|
||
+ esac
|
||
+ dnl A sed expression that turns a string into a basic regular
|
||
+ dnl expression, for use within "/.../".
|
||
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
|
||
+changequote([,])
|
||
+ gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \
|
||
+ | sed -e "$gl_make_literal_regex_sed"`
|
||
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
|
||
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
|
||
+changequote(,)dnl
|
||
+ s|^/[^/]|//&|
|
||
+changequote([,])dnl
|
||
+ p
|
||
+ q
|
||
+ }'
|
||
+ dnl eval is necessary to expand gl_absname_cpp.
|
||
+ dnl Ultrix and Pyramid sh refuse to redirect output of eval,
|
||
+ dnl so use subshell.
|
||
+ AS_VAR_SET(gl_next_header,
|
||
+ ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
|
||
+ sed -n "$gl_absolute_header_sed"`'"'])
|
||
+ m4_if([$2], [check],
|
||
+ [else
|
||
+ AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
|
||
+ fi
|
||
+ ])
|
||
+ ])
|
||
fi
|
||
AC_SUBST(
|
||
AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
|
||
- [AS_VAR_GET([gl_next_header])])
|
||
+ [AS_VAR_GET(gl_next_header)])
|
||
if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
|
||
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
|
||
gl_next_as_first_directive='<'gl_HEADER_NAME'>'
|
||
else
|
||
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
|
||
- gl_next_as_first_directive=AS_VAR_GET([gl_next_header])
|
||
+ gl_next_as_first_directive=AS_VAR_GET(gl_next_header)
|
||
fi
|
||
AC_SUBST(
|
||
AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
|
||
diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4
|
||
index 9b27ff1..74d0e80 100644
|
||
--- a/m4/intdiv0.m4
|
||
+++ b/m4/intdiv0.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# intdiv0.m4 serial 4 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2002, 2007-2008, 2010 Free Software Foundation, Inc.
|
||
+# intdiv0.m4 serial 6 (gettext-0.18.2)
|
||
+dnl Copyright (C) 2002, 2007-2008, 2010-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -18,7 +18,7 @@ AC_DEFUN([gt_INTDIV0],
|
||
changequote(,)dnl
|
||
case "$host_os" in
|
||
macos* | darwin[6-9]* | darwin[1-9][0-9]*)
|
||
- # On MacOS X 10.2 or newer, just assume the same as when cross-
|
||
+ # On Mac OS X 10.2 or newer, just assume the same as when cross-
|
||
# compiling. If we were to perform the real test, 1 Crash Report
|
||
# dialog window would pop up.
|
||
case "$host_cpu" in
|
||
@@ -60,7 +60,7 @@ int main ()
|
||
|
||
z = x / y;
|
||
nan = y / y;
|
||
- exit (1);
|
||
+ exit (2);
|
||
}
|
||
]])],
|
||
[gt_cv_int_divbyzero_sigfpe=yes],
|
||
diff --git a/m4/intl.m4 b/m4/intl.m4
|
||
index d84bc4a..486b5cc 100644
|
||
--- a/m4/intl.m4
|
||
+++ b/m4/intl.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# intl.m4 serial 17b
|
||
-dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||
+# intl.m4 serial 22 (gettext-0.18.2)
|
||
+dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -17,7 +17,7 @@ dnl Authors:
|
||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
|
||
|
||
-AC_PREREQ([2.53])
|
||
+AC_PREREQ([2.60])
|
||
|
||
dnl Checks for all prerequisites of the intl subdirectory,
|
||
dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
|
||
@@ -25,7 +25,7 @@ dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
|
||
AC_DEFUN([AM_INTL_SUBDIR],
|
||
[
|
||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||
- AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
|
||
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||
AC_REQUIRE([AC_PROG_CC])dnl
|
||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||
AC_REQUIRE([gt_GLIBC2])dnl
|
||
@@ -55,7 +55,7 @@ AC_DEFUN([AM_INTL_SUBDIR],
|
||
[AC_DEFINE([ptrdiff_t], [long],
|
||
[Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
|
||
])
|
||
- AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
|
||
+ AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h])
|
||
AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
|
||
snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
|
||
|
||
@@ -295,6 +295,6 @@ AC_DEFUN([gt_CHECK_DECL],
|
||
else
|
||
gt_value=0
|
||
fi
|
||
- AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
|
||
- [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
|
||
+ AC_DEFINE_UNQUOTED([HAVE_DECL_]m4_translit($1, [a-z], [A-Z]), [$gt_value],
|
||
+ [Define to 1 if you have the declaration of '$1', and to 0 if you don't.])
|
||
])
|
||
diff --git a/m4/intldir.m4 b/m4/intldir.m4
|
||
index ebae76d..388ecd6 100644
|
||
--- a/m4/intldir.m4
|
||
+++ b/m4/intldir.m4
|
||
@@ -1,5 +1,5 @@
|
||
# intldir.m4 serial 2 (gettext-0.18)
|
||
-dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
|
||
index f0f7c98..ab97d39 100644
|
||
--- a/m4/intlmacosx.m4
|
||
+++ b/m4/intlmacosx.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# intlmacosx.m4 serial 4 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
|
||
+# intlmacosx.m4 serial 5 (gettext-0.18.2)
|
||
+dnl Copyright (C) 2004-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -13,11 +13,11 @@ dnl by the GNU Library General Public License, and the rest of the GNU
|
||
dnl gettext package package is covered by the GNU General Public License.
|
||
dnl They are *not* in the public domain.
|
||
|
||
-dnl Checks for special options needed on MacOS X.
|
||
+dnl Checks for special options needed on Mac OS X.
|
||
dnl Defines INTL_MACOSX_LIBS.
|
||
AC_DEFUN([gt_INTL_MACOSX],
|
||
[
|
||
- dnl Check for API introduced in MacOS X 10.2.
|
||
+ dnl Check for API introduced in Mac OS X 10.2.
|
||
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
|
||
[gt_cv_func_CFPreferencesCopyAppValue],
|
||
[gt_save_LIBS="$LIBS"
|
||
@@ -31,9 +31,9 @@ AC_DEFUN([gt_INTL_MACOSX],
|
||
LIBS="$gt_save_LIBS"])
|
||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
|
||
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
|
||
- [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
|
||
+ [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
|
||
fi
|
||
- dnl Check for API introduced in MacOS X 10.3.
|
||
+ dnl Check for API introduced in Mac OS X 10.3.
|
||
AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
|
||
[gt_save_LIBS="$LIBS"
|
||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||
@@ -46,7 +46,7 @@ AC_DEFUN([gt_INTL_MACOSX],
|
||
LIBS="$gt_save_LIBS"])
|
||
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||
AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
|
||
- [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
|
||
+ [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
|
||
fi
|
||
INTL_MACOSX_LIBS=
|
||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||
diff --git a/m4/intmax.m4 b/m4/intmax.m4
|
||
index 2c0f2af..18733a5 100644
|
||
--- a/m4/intmax.m4
|
||
+++ b/m4/intmax.m4
|
||
@@ -1,5 +1,5 @@
|
||
# intmax.m4 serial 6 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2002-2005, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/intmax_t.m4 b/m4/intmax_t.m4
|
||
index 493e4a9..6ea7053 100644
|
||
--- a/m4/intmax_t.m4
|
||
+++ b/m4/intmax_t.m4
|
||
@@ -1,5 +1,5 @@
|
||
# intmax_t.m4 serial 8
|
||
-dnl Copyright (C) 1997-2004, 2006-2007, 2009-2010 Free Software Foundation,
|
||
+dnl Copyright (C) 1997-2004, 2006-2007, 2009-2013 Free Software Foundation,
|
||
dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
|
||
index ee96bcd..e5a1e05 100644
|
||
--- a/m4/inttypes-pri.m4
|
||
+++ b/m4/inttypes-pri.m4
|
||
@@ -1,5 +1,5 @@
|
||
# inttypes-pri.m4 serial 7 (gettext-0.18.2)
|
||
-dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 1997-2002, 2006, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
|
||
index 9d8f926..5f05ac5 100644
|
||
--- a/m4/inttypes_h.m4
|
||
+++ b/m4/inttypes_h.m4
|
||
@@ -1,5 +1,5 @@
|
||
# inttypes_h.m4 serial 10
|
||
-dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 1997-2004, 2006, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/langinfo_h.m4 b/m4/langinfo_h.m4
|
||
index adc445e..73bef8b 100644
|
||
--- a/m4/langinfo_h.m4
|
||
+++ b/m4/langinfo_h.m4
|
||
@@ -1,5 +1,5 @@
|
||
# langinfo_h.m4 serial 7
|
||
-dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
|
||
index 232da73..d62a175 100644
|
||
--- a/m4/lcmessage.m4
|
||
+++ b/m4/lcmessage.m4
|
||
@@ -1,5 +1,5 @@
|
||
# lcmessage.m4 serial 7 (gettext-0.18.2)
|
||
-dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation,
|
||
+dnl Copyright (C) 1995-2002, 2004-2005, 2008-2013 Free Software Foundation,
|
||
dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
|
||
index 294db72..c145e47 100644
|
||
--- a/m4/lib-ld.m4
|
||
+++ b/m4/lib-ld.m4
|
||
@@ -1,33 +1,39 @@
|
||
-# lib-ld.m4 serial 5 (gettext-0.18.2)
|
||
-dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
|
||
+# lib-ld.m4 serial 6
|
||
+dnl Copyright (C) 1996-2003, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
dnl Subroutines of libtool.m4,
|
||
-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
|
||
-dnl with libtool.m4.
|
||
+dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid
|
||
+dnl collision with libtool.m4.
|
||
|
||
-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
|
||
+dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no.
|
||
AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
||
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
|
||
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
||
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
|
||
case `$LD -v 2>&1 </dev/null` in
|
||
*GNU* | *'with BFD'*)
|
||
- acl_cv_prog_gnu_ld=yes ;;
|
||
+ acl_cv_prog_gnu_ld=yes
|
||
+ ;;
|
||
*)
|
||
- acl_cv_prog_gnu_ld=no ;;
|
||
+ acl_cv_prog_gnu_ld=no
|
||
+ ;;
|
||
esac])
|
||
with_gnu_ld=$acl_cv_prog_gnu_ld
|
||
])
|
||
|
||
-dnl From libtool-1.4. Sets the variable LD.
|
||
+dnl From libtool-2.4. Sets the variable LD.
|
||
AC_DEFUN([AC_LIB_PROG_LD],
|
||
-[AC_ARG_WITH([gnu-ld],
|
||
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
||
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
||
-AC_REQUIRE([AC_PROG_CC])dnl
|
||
+[AC_REQUIRE([AC_PROG_CC])dnl
|
||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||
+
|
||
+AC_ARG_WITH([gnu-ld],
|
||
+ [AS_HELP_STRING([--with-gnu-ld],
|
||
+ [assume the C compiler uses GNU ld [default=no]])],
|
||
+ [test "$withval" = no || with_gnu_ld=yes],
|
||
+ [with_gnu_ld=no])dnl
|
||
+
|
||
# Prepare PATH_SEPARATOR.
|
||
# The user is always right.
|
||
if test "${PATH_SEPARATOR+set}" != set; then
|
||
@@ -40,10 +46,11 @@ if test "${PATH_SEPARATOR+set}" != set; then
|
||
|| PATH_SEPARATOR=';'
|
||
}
|
||
fi
|
||
+
|
||
ac_prog=ld
|
||
if test "$GCC" = yes; then
|
||
# Check if gcc -print-prog-name=ld gives a path.
|
||
- AC_MSG_CHECKING([for ld used by GCC])
|
||
+ AC_MSG_CHECKING([for ld used by $CC])
|
||
case $host in
|
||
*-*-mingw*)
|
||
# gcc leaves a trailing carriage return which upsets mingw
|
||
@@ -53,11 +60,11 @@ if test "$GCC" = yes; then
|
||
esac
|
||
case $ac_prog in
|
||
# Accept absolute paths.
|
||
- [[\\/]* | [A-Za-z]:[\\/]*)]
|
||
- [re_direlt='/[^/][^/]*/\.\./']
|
||
- # Canonicalize the path of ld
|
||
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
||
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
||
+ [[\\/]]* | ?:[[\\/]]*)
|
||
+ re_direlt='/[[^/]][[^/]]*/\.\./'
|
||
+ # Canonicalize the pathname of ld
|
||
+ ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'`
|
||
+ while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do
|
||
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
||
done
|
||
test -z "$LD" && LD="$ac_prog"
|
||
@@ -78,23 +85,26 @@ else
|
||
fi
|
||
AC_CACHE_VAL([acl_cv_path_LD],
|
||
[if test -z "$LD"; then
|
||
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
||
+ acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
|
||
for ac_dir in $PATH; do
|
||
+ IFS="$acl_save_ifs"
|
||
test -z "$ac_dir" && ac_dir=.
|
||
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
||
acl_cv_path_LD="$ac_dir/$ac_prog"
|
||
# Check to see if the program is GNU ld. I'd rather use --version,
|
||
- # but apparently some GNU ld's only accept -v.
|
||
+ # but apparently some variants of GNU ld only accept -v.
|
||
# Break only if it was the GNU/non-GNU ld that we prefer.
|
||
- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
|
||
+ case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
|
||
*GNU* | *'with BFD'*)
|
||
- test "$with_gnu_ld" != no && break ;;
|
||
+ test "$with_gnu_ld" != no && break
|
||
+ ;;
|
||
*)
|
||
- test "$with_gnu_ld" != yes && break ;;
|
||
+ test "$with_gnu_ld" != yes && break
|
||
+ ;;
|
||
esac
|
||
fi
|
||
done
|
||
- IFS="$ac_save_ifs"
|
||
+ IFS="$acl_save_ifs"
|
||
else
|
||
acl_cv_path_LD="$LD" # Let the user override the test with a path.
|
||
fi])
|
||
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
|
||
index 2ea9d6d..073f040 100644
|
||
--- a/m4/lib-link.m4
|
||
+++ b/m4/lib-link.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# lib-link.m4 serial 25 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
|
||
+# lib-link.m4 serial 26 (gettext-0.18.2)
|
||
+dnl Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -116,6 +116,8 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||
dnl Determine the platform dependent parameters needed to use rpath:
|
||
dnl acl_libext,
|
||
dnl acl_shlibext,
|
||
+dnl acl_libname_spec,
|
||
+dnl acl_library_names_spec,
|
||
dnl acl_hardcode_libdir_flag_spec,
|
||
dnl acl_hardcode_libdir_separator,
|
||
dnl acl_hardcode_direct,
|
||
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
|
||
index 1601cea..60908e8 100644
|
||
--- a/m4/lib-prefix.m4
|
||
+++ b/m4/lib-prefix.m4
|
||
@@ -1,5 +1,5 @@
|
||
# lib-prefix.m4 serial 7 (gettext-0.18)
|
||
-dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2001-2005, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/libunistring-base.m4 b/m4/libunistring-base.m4
|
||
new file mode 100644
|
||
index 0000000..d105c72
|
||
--- /dev/null
|
||
+++ b/m4/libunistring-base.m4
|
||
@@ -0,0 +1,141 @@
|
||
+# libunistring-base.m4 serial 5
|
||
+dnl Copyright (C) 2010-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+dnl From Paolo Bonzini and Bruno Haible.
|
||
+
|
||
+dnl gl_LIBUNISTRING_MODULE([VERSION], [Module])
|
||
+dnl Declares that the source files of Module should be compiled, unless we
|
||
+dnl are linking with libunistring and its version is >= the given VERSION.
|
||
+dnl Defines an automake conditional LIBUNISTRING_COMPILE_$MODULE that is
|
||
+dnl true if the source files of Module should be compiled.
|
||
+dnl This macro is to be used for public libunistring API, not for
|
||
+dnl undocumented API.
|
||
+dnl
|
||
+dnl You have to bump the VERSION argument to the next projected version
|
||
+dnl number each time you make a change that affects the behaviour of the
|
||
+dnl functions defined in Module (even if the sources of Module itself do not
|
||
+dnl change).
|
||
+
|
||
+AC_DEFUN([gl_LIBUNISTRING_MODULE],
|
||
+[
|
||
+ AC_REQUIRE([gl_LIBUNISTRING_LIB_PREPARE])
|
||
+ dnl Use the variables HAVE_LIBUNISTRING, LIBUNISTRING_VERSION from
|
||
+ dnl gl_LIBUNISTRING_CORE if that macro has been run.
|
||
+ AM_CONDITIONAL(AS_TR_CPP([LIBUNISTRING_COMPILE_$2]),
|
||
+ [gl_LIBUNISTRING_VERSION_CMP([$1])])
|
||
+])
|
||
+
|
||
+dnl gl_LIBUNISTRING_LIBHEADER([VERSION], [HeaderFile])
|
||
+dnl Declares that HeaderFile should be created, unless we are linking
|
||
+dnl with libunistring and its version is >= the given VERSION.
|
||
+dnl HeaderFile should be relative to the lib directory and end in '.h'.
|
||
+dnl Prepares for substituting LIBUNISTRING_HEADERFILE (to HeaderFile or empty).
|
||
+dnl
|
||
+dnl When we are linking with the already installed libunistring and its version
|
||
+dnl is < VERSION, we create HeaderFile here, because we may compile functions
|
||
+dnl (via gl_LIBUNISTRING_MODULE above) that are not contained in the installed
|
||
+dnl version.
|
||
+dnl When we are linking with the already installed libunistring and its version
|
||
+dnl is > VERSION, we don't create HeaderFile here: it could cause compilation
|
||
+dnl errors in other libunistring header files if some types are missing.
|
||
+dnl
|
||
+dnl You have to bump the VERSION argument to the next projected version
|
||
+dnl number each time you make a non-comment change to the HeaderFile.
|
||
+
|
||
+AC_DEFUN([gl_LIBUNISTRING_LIBHEADER],
|
||
+[
|
||
+ AC_REQUIRE([gl_LIBUNISTRING_LIB_PREPARE])
|
||
+ dnl Use the variables HAVE_LIBUNISTRING, LIBUNISTRING_VERSION from
|
||
+ dnl gl_LIBUNISTRING_CORE if that macro has been run.
|
||
+ if gl_LIBUNISTRING_VERSION_CMP([$1]); then
|
||
+ LIBUNISTRING_[]AS_TR_CPP([$2])='$2'
|
||
+ else
|
||
+ LIBUNISTRING_[]AS_TR_CPP([$2])=
|
||
+ fi
|
||
+ AC_SUBST([LIBUNISTRING_]AS_TR_CPP([$2]))
|
||
+])
|
||
+
|
||
+dnl Miscellaneous preparations/initializations.
|
||
+
|
||
+AC_DEFUN([gl_LIBUNISTRING_LIB_PREPARE],
|
||
+[
|
||
+ dnl Ensure that HAVE_LIBUNISTRING is fully determined at this point.
|
||
+ m4_ifdef([gl_LIBUNISTRING], [AC_REQUIRE([gl_LIBUNISTRING])])
|
||
+
|
||
+ AC_REQUIRE([AC_PROG_AWK])
|
||
+
|
||
+dnl Sed expressions to extract the parts of a version number.
|
||
+changequote(,)
|
||
+gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
|
||
+i\
|
||
+0
|
||
+q
|
||
+'
|
||
+gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
|
||
+i\
|
||
+0
|
||
+q
|
||
+'
|
||
+gl_libunistring_sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
|
||
+i\
|
||
+0
|
||
+q
|
||
+'
|
||
+changequote([,])
|
||
+
|
||
+ if test "$HAVE_LIBUNISTRING" = yes; then
|
||
+ LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
|
||
+ LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
|
||
+ LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
|
||
+ fi
|
||
+])
|
||
+
|
||
+dnl gl_LIBUNISTRING_VERSION_CMP([VERSION])
|
||
+dnl Expands to a shell statement that evaluates to true if LIBUNISTRING_VERSION
|
||
+dnl is less than the VERSION argument.
|
||
+AC_DEFUN([gl_LIBUNISTRING_VERSION_CMP],
|
||
+[ { test "$HAVE_LIBUNISTRING" != yes \
|
||
+ || {
|
||
+ dnl AS_LITERAL_IF exists and works fine since autoconf-2.59 at least.
|
||
+ AS_LITERAL_IF([$1],
|
||
+ [dnl This is the optimized variant, that assumes the argument is a literal:
|
||
+ m4_pushdef([requested_version_major],
|
||
+ [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^\([0-9]*\).*], [\1]), [])])
|
||
+ m4_pushdef([requested_version_minor],
|
||
+ [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^[0-9]*[.]\([0-9]*\).*], [\1]), [$1])])
|
||
+ m4_pushdef([requested_version_subminor],
|
||
+ [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^[0-9]*[.][0-9]*[.]\([0-9]*\).*], [\1]), [$1])])
|
||
+ test $LIBUNISTRING_VERSION_MAJOR -lt requested_version_major \
|
||
+ || { test $LIBUNISTRING_VERSION_MAJOR -eq requested_version_major \
|
||
+ && { test $LIBUNISTRING_VERSION_MINOR -lt requested_version_minor \
|
||
+ || { test $LIBUNISTRING_VERSION_MINOR -eq requested_version_minor \
|
||
+ && test $LIBUNISTRING_VERSION_SUBMINOR -lt requested_version_subminor
|
||
+ }
|
||
+ }
|
||
+ }
|
||
+ m4_popdef([requested_version_subminor])
|
||
+ m4_popdef([requested_version_minor])
|
||
+ m4_popdef([requested_version_major])
|
||
+ ],
|
||
+ [dnl This is the unoptimized variant:
|
||
+ requested_version_major=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_major"`
|
||
+ requested_version_minor=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_minor"`
|
||
+ requested_version_subminor=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_subminor"`
|
||
+ test $LIBUNISTRING_VERSION_MAJOR -lt $requested_version_major \
|
||
+ || { test $LIBUNISTRING_VERSION_MAJOR -eq $requested_version_major \
|
||
+ && { test $LIBUNISTRING_VERSION_MINOR -lt $requested_version_minor \
|
||
+ || { test $LIBUNISTRING_VERSION_MINOR -eq $requested_version_minor \
|
||
+ && test $LIBUNISTRING_VERSION_SUBMINOR -lt $requested_version_subminor
|
||
+ }
|
||
+ }
|
||
+ }
|
||
+ ])
|
||
+ }
|
||
+ }])
|
||
+
|
||
+dnl gl_LIBUNISTRING_ARG_OR_ZERO([ARG], [ORIG]) expands to ARG if it is not the
|
||
+dnl same as ORIG, otherwise to 0.
|
||
+m4_define([gl_LIBUNISTRING_ARG_OR_ZERO], [m4_if([$1], [$2], [0], [$1])])
|
||
diff --git a/m4/localcharset.m4 b/m4/localcharset.m4
|
||
index ee2e801..2e93e58 100644
|
||
--- a/m4/localcharset.m4
|
||
+++ b/m4/localcharset.m4
|
||
@@ -1,5 +1,5 @@
|
||
# localcharset.m4 serial 7
|
||
-dnl Copyright (C) 2002, 2004, 2006, 2009, 2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2002, 2004, 2006, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/locale-fr.m4 b/m4/locale-fr.m4
|
||
index 001f539..ef199e3 100644
|
||
--- a/m4/locale-fr.m4
|
||
+++ b/m4/locale-fr.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# locale-fr.m4 serial 11
|
||
-dnl Copyright (C) 2003, 2005-2010 Free Software Foundation, Inc.
|
||
+# locale-fr.m4 serial 17
|
||
+dnl Copyright (C) 2003, 2005-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -25,17 +25,30 @@ struct tm t;
|
||
char buf[16];
|
||
int main () {
|
||
/* Check whether the given locale name is recognized by the system. */
|
||
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
|
||
+ /* On native Windows, setlocale(category, "") looks at the system settings,
|
||
+ not at the environment variables. Also, when an encoding suffix such
|
||
+ as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
|
||
+ category of the locale to "C". */
|
||
+ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
|
||
+ || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
|
||
+ return 1;
|
||
+#else
|
||
if (setlocale (LC_ALL, "") == NULL) return 1;
|
||
+#endif
|
||
/* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
|
||
- On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
|
||
+ On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
|
||
is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
|
||
On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
|
||
succeeds but then nl_langinfo(CODESET) is "646". In this situation,
|
||
- some unit tests fail. */
|
||
+ some unit tests fail.
|
||
+ On MirBSD 10, when an unsupported locale is specified, setlocale()
|
||
+ succeeds but then nl_langinfo(CODESET) is "UTF-8". */
|
||
#if HAVE_LANGINFO_CODESET
|
||
{
|
||
const char *cs = nl_langinfo (CODESET);
|
||
- if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
|
||
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
|
||
+ || strcmp (cs, "UTF-8") == 0)
|
||
return 1;
|
||
}
|
||
#endif
|
||
@@ -50,46 +63,67 @@ int main () {
|
||
one byte long. This excludes the UTF-8 encoding. */
|
||
t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
|
||
if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
|
||
+#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
|
||
/* Check whether the decimal separator is a comma.
|
||
On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
|
||
are nl_langinfo(RADIXCHAR) are both ".". */
|
||
if (localeconv () ->decimal_point[0] != ',') return 1;
|
||
+#endif
|
||
return 0;
|
||
}
|
||
changequote([,])dnl
|
||
])])
|
||
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
|
||
- # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
|
||
- # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
|
||
- # configure script would override the LC_ALL setting. Likewise for
|
||
- # LC_CTYPE, which is also set at the beginning of the configure script.
|
||
- # Test for the usual locale name.
|
||
- if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_fr=fr_FR
|
||
- else
|
||
- # Test for the locale name with explicit encoding suffix.
|
||
- if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_fr=fr_FR.ISO-8859-1
|
||
- else
|
||
- # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
|
||
- if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_fr=fr_FR.ISO8859-1
|
||
+ case "$host_os" in
|
||
+ # Handle native Windows specially, because there setlocale() interprets
|
||
+ # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
|
||
+ # "fr" or "fra" as "French" or "French_France.1252",
|
||
+ # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
|
||
+ # "ja" as "Japanese" or "Japanese_Japan.932",
|
||
+ # and similar.
|
||
+ mingw*)
|
||
+ # Test for the native Windows locale name.
|
||
+ if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr=French_France.1252
|
||
else
|
||
- # Test for the HP-UX locale name.
|
||
- if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_fr=fr_FR.iso88591
|
||
+ # None found.
|
||
+ gt_cv_locale_fr=none
|
||
+ fi
|
||
+ ;;
|
||
+ *)
|
||
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
|
||
+ # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
|
||
+ # configure script would override the LC_ALL setting. Likewise for
|
||
+ # LC_CTYPE, which is also set at the beginning of the configure script.
|
||
+ # Test for the usual locale name.
|
||
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr=fr_FR
|
||
+ else
|
||
+ # Test for the locale name with explicit encoding suffix.
|
||
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
|
||
else
|
||
- # Test for the Solaris 7 locale name.
|
||
- if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_fr=fr
|
||
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
|
||
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr=fr_FR.ISO8859-1
|
||
else
|
||
- # None found.
|
||
- gt_cv_locale_fr=none
|
||
+ # Test for the HP-UX locale name.
|
||
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr=fr_FR.iso88591
|
||
+ else
|
||
+ # Test for the Solaris 7 locale name.
|
||
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr=fr
|
||
+ else
|
||
+ # None found.
|
||
+ gt_cv_locale_fr=none
|
||
+ fi
|
||
+ fi
|
||
fi
|
||
fi
|
||
fi
|
||
- fi
|
||
- fi
|
||
+ ;;
|
||
+ esac
|
||
fi
|
||
rm -fr conftest*
|
||
])
|
||
@@ -119,9 +153,19 @@ int main () {
|
||
variables, and all locales use the UTF-8 encoding. */
|
||
#if !(defined __BEOS__ || defined __HAIKU__)
|
||
/* Check whether the given locale name is recognized by the system. */
|
||
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
|
||
+ /* On native Windows, setlocale(category, "") looks at the system settings,
|
||
+ not at the environment variables. Also, when an encoding suffix such
|
||
+ as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
|
||
+ category of the locale to "C". */
|
||
+ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
|
||
+ || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
|
||
+ return 1;
|
||
+# else
|
||
if (setlocale (LC_ALL, "") == NULL) return 1;
|
||
+# endif
|
||
/* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
|
||
- On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
|
||
+ On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
|
||
is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
|
||
On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
|
||
succeeds but then nl_langinfo(CODESET) is "646". In this situation,
|
||
@@ -147,36 +191,57 @@ int main () {
|
||
|| buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
|
||
return 1;
|
||
#endif
|
||
+#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
|
||
/* Check whether the decimal separator is a comma.
|
||
On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
|
||
are nl_langinfo(RADIXCHAR) are both ".". */
|
||
if (localeconv () ->decimal_point[0] != ',') return 1;
|
||
+#endif
|
||
return 0;
|
||
}
|
||
changequote([,])dnl
|
||
])])
|
||
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
|
||
- # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
|
||
- # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
|
||
- # configure script would override the LC_ALL setting. Likewise for
|
||
- # LC_CTYPE, which is also set at the beginning of the configure script.
|
||
- # Test for the usual locale name.
|
||
- if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_fr_utf8=fr_FR
|
||
- else
|
||
- # Test for the locale name with explicit encoding suffix.
|
||
- if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_fr_utf8=fr_FR.UTF-8
|
||
- else
|
||
- # Test for the Solaris 7 locale name.
|
||
- if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_fr_utf8=fr.UTF-8
|
||
+ case "$host_os" in
|
||
+ # Handle native Windows specially, because there setlocale() interprets
|
||
+ # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
|
||
+ # "fr" or "fra" as "French" or "French_France.1252",
|
||
+ # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
|
||
+ # "ja" as "Japanese" or "Japanese_Japan.932",
|
||
+ # and similar.
|
||
+ mingw*)
|
||
+ # Test for the hypothetical native Windows locale name.
|
||
+ if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr_utf8=French_France.65001
|
||
else
|
||
# None found.
|
||
gt_cv_locale_fr_utf8=none
|
||
fi
|
||
- fi
|
||
- fi
|
||
+ ;;
|
||
+ *)
|
||
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
|
||
+ # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
|
||
+ # configure script would override the LC_ALL setting. Likewise for
|
||
+ # LC_CTYPE, which is also set at the beginning of the configure script.
|
||
+ # Test for the usual locale name.
|
||
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr_utf8=fr_FR
|
||
+ else
|
||
+ # Test for the locale name with explicit encoding suffix.
|
||
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
|
||
+ else
|
||
+ # Test for the Solaris 7 locale name.
|
||
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_fr_utf8=fr.UTF-8
|
||
+ else
|
||
+ # None found.
|
||
+ gt_cv_locale_fr_utf8=none
|
||
+ fi
|
||
+ fi
|
||
+ fi
|
||
+ ;;
|
||
+ esac
|
||
fi
|
||
rm -fr conftest*
|
||
])
|
||
diff --git a/m4/locale-ja.m4 b/m4/locale-ja.m4
|
||
index 0eedaf1..132a3e7 100644
|
||
--- a/m4/locale-ja.m4
|
||
+++ b/m4/locale-ja.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# locale-ja.m4 serial 7
|
||
-dnl Copyright (C) 2003, 2005-2010 Free Software Foundation, Inc.
|
||
+# locale-ja.m4 serial 12
|
||
+dnl Copyright (C) 2003, 2005-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -27,17 +27,30 @@ int main ()
|
||
{
|
||
const char *p;
|
||
/* Check whether the given locale name is recognized by the system. */
|
||
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
|
||
+ /* On native Windows, setlocale(category, "") looks at the system settings,
|
||
+ not at the environment variables. Also, when an encoding suffix such
|
||
+ as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
|
||
+ category of the locale to "C". */
|
||
+ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
|
||
+ || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
|
||
+ return 1;
|
||
+#else
|
||
if (setlocale (LC_ALL, "") == NULL) return 1;
|
||
+#endif
|
||
/* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
|
||
- On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
|
||
+ On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
|
||
is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
|
||
On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
|
||
succeeds but then nl_langinfo(CODESET) is "646". In this situation,
|
||
- some unit tests fail. */
|
||
+ some unit tests fail.
|
||
+ On MirBSD 10, when an unsupported locale is specified, setlocale()
|
||
+ succeeds but then nl_langinfo(CODESET) is "UTF-8". */
|
||
#if HAVE_LANGINFO_CODESET
|
||
{
|
||
const char *cs = nl_langinfo (CODESET);
|
||
- if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
|
||
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
|
||
+ || strcmp (cs, "UTF-8") == 0)
|
||
return 1;
|
||
}
|
||
#endif
|
||
@@ -52,7 +65,7 @@ int main ()
|
||
if (MB_CUR_MAX == 1)
|
||
return 1;
|
||
/* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
|
||
- This excludes the UTF-8 encoding. */
|
||
+ This excludes the UTF-8 encoding (except on MirBSD). */
|
||
t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
|
||
if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
|
||
for (p = buf; *p != '\0'; p++)
|
||
@@ -63,42 +76,58 @@ int main ()
|
||
changequote([,])dnl
|
||
])])
|
||
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
|
||
- # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
|
||
- # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
|
||
- # configure script would override the LC_ALL setting. Likewise for
|
||
- # LC_CTYPE, which is also set at the beginning of the configure script.
|
||
- # Test for the AIX locale name.
|
||
- if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_ja=ja_JP
|
||
- else
|
||
- # Test for the locale name with explicit encoding suffix.
|
||
- if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_ja=ja_JP.EUC-JP
|
||
- else
|
||
- # Test for the HP-UX, OSF/1, NetBSD locale name.
|
||
- if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_ja=ja_JP.eucJP
|
||
+ case "$host_os" in
|
||
+ # Handle native Windows specially, because there setlocale() interprets
|
||
+ # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
|
||
+ # "fr" or "fra" as "French" or "French_France.1252",
|
||
+ # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
|
||
+ # "ja" as "Japanese" or "Japanese_Japan.932",
|
||
+ # and similar.
|
||
+ mingw*)
|
||
+ # Note that on native Windows, the Japanese locale is
|
||
+ # Japanese_Japan.932, and CP932 is very different from EUC-JP, so we
|
||
+ # cannot use it here.
|
||
+ gt_cv_locale_ja=none
|
||
+ ;;
|
||
+ *)
|
||
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
|
||
+ # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
|
||
+ # configure script would override the LC_ALL setting. Likewise for
|
||
+ # LC_CTYPE, which is also set at the beginning of the configure script.
|
||
+ # Test for the AIX locale name.
|
||
+ if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_ja=ja_JP
|
||
else
|
||
- # Test for the IRIX, FreeBSD locale name.
|
||
- if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_ja=ja_JP.EUC
|
||
+ # Test for the locale name with explicit encoding suffix.
|
||
+ if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_ja=ja_JP.EUC-JP
|
||
else
|
||
- # Test for the Solaris 7 locale name.
|
||
- if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_ja=ja
|
||
+ # Test for the HP-UX, OSF/1, NetBSD locale name.
|
||
+ if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_ja=ja_JP.eucJP
|
||
else
|
||
- # Special test for NetBSD 1.6.
|
||
- if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
|
||
- gt_cv_locale_ja=ja_JP.eucJP
|
||
+ # Test for the IRIX, FreeBSD locale name.
|
||
+ if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_ja=ja_JP.EUC
|
||
else
|
||
- # None found.
|
||
- gt_cv_locale_ja=none
|
||
+ # Test for the Solaris 7 locale name.
|
||
+ if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_ja=ja
|
||
+ else
|
||
+ # Special test for NetBSD 1.6.
|
||
+ if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
|
||
+ gt_cv_locale_ja=ja_JP.eucJP
|
||
+ else
|
||
+ # None found.
|
||
+ gt_cv_locale_ja=none
|
||
+ fi
|
||
+ fi
|
||
fi
|
||
fi
|
||
fi
|
||
fi
|
||
- fi
|
||
- fi
|
||
+ ;;
|
||
+ esac
|
||
fi
|
||
rm -fr conftest*
|
||
])
|
||
diff --git a/m4/locale-zh.m4 b/m4/locale-zh.m4
|
||
index 777fd14..4eed73f 100644
|
||
--- a/m4/locale-zh.m4
|
||
+++ b/m4/locale-zh.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# locale-zh.m4 serial 6
|
||
-dnl Copyright (C) 2003, 2005-2010 Free Software Foundation, Inc.
|
||
+# locale-zh.m4 serial 12
|
||
+dnl Copyright (C) 2003, 2005-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -28,17 +28,30 @@ int main ()
|
||
{
|
||
const char *p;
|
||
/* Check whether the given locale name is recognized by the system. */
|
||
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
|
||
+ /* On native Windows, setlocale(category, "") looks at the system settings,
|
||
+ not at the environment variables. Also, when an encoding suffix such
|
||
+ as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
|
||
+ category of the locale to "C". */
|
||
+ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
|
||
+ || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
|
||
+ return 1;
|
||
+#else
|
||
if (setlocale (LC_ALL, "") == NULL) return 1;
|
||
+#endif
|
||
/* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
|
||
- On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
|
||
+ On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
|
||
is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
|
||
On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
|
||
succeeds but then nl_langinfo(CODESET) is "646". In this situation,
|
||
- some unit tests fail. */
|
||
+ some unit tests fail.
|
||
+ On MirBSD 10, when an unsupported locale is specified, setlocale()
|
||
+ succeeds but then nl_langinfo(CODESET) is "UTF-8". */
|
||
#if HAVE_LANGINFO_CODESET
|
||
{
|
||
const char *cs = nl_langinfo (CODESET);
|
||
- if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
|
||
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
|
||
+ || strcmp (cs, "UTF-8") == 0)
|
||
return 1;
|
||
}
|
||
#endif
|
||
@@ -49,7 +62,7 @@ int main ()
|
||
if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
|
||
#endif
|
||
/* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
|
||
- This excludes the UTF-8 encoding. */
|
||
+ This excludes the UTF-8 encoding (except on MirBSD). */
|
||
t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
|
||
if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
|
||
for (p = buf; *p != '\0'; p++)
|
||
@@ -64,22 +77,47 @@ int main ()
|
||
changequote([,])dnl
|
||
])])
|
||
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
|
||
- # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
|
||
- # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
|
||
- # configure script would override the LC_ALL setting. Likewise for
|
||
- # LC_CTYPE, which is also set at the beginning of the configure script.
|
||
- # Test for the locale name without encoding suffix.
|
||
- if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_zh_CN=zh_CN
|
||
- else
|
||
- # Test for the locale name with explicit encoding suffix.
|
||
- if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
- gt_cv_locale_zh_CN=zh_CN.GB18030
|
||
- else
|
||
- # None found.
|
||
+ case "$host_os" in
|
||
+ # Handle native Windows specially, because there setlocale() interprets
|
||
+ # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
|
||
+ # "fr" or "fra" as "French" or "French_France.1252",
|
||
+ # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
|
||
+ # "ja" as "Japanese" or "Japanese_Japan.932",
|
||
+ # and similar.
|
||
+ mingw*)
|
||
+ # Test for the hypothetical native Windows locale name.
|
||
+ if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_zh_CN=Chinese_China.54936
|
||
+ else
|
||
+ # None found.
|
||
+ gt_cv_locale_zh_CN=none
|
||
+ fi
|
||
+ ;;
|
||
+ solaris2.8)
|
||
+ # On Solaris 8, the locales zh_CN.GB18030, zh_CN.GBK, zh.GBK are
|
||
+ # broken. One witness is the test case in gl_MBRTOWC_SANITYCHECK.
|
||
+ # Another witness is that "LC_ALL=zh_CN.GB18030 bash -c true" dumps core.
|
||
gt_cv_locale_zh_CN=none
|
||
- fi
|
||
- fi
|
||
+ ;;
|
||
+ *)
|
||
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
|
||
+ # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
|
||
+ # configure script would override the LC_ALL setting. Likewise for
|
||
+ # LC_CTYPE, which is also set at the beginning of the configure script.
|
||
+ # Test for the locale name without encoding suffix.
|
||
+ if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_zh_CN=zh_CN
|
||
+ else
|
||
+ # Test for the locale name with explicit encoding suffix.
|
||
+ if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
|
||
+ gt_cv_locale_zh_CN=zh_CN.GB18030
|
||
+ else
|
||
+ # None found.
|
||
+ gt_cv_locale_zh_CN=none
|
||
+ fi
|
||
+ fi
|
||
+ ;;
|
||
+ esac
|
||
else
|
||
# If there was a link error, due to mblen(), the system is so old that
|
||
# it certainly doesn't have a chinese locale.
|
||
diff --git a/m4/locale_h.m4 b/m4/locale_h.m4
|
||
new file mode 100644
|
||
index 0000000..8bd12e8
|
||
--- /dev/null
|
||
+++ b/m4/locale_h.m4
|
||
@@ -0,0 +1,122 @@
|
||
+# locale_h.m4 serial 19
|
||
+dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_LOCALE_H],
|
||
+[
|
||
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
|
||
+ dnl once only, before all statements that occur in other macros.
|
||
+ AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
|
||
+
|
||
+ dnl Persuade glibc <locale.h> to define locale_t and the int_p_*, int_n_*
|
||
+ dnl members of 'struct lconv'.
|
||
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||
+
|
||
+ dnl If <stddef.h> is replaced, then <locale.h> must also be replaced.
|
||
+ AC_REQUIRE([gl_STDDEF_H])
|
||
+
|
||
+ dnl Solaris 11 2011-11 defines the int_p_*, int_n_* members of 'struct lconv'
|
||
+ dnl only if _LCONV_C99 is defined.
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST])
|
||
+ case "$host_os" in
|
||
+ solaris*)
|
||
+ AC_DEFINE([_LCONV_C99], [1], [Define to 1 on Solaris.])
|
||
+ ;;
|
||
+ esac
|
||
+
|
||
+ AC_CACHE_CHECK([whether locale.h conforms to POSIX:2001],
|
||
+ [gl_cv_header_locale_h_posix2001],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[#include <locale.h>
|
||
+ int x = LC_MESSAGES;
|
||
+ int y = sizeof (((struct lconv *) 0)->decimal_point);]],
|
||
+ [[]])],
|
||
+ [gl_cv_header_locale_h_posix2001=yes],
|
||
+ [gl_cv_header_locale_h_posix2001=no])])
|
||
+
|
||
+ dnl Check for <xlocale.h>.
|
||
+ AC_CHECK_HEADERS_ONCE([xlocale.h])
|
||
+ if test $ac_cv_header_xlocale_h = yes; then
|
||
+ HAVE_XLOCALE_H=1
|
||
+ dnl Check whether use of locale_t requires inclusion of <xlocale.h>,
|
||
+ dnl e.g. on Mac OS X 10.5. If <locale.h> does not define locale_t by
|
||
+ dnl itself, we assume that <xlocale.h> will do so.
|
||
+ AC_CACHE_CHECK([whether locale.h defines locale_t],
|
||
+ [gl_cv_header_locale_has_locale_t],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[#include <locale.h>
|
||
+ locale_t x;]],
|
||
+ [[]])],
|
||
+ [gl_cv_header_locale_has_locale_t=yes],
|
||
+ [gl_cv_header_locale_has_locale_t=no])
|
||
+ ])
|
||
+ if test $gl_cv_header_locale_has_locale_t = yes; then
|
||
+ gl_cv_header_locale_h_needs_xlocale_h=no
|
||
+ else
|
||
+ gl_cv_header_locale_h_needs_xlocale_h=yes
|
||
+ fi
|
||
+ else
|
||
+ HAVE_XLOCALE_H=0
|
||
+ gl_cv_header_locale_h_needs_xlocale_h=no
|
||
+ fi
|
||
+ AC_SUBST([HAVE_XLOCALE_H])
|
||
+
|
||
+ dnl Check whether 'struct lconv' is complete.
|
||
+ dnl Bionic libc's 'struct lconv' is just a dummy.
|
||
+ dnl On OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x,
|
||
+ dnl mingw, MSVC 9, it lacks the int_p_* and int_n_* members.
|
||
+ AC_CACHE_CHECK([whether struct lconv is properly defined],
|
||
+ [gl_cv_sys_struct_lconv_ok],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[#include <locale.h>
|
||
+ struct lconv l;
|
||
+ int x = sizeof (l.decimal_point);
|
||
+ int y = sizeof (l.int_p_cs_precedes);]],
|
||
+ [[]])],
|
||
+ [gl_cv_sys_struct_lconv_ok=yes],
|
||
+ [gl_cv_sys_struct_lconv_ok=no])
|
||
+ ])
|
||
+ if test $gl_cv_sys_struct_lconv_ok = no; then
|
||
+ REPLACE_STRUCT_LCONV=1
|
||
+ fi
|
||
+
|
||
+ dnl <locale.h> is always overridden, because of GNULIB_POSIXCHECK.
|
||
+ gl_NEXT_HEADERS([locale.h])
|
||
+
|
||
+ dnl Check for declarations of anything we want to poison if the
|
||
+ dnl corresponding gnulib module is not in use.
|
||
+ gl_WARN_ON_USE_PREPARE([[#include <locale.h>
|
||
+/* Some systems provide declarations in a non-standard header. */
|
||
+#if HAVE_XLOCALE_H
|
||
+# include <xlocale.h>
|
||
+#endif
|
||
+ ]],
|
||
+ [setlocale duplocale])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_LOCALE_MODULE_INDICATOR],
|
||
+[
|
||
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||
+ AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
|
||
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
||
+ dnl Define it also as a C macro, for the benefit of the unit tests.
|
||
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_LOCALE_H_DEFAULTS],
|
||
+[
|
||
+ GNULIB_LOCALECONV=0; AC_SUBST([GNULIB_LOCALECONV])
|
||
+ GNULIB_SETLOCALE=0; AC_SUBST([GNULIB_SETLOCALE])
|
||
+ GNULIB_DUPLOCALE=0; AC_SUBST([GNULIB_DUPLOCALE])
|
||
+ dnl Assume proper GNU behavior unless another module says otherwise.
|
||
+ HAVE_DUPLOCALE=1; AC_SUBST([HAVE_DUPLOCALE])
|
||
+ REPLACE_LOCALECONV=0; AC_SUBST([REPLACE_LOCALECONV])
|
||
+ REPLACE_SETLOCALE=0; AC_SUBST([REPLACE_SETLOCALE])
|
||
+ REPLACE_DUPLOCALE=0; AC_SUBST([REPLACE_DUPLOCALE])
|
||
+ REPLACE_STRUCT_LCONV=0; AC_SUBST([REPLACE_STRUCT_LCONV])
|
||
+])
|
||
diff --git a/m4/localeconv.m4 b/m4/localeconv.m4
|
||
new file mode 100644
|
||
index 0000000..b8bb596
|
||
--- /dev/null
|
||
+++ b/m4/localeconv.m4
|
||
@@ -0,0 +1,22 @@
|
||
+# localeconv.m4 serial 1
|
||
+dnl Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_FUNC_LOCALECONV],
|
||
+[
|
||
+ AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
|
||
+ AC_REQUIRE([gl_LOCALE_H])
|
||
+
|
||
+ if test $REPLACE_STRUCT_LCONV = 1; then
|
||
+ REPLACE_LOCALECONV=1
|
||
+ fi
|
||
+])
|
||
+
|
||
+# Prerequisites of lib/localeconv.c.
|
||
+AC_DEFUN([gl_PREREQ_LOCALECONV],
|
||
+[
|
||
+ AC_CHECK_MEMBERS([struct lconv.decimal_point], [], [],
|
||
+ [[#include <locale.h>]])
|
||
+])
|
||
diff --git a/m4/lock.m4 b/m4/lock.m4
|
||
index f71c664..d3fc1ef 100644
|
||
--- a/m4/lock.m4
|
||
+++ b/m4/lock.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# lock.m4 serial 11 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
|
||
+# lock.m4 serial 13 (gettext-0.18.2)
|
||
+dnl Copyright (C) 2005-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -10,7 +10,7 @@ AC_DEFUN([gl_LOCK],
|
||
[
|
||
AC_REQUIRE([gl_THREADLIB])
|
||
if test "$gl_threads_api" = posix; then
|
||
- # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
|
||
+ # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the
|
||
# pthread_rwlock_* functions.
|
||
AC_CHECK_TYPE([pthread_rwlock_t],
|
||
[AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
|
||
@@ -35,7 +35,5 @@ return !x;
|
||
gl_PREREQ_LOCK
|
||
])
|
||
|
||
-# Prerequisites of lib/lock.c.
|
||
-AC_DEFUN([gl_PREREQ_LOCK], [
|
||
- AC_REQUIRE([AC_C_INLINE])
|
||
-])
|
||
+# Prerequisites of lib/glthread/lock.c.
|
||
+AC_DEFUN([gl_PREREQ_LOCK], [:])
|
||
diff --git a/m4/longlong.m4 b/m4/longlong.m4
|
||
index cca3c1a..3af6ab5 100644
|
||
--- a/m4/longlong.m4
|
||
+++ b/m4/longlong.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# longlong.m4 serial 14
|
||
-dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc.
|
||
+# longlong.m4 serial 17
|
||
+dnl Copyright (C) 1999-2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -7,8 +7,8 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
dnl From Paul Eggert.
|
||
|
||
# Define HAVE_LONG_LONG_INT if 'long long int' works.
|
||
-# This fixes a bug in Autoconf 2.61, but can be removed once we
|
||
-# assume 2.62 everywhere.
|
||
+# This fixes a bug in Autoconf 2.61, and can be faster
|
||
+# than what's in Autoconf 2.62 through 2.68.
|
||
|
||
# Note: If the type 'long long int' exists but is only 32 bits large
|
||
# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
|
||
@@ -16,44 +16,48 @@ dnl From Paul Eggert.
|
||
|
||
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
|
||
[
|
||
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
|
||
AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
|
||
- [AC_LINK_IFELSE(
|
||
- [_AC_TYPE_LONG_LONG_SNIPPET],
|
||
- [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
|
||
- dnl If cross compiling, assume the bug isn't important, since
|
||
- dnl nobody cross compiles for this platform as far as we know.
|
||
- AC_RUN_IFELSE(
|
||
- [AC_LANG_PROGRAM(
|
||
- [[@%:@include <limits.h>
|
||
- @%:@ifndef LLONG_MAX
|
||
- @%:@ define HALF \
|
||
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
|
||
- @%:@ define LLONG_MAX (HALF - 1 + HALF)
|
||
- @%:@endif]],
|
||
- [[long long int n = 1;
|
||
- int i;
|
||
- for (i = 0; ; i++)
|
||
- {
|
||
- long long int m = n << i;
|
||
- if (m >> i != n)
|
||
- return 1;
|
||
- if (LLONG_MAX / 2 < m)
|
||
- break;
|
||
- }
|
||
- return 0;]])],
|
||
- [ac_cv_type_long_long_int=yes],
|
||
- [ac_cv_type_long_long_int=no],
|
||
- [ac_cv_type_long_long_int=yes])],
|
||
- [ac_cv_type_long_long_int=no])])
|
||
+ [ac_cv_type_long_long_int=yes
|
||
+ if test "x${ac_cv_prog_cc_c99-no}" = xno; then
|
||
+ ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
|
||
+ if test $ac_cv_type_long_long_int = yes; then
|
||
+ dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
|
||
+ dnl If cross compiling, assume the bug is not important, since
|
||
+ dnl nobody cross compiles for this platform as far as we know.
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[@%:@include <limits.h>
|
||
+ @%:@ifndef LLONG_MAX
|
||
+ @%:@ define HALF \
|
||
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
|
||
+ @%:@ define LLONG_MAX (HALF - 1 + HALF)
|
||
+ @%:@endif]],
|
||
+ [[long long int n = 1;
|
||
+ int i;
|
||
+ for (i = 0; ; i++)
|
||
+ {
|
||
+ long long int m = n << i;
|
||
+ if (m >> i != n)
|
||
+ return 1;
|
||
+ if (LLONG_MAX / 2 < m)
|
||
+ break;
|
||
+ }
|
||
+ return 0;]])],
|
||
+ [],
|
||
+ [ac_cv_type_long_long_int=no],
|
||
+ [:])
|
||
+ fi
|
||
+ fi])
|
||
if test $ac_cv_type_long_long_int = yes; then
|
||
AC_DEFINE([HAVE_LONG_LONG_INT], [1],
|
||
- [Define to 1 if the system has the type `long long int'.])
|
||
+ [Define to 1 if the system has the type 'long long int'.])
|
||
fi
|
||
])
|
||
|
||
# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
|
||
-# This fixes a bug in Autoconf 2.61, but can be removed once we
|
||
-# assume 2.62 everywhere.
|
||
+# This fixes a bug in Autoconf 2.61, and can be faster
|
||
+# than what's in Autoconf 2.62 through 2.68.
|
||
|
||
# Note: If the type 'unsigned long long int' exists but is only 32 bits
|
||
# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
|
||
@@ -64,13 +68,16 @@ AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
|
||
[
|
||
AC_CACHE_CHECK([for unsigned long long int],
|
||
[ac_cv_type_unsigned_long_long_int],
|
||
- [AC_LINK_IFELSE(
|
||
- [_AC_TYPE_LONG_LONG_SNIPPET],
|
||
- [ac_cv_type_unsigned_long_long_int=yes],
|
||
- [ac_cv_type_unsigned_long_long_int=no])])
|
||
+ [ac_cv_type_unsigned_long_long_int=yes
|
||
+ if test "x${ac_cv_prog_cc_c99-no}" = xno; then
|
||
+ AC_LINK_IFELSE(
|
||
+ [_AC_TYPE_LONG_LONG_SNIPPET],
|
||
+ [],
|
||
+ [ac_cv_type_unsigned_long_long_int=no])
|
||
+ fi])
|
||
if test $ac_cv_type_unsigned_long_long_int = yes; then
|
||
AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
|
||
- [Define to 1 if the system has the type `unsigned long long int'.])
|
||
+ [Define to 1 if the system has the type 'unsigned long long int'.])
|
||
fi
|
||
])
|
||
|
||
diff --git a/m4/malloc.m4 b/m4/malloc.m4
|
||
index 7a74925..4b24a0b 100644
|
||
--- a/m4/malloc.m4
|
||
+++ b/m4/malloc.m4
|
||
@@ -1,9 +1,47 @@
|
||
-# malloc.m4 serial 12
|
||
-dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+# malloc.m4 serial 14
|
||
+dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
+m4_version_prereq([2.70], [] ,[
|
||
+
|
||
+# This is taken from the following Autoconf patch:
|
||
+# http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9
|
||
+AC_DEFUN([_AC_FUNC_MALLOC_IF],
|
||
+[
|
||
+ AC_REQUIRE([AC_HEADER_STDC])dnl
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
|
||
+ AC_CHECK_HEADERS([stdlib.h])
|
||
+ AC_CACHE_CHECK([for GNU libc compatible malloc],
|
||
+ [ac_cv_func_malloc_0_nonnull],
|
||
+ [AC_RUN_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H
|
||
+ # include <stdlib.h>
|
||
+ #else
|
||
+ char *malloc ();
|
||
+ #endif
|
||
+ ]],
|
||
+ [[return ! malloc (0);]])
|
||
+ ],
|
||
+ [ac_cv_func_malloc_0_nonnull=yes],
|
||
+ [ac_cv_func_malloc_0_nonnull=no],
|
||
+ [case "$host_os" in
|
||
+ # Guess yes on platforms where we know the result.
|
||
+ *-gnu* | freebsd* | netbsd* | openbsd* \
|
||
+ | hpux* | solaris* | cygwin* | mingw*)
|
||
+ ac_cv_func_malloc_0_nonnull=yes ;;
|
||
+ # If we don't know, assume the worst.
|
||
+ *) ac_cv_func_malloc_0_nonnull=no ;;
|
||
+ esac
|
||
+ ])
|
||
+ ])
|
||
+ AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2])
|
||
+])# _AC_FUNC_MALLOC_IF
|
||
+
|
||
+])
|
||
+
|
||
# gl_FUNC_MALLOC_GNU
|
||
# ------------------
|
||
# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
|
||
@@ -17,7 +55,7 @@ AC_DEFUN([gl_FUNC_MALLOC_GNU],
|
||
[Define to 1 if your system has a GNU libc compatible 'malloc'
|
||
function, and to 0 otherwise.])],
|
||
[AC_DEFINE([HAVE_MALLOC_GNU], [0])
|
||
- gl_REPLACE_MALLOC
|
||
+ REPLACE_MALLOC=1
|
||
])
|
||
])
|
||
|
||
@@ -33,7 +71,7 @@ AC_DEFUN([gl_FUNC_MALLOC_POSIX],
|
||
AC_DEFINE([HAVE_MALLOC_POSIX], [1],
|
||
[Define if the 'malloc' function is POSIX compliant.])
|
||
else
|
||
- gl_REPLACE_MALLOC
|
||
+ REPLACE_MALLOC=1
|
||
fi
|
||
])
|
||
|
||
@@ -58,9 +96,3 @@ AC_DEFUN([gl_CHECK_MALLOC_POSIX],
|
||
[gl_cv_func_malloc_posix=no])
|
||
])
|
||
])
|
||
-
|
||
-AC_DEFUN([gl_REPLACE_MALLOC],
|
||
-[
|
||
- AC_LIBOBJ([malloc])
|
||
- REPLACE_MALLOC=1
|
||
-])
|
||
diff --git a/m4/math_h.m4 b/m4/math_h.m4
|
||
new file mode 100644
|
||
index 0000000..bf0845f
|
||
--- /dev/null
|
||
+++ b/m4/math_h.m4
|
||
@@ -0,0 +1,353 @@
|
||
+# math_h.m4 serial 114
|
||
+dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_MATH_H],
|
||
+[
|
||
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||
+ gl_CHECK_NEXT_HEADERS([math.h])
|
||
+
|
||
+ AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
|
||
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
|
||
+ [[/* Solaris 10 has a broken definition of NAN. Other platforms
|
||
+ fail to provide NAN, or provide it only in C99 mode; this
|
||
+ test only needs to fail when NAN is provided but wrong. */
|
||
+ float f = 1.0f;
|
||
+#ifdef NAN
|
||
+ f = NAN;
|
||
+#endif
|
||
+ return f == 0;]])],
|
||
+ [gl_cv_header_math_nan_works=yes],
|
||
+ [gl_cv_header_math_nan_works=no])])
|
||
+ if test $gl_cv_header_math_nan_works = no; then
|
||
+ REPLACE_NAN=1
|
||
+ fi
|
||
+ AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works],
|
||
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
|
||
+ [[/* Solaris 10 has a broken definition of HUGE_VAL. */
|
||
+ double d = HUGE_VAL;
|
||
+ return d == 0;]])],
|
||
+ [gl_cv_header_math_huge_val_works=yes],
|
||
+ [gl_cv_header_math_huge_val_works=no])])
|
||
+ if test $gl_cv_header_math_huge_val_works = no; then
|
||
+ REPLACE_HUGE_VAL=1
|
||
+ fi
|
||
+
|
||
+ dnl Check for declarations of anything we want to poison if the
|
||
+ dnl corresponding gnulib module is not in use.
|
||
+ gl_WARN_ON_USE_PREPARE([[#include <math.h>]],
|
||
+ [acosf acosl asinf asinl atanf atanl
|
||
+ cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf
|
||
+ expf expl exp2 exp2f exp2l expm1 expm1f expm1l
|
||
+ fabsf fabsl floorf floorl fma fmaf fmal
|
||
+ fmod fmodf fmodl frexpf frexpl hypotf hypotl
|
||
+ ilogb ilogbf ilogbl
|
||
+ ldexpf ldexpl
|
||
+ log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l
|
||
+ logb logbf logbl
|
||
+ modf modff modfl powf
|
||
+ remainder remainderf remainderl
|
||
+ rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl
|
||
+ tanf tanl tanhf trunc truncf truncl])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_MATH_MODULE_INDICATOR],
|
||
+[
|
||
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
||
+ dnl Define it also as a C macro, for the benefit of the unit tests.
|
||
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_MATH_H_DEFAULTS],
|
||
+[
|
||
+ GNULIB_ACOSF=0; AC_SUBST([GNULIB_ACOSF])
|
||
+ GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL])
|
||
+ GNULIB_ASINF=0; AC_SUBST([GNULIB_ASINF])
|
||
+ GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL])
|
||
+ GNULIB_ATANF=0; AC_SUBST([GNULIB_ATANF])
|
||
+ GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL])
|
||
+ GNULIB_ATAN2F=0; AC_SUBST([GNULIB_ATAN2F])
|
||
+ GNULIB_CBRT=0; AC_SUBST([GNULIB_CBRT])
|
||
+ GNULIB_CBRTF=0; AC_SUBST([GNULIB_CBRTF])
|
||
+ GNULIB_CBRTL=0; AC_SUBST([GNULIB_CBRTL])
|
||
+ GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL])
|
||
+ GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
|
||
+ GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
|
||
+ GNULIB_COPYSIGN=0; AC_SUBST([GNULIB_COPYSIGN])
|
||
+ GNULIB_COPYSIGNF=0; AC_SUBST([GNULIB_COPYSIGNF])
|
||
+ GNULIB_COPYSIGNL=0; AC_SUBST([GNULIB_COPYSIGNL])
|
||
+ GNULIB_COSF=0; AC_SUBST([GNULIB_COSF])
|
||
+ GNULIB_COSL=0; AC_SUBST([GNULIB_COSL])
|
||
+ GNULIB_COSHF=0; AC_SUBST([GNULIB_COSHF])
|
||
+ GNULIB_EXPF=0; AC_SUBST([GNULIB_EXPF])
|
||
+ GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL])
|
||
+ GNULIB_EXP2=0; AC_SUBST([GNULIB_EXP2])
|
||
+ GNULIB_EXP2F=0; AC_SUBST([GNULIB_EXP2F])
|
||
+ GNULIB_EXP2L=0; AC_SUBST([GNULIB_EXP2L])
|
||
+ GNULIB_EXPM1=0; AC_SUBST([GNULIB_EXPM1])
|
||
+ GNULIB_EXPM1F=0; AC_SUBST([GNULIB_EXPM1F])
|
||
+ GNULIB_EXPM1L=0; AC_SUBST([GNULIB_EXPM1L])
|
||
+ GNULIB_FABSF=0; AC_SUBST([GNULIB_FABSF])
|
||
+ GNULIB_FABSL=0; AC_SUBST([GNULIB_FABSL])
|
||
+ GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR])
|
||
+ GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
|
||
+ GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
|
||
+ GNULIB_FMA=0; AC_SUBST([GNULIB_FMA])
|
||
+ GNULIB_FMAF=0; AC_SUBST([GNULIB_FMAF])
|
||
+ GNULIB_FMAL=0; AC_SUBST([GNULIB_FMAL])
|
||
+ GNULIB_FMOD=0; AC_SUBST([GNULIB_FMOD])
|
||
+ GNULIB_FMODF=0; AC_SUBST([GNULIB_FMODF])
|
||
+ GNULIB_FMODL=0; AC_SUBST([GNULIB_FMODL])
|
||
+ GNULIB_FREXPF=0; AC_SUBST([GNULIB_FREXPF])
|
||
+ GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
|
||
+ GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
|
||
+ GNULIB_HYPOT=0; AC_SUBST([GNULIB_HYPOT])
|
||
+ GNULIB_HYPOTF=0; AC_SUBST([GNULIB_HYPOTF])
|
||
+ GNULIB_HYPOTL=0; AC_SUBST([GNULIB_HYPOTL])
|
||
+ GNULIB_ILOGB=0; AC_SUBST([GNULIB_ILOGB])
|
||
+ GNULIB_ILOGBF=0; AC_SUBST([GNULIB_ILOGBF])
|
||
+ GNULIB_ILOGBL=0; AC_SUBST([GNULIB_ILOGBL])
|
||
+ GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
|
||
+ GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
|
||
+ GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
|
||
+ GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
|
||
+ GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
|
||
+ GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
|
||
+ GNULIB_LDEXPF=0; AC_SUBST([GNULIB_LDEXPF])
|
||
+ GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
|
||
+ GNULIB_LOG=0; AC_SUBST([GNULIB_LOG])
|
||
+ GNULIB_LOGF=0; AC_SUBST([GNULIB_LOGF])
|
||
+ GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL])
|
||
+ GNULIB_LOG10=0; AC_SUBST([GNULIB_LOG10])
|
||
+ GNULIB_LOG10F=0; AC_SUBST([GNULIB_LOG10F])
|
||
+ GNULIB_LOG10L=0; AC_SUBST([GNULIB_LOG10L])
|
||
+ GNULIB_LOG1P=0; AC_SUBST([GNULIB_LOG1P])
|
||
+ GNULIB_LOG1PF=0; AC_SUBST([GNULIB_LOG1PF])
|
||
+ GNULIB_LOG1PL=0; AC_SUBST([GNULIB_LOG1PL])
|
||
+ GNULIB_LOG2=0; AC_SUBST([GNULIB_LOG2])
|
||
+ GNULIB_LOG2F=0; AC_SUBST([GNULIB_LOG2F])
|
||
+ GNULIB_LOG2L=0; AC_SUBST([GNULIB_LOG2L])
|
||
+ GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB])
|
||
+ GNULIB_LOGBF=0; AC_SUBST([GNULIB_LOGBF])
|
||
+ GNULIB_LOGBL=0; AC_SUBST([GNULIB_LOGBL])
|
||
+ GNULIB_MODF=0; AC_SUBST([GNULIB_MODF])
|
||
+ GNULIB_MODFF=0; AC_SUBST([GNULIB_MODFF])
|
||
+ GNULIB_MODFL=0; AC_SUBST([GNULIB_MODFL])
|
||
+ GNULIB_POWF=0; AC_SUBST([GNULIB_POWF])
|
||
+ GNULIB_REMAINDER=0; AC_SUBST([GNULIB_REMAINDER])
|
||
+ GNULIB_REMAINDERF=0; AC_SUBST([GNULIB_REMAINDERF])
|
||
+ GNULIB_REMAINDERL=0; AC_SUBST([GNULIB_REMAINDERL])
|
||
+ GNULIB_RINT=0; AC_SUBST([GNULIB_RINT])
|
||
+ GNULIB_RINTF=0; AC_SUBST([GNULIB_RINTF])
|
||
+ GNULIB_RINTL=0; AC_SUBST([GNULIB_RINTL])
|
||
+ GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
|
||
+ GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
|
||
+ GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
|
||
+ GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
|
||
+ GNULIB_SINF=0; AC_SUBST([GNULIB_SINF])
|
||
+ GNULIB_SINL=0; AC_SUBST([GNULIB_SINL])
|
||
+ GNULIB_SINHF=0; AC_SUBST([GNULIB_SINHF])
|
||
+ GNULIB_SQRTF=0; AC_SUBST([GNULIB_SQRTF])
|
||
+ GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL])
|
||
+ GNULIB_TANF=0; AC_SUBST([GNULIB_TANF])
|
||
+ GNULIB_TANL=0; AC_SUBST([GNULIB_TANL])
|
||
+ GNULIB_TANHF=0; AC_SUBST([GNULIB_TANHF])
|
||
+ GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
|
||
+ GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
|
||
+ GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
|
||
+ dnl Assume proper GNU behavior unless another module says otherwise.
|
||
+ HAVE_ACOSF=1; AC_SUBST([HAVE_ACOSF])
|
||
+ HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL])
|
||
+ HAVE_ASINF=1; AC_SUBST([HAVE_ASINF])
|
||
+ HAVE_ASINL=1; AC_SUBST([HAVE_ASINL])
|
||
+ HAVE_ATANF=1; AC_SUBST([HAVE_ATANF])
|
||
+ HAVE_ATANL=1; AC_SUBST([HAVE_ATANL])
|
||
+ HAVE_ATAN2F=1; AC_SUBST([HAVE_ATAN2F])
|
||
+ HAVE_CBRT=1; AC_SUBST([HAVE_CBRT])
|
||
+ HAVE_CBRTF=1; AC_SUBST([HAVE_CBRTF])
|
||
+ HAVE_CBRTL=1; AC_SUBST([HAVE_CBRTL])
|
||
+ HAVE_COPYSIGN=1; AC_SUBST([HAVE_COPYSIGN])
|
||
+ HAVE_COPYSIGNL=1; AC_SUBST([HAVE_COPYSIGNL])
|
||
+ HAVE_COSF=1; AC_SUBST([HAVE_COSF])
|
||
+ HAVE_COSL=1; AC_SUBST([HAVE_COSL])
|
||
+ HAVE_COSHF=1; AC_SUBST([HAVE_COSHF])
|
||
+ HAVE_EXPF=1; AC_SUBST([HAVE_EXPF])
|
||
+ HAVE_EXPL=1; AC_SUBST([HAVE_EXPL])
|
||
+ HAVE_EXPM1=1; AC_SUBST([HAVE_EXPM1])
|
||
+ HAVE_EXPM1F=1; AC_SUBST([HAVE_EXPM1F])
|
||
+ HAVE_FABSF=1; AC_SUBST([HAVE_FABSF])
|
||
+ HAVE_FABSL=1; AC_SUBST([HAVE_FABSL])
|
||
+ HAVE_FMA=1; AC_SUBST([HAVE_FMA])
|
||
+ HAVE_FMAF=1; AC_SUBST([HAVE_FMAF])
|
||
+ HAVE_FMAL=1; AC_SUBST([HAVE_FMAL])
|
||
+ HAVE_FMODF=1; AC_SUBST([HAVE_FMODF])
|
||
+ HAVE_FMODL=1; AC_SUBST([HAVE_FMODL])
|
||
+ HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF])
|
||
+ HAVE_HYPOTF=1; AC_SUBST([HAVE_HYPOTF])
|
||
+ HAVE_HYPOTL=1; AC_SUBST([HAVE_HYPOTL])
|
||
+ HAVE_ILOGB=1; AC_SUBST([HAVE_ILOGB])
|
||
+ HAVE_ILOGBF=1; AC_SUBST([HAVE_ILOGBF])
|
||
+ HAVE_ILOGBL=1; AC_SUBST([HAVE_ILOGBL])
|
||
+ HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF])
|
||
+ HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND])
|
||
+ HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL])
|
||
+ HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF])
|
||
+ HAVE_LOGF=1; AC_SUBST([HAVE_LOGF])
|
||
+ HAVE_LOGL=1; AC_SUBST([HAVE_LOGL])
|
||
+ HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F])
|
||
+ HAVE_LOG10L=1; AC_SUBST([HAVE_LOG10L])
|
||
+ HAVE_LOG1P=1; AC_SUBST([HAVE_LOG1P])
|
||
+ HAVE_LOG1PF=1; AC_SUBST([HAVE_LOG1PF])
|
||
+ HAVE_LOG1PL=1; AC_SUBST([HAVE_LOG1PL])
|
||
+ HAVE_LOGBF=1; AC_SUBST([HAVE_LOGBF])
|
||
+ HAVE_LOGBL=1; AC_SUBST([HAVE_LOGBL])
|
||
+ HAVE_MODFF=1; AC_SUBST([HAVE_MODFF])
|
||
+ HAVE_MODFL=1; AC_SUBST([HAVE_MODFL])
|
||
+ HAVE_POWF=1; AC_SUBST([HAVE_POWF])
|
||
+ HAVE_REMAINDER=1; AC_SUBST([HAVE_REMAINDER])
|
||
+ HAVE_REMAINDERF=1; AC_SUBST([HAVE_REMAINDERF])
|
||
+ HAVE_RINT=1; AC_SUBST([HAVE_RINT])
|
||
+ HAVE_RINTL=1; AC_SUBST([HAVE_RINTL])
|
||
+ HAVE_SINF=1; AC_SUBST([HAVE_SINF])
|
||
+ HAVE_SINL=1; AC_SUBST([HAVE_SINL])
|
||
+ HAVE_SINHF=1; AC_SUBST([HAVE_SINHF])
|
||
+ HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF])
|
||
+ HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL])
|
||
+ HAVE_TANF=1; AC_SUBST([HAVE_TANF])
|
||
+ HAVE_TANL=1; AC_SUBST([HAVE_TANL])
|
||
+ HAVE_TANHF=1; AC_SUBST([HAVE_TANHF])
|
||
+ HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL])
|
||
+ HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL])
|
||
+ HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL])
|
||
+ HAVE_DECL_CBRTF=1; AC_SUBST([HAVE_DECL_CBRTF])
|
||
+ HAVE_DECL_CBRTL=1; AC_SUBST([HAVE_DECL_CBRTL])
|
||
+ HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF])
|
||
+ HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL])
|
||
+ HAVE_DECL_COPYSIGNF=1; AC_SUBST([HAVE_DECL_COPYSIGNF])
|
||
+ HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL])
|
||
+ HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL])
|
||
+ HAVE_DECL_EXP2=1; AC_SUBST([HAVE_DECL_EXP2])
|
||
+ HAVE_DECL_EXP2F=1; AC_SUBST([HAVE_DECL_EXP2F])
|
||
+ HAVE_DECL_EXP2L=1; AC_SUBST([HAVE_DECL_EXP2L])
|
||
+ HAVE_DECL_EXPM1L=1; AC_SUBST([HAVE_DECL_EXPM1L])
|
||
+ HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF])
|
||
+ HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL])
|
||
+ HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL])
|
||
+ HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL])
|
||
+ HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL])
|
||
+ HAVE_DECL_LOG10L=1; AC_SUBST([HAVE_DECL_LOG10L])
|
||
+ HAVE_DECL_LOG2=1; AC_SUBST([HAVE_DECL_LOG2])
|
||
+ HAVE_DECL_LOG2F=1; AC_SUBST([HAVE_DECL_LOG2F])
|
||
+ HAVE_DECL_LOG2L=1; AC_SUBST([HAVE_DECL_LOG2L])
|
||
+ HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB])
|
||
+ HAVE_DECL_REMAINDER=1; AC_SUBST([HAVE_DECL_REMAINDER])
|
||
+ HAVE_DECL_REMAINDERL=1; AC_SUBST([HAVE_DECL_REMAINDERL])
|
||
+ HAVE_DECL_RINTF=1; AC_SUBST([HAVE_DECL_RINTF])
|
||
+ HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND])
|
||
+ HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF])
|
||
+ HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL])
|
||
+ HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL])
|
||
+ HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL])
|
||
+ HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL])
|
||
+ HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC])
|
||
+ HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF])
|
||
+ HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL])
|
||
+ REPLACE_CBRTF=0; AC_SUBST([REPLACE_CBRTF])
|
||
+ REPLACE_CBRTL=0; AC_SUBST([REPLACE_CBRTL])
|
||
+ REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL])
|
||
+ REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF])
|
||
+ REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL])
|
||
+ REPLACE_EXPM1=0; AC_SUBST([REPLACE_EXPM1])
|
||
+ REPLACE_EXPM1F=0; AC_SUBST([REPLACE_EXPM1F])
|
||
+ REPLACE_EXP2=0; AC_SUBST([REPLACE_EXP2])
|
||
+ REPLACE_EXP2L=0; AC_SUBST([REPLACE_EXP2L])
|
||
+ REPLACE_FABSL=0; AC_SUBST([REPLACE_FABSL])
|
||
+ REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR])
|
||
+ REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF])
|
||
+ REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL])
|
||
+ REPLACE_FMA=0; AC_SUBST([REPLACE_FMA])
|
||
+ REPLACE_FMAF=0; AC_SUBST([REPLACE_FMAF])
|
||
+ REPLACE_FMAL=0; AC_SUBST([REPLACE_FMAL])
|
||
+ REPLACE_FMOD=0; AC_SUBST([REPLACE_FMOD])
|
||
+ REPLACE_FMODF=0; AC_SUBST([REPLACE_FMODF])
|
||
+ REPLACE_FMODL=0; AC_SUBST([REPLACE_FMODL])
|
||
+ REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF])
|
||
+ REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
|
||
+ REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
|
||
+ REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
|
||
+ REPLACE_HYPOT=0; AC_SUBST([REPLACE_HYPOT])
|
||
+ REPLACE_HYPOTF=0; AC_SUBST([REPLACE_HYPOTF])
|
||
+ REPLACE_HYPOTL=0; AC_SUBST([REPLACE_HYPOTL])
|
||
+ REPLACE_ILOGB=0; AC_SUBST([REPLACE_ILOGB])
|
||
+ REPLACE_ILOGBF=0; AC_SUBST([REPLACE_ILOGBF])
|
||
+ REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE])
|
||
+ REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF])
|
||
+ REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN])
|
||
+ REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL])
|
||
+ REPLACE_LOG=0; AC_SUBST([REPLACE_LOG])
|
||
+ REPLACE_LOGF=0; AC_SUBST([REPLACE_LOGF])
|
||
+ REPLACE_LOGL=0; AC_SUBST([REPLACE_LOGL])
|
||
+ REPLACE_LOG10=0; AC_SUBST([REPLACE_LOG10])
|
||
+ REPLACE_LOG10F=0; AC_SUBST([REPLACE_LOG10F])
|
||
+ REPLACE_LOG10L=0; AC_SUBST([REPLACE_LOG10L])
|
||
+ REPLACE_LOG1P=0; AC_SUBST([REPLACE_LOG1P])
|
||
+ REPLACE_LOG1PF=0; AC_SUBST([REPLACE_LOG1PF])
|
||
+ REPLACE_LOG1PL=0; AC_SUBST([REPLACE_LOG1PL])
|
||
+ REPLACE_LOG2=0; AC_SUBST([REPLACE_LOG2])
|
||
+ REPLACE_LOG2F=0; AC_SUBST([REPLACE_LOG2F])
|
||
+ REPLACE_LOG2L=0; AC_SUBST([REPLACE_LOG2L])
|
||
+ REPLACE_LOGB=0; AC_SUBST([REPLACE_LOGB])
|
||
+ REPLACE_LOGBF=0; AC_SUBST([REPLACE_LOGBF])
|
||
+ REPLACE_LOGBL=0; AC_SUBST([REPLACE_LOGBL])
|
||
+ REPLACE_MODF=0; AC_SUBST([REPLACE_MODF])
|
||
+ REPLACE_MODFF=0; AC_SUBST([REPLACE_MODFF])
|
||
+ REPLACE_MODFL=0; AC_SUBST([REPLACE_MODFL])
|
||
+ REPLACE_NAN=0; AC_SUBST([REPLACE_NAN])
|
||
+ REPLACE_REMAINDER=0; AC_SUBST([REPLACE_REMAINDER])
|
||
+ REPLACE_REMAINDERF=0; AC_SUBST([REPLACE_REMAINDERF])
|
||
+ REPLACE_REMAINDERL=0; AC_SUBST([REPLACE_REMAINDERL])
|
||
+ REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND])
|
||
+ REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF])
|
||
+ REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL])
|
||
+ REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT])
|
||
+ REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
|
||
+ REPLACE_SQRTL=0; AC_SUBST([REPLACE_SQRTL])
|
||
+ REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC])
|
||
+ REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF])
|
||
+ REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])
|
||
+])
|
||
+
|
||
+# gl_LONG_DOUBLE_VS_DOUBLE
|
||
+# determines whether 'long double' and 'double' have the same representation.
|
||
+# Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines
|
||
+# HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly.
|
||
+# The currently known platforms where this is the case are:
|
||
+# Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9.
|
||
+AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE],
|
||
+[
|
||
+ AC_CACHE_CHECK([whether long double and double are the same],
|
||
+ [gl_cv_long_double_equals_double],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM([[#include <float.h>]],
|
||
+ [[typedef int check[sizeof (long double) == sizeof (double)
|
||
+ && LDBL_MANT_DIG == DBL_MANT_DIG
|
||
+ && LDBL_MAX_EXP == DBL_MAX_EXP
|
||
+ && LDBL_MIN_EXP == DBL_MIN_EXP
|
||
+ ? 1 : -1];
|
||
+ ]])],
|
||
+ [gl_cv_long_double_equals_double=yes],
|
||
+ [gl_cv_long_double_equals_double=no])
|
||
+ ])
|
||
+ if test $gl_cv_long_double_equals_double = yes; then
|
||
+ AC_DEFINE([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE], [1],
|
||
+ [Define to 1 if 'long double' and 'double' have the same representation.])
|
||
+ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1
|
||
+ else
|
||
+ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0
|
||
+ fi
|
||
+ AC_SUBST([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE])
|
||
+])
|
||
diff --git a/m4/mbrtowc.m4 b/m4/mbrtowc.m4
|
||
index 28b9c43..4c9f388 100644
|
||
--- a/m4/mbrtowc.m4
|
||
+++ b/m4/mbrtowc.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# mbrtowc.m4 serial 18
|
||
-dnl Copyright (C) 2001-2002, 2004-2005, 2008-2010 Free Software Foundation,
|
||
+# mbrtowc.m4 serial 25
|
||
+dnl Copyright (C) 2001-2002, 2004-2005, 2008-2013 Free Software Foundation,
|
||
dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
@@ -15,16 +15,40 @@ AC_DEFUN([gl_FUNC_MBRTOWC],
|
||
AC_CHECK_FUNCS_ONCE([mbrtowc])
|
||
if test $ac_cv_func_mbrtowc = no; then
|
||
HAVE_MBRTOWC=0
|
||
+ AC_CHECK_DECLS([mbrtowc],,, [[
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>
|
||
+]])
|
||
+ if test $ac_cv_have_decl_mbrtowc = yes; then
|
||
+ dnl On Minix 3.1.8, the system's <wchar.h> declares mbrtowc() although
|
||
+ dnl it does not have the function. Avoid a collision with gnulib's
|
||
+ dnl replacement.
|
||
+ REPLACE_MBRTOWC=1
|
||
+ fi
|
||
else
|
||
if test $REPLACE_MBSTATE_T = 1; then
|
||
REPLACE_MBRTOWC=1
|
||
else
|
||
- gl_MBRTOWC_NULL_ARG
|
||
+ gl_MBRTOWC_NULL_ARG1
|
||
+ gl_MBRTOWC_NULL_ARG2
|
||
gl_MBRTOWC_RETVAL
|
||
gl_MBRTOWC_NUL_RETVAL
|
||
- case "$gl_cv_func_mbrtowc_null_arg" in
|
||
+ case "$gl_cv_func_mbrtowc_null_arg1" in
|
||
+ *yes) ;;
|
||
+ *) AC_DEFINE([MBRTOWC_NULL_ARG1_BUG], [1],
|
||
+ [Define if the mbrtowc function has the NULL pwc argument bug.])
|
||
+ REPLACE_MBRTOWC=1
|
||
+ ;;
|
||
+ esac
|
||
+ case "$gl_cv_func_mbrtowc_null_arg2" in
|
||
*yes) ;;
|
||
- *) AC_DEFINE([MBRTOWC_NULL_ARG_BUG], [1],
|
||
+ *) AC_DEFINE([MBRTOWC_NULL_ARG2_BUG], [1],
|
||
[Define if the mbrtowc function has the NULL string argument bug.])
|
||
REPLACE_MBRTOWC=1
|
||
;;
|
||
@@ -45,11 +69,6 @@ AC_DEFUN([gl_FUNC_MBRTOWC],
|
||
esac
|
||
fi
|
||
fi
|
||
- if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
|
||
- gl_REPLACE_WCHAR_H
|
||
- AC_LIBOBJ([mbrtowc])
|
||
- gl_PREREQ_MBRTOWC
|
||
- fi
|
||
])
|
||
|
||
dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that
|
||
@@ -80,9 +99,6 @@ AC_DEFUN([gl_MBSTATE_T_BROKEN],
|
||
else
|
||
REPLACE_MBSTATE_T=1
|
||
fi
|
||
- if test $REPLACE_MBSTATE_T = 1; then
|
||
- gl_REPLACE_WCHAR_H
|
||
- fi
|
||
])
|
||
|
||
dnl Test whether mbrtowc puts the state into non-initial state when parsing an
|
||
@@ -112,6 +128,13 @@ changequote([,])dnl
|
||
[AC_LANG_SOURCE([[
|
||
#include <locale.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
@@ -162,6 +185,13 @@ changequote([,])dnl
|
||
#include <locale.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
@@ -188,25 +218,95 @@ int main ()
|
||
])
|
||
])
|
||
|
||
+dnl Test whether mbrtowc supports a NULL pwc argument correctly.
|
||
+dnl Result is gl_cv_func_mbrtowc_null_arg1.
|
||
+
|
||
+AC_DEFUN([gl_MBRTOWC_NULL_ARG1],
|
||
+[
|
||
+ AC_REQUIRE([AC_PROG_CC])
|
||
+ AC_REQUIRE([gt_LOCALE_FR_UTF8])
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
+ AC_CACHE_CHECK([whether mbrtowc handles a NULL pwc argument],
|
||
+ [gl_cv_func_mbrtowc_null_arg1],
|
||
+ [
|
||
+ dnl Initial guess, used when cross-compiling or when no suitable locale
|
||
+ dnl is present.
|
||
+changequote(,)dnl
|
||
+ case "$host_os" in
|
||
+ # Guess no on Solaris.
|
||
+ solaris*) gl_cv_func_mbrtowc_null_arg1="guessing no" ;;
|
||
+ # Guess yes otherwise.
|
||
+ *) gl_cv_func_mbrtowc_null_arg1="guessing yes" ;;
|
||
+ esac
|
||
+changequote([,])dnl
|
||
+ if test $LOCALE_FR_UTF8 != none; then
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_SOURCE([[
|
||
+#include <locale.h>
|
||
+#include <stdlib.h>
|
||
+#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>
|
||
+int main ()
|
||
+{
|
||
+ int result = 0;
|
||
+
|
||
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
|
||
+ {
|
||
+ char input[] = "\303\237er";
|
||
+ mbstate_t state;
|
||
+ wchar_t wc;
|
||
+ size_t ret;
|
||
+
|
||
+ memset (&state, '\0', sizeof (mbstate_t));
|
||
+ wc = (wchar_t) 0xBADFACE;
|
||
+ ret = mbrtowc (&wc, input, 5, &state);
|
||
+ if (ret != 2)
|
||
+ result |= 1;
|
||
+ if (!mbsinit (&state))
|
||
+ result |= 2;
|
||
+
|
||
+ memset (&state, '\0', sizeof (mbstate_t));
|
||
+ ret = mbrtowc (NULL, input, 5, &state);
|
||
+ if (ret != 2) /* Solaris 7 fails here: ret is -1. */
|
||
+ result |= 4;
|
||
+ if (!mbsinit (&state))
|
||
+ result |= 8;
|
||
+ }
|
||
+ return result;
|
||
+}]])],
|
||
+ [gl_cv_func_mbrtowc_null_arg1=yes],
|
||
+ [gl_cv_func_mbrtowc_null_arg1=no],
|
||
+ [:])
|
||
+ fi
|
||
+ ])
|
||
+])
|
||
+
|
||
dnl Test whether mbrtowc supports a NULL string argument correctly.
|
||
-dnl Result is gl_cv_func_mbrtowc_null_arg.
|
||
+dnl Result is gl_cv_func_mbrtowc_null_arg2.
|
||
|
||
-AC_DEFUN([gl_MBRTOWC_NULL_ARG],
|
||
+AC_DEFUN([gl_MBRTOWC_NULL_ARG2],
|
||
[
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
AC_REQUIRE([gt_LOCALE_FR_UTF8])
|
||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
AC_CACHE_CHECK([whether mbrtowc handles a NULL string argument],
|
||
- [gl_cv_func_mbrtowc_null_arg],
|
||
+ [gl_cv_func_mbrtowc_null_arg2],
|
||
[
|
||
dnl Initial guess, used when cross-compiling or when no suitable locale
|
||
dnl is present.
|
||
changequote(,)dnl
|
||
case "$host_os" in
|
||
# Guess no on OSF/1.
|
||
- osf*) gl_cv_func_mbrtowc_null_arg="guessing no" ;;
|
||
+ osf*) gl_cv_func_mbrtowc_null_arg2="guessing no" ;;
|
||
# Guess yes otherwise.
|
||
- *) gl_cv_func_mbrtowc_null_arg="guessing yes" ;;
|
||
+ *) gl_cv_func_mbrtowc_null_arg2="guessing yes" ;;
|
||
esac
|
||
changequote([,])dnl
|
||
if test $LOCALE_FR_UTF8 != none; then
|
||
@@ -214,6 +314,13 @@ changequote([,])dnl
|
||
[AC_LANG_SOURCE([[
|
||
#include <locale.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
@@ -232,8 +339,8 @@ int main ()
|
||
}
|
||
return 0;
|
||
}]])],
|
||
- [gl_cv_func_mbrtowc_null_arg=yes],
|
||
- [gl_cv_func_mbrtowc_null_arg=no],
|
||
+ [gl_cv_func_mbrtowc_null_arg2=yes],
|
||
+ [gl_cv_func_mbrtowc_null_arg2=no],
|
||
[:])
|
||
fi
|
||
])
|
||
@@ -249,7 +356,7 @@ AC_DEFUN([gl_MBRTOWC_RETVAL],
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
AC_REQUIRE([gt_LOCALE_FR_UTF8])
|
||
AC_REQUIRE([gt_LOCALE_JA])
|
||
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST])
|
||
AC_CACHE_CHECK([whether mbrtowc has a correct return value],
|
||
[gl_cv_func_mbrtowc_retval],
|
||
[
|
||
@@ -257,20 +364,30 @@ AC_DEFUN([gl_MBRTOWC_RETVAL],
|
||
dnl is present.
|
||
changequote(,)dnl
|
||
case "$host_os" in
|
||
- # Guess no on HP-UX and Solaris.
|
||
- hpux* | solaris*) gl_cv_func_mbrtowc_retval="guessing no" ;;
|
||
- # Guess yes otherwise.
|
||
- *) gl_cv_func_mbrtowc_retval="guessing yes" ;;
|
||
+ # Guess no on HP-UX, Solaris, native Windows.
|
||
+ hpux* | solaris* | mingw*) gl_cv_func_mbrtowc_retval="guessing no" ;;
|
||
+ # Guess yes otherwise.
|
||
+ *) gl_cv_func_mbrtowc_retval="guessing yes" ;;
|
||
esac
|
||
changequote([,])dnl
|
||
- if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none; then
|
||
+ if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \
|
||
+ || { case "$host_os" in mingw*) true;; *) false;; esac; }; then
|
||
AC_RUN_IFELSE(
|
||
[AC_LANG_SOURCE([[
|
||
#include <locale.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
+ int found_some_locale = 0;
|
||
/* This fails on Solaris. */
|
||
if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
|
||
{
|
||
@@ -283,8 +400,9 @@ int main ()
|
||
{
|
||
input[1] = '\0';
|
||
if (mbrtowc (&wc, input + 2, 5, &state) != 1)
|
||
- return 1;
|
||
+ result |= 1;
|
||
}
|
||
+ found_some_locale = 1;
|
||
}
|
||
/* This fails on HP-UX 11.11. */
|
||
if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
|
||
@@ -298,13 +416,63 @@ int main ()
|
||
{
|
||
input[1] = '\0';
|
||
if (mbrtowc (&wc, input + 2, 5, &state) != 2)
|
||
- return 1;
|
||
+ result |= 2;
|
||
}
|
||
+ found_some_locale = 1;
|
||
}
|
||
- return 0;
|
||
+ /* This fails on native Windows. */
|
||
+ if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL)
|
||
+ {
|
||
+ char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */
|
||
+ mbstate_t state;
|
||
+ wchar_t wc;
|
||
+
|
||
+ memset (&state, '\0', sizeof (mbstate_t));
|
||
+ if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
|
||
+ {
|
||
+ input[3] = '\0';
|
||
+ if (mbrtowc (&wc, input + 4, 4, &state) != 1)
|
||
+ result |= 4;
|
||
+ }
|
||
+ found_some_locale = 1;
|
||
+ }
|
||
+ if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL)
|
||
+ {
|
||
+ char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */
|
||
+ mbstate_t state;
|
||
+ wchar_t wc;
|
||
+
|
||
+ memset (&state, '\0', sizeof (mbstate_t));
|
||
+ if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
|
||
+ {
|
||
+ input[3] = '\0';
|
||
+ if (mbrtowc (&wc, input + 4, 4, &state) != 1)
|
||
+ result |= 8;
|
||
+ }
|
||
+ found_some_locale = 1;
|
||
+ }
|
||
+ if (setlocale (LC_ALL, "Chinese_China.936") != NULL)
|
||
+ {
|
||
+ char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */
|
||
+ mbstate_t state;
|
||
+ wchar_t wc;
|
||
+
|
||
+ memset (&state, '\0', sizeof (mbstate_t));
|
||
+ if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2))
|
||
+ {
|
||
+ input[3] = '\0';
|
||
+ if (mbrtowc (&wc, input + 4, 4, &state) != 1)
|
||
+ result |= 16;
|
||
+ }
|
||
+ found_some_locale = 1;
|
||
+ }
|
||
+ return (found_some_locale ? result : 77);
|
||
}]])],
|
||
[gl_cv_func_mbrtowc_retval=yes],
|
||
- [gl_cv_func_mbrtowc_retval=no],
|
||
+ [if test $? != 77; then
|
||
+ gl_cv_func_mbrtowc_retval=no
|
||
+ fi
|
||
+ ],
|
||
[:])
|
||
fi
|
||
])
|
||
@@ -336,6 +504,13 @@ changequote([,])dnl
|
||
[AC_LANG_SOURCE([[
|
||
#include <locale.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
@@ -366,10 +541,8 @@ AC_DEFUN([gl_PREREQ_MBRTOWC], [
|
||
|
||
dnl From Paul Eggert
|
||
|
||
-dnl This override of an autoconf macro can be removed when autoconf 2.60 or
|
||
-dnl newer can be assumed everywhere.
|
||
+dnl This is an override of an autoconf macro.
|
||
|
||
-m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.60]),[-1],[
|
||
AC_DEFUN([AC_FUNC_MBRTOWC],
|
||
[
|
||
dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60.
|
||
@@ -377,7 +550,14 @@ AC_DEFUN([AC_FUNC_MBRTOWC],
|
||
gl_cv_func_mbrtowc,
|
||
[AC_LINK_IFELSE(
|
||
[AC_LANG_PROGRAM(
|
||
- [[#include <wchar.h>]],
|
||
+ [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
|
||
+ included before <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
|
||
+ must be included before <wchar.h>. */
|
||
+ #include <stddef.h>
|
||
+ #include <stdio.h>
|
||
+ #include <time.h>
|
||
+ #include <wchar.h>]],
|
||
[[wchar_t wc;
|
||
char const s[] = "";
|
||
size_t n = 1;
|
||
@@ -390,4 +570,3 @@ AC_DEFUN([AC_FUNC_MBRTOWC],
|
||
[Define to 1 if mbrtowc and mbstate_t are properly declared.])
|
||
fi
|
||
])
|
||
-])
|
||
diff --git a/m4/mbsinit.m4 b/m4/mbsinit.m4
|
||
index 46c106f..2e6d092 100644
|
||
--- a/m4/mbsinit.m4
|
||
+++ b/m4/mbsinit.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# mbsinit.m4 serial 4
|
||
-dnl Copyright (C) 2008, 2010 Free Software Foundation, Inc.
|
||
+# mbsinit.m4 serial 8
|
||
+dnl Copyright (C) 2008, 2010-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -7,6 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
AC_DEFUN([gl_FUNC_MBSINIT],
|
||
[
|
||
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST])
|
||
|
||
AC_REQUIRE([AC_TYPE_MBSTATE_T])
|
||
gl_MBSTATE_T_BROKEN
|
||
@@ -14,16 +15,34 @@ AC_DEFUN([gl_FUNC_MBSINIT],
|
||
AC_CHECK_FUNCS_ONCE([mbsinit])
|
||
if test $ac_cv_func_mbsinit = no; then
|
||
HAVE_MBSINIT=0
|
||
+ AC_CHECK_DECLS([mbsinit],,, [[
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>
|
||
+]])
|
||
+ if test $ac_cv_have_decl_mbsinit = yes; then
|
||
+ dnl On Minix 3.1.8, the system's <wchar.h> declares mbsinit() although
|
||
+ dnl it does not have the function. Avoid a collision with gnulib's
|
||
+ dnl replacement.
|
||
+ REPLACE_MBSINIT=1
|
||
+ fi
|
||
else
|
||
if test $REPLACE_MBSTATE_T = 1; then
|
||
REPLACE_MBSINIT=1
|
||
+ else
|
||
+ dnl On mingw, mbsinit() always returns 1, which is inappropriate for
|
||
+ dnl states produced by mbrtowc() for an incomplete multibyte character
|
||
+ dnl in multibyte locales.
|
||
+ case "$host_os" in
|
||
+ mingw*) REPLACE_MBSINIT=1 ;;
|
||
+ esac
|
||
fi
|
||
fi
|
||
- if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
|
||
- gl_REPLACE_WCHAR_H
|
||
- AC_LIBOBJ([mbsinit])
|
||
- gl_PREREQ_MBSINIT
|
||
- fi
|
||
])
|
||
|
||
# Prerequisites of lib/mbsinit.c.
|
||
diff --git a/m4/mbsrtowcs.m4 b/m4/mbsrtowcs.m4
|
||
index e854337..c4934c2 100644
|
||
--- a/m4/mbsrtowcs.m4
|
||
+++ b/m4/mbsrtowcs.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# mbsrtowcs.m4 serial 7
|
||
-dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
|
||
+# mbsrtowcs.m4 serial 13
|
||
+dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -14,6 +14,22 @@ AC_DEFUN([gl_FUNC_MBSRTOWCS],
|
||
AC_CHECK_FUNCS_ONCE([mbsrtowcs])
|
||
if test $ac_cv_func_mbsrtowcs = no; then
|
||
HAVE_MBSRTOWCS=0
|
||
+ AC_CHECK_DECLS([mbsrtowcs],,, [[
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>
|
||
+]])
|
||
+ if test $ac_cv_have_decl_mbsrtowcs = yes; then
|
||
+ dnl On Minix 3.1.8, the system's <wchar.h> declares mbsrtowcs() although
|
||
+ dnl it does not have the function. Avoid a collision with gnulib's
|
||
+ dnl replacement.
|
||
+ REPLACE_MBSRTOWCS=1
|
||
+ fi
|
||
else
|
||
if test $REPLACE_MBSTATE_T = 1; then
|
||
REPLACE_MBSRTOWCS=1
|
||
@@ -25,12 +41,6 @@ AC_DEFUN([gl_FUNC_MBSRTOWCS],
|
||
esac
|
||
fi
|
||
fi
|
||
- if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then
|
||
- gl_REPLACE_WCHAR_H
|
||
- AC_LIBOBJ([mbsrtowcs])
|
||
- AC_LIBOBJ([mbsrtowcs-state])
|
||
- gl_PREREQ_MBSRTOWCS
|
||
- fi
|
||
])
|
||
|
||
dnl Test whether mbsrtowcs works.
|
||
@@ -39,6 +49,7 @@ dnl Result is gl_cv_func_mbsrtowcs_works.
|
||
AC_DEFUN([gl_MBSRTOWCS_WORKS],
|
||
[
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
+ AC_REQUIRE([gt_LOCALE_FR])
|
||
AC_REQUIRE([gt_LOCALE_FR_UTF8])
|
||
AC_REQUIRE([gt_LOCALE_JA])
|
||
AC_REQUIRE([gt_LOCALE_ZH_CN])
|
||
@@ -50,20 +61,41 @@ AC_DEFUN([gl_MBSRTOWCS_WORKS],
|
||
dnl is present.
|
||
changequote(,)dnl
|
||
case "$host_os" in
|
||
- # Guess no on HP-UX and Solaris.
|
||
- hpux* | solaris*) gl_cv_func_mbsrtowcs_works="guessing no" ;;
|
||
- # Guess yes otherwise.
|
||
- *) gl_cv_func_mbsrtowcs_works="guessing yes" ;;
|
||
+ # Guess no on HP-UX, Solaris, mingw.
|
||
+ hpux* | solaris* | mingw*) gl_cv_func_mbsrtowcs_works="guessing no" ;;
|
||
+ # Guess yes otherwise.
|
||
+ *) gl_cv_func_mbsrtowcs_works="guessing yes" ;;
|
||
esac
|
||
changequote([,])dnl
|
||
- if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
|
||
+ if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
|
||
AC_RUN_IFELSE(
|
||
[AC_LANG_SOURCE([[
|
||
#include <locale.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
+ /* Test whether the function supports a NULL destination argument.
|
||
+ This fails on native Windows. */
|
||
+ if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
|
||
+ {
|
||
+ const char input[] = "\337er";
|
||
+ const char *src = input;
|
||
+ mbstate_t state;
|
||
+
|
||
+ memset (&state, '\0', sizeof (mbstate_t));
|
||
+ if (mbsrtowcs (NULL, &src, 1, &state) != 3
|
||
+ || src != input)
|
||
+ result |= 1;
|
||
+ }
|
||
/* Test whether the function works when started with a conversion state
|
||
in non-initial state. This fails on HP-UX 11.11 and Solaris 10. */
|
||
if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
|
||
@@ -77,7 +109,7 @@ int main ()
|
||
{
|
||
const char *src = input + 2;
|
||
if (mbsrtowcs (NULL, &src, 10, &state) != 4)
|
||
- return 1;
|
||
+ result |= 2;
|
||
}
|
||
}
|
||
if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
|
||
@@ -91,7 +123,7 @@ int main ()
|
||
{
|
||
const char *src = input + 4;
|
||
if (mbsrtowcs (NULL, &src, 10, &state) != 3)
|
||
- return 1;
|
||
+ result |= 4;
|
||
}
|
||
}
|
||
if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
|
||
@@ -105,10 +137,10 @@ int main ()
|
||
{
|
||
const char *src = input + 2;
|
||
if (mbsrtowcs (NULL, &src, 10, &state) != 4)
|
||
- return 1;
|
||
+ result |= 8;
|
||
}
|
||
}
|
||
- return 0;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_mbsrtowcs_works=yes],
|
||
[gl_cv_func_mbsrtowcs_works=no],
|
||
diff --git a/m4/mbstate_t.m4 b/m4/mbstate_t.m4
|
||
index 3e2df29..ed00117 100644
|
||
--- a/m4/mbstate_t.m4
|
||
+++ b/m4/mbstate_t.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# mbstate_t.m4 serial 12
|
||
-dnl Copyright (C) 2000-2002, 2008-2010 Free Software Foundation, Inc.
|
||
+# mbstate_t.m4 serial 13
|
||
+dnl Copyright (C) 2000-2002, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -20,7 +20,14 @@ AC_DEFUN([AC_TYPE_MBSTATE_T],
|
||
[AC_COMPILE_IFELSE(
|
||
[AC_LANG_PROGRAM(
|
||
[AC_INCLUDES_DEFAULT[
|
||
-# include <wchar.h>]],
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>]],
|
||
[[mbstate_t x; return sizeof x;]])],
|
||
[ac_cv_type_mbstate_t=yes],
|
||
[ac_cv_type_mbstate_t=no])])
|
||
diff --git a/m4/mbswidth.m4 b/m4/mbswidth.m4
|
||
new file mode 100644
|
||
index 0000000..39760fc
|
||
--- /dev/null
|
||
+++ b/m4/mbswidth.m4
|
||
@@ -0,0 +1,46 @@
|
||
+# mbswidth.m4 serial 18
|
||
+dnl Copyright (C) 2000-2002, 2004, 2006-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+dnl autoconf tests required for use of mbswidth.c
|
||
+dnl From Bruno Haible.
|
||
+
|
||
+AC_DEFUN([gl_MBSWIDTH],
|
||
+[
|
||
+ AC_CHECK_HEADERS_ONCE([wchar.h])
|
||
+ AC_CHECK_FUNCS_ONCE([isascii mbsinit])
|
||
+
|
||
+ dnl UnixWare 7.1.1 <wchar.h> has a declaration of a function mbswidth()
|
||
+ dnl that clashes with ours.
|
||
+ AC_CACHE_CHECK([whether mbswidth is declared in <wchar.h>],
|
||
+ [ac_cv_have_decl_mbswidth],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
|
||
+ before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>
|
||
+ ]],
|
||
+ [[
|
||
+ char *p = (char *) mbswidth;
|
||
+ return !p;
|
||
+ ]])],
|
||
+ [ac_cv_have_decl_mbswidth=yes],
|
||
+ [ac_cv_have_decl_mbswidth=no])])
|
||
+ if test $ac_cv_have_decl_mbswidth = yes; then
|
||
+ ac_val=1
|
||
+ else
|
||
+ ac_val=0
|
||
+ fi
|
||
+ AC_DEFINE_UNQUOTED([HAVE_DECL_MBSWIDTH_IN_WCHAR_H], [$ac_val],
|
||
+ [Define to 1 if you have a declaration of mbswidth() in <wchar.h>, and to 0 otherwise.])
|
||
+
|
||
+ AC_TYPE_MBSTATE_T
|
||
+])
|
||
diff --git a/m4/mbtowc.m4 b/m4/mbtowc.m4
|
||
new file mode 100644
|
||
index 0000000..e479461
|
||
--- /dev/null
|
||
+++ b/m4/mbtowc.m4
|
||
@@ -0,0 +1,19 @@
|
||
+# mbtowc.m4 serial 2
|
||
+dnl Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_FUNC_MBTOWC],
|
||
+[
|
||
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
|
||
+
|
||
+ if false; then
|
||
+ REPLACE_MBTOWC=1
|
||
+ fi
|
||
+])
|
||
+
|
||
+# Prerequisites of lib/mbtowc.c.
|
||
+AC_DEFUN([gl_PREREQ_MBTOWC], [
|
||
+ :
|
||
+])
|
||
diff --git a/m4/memchr.m4 b/m4/memchr.m4
|
||
index b05a79a..2d8abe7 100644
|
||
--- a/m4/memchr.m4
|
||
+++ b/m4/memchr.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# memchr.m4 serial 9
|
||
-dnl Copyright (C) 2002-2004, 2009-2010 Free Software Foundation, Inc.
|
||
+# memchr.m4 serial 12
|
||
+dnl Copyright (C) 2002-2004, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -11,10 +11,16 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
|
||
AC_CHECK_HEADERS_ONCE([sys/mman.h])
|
||
AC_CHECK_FUNCS_ONCE([mprotect])
|
||
|
||
- dnl These days, we assume memchr is present. But just in case...
|
||
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
|
||
- AC_CHECK_FUNCS_ONCE([memchr])
|
||
- if test $ac_cv_func_memchr = yes; then
|
||
+ m4_ifdef([gl_FUNC_MEMCHR_OBSOLETE], [
|
||
+ dnl These days, we assume memchr is present. But if support for old
|
||
+ dnl platforms is desired:
|
||
+ AC_CHECK_FUNCS_ONCE([memchr])
|
||
+ if test $ac_cv_func_memchr = no; then
|
||
+ HAVE_MEMCHR=0
|
||
+ fi
|
||
+ ])
|
||
+ if test $HAVE_MEMCHR = 1; then
|
||
# Detect platform-specific bugs in some versions of glibc:
|
||
# memchr should not dereference anything with length 0
|
||
# http://bugzilla.redhat.com/499689
|
||
@@ -35,6 +41,7 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
|
||
# endif
|
||
#endif
|
||
]], [[
|
||
+ int result = 0;
|
||
char *fence = NULL;
|
||
#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
|
||
# if HAVE_MAP_ANONYMOUS
|
||
@@ -58,26 +65,20 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
|
||
if (fence)
|
||
{
|
||
if (memchr (fence, 0, 0))
|
||
- return 1;
|
||
+ result |= 1;
|
||
strcpy (fence - 9, "12345678");
|
||
if (memchr (fence - 9, 0, 79) != fence - 1)
|
||
- return 2;
|
||
+ result |= 2;
|
||
if (memchr (fence - 1, 0, 3) != fence - 1)
|
||
- return 3;
|
||
+ result |= 4;
|
||
}
|
||
- return 0;
|
||
+ return result;
|
||
]])], [gl_cv_func_memchr_works=yes], [gl_cv_func_memchr_works=no],
|
||
[dnl Be pessimistic for now.
|
||
gl_cv_func_memchr_works="guessing no"])])
|
||
if test "$gl_cv_func_memchr_works" != yes; then
|
||
REPLACE_MEMCHR=1
|
||
fi
|
||
- else
|
||
- HAVE_MEMCHR=0
|
||
- fi
|
||
- if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
|
||
- AC_LIBOBJ([memchr])
|
||
- gl_PREREQ_MEMCHR
|
||
fi
|
||
])
|
||
|
||
diff --git a/m4/mempcpy.m4 b/m4/mempcpy.m4
|
||
index 12df771..a48f2d1 100644
|
||
--- a/m4/mempcpy.m4
|
||
+++ b/m4/mempcpy.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# mempcpy.m4 serial 10
|
||
-dnl Copyright (C) 2003-2004, 2006-2007, 2009-2010 Free Software Foundation,
|
||
+# mempcpy.m4 serial 11
|
||
+dnl Copyright (C) 2003-2004, 2006-2007, 2009-2013 Free Software Foundation,
|
||
dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
@@ -14,10 +14,9 @@ AC_DEFUN([gl_FUNC_MEMPCPY],
|
||
AC_REQUIRE([AC_C_RESTRICT])
|
||
|
||
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
|
||
- AC_REPLACE_FUNCS([mempcpy])
|
||
+ AC_CHECK_FUNCS([mempcpy])
|
||
if test $ac_cv_func_mempcpy = no; then
|
||
HAVE_MEMPCPY=0
|
||
- gl_PREREQ_MEMPCPY
|
||
fi
|
||
])
|
||
|
||
diff --git a/m4/mmap-anon.m4 b/m4/mmap-anon.m4
|
||
index a6b7b9a..9b60ddf 100644
|
||
--- a/m4/mmap-anon.m4
|
||
+++ b/m4/mmap-anon.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# mmap-anon.m4 serial 8
|
||
-dnl Copyright (C) 2005, 2007, 2009-2010 Free Software Foundation, Inc.
|
||
+# mmap-anon.m4 serial 10
|
||
+dnl Copyright (C) 2005, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -9,16 +9,12 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
# - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS
|
||
# and MAP_ANON exist and have the same value.
|
||
# - On HP-UX, only MAP_ANONYMOUS exists.
|
||
-# - On MacOS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
|
||
+# - On Mac OS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
|
||
# - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be
|
||
# used.
|
||
|
||
AC_DEFUN([gl_FUNC_MMAP_ANON],
|
||
[
|
||
- dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
|
||
- AC_REQUIRE([AC_PROG_CPP])
|
||
- AC_REQUIRE([AC_PROG_EGREP])
|
||
-
|
||
dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
|
||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||
|
||
@@ -31,18 +27,18 @@ AC_DEFUN([gl_FUNC_MMAP_ANON],
|
||
gl_have_mmap_anonymous=no
|
||
if test $gl_have_mmap = yes; then
|
||
AC_MSG_CHECKING([for MAP_ANONYMOUS])
|
||
- AC_EGREP_CPP([I cant identify this map.], [
|
||
+ AC_EGREP_CPP([I cannot identify this map], [
|
||
#include <sys/mman.h>
|
||
#ifdef MAP_ANONYMOUS
|
||
- I cant identify this map.
|
||
+ I cannot identify this map
|
||
#endif
|
||
],
|
||
[gl_have_mmap_anonymous=yes])
|
||
if test $gl_have_mmap_anonymous != yes; then
|
||
- AC_EGREP_CPP([I cant identify this map.], [
|
||
+ AC_EGREP_CPP([I cannot identify this map], [
|
||
#include <sys/mman.h>
|
||
#ifdef MAP_ANON
|
||
- I cant identify this map.
|
||
+ I cannot identify this map
|
||
#endif
|
||
],
|
||
[AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
|
||
diff --git a/m4/msvc-inval.m4 b/m4/msvc-inval.m4
|
||
new file mode 100644
|
||
index 0000000..9a6a47a
|
||
--- /dev/null
|
||
+++ b/m4/msvc-inval.m4
|
||
@@ -0,0 +1,19 @@
|
||
+# msvc-inval.m4 serial 1
|
||
+dnl Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_MSVC_INVAL],
|
||
+[
|
||
+ AC_CHECK_FUNCS_ONCE([_set_invalid_parameter_handler])
|
||
+ if test $ac_cv_func__set_invalid_parameter_handler = yes; then
|
||
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER=1
|
||
+ AC_DEFINE([HAVE_MSVC_INVALID_PARAMETER_HANDLER], [1],
|
||
+ [Define to 1 on MSVC platforms that have the "invalid parameter handler"
|
||
+ concept.])
|
||
+ else
|
||
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER=0
|
||
+ fi
|
||
+ AC_SUBST([HAVE_MSVC_INVALID_PARAMETER_HANDLER])
|
||
+])
|
||
diff --git a/m4/msvc-nothrow.m4 b/m4/msvc-nothrow.m4
|
||
new file mode 100644
|
||
index 0000000..a39618a
|
||
--- /dev/null
|
||
+++ b/m4/msvc-nothrow.m4
|
||
@@ -0,0 +1,10 @@
|
||
+# msvc-nothrow.m4 serial 1
|
||
+dnl Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_MSVC_NOTHROW],
|
||
+[
|
||
+ AC_REQUIRE([gl_MSVC_INVAL])
|
||
+])
|
||
diff --git a/m4/multiarch.m4 b/m4/multiarch.m4
|
||
index 389bd2b..552ec7e 100644
|
||
--- a/m4/multiarch.m4
|
||
+++ b/m4/multiarch.m4
|
||
@@ -1,12 +1,12 @@
|
||
-# multiarch.m4 serial 5
|
||
-dnl Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+# multiarch.m4 serial 7
|
||
+dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
# Determine whether the compiler is or may be producing universal binaries.
|
||
#
|
||
-# On MacOS X 10.5 and later systems, the user can create libraries and
|
||
+# On Mac OS X 10.5 and later systems, the user can create libraries and
|
||
# executables that work on multiple system types--known as "fat" or
|
||
# "universal" binaries--by specifying multiple '-arch' options to the
|
||
# compiler but only a single '-arch' option to the preprocessor. Like
|
||
@@ -16,8 +16,7 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||
# CPP="gcc -E" CXXCPP="g++ -E"
|
||
#
|
||
-# Detect this situation and set the macro AA_APPLE_UNIVERSAL_BUILD at the
|
||
-# beginning of config.h and set APPLE_UNIVERSAL_BUILD accordingly.
|
||
+# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly.
|
||
|
||
AC_DEFUN_ONCE([gl_MULTIARCH],
|
||
[
|
||
@@ -55,8 +54,6 @@ AC_DEFUN_ONCE([gl_MULTIARCH],
|
||
done
|
||
])
|
||
if test $gl_cv_c_multiarch = yes; then
|
||
- AC_DEFINE([AA_APPLE_UNIVERSAL_BUILD], [1],
|
||
- [Define if the compiler is building for multiple architectures of Apple platforms at once.])
|
||
APPLE_UNIVERSAL_BUILD=1
|
||
else
|
||
APPLE_UNIVERSAL_BUILD=0
|
||
diff --git a/m4/nl_langinfo.m4 b/m4/nl_langinfo.m4
|
||
index ad456a2..25e2101 100644
|
||
--- a/m4/nl_langinfo.m4
|
||
+++ b/m4/nl_langinfo.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# nl_langinfo.m4 serial 3
|
||
-dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
|
||
+# nl_langinfo.m4 serial 5
|
||
+dnl Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -9,17 +9,42 @@ AC_DEFUN([gl_FUNC_NL_LANGINFO],
|
||
AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
|
||
AC_REQUIRE([gl_LANGINFO_H])
|
||
AC_CHECK_FUNCS_ONCE([nl_langinfo])
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
if test $ac_cv_func_nl_langinfo = yes; then
|
||
- if test $HAVE_LANGINFO_CODESET = 1 && test $HAVE_LANGINFO_ERA = 1; then
|
||
+ # On Irix 6.5, YESEXPR is defined, but nl_langinfo(YESEXPR) is broken.
|
||
+ AC_CACHE_CHECK([whether YESEXPR works],
|
||
+ [gl_cv_func_nl_langinfo_yesexpr_works],
|
||
+ [AC_RUN_IFELSE(
|
||
+ [AC_LANG_PROGRAM([[#include <langinfo.h>
|
||
+]], [[return !*nl_langinfo(YESEXPR);
|
||
+]])],
|
||
+ [gl_cv_func_nl_langinfo_yesexpr_works=yes],
|
||
+ [gl_cv_func_nl_langinfo_yesexpr_works=no],
|
||
+ [
|
||
+ case "$host_os" in
|
||
+ # Guess no on irix systems.
|
||
+ irix*) gl_cv_func_nl_langinfo_yesexpr_works="guessing no";;
|
||
+ # Guess yes elsewhere.
|
||
+ *) gl_cv_func_nl_langinfo_yesexpr_works="guessing yes";;
|
||
+ esac
|
||
+ ])
|
||
+ ])
|
||
+ case $gl_cv_func_nl_langinfo_yesexpr_works in
|
||
+ *yes) FUNC_NL_LANGINFO_YESEXPR_WORKS=1 ;;
|
||
+ *) FUNC_NL_LANGINFO_YESEXPR_WORKS=0 ;;
|
||
+ esac
|
||
+ AC_DEFINE_UNQUOTED([FUNC_NL_LANGINFO_YESEXPR_WORKS],
|
||
+ [$FUNC_NL_LANGINFO_YESEXPR_WORKS],
|
||
+ [Define to 1 if nl_langinfo (YESEXPR) returns a non-empty string.])
|
||
+ if test $HAVE_LANGINFO_CODESET = 1 && test $HAVE_LANGINFO_ERA = 1 \
|
||
+ && test $FUNC_NL_LANGINFO_YESEXPR_WORKS = 1; then
|
||
:
|
||
else
|
||
REPLACE_NL_LANGINFO=1
|
||
AC_DEFINE([REPLACE_NL_LANGINFO], [1],
|
||
[Define if nl_langinfo exists but is overridden by gnulib.])
|
||
- AC_LIBOBJ([nl_langinfo])
|
||
fi
|
||
else
|
||
HAVE_NL_LANGINFO=0
|
||
- AC_LIBOBJ([nl_langinfo])
|
||
fi
|
||
])
|
||
diff --git a/m4/nls.m4 b/m4/nls.m4
|
||
index 003704c..8f8a147 100644
|
||
--- a/m4/nls.m4
|
||
+++ b/m4/nls.m4
|
||
@@ -1,5 +1,5 @@
|
||
# nls.m4 serial 5 (gettext-0.18)
|
||
-dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
|
||
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2013 Free Software Foundation,
|
||
dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
diff --git a/m4/nocrash.m4 b/m4/nocrash.m4
|
||
new file mode 100644
|
||
index 0000000..105b884
|
||
--- /dev/null
|
||
+++ b/m4/nocrash.m4
|
||
@@ -0,0 +1,130 @@
|
||
+# nocrash.m4 serial 4
|
||
+dnl Copyright (C) 2005, 2009-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+dnl Based on libsigsegv, from Bruno Haible and Paolo Bonzini.
|
||
+
|
||
+AC_PREREQ([2.13])
|
||
+
|
||
+dnl Expands to some code for use in .c programs that will cause the configure
|
||
+dnl test to exit instead of crashing. This is useful to avoid triggering
|
||
+dnl action from a background debugger and to avoid core dumps.
|
||
+dnl Usage: ...
|
||
+dnl ]GL_NOCRASH[
|
||
+dnl ...
|
||
+dnl int main() { nocrash_init(); ... }
|
||
+AC_DEFUN([GL_NOCRASH],[[
|
||
+#include <stdlib.h>
|
||
+#if defined __MACH__ && defined __APPLE__
|
||
+/* Avoid a crash on Mac OS X. */
|
||
+#include <mach/mach.h>
|
||
+#include <mach/mach_error.h>
|
||
+#include <mach/thread_status.h>
|
||
+#include <mach/exception.h>
|
||
+#include <mach/task.h>
|
||
+#include <pthread.h>
|
||
+/* The exception port on which our thread listens. */
|
||
+static mach_port_t our_exception_port;
|
||
+/* The main function of the thread listening for exceptions of type
|
||
+ EXC_BAD_ACCESS. */
|
||
+static void *
|
||
+mach_exception_thread (void *arg)
|
||
+{
|
||
+ /* Buffer for a message to be received. */
|
||
+ struct {
|
||
+ mach_msg_header_t head;
|
||
+ mach_msg_body_t msgh_body;
|
||
+ char data[1024];
|
||
+ } msg;
|
||
+ mach_msg_return_t retval;
|
||
+ /* Wait for a message on the exception port. */
|
||
+ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
|
||
+ our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
|
||
+ if (retval != MACH_MSG_SUCCESS)
|
||
+ abort ();
|
||
+ exit (1);
|
||
+}
|
||
+static void
|
||
+nocrash_init (void)
|
||
+{
|
||
+ mach_port_t self = mach_task_self ();
|
||
+ /* Allocate a port on which the thread shall listen for exceptions. */
|
||
+ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
|
||
+ == KERN_SUCCESS) {
|
||
+ /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
|
||
+ if (mach_port_insert_right (self, our_exception_port, our_exception_port,
|
||
+ MACH_MSG_TYPE_MAKE_SEND)
|
||
+ == KERN_SUCCESS) {
|
||
+ /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting
|
||
+ for us. */
|
||
+ exception_mask_t mask = EXC_MASK_BAD_ACCESS;
|
||
+ /* Create the thread listening on the exception port. */
|
||
+ pthread_attr_t attr;
|
||
+ pthread_t thread;
|
||
+ if (pthread_attr_init (&attr) == 0
|
||
+ && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
|
||
+ && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
|
||
+ pthread_attr_destroy (&attr);
|
||
+ /* Replace the exception port info for these exceptions with our own.
|
||
+ Note that we replace the exception port for the entire task, not only
|
||
+ for a particular thread. This has the effect that when our exception
|
||
+ port gets the message, the thread specific exception port has already
|
||
+ been asked, and we don't need to bother about it.
|
||
+ See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
|
||
+ task_set_exception_ports (self, mask, our_exception_port,
|
||
+ EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
|
||
+ }
|
||
+ }
|
||
+ }
|
||
+}
|
||
+#elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||
+/* Avoid a crash on native Windows. */
|
||
+#define WIN32_LEAN_AND_MEAN
|
||
+#include <windows.h>
|
||
+#include <winerror.h>
|
||
+static LONG WINAPI
|
||
+exception_filter (EXCEPTION_POINTERS *ExceptionInfo)
|
||
+{
|
||
+ switch (ExceptionInfo->ExceptionRecord->ExceptionCode)
|
||
+ {
|
||
+ case EXCEPTION_ACCESS_VIOLATION:
|
||
+ case EXCEPTION_IN_PAGE_ERROR:
|
||
+ case EXCEPTION_STACK_OVERFLOW:
|
||
+ case EXCEPTION_GUARD_PAGE:
|
||
+ case EXCEPTION_PRIV_INSTRUCTION:
|
||
+ case EXCEPTION_ILLEGAL_INSTRUCTION:
|
||
+ case EXCEPTION_DATATYPE_MISALIGNMENT:
|
||
+ case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
|
||
+ case EXCEPTION_NONCONTINUABLE_EXCEPTION:
|
||
+ exit (1);
|
||
+ }
|
||
+ return EXCEPTION_CONTINUE_SEARCH;
|
||
+}
|
||
+static void
|
||
+nocrash_init (void)
|
||
+{
|
||
+ SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter);
|
||
+}
|
||
+#else
|
||
+/* Avoid a crash on POSIX systems. */
|
||
+#include <signal.h>
|
||
+/* A POSIX signal handler. */
|
||
+static void
|
||
+exception_handler (int sig)
|
||
+{
|
||
+ exit (1);
|
||
+}
|
||
+static void
|
||
+nocrash_init (void)
|
||
+{
|
||
+#ifdef SIGSEGV
|
||
+ signal (SIGSEGV, exception_handler);
|
||
+#endif
|
||
+#ifdef SIGBUS
|
||
+ signal (SIGBUS, exception_handler);
|
||
+#endif
|
||
+}
|
||
+#endif
|
||
+]])
|
||
diff --git a/m4/off_t.m4 b/m4/off_t.m4
|
||
new file mode 100644
|
||
index 0000000..d355d01
|
||
--- /dev/null
|
||
+++ b/m4/off_t.m4
|
||
@@ -0,0 +1,18 @@
|
||
+# off_t.m4 serial 1
|
||
+dnl Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+dnl Check whether to override the 'off_t' type.
|
||
+dnl Set WINDOWS_64_BIT_OFF_T.
|
||
+
|
||
+AC_DEFUN([gl_TYPE_OFF_T],
|
||
+[
|
||
+ m4_ifdef([gl_LARGEFILE], [
|
||
+ AC_REQUIRE([gl_LARGEFILE])
|
||
+ ], [
|
||
+ WINDOWS_64_BIT_OFF_T=0
|
||
+ ])
|
||
+ AC_SUBST([WINDOWS_64_BIT_OFF_T])
|
||
+])
|
||
diff --git a/m4/po.m4 b/m4/po.m4
|
||
index 47f36a4..f395723 100644
|
||
--- a/m4/po.m4
|
||
+++ b/m4/po.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# po.m4 serial 17 (gettext-0.18)
|
||
-dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||
+# po.m4 serial 20 (gettext-0.18.2)
|
||
+dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -17,14 +17,14 @@ dnl Authors:
|
||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||
|
||
-AC_PREREQ([2.50])
|
||
+AC_PREREQ([2.60])
|
||
|
||
dnl Checks for all prerequisites of the po subdirectory.
|
||
AC_DEFUN([AM_PO_SUBDIRS],
|
||
[
|
||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||
- AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
|
||
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||
AC_REQUIRE([AM_NLS])dnl
|
||
|
||
dnl Release version of the gettext macros. This is used to ensure that
|
||
@@ -102,7 +102,7 @@ changequote([,])dnl
|
||
case "$ac_file" in */Makefile.in)
|
||
# Adjust a relative srcdir.
|
||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
|
||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||
# In autoconf-2.50 it is called $srcdir.
|
||
@@ -118,7 +118,8 @@ changequote([,])dnl
|
||
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
|
||
rm -f "$ac_dir/POTFILES"
|
||
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
|
||
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
|
||
+ gt_tab=`printf '\t'`
|
||
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
|
||
POMAKEFILEDEPS="POTFILES.in"
|
||
# ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
|
||
# on $ac_dir but don't depend on user-specified configuration
|
||
@@ -129,12 +130,12 @@ changequote([,])dnl
|
||
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
||
fi
|
||
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
||
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||
+ # Hide the ALL_LINGUAS assignment from automake < 1.5.
|
||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
|
||
else
|
||
# The set of available languages was given in configure.in.
|
||
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||
+ # Hide the ALL_LINGUAS assignment from automake < 1.5.
|
||
eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
|
||
fi
|
||
# Compute POFILES
|
||
@@ -226,7 +227,7 @@ AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
|
||
changequote(,)dnl
|
||
# Adjust a relative srcdir.
|
||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
|
||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||
# In autoconf-2.50 it is called $srcdir.
|
||
@@ -254,6 +255,7 @@ EOT
|
||
fi
|
||
|
||
# A sed script that extracts the value of VARIABLE from a Makefile.
|
||
+ tab=`printf '\t'`
|
||
sed_x_variable='
|
||
# Test if the hold space is empty.
|
||
x
|
||
@@ -261,9 +263,9 @@ s/P/P/
|
||
x
|
||
ta
|
||
# Yes it was empty. Look if we have the expected variable definition.
|
||
-/^[ ]*VARIABLE[ ]*=/{
|
||
+/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{
|
||
# Seen the first line of the variable definition.
|
||
- s/^[ ]*VARIABLE[ ]*=//
|
||
+ s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=//
|
||
ba
|
||
}
|
||
bd
|
||
@@ -315,7 +317,7 @@ changequote([,])dnl
|
||
sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
|
||
ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
|
||
fi
|
||
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||
+ # Hide the ALL_LINGUAS assignment from automake < 1.5.
|
||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||
# Compute POFILES
|
||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
|
||
@@ -405,14 +407,15 @@ changequote([,])dnl
|
||
fi
|
||
|
||
sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
|
||
+ tab=`printf '\t'`
|
||
if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
|
||
# Add dependencies that cannot be formulated as a simple suffix rule.
|
||
for lang in $ALL_LINGUAS; do
|
||
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||
cat >> "$ac_file.tmp" <<EOF
|
||
$frobbedlang.msg: $lang.po
|
||
- @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
|
||
- \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||
+${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
|
||
+${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||
EOF
|
||
done
|
||
fi
|
||
@@ -422,8 +425,8 @@ EOF
|
||
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||
cat >> "$ac_file.tmp" <<EOF
|
||
$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
|
||
- @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
|
||
- \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||
+${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
|
||
+${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||
EOF
|
||
done
|
||
fi
|
||
diff --git a/m4/printf-posix.m4 b/m4/printf-posix.m4
|
||
index 2dc52a4..d7dfb60 100644
|
||
--- a/m4/printf-posix.m4
|
||
+++ b/m4/printf-posix.m4
|
||
@@ -1,5 +1,5 @@
|
||
# printf-posix.m4 serial 6 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2003, 2007, 2009-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2003, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/printf.m4 b/m4/printf.m4
|
||
index e850862..ef44f78 100644
|
||
--- a/m4/printf.m4
|
||
+++ b/m4/printf.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# printf.m4 serial 35
|
||
-dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
|
||
+# printf.m4 serial 50
|
||
+dnl Copyright (C) 2003, 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -32,25 +32,26 @@ AC_DEFUN([gl_PRINTF_SIZES_C99],
|
||
static char buf[100];
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
#if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0
|
||
|| strcmp (buf, "12345671 33") != 0)
|
||
- return 1;
|
||
+ result |= 1;
|
||
#endif
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0
|
||
|| strcmp (buf, "12345672 33") != 0)
|
||
- return 1;
|
||
+ result |= 2;
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
|
||
|| strcmp (buf, "12345673 33") != 0)
|
||
- return 1;
|
||
+ result |= 4;
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
|
||
|| strcmp (buf, "1.5 33") != 0)
|
||
- return 1;
|
||
- return 0;
|
||
+ result |= 8;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_printf_sizes_c99=yes],
|
||
[gl_cv_func_printf_sizes_c99=no],
|
||
@@ -62,7 +63,7 @@ changequote(,)dnl
|
||
# Guess yes on FreeBSD >= 5.
|
||
freebsd[1-4]*) gl_cv_func_printf_sizes_c99="guessing no";;
|
||
freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
|
||
- # Guess yes on MacOS X >= 10.3.
|
||
+ # Guess yes on Mac OS X >= 10.3.
|
||
darwin[1-6].*) gl_cv_func_printf_sizes_c99="guessing no";;
|
||
darwin*) gl_cv_func_printf_sizes_c99="guessing yes";;
|
||
# Guess yes on OpenBSD >= 3.9.
|
||
@@ -70,8 +71,8 @@ changequote(,)dnl
|
||
gl_cv_func_printf_sizes_c99="guessing no";;
|
||
openbsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
|
||
# Guess yes on Solaris >= 2.10.
|
||
- solaris2.[0-9]*) gl_cv_func_printf_sizes_c99="guessing no";;
|
||
- solaris*) gl_cv_func_printf_sizes_c99="guessing yes";;
|
||
+ solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
|
||
+ solaris*) gl_cv_func_printf_sizes_c99="guessing no";;
|
||
# Guess yes on NetBSD >= 3.
|
||
netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
|
||
gl_cv_func_printf_sizes_c99="guessing no";;
|
||
@@ -102,19 +103,20 @@ AC_DEFUN([gl_PRINTF_LONG_DOUBLE],
|
||
static char buf[10000];
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
|
||
|| strcmp (buf, "1.750000 33") != 0)
|
||
- return 1;
|
||
+ result |= 1;
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
|
||
|| strcmp (buf, "1.750000e+00 33") != 0)
|
||
- return 1;
|
||
+ result |= 2;
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
|
||
|| strcmp (buf, "1.75 33") != 0)
|
||
- return 1;
|
||
- return 0;
|
||
+ result |= 4;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_printf_long_double=yes],
|
||
[gl_cv_func_printf_long_double=no],
|
||
@@ -175,39 +177,40 @@ static char buf[10000];
|
||
static double zero = 0.0;
|
||
int main ()
|
||
{
|
||
- if (sprintf (buf, "%f", 1.0 / 0.0) < 0
|
||
+ int result = 0;
|
||
+ if (sprintf (buf, "%f", 1.0 / zero) < 0
|
||
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
|
||
- return 1;
|
||
- if (sprintf (buf, "%f", -1.0 / 0.0) < 0
|
||
+ result |= 1;
|
||
+ if (sprintf (buf, "%f", -1.0 / zero) < 0
|
||
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
|
||
- return 1;
|
||
+ result |= 1;
|
||
if (sprintf (buf, "%f", zero / zero) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
- if (sprintf (buf, "%e", 1.0 / 0.0) < 0
|
||
+ result |= 2;
|
||
+ if (sprintf (buf, "%e", 1.0 / zero) < 0
|
||
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
|
||
- return 1;
|
||
- if (sprintf (buf, "%e", -1.0 / 0.0) < 0
|
||
+ result |= 4;
|
||
+ if (sprintf (buf, "%e", -1.0 / zero) < 0
|
||
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
|
||
- return 1;
|
||
+ result |= 4;
|
||
if (sprintf (buf, "%e", zero / zero) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
- if (sprintf (buf, "%g", 1.0 / 0.0) < 0
|
||
+ result |= 8;
|
||
+ if (sprintf (buf, "%g", 1.0 / zero) < 0
|
||
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
|
||
- return 1;
|
||
- if (sprintf (buf, "%g", -1.0 / 0.0) < 0
|
||
+ result |= 16;
|
||
+ if (sprintf (buf, "%g", -1.0 / zero) < 0
|
||
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
|
||
- return 1;
|
||
+ result |= 16;
|
||
if (sprintf (buf, "%g", zero / zero) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 32;
|
||
/* This test fails on HP-UX 10.20. */
|
||
if (have_minus_zero ())
|
||
if (sprintf (buf, "%g", - zero) < 0
|
||
|| strcmp (buf, "-0") != 0)
|
||
- return 1;
|
||
- return 0;
|
||
+ result |= 64;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_printf_infinite=yes],
|
||
[gl_cv_func_printf_infinite=no],
|
||
@@ -219,7 +222,7 @@ changequote(,)dnl
|
||
# Guess yes on FreeBSD >= 6.
|
||
freebsd[1-5]*) gl_cv_func_printf_infinite="guessing no";;
|
||
freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
|
||
- # Guess yes on MacOS X >= 10.3.
|
||
+ # Guess yes on Mac OS X >= 10.3.
|
||
darwin[1-6].*) gl_cv_func_printf_infinite="guessing no";;
|
||
darwin*) gl_cv_func_printf_infinite="guessing yes";;
|
||
# Guess yes on HP-UX >= 11.
|
||
@@ -248,6 +251,7 @@ AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE],
|
||
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
AC_REQUIRE([gl_BIGENDIAN])
|
||
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
|
||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
dnl The user can set or unset the variable gl_printf_safe to indicate
|
||
dnl that he wishes a safe handling of non-IEEE-754 'long double' values.
|
||
@@ -289,35 +293,36 @@ static char buf[10000];
|
||
static long double zeroL = 0.0L;
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
nocrash_init();
|
||
- if (sprintf (buf, "%Lf", 1.0L / 0.0L) < 0
|
||
+ if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
|
||
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
|
||
- return 1;
|
||
- if (sprintf (buf, "%Lf", -1.0L / 0.0L) < 0
|
||
+ result |= 1;
|
||
+ if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
|
||
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
|
||
- return 1;
|
||
+ result |= 1;
|
||
if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
- if (sprintf (buf, "%Le", 1.0L / 0.0L) < 0
|
||
+ result |= 1;
|
||
+ if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
|
||
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
|
||
- return 1;
|
||
- if (sprintf (buf, "%Le", -1.0L / 0.0L) < 0
|
||
+ result |= 1;
|
||
+ if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
|
||
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
|
||
- return 1;
|
||
+ result |= 1;
|
||
if (sprintf (buf, "%Le", zeroL / zeroL) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
- if (sprintf (buf, "%Lg", 1.0L / 0.0L) < 0
|
||
+ result |= 1;
|
||
+ if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
|
||
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
|
||
- return 1;
|
||
- if (sprintf (buf, "%Lg", -1.0L / 0.0L) < 0
|
||
+ result |= 1;
|
||
+ if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
|
||
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
|
||
- return 1;
|
||
+ result |= 1;
|
||
if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
|
||
+ result |= 1;
|
||
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
|
||
/* Representation of an 80-bit 'long double' as an initializer for a sequence
|
||
of 'unsigned int' words. */
|
||
# ifdef WORDS_BIGENDIAN
|
||
@@ -335,13 +340,13 @@ int main ()
|
||
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
|
||
if (sprintf (buf, "%Lf", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 2;
|
||
if (sprintf (buf, "%Le", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 2;
|
||
if (sprintf (buf, "%Lg", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 2;
|
||
}
|
||
{
|
||
/* Signalling NaN. */
|
||
@@ -349,81 +354,81 @@ int main ()
|
||
{ LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
|
||
if (sprintf (buf, "%Lf", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 2;
|
||
if (sprintf (buf, "%Le", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 2;
|
||
if (sprintf (buf, "%Lg", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 2;
|
||
}
|
||
{ /* Pseudo-NaN. */
|
||
static union { unsigned int word[4]; long double value; } x =
|
||
{ LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
|
||
if (sprintf (buf, "%Lf", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 4;
|
||
if (sprintf (buf, "%Le", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 4;
|
||
if (sprintf (buf, "%Lg", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 4;
|
||
}
|
||
{ /* Pseudo-Infinity. */
|
||
static union { unsigned int word[4]; long double value; } x =
|
||
{ LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
|
||
if (sprintf (buf, "%Lf", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 8;
|
||
if (sprintf (buf, "%Le", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 8;
|
||
if (sprintf (buf, "%Lg", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 8;
|
||
}
|
||
{ /* Pseudo-Zero. */
|
||
static union { unsigned int word[4]; long double value; } x =
|
||
{ LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
|
||
if (sprintf (buf, "%Lf", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 16;
|
||
if (sprintf (buf, "%Le", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 16;
|
||
if (sprintf (buf, "%Lg", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 16;
|
||
}
|
||
{ /* Unnormalized number. */
|
||
static union { unsigned int word[4]; long double value; } x =
|
||
{ LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
|
||
if (sprintf (buf, "%Lf", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 32;
|
||
if (sprintf (buf, "%Le", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 32;
|
||
if (sprintf (buf, "%Lg", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 32;
|
||
}
|
||
{ /* Pseudo-Denormal. */
|
||
static union { unsigned int word[4]; long double value; } x =
|
||
{ LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
|
||
if (sprintf (buf, "%Lf", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 64;
|
||
if (sprintf (buf, "%Le", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 64;
|
||
if (sprintf (buf, "%Lg", x.value) < 0
|
||
|| !strisnan (buf, 0, strlen (buf)))
|
||
- return 1;
|
||
+ result |= 64;
|
||
}
|
||
#endif
|
||
- return 0;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_printf_infinite_long_double=yes],
|
||
[gl_cv_func_printf_infinite_long_double=no],
|
||
@@ -439,16 +444,9 @@ changequote(,)dnl
|
||
# Guess yes on FreeBSD >= 6.
|
||
freebsd[1-5]*) gl_cv_func_printf_infinite_long_double="guessing no";;
|
||
freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
|
||
- # Guess yes on MacOS X >= 10.3.
|
||
- darwin[1-6].*) gl_cv_func_printf_infinite_long_double="guessing no";;
|
||
- darwin*) gl_cv_func_printf_infinite_long_double="guessing yes";;
|
||
# Guess yes on HP-UX >= 11.
|
||
hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";;
|
||
hpux*) gl_cv_func_printf_infinite_long_double="guessing yes";;
|
||
- # Guess yes on NetBSD >= 3.
|
||
- netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
|
||
- gl_cv_func_printf_infinite_long_double="guessing no";;
|
||
- netbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
|
||
# If we don't know, assume the worst.
|
||
*) gl_cv_func_printf_infinite_long_double="guessing no";;
|
||
esac
|
||
@@ -481,48 +479,50 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
static char buf[100];
|
||
+static double zero = 0.0;
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
|
||
|| (strcmp (buf, "0x1.922p+1 33") != 0
|
||
&& strcmp (buf, "0x3.244p+0 33") != 0
|
||
&& strcmp (buf, "0x6.488p-1 33") != 0
|
||
&& strcmp (buf, "0xc.91p-2 33") != 0))
|
||
- return 1;
|
||
+ result |= 1;
|
||
if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
|
||
|| (strcmp (buf, "-0X1.922P+1 33") != 0
|
||
&& strcmp (buf, "-0X3.244P+0 33") != 0
|
||
&& strcmp (buf, "-0X6.488P-1 33") != 0
|
||
&& strcmp (buf, "-0XC.91P-2 33") != 0))
|
||
- return 1;
|
||
+ result |= 2;
|
||
/* This catches a FreeBSD 6.1 bug: it doesn't round. */
|
||
if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
|
||
|| (strcmp (buf, "0x1.83p+0 33") != 0
|
||
&& strcmp (buf, "0x3.05p-1 33") != 0
|
||
&& strcmp (buf, "0x6.0ap-2 33") != 0
|
||
&& strcmp (buf, "0xc.14p-3 33") != 0))
|
||
- return 1;
|
||
+ result |= 4;
|
||
/* This catches a FreeBSD 6.1 bug. See
|
||
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
|
||
- if (sprintf (buf, "%010a %d", 1.0 / 0.0, 33, 44, 55) < 0
|
||
+ if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
|
||
|| buf[0] == '0')
|
||
- return 1;
|
||
- /* This catches a MacOS X 10.3.9 (Darwin 7.9) bug. */
|
||
+ result |= 8;
|
||
+ /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug. */
|
||
if (sprintf (buf, "%.1a", 1.999) < 0
|
||
|| (strcmp (buf, "0x1.0p+1") != 0
|
||
&& strcmp (buf, "0x2.0p+0") != 0
|
||
&& strcmp (buf, "0x4.0p-1") != 0
|
||
&& strcmp (buf, "0x8.0p-2") != 0))
|
||
- return 1;
|
||
- /* This catches the same MacOS X 10.3.9 (Darwin 7.9) bug and also a
|
||
+ result |= 16;
|
||
+ /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
|
||
glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */
|
||
if (sprintf (buf, "%.1La", 1.999L) < 0
|
||
|| (strcmp (buf, "0x1.0p+1") != 0
|
||
&& strcmp (buf, "0x2.0p+0") != 0
|
||
&& strcmp (buf, "0x4.0p-1") != 0
|
||
&& strcmp (buf, "0x8.0p-2") != 0))
|
||
- return 1;
|
||
- return 0;
|
||
+ result |= 32;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_printf_directive_a=yes],
|
||
[gl_cv_func_printf_directive_a=no],
|
||
@@ -533,7 +533,7 @@ int main ()
|
||
AC_EGREP_CPP([BZ2908], [
|
||
#include <features.h>
|
||
#ifdef __GNU_LIBRARY__
|
||
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)
|
||
+ #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__
|
||
BZ2908
|
||
#endif
|
||
#endif
|
||
@@ -564,19 +564,21 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
static char buf[100];
|
||
+static double zero = 0.0;
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
|
||
|| strcmp (buf, "1234567.000000 33") != 0)
|
||
- return 1;
|
||
- if (sprintf (buf, "%F", 1.0 / 0.0) < 0
|
||
+ result |= 1;
|
||
+ if (sprintf (buf, "%F", 1.0 / zero) < 0
|
||
|| (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
|
||
- return 1;
|
||
+ result |= 2;
|
||
/* This catches a Cygwin 1.5.x bug. */
|
||
if (sprintf (buf, "%.F", 1234.0) < 0
|
||
|| strcmp (buf, "1234") != 0)
|
||
- return 1;
|
||
- return 0;
|
||
+ result |= 4;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_printf_directive_f=yes],
|
||
[gl_cv_func_printf_directive_f=no],
|
||
@@ -588,12 +590,12 @@ changequote(,)dnl
|
||
# Guess yes on FreeBSD >= 6.
|
||
freebsd[1-5]*) gl_cv_func_printf_directive_f="guessing no";;
|
||
freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
|
||
- # Guess yes on MacOS X >= 10.3.
|
||
+ # Guess yes on Mac OS X >= 10.3.
|
||
darwin[1-6].*) gl_cv_func_printf_directive_f="guessing no";;
|
||
darwin*) gl_cv_func_printf_directive_f="guessing yes";;
|
||
# Guess yes on Solaris >= 2.10.
|
||
- solaris2.[0-9]*) gl_cv_func_printf_directive_f="guessing no";;
|
||
- solaris*) gl_cv_func_printf_directive_f="guessing yes";;
|
||
+ solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
|
||
+ solaris*) gl_cv_func_printf_sizes_c99="guessing no";;
|
||
# If we don't know, assume the worst.
|
||
*) gl_cv_func_printf_directive_f="guessing no";;
|
||
esac
|
||
@@ -616,12 +618,27 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
|
||
AC_RUN_IFELSE(
|
||
[AC_LANG_SOURCE([[
|
||
#include <stdio.h>
|
||
+#include <stdlib.h>
|
||
#include <string.h>
|
||
+#ifdef _MSC_VER
|
||
+/* See page about "Parameter Validation" on msdn.microsoft.com. */
|
||
+static void cdecl
|
||
+invalid_parameter_handler (const wchar_t *expression,
|
||
+ const wchar_t *function,
|
||
+ const wchar_t *file, unsigned int line,
|
||
+ uintptr_t dummy)
|
||
+{
|
||
+ exit (1);
|
||
+}
|
||
+#endif
|
||
static char fmtstring[10];
|
||
static char buf[100];
|
||
int main ()
|
||
{
|
||
int count = -1;
|
||
+#ifdef _MSC_VER
|
||
+ _set_invalid_parameter_handler (invalid_parameter_handler);
|
||
+#endif
|
||
/* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2)
|
||
support %n in format strings in read-only memory but not in writable
|
||
memory. */
|
||
@@ -637,7 +654,8 @@ int main ()
|
||
[
|
||
changequote(,)dnl
|
||
case "$host_os" in
|
||
- *) gl_cv_func_printf_directive_n="guessing yes";;
|
||
+ mingw*) gl_cv_func_printf_directive_n="guessing no";;
|
||
+ *) gl_cv_func_printf_directive_n="guessing yes";;
|
||
esac
|
||
changequote([,])dnl
|
||
])
|
||
@@ -671,6 +689,7 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_LS],
|
||
#include <string.h>
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
char buf[100];
|
||
/* Test whether %ls works at all.
|
||
This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
|
||
@@ -680,7 +699,7 @@ int main ()
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%ls", wstring) < 0
|
||
|| strcmp (buf, "abc") != 0)
|
||
- return 1;
|
||
+ result |= 1;
|
||
}
|
||
/* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
|
||
assertion failure inside libc), but not on OpenBSD 4.0. */
|
||
@@ -689,7 +708,7 @@ int main ()
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%ls", wstring) < 0
|
||
|| strcmp (buf, "a") != 0)
|
||
- return 1;
|
||
+ result |= 2;
|
||
}
|
||
/* Test whether precisions in %ls are supported as specified in ISO C 99
|
||
section 7.19.6.1:
|
||
@@ -704,9 +723,9 @@ int main ()
|
||
buf[0] = '\0';
|
||
if (sprintf (buf, "%.2ls", wstring) < 0
|
||
|| strcmp (buf, "ab") != 0)
|
||
- return 1;
|
||
+ result |= 8;
|
||
}
|
||
- return 0;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_printf_directive_ls=yes],
|
||
[gl_cv_func_printf_directive_ls=no],
|
||
@@ -862,9 +881,10 @@ AC_DEFUN([gl_PRINTF_FLAG_ZERO],
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
static char buf[100];
|
||
+static double zero = 0.0;
|
||
int main ()
|
||
{
|
||
- if (sprintf (buf, "%010f", 1.0 / 0.0, 33, 44, 55) < 0
|
||
+ if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
|
||
|| (strcmp (buf, " inf") != 0
|
||
&& strcmp (buf, " infinity") != 0))
|
||
return 1;
|
||
@@ -889,8 +909,11 @@ changequote([,])dnl
|
||
|
||
dnl Test whether the *printf family of functions supports large precisions.
|
||
dnl On mingw, precisions larger than 512 are treated like 512, in integer,
|
||
-dnl floating-point or pointer output. On BeOS, precisions larger than 1044
|
||
-dnl crash the program.
|
||
+dnl floating-point or pointer output. On Solaris 10/x86, precisions larger
|
||
+dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC,
|
||
+dnl precisions larger than 510 in floating-point output yield wrong results.
|
||
+dnl On AIX 7.1, precisions larger than 998 in floating-point output yield
|
||
+dnl wrong results. On BeOS, precisions larger than 1044 crash the program.
|
||
dnl Result is gl_cv_func_printf_precision.
|
||
|
||
AC_DEFUN([gl_PRINTF_PRECISION],
|
||
@@ -907,20 +930,30 @@ AC_DEFUN([gl_PRINTF_PRECISION],
|
||
static char buf[5000];
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
#ifdef __BEOS__
|
||
/* On BeOS, this would crash and show a dialog box. Avoid the crash. */
|
||
return 1;
|
||
#endif
|
||
if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
|
||
- return 1;
|
||
- return 0;
|
||
+ result |= 1;
|
||
+ if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5)
|
||
+ result |= 2;
|
||
+ if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5
|
||
+ || buf[0] != '1')
|
||
+ result |= 4;
|
||
+ if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5
|
||
+ || buf[0] != '1')
|
||
+ result |= 4;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_printf_precision=yes],
|
||
[gl_cv_func_printf_precision=no],
|
||
[
|
||
changequote(,)dnl
|
||
case "$host_os" in
|
||
- # Guess no only on native Win32 and BeOS systems.
|
||
+ # Guess no only on Solaris, native Windows, and BeOS systems.
|
||
+ solaris*) gl_cv_func_printf_precision="guessing no" ;;
|
||
mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;;
|
||
beos*) gl_cv_func_printf_precision="guessing no" ;;
|
||
*) gl_cv_func_printf_precision="guessing yes" ;;
|
||
@@ -995,8 +1028,9 @@ int main()
|
||
changequote([,])dnl
|
||
])])
|
||
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
|
||
- (./conftest
|
||
+ (./conftest 2>&AS_MESSAGE_LOG_FD
|
||
result=$?
|
||
+ _AS_ECHO_LOG([\$? = $result])
|
||
if test $result != 0 && test $result != 77; then result=1; fi
|
||
exit $result
|
||
) >/dev/null 2>/dev/null
|
||
@@ -1010,7 +1044,7 @@ changequote([,])dnl
|
||
fi
|
||
rm -fr conftest*
|
||
else
|
||
- dnl A universal build on Apple MacOS X platforms.
|
||
+ dnl A universal build on Apple Mac OS X platforms.
|
||
dnl The result would be 'no' in 32-bit mode and 'yes' in 64-bit mode.
|
||
dnl But we need a configuration result that is valid in both modes.
|
||
gl_cv_func_printf_enomem="guessing no"
|
||
@@ -1063,6 +1097,7 @@ AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99],
|
||
[
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
+ AC_REQUIRE([gl_SNPRINTF_PRESENCE])
|
||
AC_CACHE_CHECK([whether snprintf truncates the result as in C99],
|
||
[gl_cv_func_snprintf_truncation_c99],
|
||
[
|
||
@@ -1070,11 +1105,25 @@ AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99],
|
||
[AC_LANG_SOURCE([[
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
+#if HAVE_SNPRINTF
|
||
+# define my_snprintf snprintf
|
||
+#else
|
||
+# include <stdarg.h>
|
||
+static int my_snprintf (char *buf, int size, const char *format, ...)
|
||
+{
|
||
+ va_list args;
|
||
+ int ret;
|
||
+ va_start (args, format);
|
||
+ ret = vsnprintf (buf, size, format, args);
|
||
+ va_end (args);
|
||
+ return ret;
|
||
+}
|
||
+#endif
|
||
static char buf[100];
|
||
int main ()
|
||
{
|
||
strcpy (buf, "ABCDEF");
|
||
- snprintf (buf, 3, "%d %d", 4567, 89);
|
||
+ my_snprintf (buf, 3, "%d %d", 4567, 89);
|
||
if (memcmp (buf, "45\0DEF", 6) != 0)
|
||
return 1;
|
||
return 0;
|
||
@@ -1089,7 +1138,7 @@ changequote(,)dnl
|
||
# Guess yes on FreeBSD >= 5.
|
||
freebsd[1-4]*) gl_cv_func_snprintf_truncation_c99="guessing no";;
|
||
freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
|
||
- # Guess yes on MacOS X >= 10.3.
|
||
+ # Guess yes on Mac OS X >= 10.3.
|
||
darwin[1-6].*) gl_cv_func_snprintf_truncation_c99="guessing no";;
|
||
darwin*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
|
||
# Guess yes on OpenBSD >= 3.9.
|
||
@@ -1097,7 +1146,8 @@ changequote(,)dnl
|
||
gl_cv_func_snprintf_truncation_c99="guessing no";;
|
||
openbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
|
||
# Guess yes on Solaris >= 2.6.
|
||
- solaris2.[0-5]*) gl_cv_func_snprintf_truncation_c99="guessing no";;
|
||
+ solaris2.[0-5] | solaris2.[0-5].*)
|
||
+ gl_cv_func_snprintf_truncation_c99="guessing no";;
|
||
solaris*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
|
||
# Guess yes on AIX >= 4.
|
||
aix[1-3]*) gl_cv_func_snprintf_truncation_c99="guessing no";;
|
||
@@ -1143,6 +1193,7 @@ AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99],
|
||
[
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
+ AC_REQUIRE([gl_SNPRINTF_PRESENCE])
|
||
AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
|
||
[gl_cv_func_snprintf_retval_c99],
|
||
[
|
||
@@ -1150,12 +1201,30 @@ AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99],
|
||
[AC_LANG_SOURCE([[
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
+#if HAVE_SNPRINTF
|
||
+# define my_snprintf snprintf
|
||
+#else
|
||
+# include <stdarg.h>
|
||
+static int my_snprintf (char *buf, int size, const char *format, ...)
|
||
+{
|
||
+ va_list args;
|
||
+ int ret;
|
||
+ va_start (args, format);
|
||
+ ret = vsnprintf (buf, size, format, args);
|
||
+ va_end (args);
|
||
+ return ret;
|
||
+}
|
||
+#endif
|
||
static char buf[100];
|
||
int main ()
|
||
{
|
||
strcpy (buf, "ABCDEF");
|
||
- if (snprintf (buf, 3, "%d %d", 4567, 89) != 7)
|
||
+ if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7)
|
||
return 1;
|
||
+ if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7)
|
||
+ return 2;
|
||
+ if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7)
|
||
+ return 3;
|
||
return 0;
|
||
}]])],
|
||
[gl_cv_func_snprintf_retval_c99=yes],
|
||
@@ -1168,16 +1237,16 @@ changequote(,)dnl
|
||
# Guess yes on FreeBSD >= 5.
|
||
freebsd[1-4]*) gl_cv_func_snprintf_retval_c99="guessing no";;
|
||
freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
|
||
- # Guess yes on MacOS X >= 10.3.
|
||
+ # Guess yes on Mac OS X >= 10.3.
|
||
darwin[1-6].*) gl_cv_func_snprintf_retval_c99="guessing no";;
|
||
darwin*) gl_cv_func_snprintf_retval_c99="guessing yes";;
|
||
# Guess yes on OpenBSD >= 3.9.
|
||
openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
|
||
gl_cv_func_snprintf_retval_c99="guessing no";;
|
||
openbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
|
||
- # Guess yes on Solaris >= 2.6.
|
||
- solaris2.[0-5]*) gl_cv_func_snprintf_retval_c99="guessing no";;
|
||
- solaris*) gl_cv_func_snprintf_retval_c99="guessing yes";;
|
||
+ # Guess yes on Solaris >= 2.10.
|
||
+ solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
|
||
+ solaris*) gl_cv_func_printf_sizes_c99="guessing no";;
|
||
# Guess yes on AIX >= 4.
|
||
aix[1-3]*) gl_cv_func_snprintf_retval_c99="guessing no";;
|
||
aix*) gl_cv_func_snprintf_retval_c99="guessing yes";;
|
||
@@ -1203,6 +1272,7 @@ AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
|
||
[
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
+ AC_REQUIRE([gl_SNPRINTF_PRESENCE])
|
||
AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive],
|
||
[gl_cv_func_snprintf_directive_n],
|
||
[
|
||
@@ -1210,6 +1280,20 @@ AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
|
||
[AC_LANG_SOURCE([[
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
+#if HAVE_SNPRINTF
|
||
+# define my_snprintf snprintf
|
||
+#else
|
||
+# include <stdarg.h>
|
||
+static int my_snprintf (char *buf, int size, const char *format, ...)
|
||
+{
|
||
+ va_list args;
|
||
+ int ret;
|
||
+ va_start (args, format);
|
||
+ ret = vsnprintf (buf, size, format, args);
|
||
+ va_end (args);
|
||
+ return ret;
|
||
+}
|
||
+#endif
|
||
static char fmtstring[10];
|
||
static char buf[100];
|
||
int main ()
|
||
@@ -1219,7 +1303,7 @@ int main ()
|
||
support %n in format strings in read-only memory but not in writable
|
||
memory. */
|
||
strcpy (fmtstring, "%d %n");
|
||
- snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
|
||
+ my_snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
|
||
if (count != 6)
|
||
return 1;
|
||
return 0;
|
||
@@ -1234,11 +1318,12 @@ changequote(,)dnl
|
||
# Guess yes on FreeBSD >= 5.
|
||
freebsd[1-4]*) gl_cv_func_snprintf_directive_n="guessing no";;
|
||
freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
|
||
- # Guess yes on MacOS X >= 10.3.
|
||
+ # Guess yes on Mac OS X >= 10.3.
|
||
darwin[1-6].*) gl_cv_func_snprintf_directive_n="guessing no";;
|
||
darwin*) gl_cv_func_snprintf_directive_n="guessing yes";;
|
||
# Guess yes on Solaris >= 2.6.
|
||
- solaris2.[0-5]*) gl_cv_func_snprintf_directive_n="guessing no";;
|
||
+ solaris2.[0-5] | solaris2.[0-5].*)
|
||
+ gl_cv_func_snprintf_directive_n="guessing no";;
|
||
solaris*) gl_cv_func_snprintf_directive_n="guessing yes";;
|
||
# Guess yes on AIX >= 4.
|
||
aix[1-3]*) gl_cv_func_snprintf_directive_n="guessing no";;
|
||
@@ -1270,16 +1355,31 @@ dnl Result is gl_cv_func_snprintf_size1.
|
||
AC_DEFUN([gl_SNPRINTF_SIZE1],
|
||
[
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
+ AC_REQUIRE([gl_SNPRINTF_PRESENCE])
|
||
AC_CACHE_CHECK([whether snprintf respects a size of 1],
|
||
[gl_cv_func_snprintf_size1],
|
||
[
|
||
AC_RUN_IFELSE(
|
||
[AC_LANG_SOURCE([[
|
||
#include <stdio.h>
|
||
+#if HAVE_SNPRINTF
|
||
+# define my_snprintf snprintf
|
||
+#else
|
||
+# include <stdarg.h>
|
||
+static int my_snprintf (char *buf, int size, const char *format, ...)
|
||
+{
|
||
+ va_list args;
|
||
+ int ret;
|
||
+ va_start (args, format);
|
||
+ ret = vsnprintf (buf, size, format, args);
|
||
+ va_end (args);
|
||
+ return ret;
|
||
+}
|
||
+#endif
|
||
int main()
|
||
{
|
||
static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
|
||
- snprintf (buf, 1, "%d", 12345);
|
||
+ my_snprintf (buf, 1, "%d", 12345);
|
||
return buf[1] != 'E';
|
||
}]])],
|
||
[gl_cv_func_snprintf_size1=yes],
|
||
@@ -1360,13 +1460,14 @@ changequote(,)dnl
|
||
# Guess yes on FreeBSD >= 5.
|
||
freebsd[1-4]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
|
||
freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
|
||
- # Guess yes on MacOS X >= 10.3.
|
||
+ # Guess yes on Mac OS X >= 10.3.
|
||
darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
|
||
darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
|
||
# Guess yes on Cygwin.
|
||
cygwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
|
||
# Guess yes on Solaris >= 2.6.
|
||
- solaris2.[0-5]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
|
||
+ solaris2.[0-5] | solaris2.[0-5].*)
|
||
+ gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
|
||
solaris*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
|
||
# Guess yes on AIX >= 4.
|
||
aix[1-3]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
|
||
@@ -1439,24 +1540,31 @@ dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||
dnl glibc 2.5 . . . . . . . . . . . . . . . . . . . .
|
||
dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . . . .
|
||
dnl FreeBSD 5.4, 6.1 . . . . # . . . . . . # . # . . . . . .
|
||
-dnl MacOS X 10.3.9 . . . . # . . . . . . # . # . . . . . .
|
||
+dnl Mac OS X 10.5.8 . . . # # . . . . . . # . . . . . . . .
|
||
+dnl Mac OS X 10.3.9 . . . . # . . . . . . # . # . . . . . .
|
||
dnl OpenBSD 3.9, 4.0 . . # # # # . # . # . # . # . . . . . .
|
||
dnl Cygwin 1.7.0 (2009) . . . # . . . ? . . . . . ? . . . . . .
|
||
dnl Cygwin 1.5.25 (2008) . . . # # . . # . . . . . # . . . . . .
|
||
dnl Cygwin 1.5.19 (2006) # . . # # # . # . # . # # # . . . . . .
|
||
-dnl Solaris 10 . . # # # . . # . . . # . . . . . . . .
|
||
-dnl Solaris 2.6 ... 9 # . # # # # . # . . . # . . . . . . . .
|
||
+dnl Solaris 11 2011-11 . . # # # . . # . . . # . . . . . . . .
|
||
+dnl Solaris 10 . . # # # . . # . . . # # . . . . . . .
|
||
+dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . .
|
||
dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # #
|
||
-dnl AIX 5.2, 7.1 . . # # # . . . . . . # . . . . . . . .
|
||
-dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . . . . .
|
||
+dnl AIX 7.1 . . # # # . . . . . . # # . . . . . . .
|
||
+dnl AIX 5.2 . . # # # . . . . . . # . . . . . . . .
|
||
+dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . # . . .
|
||
dnl HP-UX 11.31 . . . . # . . . . . . # . . . . # # . .
|
||
dnl HP-UX 11.{00,11,23} # . . . # # . . . . . # . . . . # # . #
|
||
dnl HP-UX 10.20 # . # . # # . ? . . # # . . . . # # ? #
|
||
dnl IRIX 6.5 # . # # # # . # . . . # . . . . # . . .
|
||
dnl OSF/1 5.1 # . # # # # . . . . . # . . . . # . . #
|
||
dnl OSF/1 4.0d # . # # # # . . . . . # . . # # # # # #
|
||
+dnl NetBSD 5.0 . . . # # . . . . . . # . # . . . . . .
|
||
dnl NetBSD 4.0 . ? ? ? ? ? . ? . ? ? ? ? ? . . . ? ? ?
|
||
dnl NetBSD 3.0 . . . . # # . ? # # ? # . # . . . . . .
|
||
-dnl Haiku . . . # # # . # . . . . . ? . . . . . .
|
||
-dnl BeOS # # . # # # . ? # . ? . # ? . . . . . .
|
||
-dnl mingw # # # # # # . . # # . # # ? . # # # . .
|
||
+dnl Haiku . . . # # # . # . . . . . ? . . ? . . .
|
||
+dnl BeOS # # . # # # . ? # . ? . # ? . . ? . . .
|
||
+dnl old mingw / msvcrt # # # # # # . . # # . # # ? . # # # . .
|
||
+dnl MSVC 9 # # # # # # # . # # . # # ? # # # # . .
|
||
+dnl mingw 2009-2011 . # . # . . . . # # . . . ? . . . . . .
|
||
+dnl mingw-w64 2011 # # # # # # . . # # . # # ? . # # # . .
|
||
diff --git a/m4/progtest.m4 b/m4/progtest.m4
|
||
index 9ffa5c0..7b39123 100644
|
||
--- a/m4/progtest.m4
|
||
+++ b/m4/progtest.m4
|
||
@@ -1,5 +1,5 @@
|
||
# progtest.m4 serial 7 (gettext-0.18.2)
|
||
-dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 1996-2003, 2005, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/rawmemchr.m4 b/m4/rawmemchr.m4
|
||
index 2a25a49..8c50054 100644
|
||
--- a/m4/rawmemchr.m4
|
||
+++ b/m4/rawmemchr.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# rawmemchr.m4 serial 1
|
||
-dnl Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+# rawmemchr.m4 serial 2
|
||
+dnl Copyright (C) 2003, 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -10,10 +10,9 @@ AC_DEFUN([gl_FUNC_RAWMEMCHR],
|
||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||
|
||
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
|
||
- AC_REPLACE_FUNCS([rawmemchr])
|
||
+ AC_CHECK_FUNCS([rawmemchr])
|
||
if test $ac_cv_func_rawmemchr = no; then
|
||
HAVE_RAWMEMCHR=0
|
||
- gl_PREREQ_RAWMEMCHR
|
||
fi
|
||
])
|
||
|
||
diff --git a/m4/realloc.m4 b/m4/realloc.m4
|
||
index 01c1234..d477fb4 100644
|
||
--- a/m4/realloc.m4
|
||
+++ b/m4/realloc.m4
|
||
@@ -1,9 +1,47 @@
|
||
-# realloc.m4 serial 11
|
||
-dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+# realloc.m4 serial 13
|
||
+dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
+m4_version_prereq([2.70], [] ,[
|
||
+
|
||
+# This is taken from the following Autoconf patch:
|
||
+# http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9
|
||
+AC_DEFUN([_AC_FUNC_REALLOC_IF],
|
||
+[
|
||
+ AC_REQUIRE([AC_HEADER_STDC])dnl
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
|
||
+ AC_CHECK_HEADERS([stdlib.h])
|
||
+ AC_CACHE_CHECK([for GNU libc compatible realloc],
|
||
+ [ac_cv_func_realloc_0_nonnull],
|
||
+ [AC_RUN_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H
|
||
+ # include <stdlib.h>
|
||
+ #else
|
||
+ char *realloc ();
|
||
+ #endif
|
||
+ ]],
|
||
+ [[return ! realloc (0, 0);]])
|
||
+ ],
|
||
+ [ac_cv_func_realloc_0_nonnull=yes],
|
||
+ [ac_cv_func_realloc_0_nonnull=no],
|
||
+ [case "$host_os" in
|
||
+ # Guess yes on platforms where we know the result.
|
||
+ *-gnu* | freebsd* | netbsd* | openbsd* \
|
||
+ | hpux* | solaris* | cygwin* | mingw*)
|
||
+ ac_cv_func_realloc_0_nonnull=yes ;;
|
||
+ # If we don't know, assume the worst.
|
||
+ *) ac_cv_func_realloc_0_nonnull=no ;;
|
||
+ esac
|
||
+ ])
|
||
+ ])
|
||
+ AS_IF([test $ac_cv_func_realloc_0_nonnull = yes], [$1], [$2])
|
||
+])# AC_FUNC_REALLOC
|
||
+
|
||
+])
|
||
+
|
||
# gl_FUNC_REALLOC_GNU
|
||
# -------------------
|
||
# Test whether 'realloc (0, 0)' is handled like in GNU libc, and replace
|
||
@@ -17,7 +55,7 @@ AC_DEFUN([gl_FUNC_REALLOC_GNU],
|
||
[Define to 1 if your system has a GNU libc compatible 'realloc'
|
||
function, and to 0 otherwise.])],
|
||
[AC_DEFINE([HAVE_REALLOC_GNU], [0])
|
||
- gl_REPLACE_REALLOC
|
||
+ REPLACE_REALLOC=1
|
||
])
|
||
])# gl_FUNC_REALLOC_GNU
|
||
|
||
@@ -33,12 +71,6 @@ AC_DEFUN([gl_FUNC_REALLOC_POSIX],
|
||
AC_DEFINE([HAVE_REALLOC_POSIX], [1],
|
||
[Define if the 'realloc' function is POSIX compliant.])
|
||
else
|
||
- gl_REPLACE_REALLOC
|
||
+ REPLACE_REALLOC=1
|
||
fi
|
||
])
|
||
-
|
||
-AC_DEFUN([gl_REPLACE_REALLOC],
|
||
-[
|
||
- AC_LIBOBJ([realloc])
|
||
- REPLACE_REALLOC=1
|
||
-])
|
||
diff --git a/m4/regex.m4 b/m4/regex.m4
|
||
index 38f1dd7..3334c10 100644
|
||
--- a/m4/regex.m4
|
||
+++ b/m4/regex.m4
|
||
@@ -1,7 +1,6 @@
|
||
-# serial 56
|
||
+# serial 64
|
||
|
||
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
|
||
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 1996-2001, 2003-2013 Free Software Foundation, Inc.
|
||
#
|
||
# This file is free software; the Free Software Foundation
|
||
# gives unlimited permission to copy and/or distribute it,
|
||
@@ -14,8 +13,6 @@ AC_PREREQ([2.50])
|
||
|
||
AC_DEFUN([gl_REGEX],
|
||
[
|
||
- AC_CHECK_HEADERS_ONCE([locale.h])
|
||
-
|
||
AC_ARG_WITH([included-regex],
|
||
[AS_HELP_STRING([--without-included-regex],
|
||
[don't compile regex; this is the default on systems
|
||
@@ -30,31 +27,41 @@ AC_DEFUN([gl_REGEX],
|
||
# following run test, then default to *not* using the included regex.c.
|
||
# If cross compiling, assume the test would fail and use the included
|
||
# regex.c.
|
||
+ AC_CHECK_DECLS_ONCE([alarm])
|
||
AC_CACHE_CHECK([for working re_compile_pattern],
|
||
[gl_cv_func_re_compile_pattern_working],
|
||
[AC_RUN_IFELSE(
|
||
[AC_LANG_PROGRAM(
|
||
- [AC_INCLUDES_DEFAULT[
|
||
- #if HAVE_LOCALE_H
|
||
+ [[#include <regex.h>
|
||
+
|
||
#include <locale.h>
|
||
- #endif
|
||
- #include <limits.h>
|
||
- #include <regex.h>
|
||
- ]],
|
||
- [[static struct re_pattern_buffer regex;
|
||
+ #include <limits.h>
|
||
+ #include <string.h>
|
||
+ #if HAVE_DECL_ALARM
|
||
+ # include <unistd.h>
|
||
+ # include <signal.h>
|
||
+ #endif
|
||
+ ]],
|
||
+ [[int result = 0;
|
||
+ static struct re_pattern_buffer regex;
|
||
unsigned char folded_chars[UCHAR_MAX + 1];
|
||
int i;
|
||
const char *s;
|
||
struct re_registers regs;
|
||
|
||
- #if HAVE_LOCALE_H
|
||
- /* http://sourceware.org/ml/libc-hacker/2006-09/msg00008.html
|
||
- This test needs valgrind to catch the bug on Debian
|
||
- GNU/Linux 3.1 x86, but it might catch the bug better
|
||
- on other platforms and it shouldn't hurt to try the
|
||
- test here. */
|
||
- if (setlocale (LC_ALL, "en_US.UTF-8"))
|
||
+#if HAVE_DECL_ALARM
|
||
+ /* Some builds of glibc go into an infinite loop on this test. */
|
||
+ signal (SIGALRM, SIG_DFL);
|
||
+ alarm (2);
|
||
+#endif
|
||
+ if (setlocale (LC_ALL, "en_US.UTF-8"))
|
||
+ {
|
||
{
|
||
+ /* http://sourceware.org/ml/libc-hacker/2006-09/msg00008.html
|
||
+ This test needs valgrind to catch the bug on Debian
|
||
+ GNU/Linux 3.1 x86, but it might catch the bug better
|
||
+ on other platforms and it shouldn't hurt to try the
|
||
+ test here. */
|
||
static char const pat[] = "insert into";
|
||
static char const data[] =
|
||
"\xFF\0\x12\xA2\xAA\xC4\xB1,K\x12\xC4\xB1*\xACK";
|
||
@@ -63,26 +70,46 @@ AC_DEFUN([gl_REGEX],
|
||
memset (®ex, 0, sizeof regex);
|
||
s = re_compile_pattern (pat, sizeof pat - 1, ®ex);
|
||
if (s)
|
||
- return 1;
|
||
- if (re_search (®ex, data, sizeof data - 1,
|
||
- 0, sizeof data - 1, ®s)
|
||
- != -1)
|
||
- return 1;
|
||
- if (! setlocale (LC_ALL, "C"))
|
||
- return 1;
|
||
+ result |= 1;
|
||
+ else if (re_search (®ex, data, sizeof data - 1,
|
||
+ 0, sizeof data - 1, ®s)
|
||
+ != -1)
|
||
+ result |= 1;
|
||
+ }
|
||
+
|
||
+ {
|
||
+ /* This test is from glibc bug 15078.
|
||
+ The test case is from Andreas Schwab in
|
||
+ <http://www.sourceware.org/ml/libc-alpha/2013-01/msg00967.html>.
|
||
+ */
|
||
+ static char const pat[] = "[^x]x";
|
||
+ static char const data[] =
|
||
+ "\xe1\x80\x80\xe1\x80\xbb\xe1\x80\xbd\xe1\x80\x94\xe1\x80"
|
||
+ "\xba\xe1\x80\xaf\xe1\x80\x95\xe1\x80\xbax";
|
||
+ re_set_syntax (0);
|
||
+ memset (®ex, 0, sizeof regex);
|
||
+ s = re_compile_pattern (pat, sizeof pat - 1, ®ex);
|
||
+ if (s)
|
||
+ result |= 1;
|
||
+ else if (re_search (®ex, data, sizeof data - 1,
|
||
+ 0, sizeof data - 1, 0)
|
||
+ != 21)
|
||
+ result |= 1;
|
||
}
|
||
- #endif
|
||
+
|
||
+ if (! setlocale (LC_ALL, "C"))
|
||
+ return 1;
|
||
+ }
|
||
|
||
/* This test is from glibc bug 3957, reported by Andrew Mackey. */
|
||
re_set_syntax (RE_SYNTAX_EGREP | RE_HAT_LISTS_NOT_NEWLINE);
|
||
memset (®ex, 0, sizeof regex);
|
||
s = re_compile_pattern ("a[^x]b", 6, ®ex);
|
||
if (s)
|
||
- return 1;
|
||
-
|
||
+ result |= 2;
|
||
/* This should fail, but succeeds for glibc-2.5. */
|
||
- if (re_search (®ex, "a\nb", 3, 0, 3, ®s) != -1)
|
||
- return 1;
|
||
+ else if (re_search (®ex, "a\nb", 3, 0, 3, ®s) != -1)
|
||
+ result |= 2;
|
||
|
||
/* This regular expression is from Spencer ere test number 75
|
||
in grep-2.3. */
|
||
@@ -94,7 +121,7 @@ AC_DEFUN([gl_REGEX],
|
||
s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, ®ex);
|
||
/* This should fail with _Invalid character class name_ error. */
|
||
if (!s)
|
||
- return 1;
|
||
+ result |= 4;
|
||
|
||
/* Ensure that [b-a] is diagnosed as invalid, when
|
||
using RE_NO_EMPTY_RANGES. */
|
||
@@ -102,34 +129,31 @@ AC_DEFUN([gl_REGEX],
|
||
memset (®ex, 0, sizeof regex);
|
||
s = re_compile_pattern ("a[b-a]", 6, ®ex);
|
||
if (s == 0)
|
||
- return 1;
|
||
+ result |= 8;
|
||
|
||
/* This should succeed, but does not for glibc-2.1.3. */
|
||
memset (®ex, 0, sizeof regex);
|
||
s = re_compile_pattern ("{1", 2, ®ex);
|
||
-
|
||
if (s)
|
||
- return 1;
|
||
+ result |= 8;
|
||
|
||
/* The following example is derived from a problem report
|
||
against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */
|
||
memset (®ex, 0, sizeof regex);
|
||
s = re_compile_pattern ("[an\371]*n", 7, ®ex);
|
||
if (s)
|
||
- return 1;
|
||
-
|
||
+ result |= 8;
|
||
/* This should match, but does not for glibc-2.2.1. */
|
||
- if (re_match (®ex, "an", 2, 0, ®s) != 2)
|
||
- return 1;
|
||
+ else if (re_match (®ex, "an", 2, 0, ®s) != 2)
|
||
+ result |= 8;
|
||
|
||
memset (®ex, 0, sizeof regex);
|
||
s = re_compile_pattern ("x", 1, ®ex);
|
||
if (s)
|
||
- return 1;
|
||
-
|
||
+ result |= 8;
|
||
/* glibc-2.2.93 does not work with a negative RANGE argument. */
|
||
- if (re_search (®ex, "wxy", 3, 2, -2, ®s) != 1)
|
||
- return 1;
|
||
+ else if (re_search (®ex, "wxy", 3, 2, -2, ®s) != 1)
|
||
+ result |= 8;
|
||
|
||
/* The version of regex.c in older versions of gnulib
|
||
ignored RE_ICASE. Detect that problem too. */
|
||
@@ -137,10 +161,9 @@ AC_DEFUN([gl_REGEX],
|
||
memset (®ex, 0, sizeof regex);
|
||
s = re_compile_pattern ("x", 1, ®ex);
|
||
if (s)
|
||
- return 1;
|
||
-
|
||
- if (re_search (®ex, "WXY", 3, 0, 3, ®s) < 0)
|
||
- return 1;
|
||
+ result |= 16;
|
||
+ else if (re_search (®ex, "WXY", 3, 0, 3, ®s) < 0)
|
||
+ result |= 16;
|
||
|
||
/* Catch a bug reported by Vin Shelton in
|
||
http://lists.gnu.org/archive/html/bug-coreutils/2007-06/msg00089.html
|
||
@@ -151,12 +174,12 @@ AC_DEFUN([gl_REGEX],
|
||
memset (®ex, 0, sizeof regex);
|
||
s = re_compile_pattern ("[[:alnum:]_-]\\\\+$", 16, ®ex);
|
||
if (s)
|
||
- return 1;
|
||
+ result |= 32;
|
||
|
||
/* REG_STARTEND was added to glibc on 2004-01-15.
|
||
Reject older versions. */
|
||
if (! REG_STARTEND)
|
||
- return 1;
|
||
+ result |= 64;
|
||
|
||
#if 0
|
||
/* It would be nice to reject hosts whose regoff_t values are too
|
||
@@ -167,10 +190,11 @@ AC_DEFUN([gl_REGEX],
|
||
when compiling --without-included-regex. */
|
||
if (sizeof (regoff_t) < sizeof (ptrdiff_t)
|
||
|| sizeof (regoff_t) < sizeof (ssize_t))
|
||
- return 1;
|
||
+ result |= 64;
|
||
#endif
|
||
|
||
- return 0;]])],
|
||
+ return result;
|
||
+ ]])],
|
||
[gl_cv_func_re_compile_pattern_working=yes],
|
||
[gl_cv_func_re_compile_pattern_working=no],
|
||
dnl When crosscompiling, assume it is not working.
|
||
@@ -185,6 +209,9 @@ AC_DEFUN([gl_REGEX],
|
||
esac
|
||
|
||
if test $ac_use_included_regex = yes; then
|
||
+ AC_DEFINE([_REGEX_INCLUDE_LIMITS_H], [1],
|
||
+ [Define if you want <regex.h> to include <limits.h>, so that it
|
||
+ consistently overrides <limits.h>'s RE_DUP_MAX.])
|
||
AC_DEFINE([_REGEX_LARGE_OFFSETS], [1],
|
||
[Define if you want regoff_t to be at least as wide POSIX requires.])
|
||
AC_DEFINE([re_syntax_options], [rpl_re_syntax_options],
|
||
@@ -217,8 +244,6 @@ AC_DEFUN([gl_REGEX],
|
||
[Define to rpl_regerror if the replacement should be used.])
|
||
AC_DEFINE([regfree], [rpl_regfree],
|
||
[Define to rpl_regfree if the replacement should be used.])
|
||
- AC_LIBOBJ([regex])
|
||
- gl_PREREQ_REGEX
|
||
fi
|
||
])
|
||
|
||
@@ -229,7 +254,8 @@ AC_DEFUN([gl_PREREQ_REGEX],
|
||
AC_REQUIRE([AC_C_INLINE])
|
||
AC_REQUIRE([AC_C_RESTRICT])
|
||
AC_REQUIRE([AC_TYPE_MBSTATE_T])
|
||
+ AC_REQUIRE([gl_EEMALLOC])
|
||
AC_CHECK_HEADERS([libintl.h])
|
||
AC_CHECK_FUNCS_ONCE([isblank iswctype wcscoll])
|
||
- AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
|
||
+ AC_CHECK_DECLS([isblank], [], [], [[#include <ctype.h>]])
|
||
])
|
||
diff --git a/m4/size_max.m4 b/m4/size_max.m4
|
||
index f3b1a9d..4b247ab 100644
|
||
--- a/m4/size_max.m4
|
||
+++ b/m4/size_max.m4
|
||
@@ -1,5 +1,5 @@
|
||
# size_max.m4 serial 10
|
||
-dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2003, 2005-2006, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/sleep.m4 b/m4/sleep.m4
|
||
index a5ec655..a27baa6 100644
|
||
--- a/m4/sleep.m4
|
||
+++ b/m4/sleep.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# sleep.m4 serial 3
|
||
-dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+# sleep.m4 serial 7
|
||
+dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -7,16 +7,16 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
AC_DEFUN([gl_FUNC_SLEEP],
|
||
[
|
||
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
dnl We expect to see the declaration of sleep() in a header file.
|
||
dnl Older versions of mingw have a sleep() function that is an alias to
|
||
dnl _sleep() in MSVCRT. It has a different signature than POSIX sleep():
|
||
dnl it takes the number of milliseconds as argument and returns void.
|
||
dnl mingw does not declare this function.
|
||
- AC_CHECK_DECLS([sleep], , , [#include <unistd.h>])
|
||
+ AC_CHECK_DECLS([sleep], , , [[#include <unistd.h>]])
|
||
AC_CHECK_FUNCS_ONCE([sleep])
|
||
if test $ac_cv_have_decl_sleep != yes; then
|
||
HAVE_SLEEP=0
|
||
- AC_LIBOBJ([sleep])
|
||
else
|
||
dnl Cygwin 1.5.x has a bug where sleep can't exceed 49.7 days.
|
||
AC_CACHE_CHECK([for working sleep], [gl_cv_func_sleep_works],
|
||
@@ -38,12 +38,25 @@ handle_alarm (int sig)
|
||
signal (SIGALRM, handle_alarm);
|
||
alarm (1);
|
||
remaining = sleep (pentecost);
|
||
- return !(pentecost - 10 < remaining && remaining <= pentecost);]])],
|
||
+ if (remaining > pentecost)
|
||
+ return 3;
|
||
+ if (remaining <= pentecost - 10)
|
||
+ return 4;
|
||
+ return 0;
|
||
+ ]])],
|
||
[gl_cv_func_sleep_works=yes], [gl_cv_func_sleep_works=no],
|
||
- [gl_cv_func_sleep_works="guessing no"])])
|
||
- if test "$gl_cv_func_sleep_works" != yes; then
|
||
- REPLACE_SLEEP=1
|
||
- AC_LIBOBJ([sleep])
|
||
- fi
|
||
+ [case "$host_os" in
|
||
+ # Guess yes on glibc systems.
|
||
+ *-gnu*) gl_cv_func_sleep_works="guessing yes" ;;
|
||
+ # If we don't know, assume the worst.
|
||
+ *) gl_cv_func_sleep_works="guessing no" ;;
|
||
+ esac
|
||
+ ])])
|
||
+ case "$gl_cv_func_sleep_works" in
|
||
+ *yes) ;;
|
||
+ *)
|
||
+ REPLACE_SLEEP=1
|
||
+ ;;
|
||
+ esac
|
||
fi
|
||
])
|
||
diff --git a/m4/ssize_t.m4 b/m4/ssize_t.m4
|
||
index e4c160b..6338134 100644
|
||
--- a/m4/ssize_t.m4
|
||
+++ b/m4/ssize_t.m4
|
||
@@ -1,5 +1,5 @@
|
||
# ssize_t.m4 serial 5 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2001-2003, 2006, 2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2001-2003, 2006, 2010-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/stdalign.m4 b/m4/stdalign.m4
|
||
new file mode 100644
|
||
index 0000000..a866ff6
|
||
--- /dev/null
|
||
+++ b/m4/stdalign.m4
|
||
@@ -0,0 +1,52 @@
|
||
+# Check for stdalign.h that conforms to C11.
|
||
+
|
||
+dnl Copyright 2011-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+# Prepare for substituting <stdalign.h> if it is not supported.
|
||
+
|
||
+AC_DEFUN([gl_STDALIGN_H],
|
||
+[
|
||
+ AC_CACHE_CHECK([for working stdalign.h],
|
||
+ [gl_cv_header_working_stdalign_h],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[#include <stdalign.h>
|
||
+ #include <stddef.h>
|
||
+
|
||
+ /* Test that alignof yields a result consistent with offsetof.
|
||
+ This catches GCC bug 52023
|
||
+ <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>. */
|
||
+ #ifdef __cplusplus
|
||
+ template <class t> struct alignof_helper { char a; t b; };
|
||
+ # define ao(type) offsetof (alignof_helper<type>, b)
|
||
+ #else
|
||
+ # define ao(type) offsetof (struct { char a; type b; }, b)
|
||
+ #endif
|
||
+ char test_double[ao (double) % _Alignof (double) == 0 ? 1 : -1];
|
||
+ char test_long[ao (long int) % _Alignof (long int) == 0 ? 1 : -1];
|
||
+ char test_alignof[alignof (double) == _Alignof (double) ? 1 : -1];
|
||
+
|
||
+ /* Test _Alignas only on platforms where gnulib can help. */
|
||
+ #if \
|
||
+ (__GNUC__ || __IBMC__ || __IBMCPP__ \
|
||
+ || 0x5110 <= __SUNPRO_C || 1300 <= _MSC_VER)
|
||
+ struct alignas_test { char c; char alignas (8) alignas_8; };
|
||
+ char test_alignas[offsetof (struct alignas_test, alignas_8) == 8
|
||
+ ? 1 : -1];
|
||
+ #endif
|
||
+ ]])],
|
||
+ [gl_cv_header_working_stdalign_h=yes],
|
||
+ [gl_cv_header_working_stdalign_h=no])])
|
||
+
|
||
+ if test $gl_cv_header_working_stdalign_h = yes; then
|
||
+ STDALIGN_H=''
|
||
+ else
|
||
+ STDALIGN_H='stdalign.h'
|
||
+ fi
|
||
+
|
||
+ AC_SUBST([STDALIGN_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_STDALIGN_H], [test -n "$STDALIGN_H"])
|
||
+])
|
||
diff --git a/m4/stdbool.m4 b/m4/stdbool.m4
|
||
index 1efe59e..80d5559 100644
|
||
--- a/m4/stdbool.m4
|
||
+++ b/m4/stdbool.m4
|
||
@@ -1,17 +1,17 @@
|
||
# Check for stdbool.h that conforms to C99.
|
||
|
||
-dnl Copyright (C) 2002-2006, 2009-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
-#serial 3
|
||
+#serial 5
|
||
|
||
# Prepare for substituting <stdbool.h> if it is not supported.
|
||
|
||
AC_DEFUN([AM_STDBOOL_H],
|
||
[
|
||
- AC_REQUIRE([AC_HEADER_STDBOOL])
|
||
+ AC_REQUIRE([AC_CHECK_HEADER_STDBOOL])
|
||
|
||
# Define two additional variables used in the Makefile substitution.
|
||
|
||
@@ -21,6 +21,7 @@ AC_DEFUN([AM_STDBOOL_H],
|
||
STDBOOL_H='stdbool.h'
|
||
fi
|
||
AC_SUBST([STDBOOL_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [test -n "$STDBOOL_H"])
|
||
|
||
if test "$ac_cv_type__Bool" = yes; then
|
||
HAVE__BOOL=1
|
||
@@ -33,11 +34,9 @@ AC_DEFUN([AM_STDBOOL_H],
|
||
# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
|
||
AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
|
||
|
||
-# This version of the macro is needed in autoconf <= 2.67. Autoconf has
|
||
-# it built in since 2.60, but we want the tweaks from the 2.68 version
|
||
-# to avoid rejecting xlc and clang due to relying on extensions.
|
||
+# This version of the macro is needed in autoconf <= 2.68.
|
||
|
||
-AC_DEFUN([AC_HEADER_STDBOOL],
|
||
+AC_DEFUN([AC_CHECK_HEADER_STDBOOL],
|
||
[AC_CACHE_CHECK([for stdbool.h that conforms to C99],
|
||
[ac_cv_header_stdbool_h],
|
||
[AC_COMPILE_IFELSE(
|
||
@@ -98,6 +97,4 @@ AC_DEFUN([AC_HEADER_STDBOOL],
|
||
[ac_cv_header_stdbool_h=yes],
|
||
[ac_cv_header_stdbool_h=no])])
|
||
AC_CHECK_TYPES([_Bool])
|
||
- if test $ac_cv_header_stdbool_h = yes; then
|
||
- AC_DEFINE([HAVE_STDBOOL_H], [1], [Define to 1 if stdbool.h conforms to C99.])
|
||
- fi])
|
||
+])
|
||
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
|
||
index c3ae569..5da8ab1 100644
|
||
--- a/m4/stddef_h.m4
|
||
+++ b/m4/stddef_h.m4
|
||
@@ -1,6 +1,6 @@
|
||
dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
|
||
-# stddef_h.m4 serial 2
|
||
-dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
|
||
+# stddef_h.m4 serial 4
|
||
+dnl Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -9,6 +9,7 @@ AC_DEFUN([gl_STDDEF_H],
|
||
[
|
||
AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
|
||
AC_REQUIRE([gt_TYPE_WCHAR_T])
|
||
+ STDDEF_H=
|
||
if test $gt_cv_c_wchar_t = no; then
|
||
HAVE_WCHAR_T=0
|
||
STDDEF_H=stddef.h
|
||
@@ -24,8 +25,10 @@ AC_DEFUN([gl_STDDEF_H],
|
||
REPLACE_NULL=1
|
||
STDDEF_H=stddef.h
|
||
fi
|
||
+ AC_SUBST([STDDEF_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"])
|
||
if test -n "$STDDEF_H"; then
|
||
- gl_CHECK_NEXT_HEADERS([stddef.h])
|
||
+ gl_NEXT_HEADERS([stddef.h])
|
||
fi
|
||
])
|
||
|
||
@@ -41,5 +44,4 @@ AC_DEFUN([gl_STDDEF_H_DEFAULTS],
|
||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||
REPLACE_NULL=0; AC_SUBST([REPLACE_NULL])
|
||
HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T])
|
||
- STDDEF_H=''; AC_SUBST([STDDEF_H])
|
||
])
|
||
diff --git a/m4/stdint.m4 b/m4/stdint.m4
|
||
index c5e813a..27cdcdb 100644
|
||
--- a/m4/stdint.m4
|
||
+++ b/m4/stdint.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# stdint.m4 serial 35
|
||
-dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
|
||
+# stdint.m4 serial 43
|
||
+dnl Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
dnl From Paul Eggert and Bruno Haible.
|
||
dnl Test whether <stdint.h> is supported or must be substituted.
|
||
|
||
-AC_DEFUN([gl_STDINT_H],
|
||
+AC_DEFUN_ONCE([gl_STDINT_H],
|
||
[
|
||
AC_PREREQ([2.59])dnl
|
||
|
||
@@ -27,6 +27,15 @@ AC_DEFUN([gl_STDINT_H],
|
||
fi
|
||
AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
|
||
|
||
+ dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does.
|
||
+ AC_CHECK_HEADERS_ONCE([wchar.h])
|
||
+ if test $ac_cv_header_wchar_h = yes; then
|
||
+ HAVE_WCHAR_H=1
|
||
+ else
|
||
+ HAVE_WCHAR_H=0
|
||
+ fi
|
||
+ AC_SUBST([HAVE_WCHAR_H])
|
||
+
|
||
dnl Check for <inttypes.h>.
|
||
dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
|
||
if test $ac_cv_header_inttypes_h = yes; then
|
||
@@ -60,8 +69,6 @@ AC_DEFUN([gl_STDINT_H],
|
||
[gl_cv_header_working_stdint_h=no
|
||
AC_COMPILE_IFELSE([
|
||
AC_LANG_PROGRAM([[
|
||
-#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
|
||
-#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
|
||
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
|
||
#include <stdint.h>
|
||
/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
|
||
@@ -145,9 +152,11 @@ uintmax_t j = UINTMAX_MAX;
|
||
|
||
#include <limits.h> /* for CHAR_BIT */
|
||
#define TYPE_MINIMUM(t) \
|
||
- ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
|
||
+ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
|
||
#define TYPE_MAXIMUM(t) \
|
||
- ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
|
||
+ ((t) ((t) 0 < (t) -1 \
|
||
+ ? (t) -1 \
|
||
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
|
||
struct s {
|
||
int check_PTRDIFF:
|
||
PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
|
||
@@ -208,8 +217,6 @@ struct s {
|
||
dnl This detects a bug on HP-UX 11.23/ia64.
|
||
AC_RUN_IFELSE([
|
||
AC_LANG_PROGRAM([[
|
||
-#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
|
||
-#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
|
||
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
|
||
#include <stdint.h>
|
||
]
|
||
@@ -259,7 +266,7 @@ static const char *macro_values[] =
|
||
|| strncmp (value, "((int)"/*)*/, 6) == 0
|
||
|| strncmp (value, "((signed short)"/*)*/, 15) == 0
|
||
|| strncmp (value, "((signed char)"/*)*/, 14) == 0)
|
||
- return 1;
|
||
+ return mv - macro_values + 1;
|
||
}
|
||
return 0;
|
||
]])],
|
||
@@ -290,14 +297,11 @@ static const char *macro_values[] =
|
||
fi
|
||
AC_SUBST([HAVE_SYS_BITYPES_H])
|
||
|
||
- dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
|
||
- dnl character support).
|
||
- AC_CHECK_HEADERS_ONCE([wchar.h])
|
||
-
|
||
gl_STDINT_TYPE_PROPERTIES
|
||
STDINT_H=stdint.h
|
||
fi
|
||
AC_SUBST([STDINT_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"])
|
||
])
|
||
|
||
dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
|
||
@@ -458,6 +462,14 @@ AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
|
||
fi
|
||
gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
|
||
[gl_STDINT_INCLUDES])
|
||
+
|
||
+ dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99
|
||
+ dnl requirement that wint_t is "unchanged by default argument promotions".
|
||
+ dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
|
||
+ dnl Set the variable BITSIZEOF_WINT_T accordingly.
|
||
+ if test $BITSIZEOF_WINT_T -lt 32; then
|
||
+ BITSIZEOF_WINT_T=32
|
||
+ fi
|
||
])
|
||
|
||
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
|
||
diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
|
||
index 670c0cc..511ab4e 100644
|
||
--- a/m4/stdint_h.m4
|
||
+++ b/m4/stdint_h.m4
|
||
@@ -1,5 +1,5 @@
|
||
# stdint_h.m4 serial 9
|
||
-dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 1997-2004, 2006, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
|
||
index d3edb42..ebade06 100644
|
||
--- a/m4/stdio_h.m4
|
||
+++ b/m4/stdio_h.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# stdio_h.m4 serial 31
|
||
-dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+# stdio_h.m4 serial 43
|
||
+dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -7,9 +7,32 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
AC_DEFUN([gl_STDIO_H],
|
||
[
|
||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||
- AC_REQUIRE([AC_C_INLINE])
|
||
- AC_REQUIRE([gl_ASM_SYMBOL_PREFIX])
|
||
- gl_CHECK_NEXT_HEADERS([stdio.h])
|
||
+ gl_NEXT_HEADERS([stdio.h])
|
||
+
|
||
+ dnl No need to create extra modules for these functions. Everyone who uses
|
||
+ dnl <stdio.h> likely needs them.
|
||
+ GNULIB_FSCANF=1
|
||
+ gl_MODULE_INDICATOR([fscanf])
|
||
+ GNULIB_SCANF=1
|
||
+ gl_MODULE_INDICATOR([scanf])
|
||
+ GNULIB_FGETC=1
|
||
+ GNULIB_GETC=1
|
||
+ GNULIB_GETCHAR=1
|
||
+ GNULIB_FGETS=1
|
||
+ GNULIB_FREAD=1
|
||
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
|
||
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
|
||
+ dnl also an optimization, to avoid performing a configure check whose result
|
||
+ dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
|
||
+ dnl or GNULIB_NONBLOCKING redundant.
|
||
+ m4_ifdef([gl_NONBLOCKING_IO], [
|
||
+ gl_NONBLOCKING_IO
|
||
+ if test $gl_cv_have_nonblocking != yes; then
|
||
+ REPLACE_STDIO_READ_FUNCS=1
|
||
+ AC_LIBOBJ([stdio-read])
|
||
+ fi
|
||
+ ])
|
||
+
|
||
dnl No need to create extra modules for these functions. Everyone who uses
|
||
dnl <stdio.h> likely needs them.
|
||
GNULIB_FPRINTF=1
|
||
@@ -22,9 +45,11 @@ AC_DEFUN([gl_STDIO_H],
|
||
GNULIB_FPUTS=1
|
||
GNULIB_PUTS=1
|
||
GNULIB_FWRITE=1
|
||
- dnl This ifdef is just an optimization, to avoid performing a configure
|
||
- dnl check whose result is not used. It does not make the test of
|
||
- dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant.
|
||
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
|
||
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
|
||
+ dnl also an optimization, to avoid performing a configure check whose result
|
||
+ dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or
|
||
+ dnl GNULIB_SIGPIPE redundant.
|
||
m4_ifdef([gl_SIGNAL_SIGPIPE], [
|
||
gl_SIGNAL_SIGPIPE
|
||
if test $gl_cv_header_signal_h_SIGPIPE != yes; then
|
||
@@ -32,13 +57,25 @@ AC_DEFUN([gl_STDIO_H],
|
||
AC_LIBOBJ([stdio-write])
|
||
fi
|
||
])
|
||
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
|
||
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
|
||
+ dnl also an optimization, to avoid performing a configure check whose result
|
||
+ dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
|
||
+ dnl or GNULIB_NONBLOCKING redundant.
|
||
+ m4_ifdef([gl_NONBLOCKING_IO], [
|
||
+ gl_NONBLOCKING_IO
|
||
+ if test $gl_cv_have_nonblocking != yes; then
|
||
+ REPLACE_STDIO_WRITE_FUNCS=1
|
||
+ AC_LIBOBJ([stdio-write])
|
||
+ fi
|
||
+ ])
|
||
|
||
dnl Check for declarations of anything we want to poison if the
|
||
dnl corresponding gnulib module is not in use, and which is not
|
||
dnl guaranteed by both C89 and C11.
|
||
gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
|
||
- ]], [dprintf fpurge fseeko ftello getdelim getline gets popen renameat
|
||
- snprintf tmpfile vdprintf vsnprintf])
|
||
+ ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
|
||
+ renameat snprintf tmpfile vdprintf vsnprintf])
|
||
])
|
||
|
||
AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
|
||
@@ -54,23 +91,31 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
|
||
[
|
||
GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
|
||
GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
|
||
+ GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN])
|
||
GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
|
||
+ GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC])
|
||
+ GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS])
|
||
GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN])
|
||
GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF])
|
||
GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
|
||
GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE])
|
||
GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC])
|
||
GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS])
|
||
+ GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD])
|
||
GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN])
|
||
+ GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF])
|
||
GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK])
|
||
GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO])
|
||
GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL])
|
||
GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO])
|
||
GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE])
|
||
+ GNULIB_GETC=0; AC_SUBST([GNULIB_GETC])
|
||
+ GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR])
|
||
GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
|
||
GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
|
||
GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
|
||
GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
|
||
+ GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE])
|
||
GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
|
||
GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
|
||
GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
|
||
@@ -81,11 +126,15 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
|
||
GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE])
|
||
GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME])
|
||
GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT])
|
||
+ GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF])
|
||
GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
|
||
GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
|
||
+ GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
|
||
GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
|
||
GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE])
|
||
GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF])
|
||
+ GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF])
|
||
+ GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF])
|
||
GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF])
|
||
GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF])
|
||
GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
|
||
@@ -95,6 +144,8 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
|
||
GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
|
||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||
HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE])
|
||
+ HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO])
|
||
+ HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO])
|
||
HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM])
|
||
HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE])
|
||
HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
|
||
@@ -103,11 +154,14 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
|
||
HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
|
||
HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO])
|
||
HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO])
|
||
+ HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE])
|
||
+ HAVE_POPEN=1; AC_SUBST([HAVE_POPEN])
|
||
HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT])
|
||
HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF])
|
||
HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF])
|
||
REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF])
|
||
REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE])
|
||
+ REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN])
|
||
REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH])
|
||
REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN])
|
||
REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
|
||
@@ -128,6 +182,7 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
|
||
REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT])
|
||
REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
|
||
REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF])
|
||
+ REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS])
|
||
REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
|
||
REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE])
|
||
REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF])
|
||
@@ -137,23 +192,3 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
|
||
REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
|
||
REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF])
|
||
])
|
||
-
|
||
-dnl Code shared by fseeko and ftello. Determine if large files are supported,
|
||
-dnl but stdin does not start as a large file by default.
|
||
-AC_DEFUN([gl_STDIN_LARGE_OFFSET],
|
||
- [
|
||
- AC_CACHE_CHECK([whether stdin defaults to large file offsets],
|
||
- [gl_cv_var_stdin_large_offset],
|
||
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
|
||
-[[#if defined __SL64 && defined __SCLE /* cygwin */
|
||
- /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
|
||
- fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and
|
||
- it is easier to do a version check than building a runtime test. */
|
||
-# include <cygwin/version.h>
|
||
-# if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
|
||
- choke me
|
||
-# endif
|
||
-#endif]])],
|
||
- [gl_cv_var_stdin_large_offset=yes],
|
||
- [gl_cv_var_stdin_large_offset=no])])
|
||
-])
|
||
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
|
||
index fc15019..2027ab3 100644
|
||
--- a/m4/stdlib_h.m4
|
||
+++ b/m4/stdlib_h.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# stdlib_h.m4 serial 30
|
||
-dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+# stdlib_h.m4 serial 42
|
||
+dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -7,21 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
AC_DEFUN([gl_STDLIB_H],
|
||
[
|
||
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
|
||
- gl_CHECK_NEXT_HEADERS([stdlib.h])
|
||
- AC_CHECK_HEADERS([random.h], [], [], [AC_INCLUDES_DEFAULT])
|
||
- if test $ac_cv_header_random_h = yes; then
|
||
- HAVE_RANDOM_H=1
|
||
- else
|
||
- HAVE_RANDOM_H=0
|
||
- fi
|
||
- AC_SUBST([HAVE_RANDOM_H])
|
||
- AC_CHECK_TYPES([struct random_data],
|
||
- [], [HAVE_STRUCT_RANDOM_DATA=0],
|
||
- [[#include <stdlib.h>
|
||
- #if HAVE_RANDOM_H
|
||
- # include <random.h>
|
||
- #endif
|
||
- ]])
|
||
+ gl_NEXT_HEADERS([stdlib.h])
|
||
|
||
dnl Check for declarations of anything we want to poison if the
|
||
dnl corresponding gnulib module is not in use, and which is not
|
||
@@ -33,10 +19,11 @@ AC_DEFUN([gl_STDLIB_H],
|
||
#if HAVE_RANDOM_H
|
||
# include <random.h>
|
||
#endif
|
||
- ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp
|
||
- mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r
|
||
- setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt
|
||
- unsetenv])
|
||
+ ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
|
||
+ initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps
|
||
+ posix_openpt ptsname ptsname_r random random_r realpath rpmatch
|
||
+ secure_getenv setenv setstate setstate_r srandom srandom_r
|
||
+ strtod strtoll strtoull unlockpt unsetenv])
|
||
])
|
||
|
||
AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
|
||
@@ -58,23 +45,30 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
|
||
GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT])
|
||
GNULIB_GRANTPT=0; AC_SUBST([GNULIB_GRANTPT])
|
||
GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX])
|
||
+ GNULIB_MBTOWC=0; AC_SUBST([GNULIB_MBTOWC])
|
||
GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP])
|
||
GNULIB_MKOSTEMP=0; AC_SUBST([GNULIB_MKOSTEMP])
|
||
GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS])
|
||
GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP])
|
||
GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS])
|
||
+ GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT])
|
||
GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME])
|
||
+ GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R])
|
||
GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV])
|
||
+ GNULIB_RANDOM=0; AC_SUBST([GNULIB_RANDOM])
|
||
GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R])
|
||
GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
|
||
GNULIB_REALPATH=0; AC_SUBST([GNULIB_REALPATH])
|
||
GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH])
|
||
+ GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV])
|
||
GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV])
|
||
GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD])
|
||
GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL])
|
||
GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL])
|
||
+ GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX])
|
||
GNULIB_UNLOCKPT=0; AC_SUBST([GNULIB_UNLOCKPT])
|
||
GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV])
|
||
+ GNULIB_WCTOMB=0; AC_SUBST([GNULIB_WCTOMB])
|
||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||
HAVE__EXIT=1; AC_SUBST([HAVE__EXIT])
|
||
HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL])
|
||
@@ -87,26 +81,37 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
|
||
HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS])
|
||
HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP])
|
||
HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS])
|
||
+ HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT])
|
||
HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME])
|
||
+ HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R])
|
||
+ HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM])
|
||
+ HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H])
|
||
HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R])
|
||
HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH])
|
||
HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH])
|
||
+ HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV])
|
||
HAVE_SETENV=1; AC_SUBST([HAVE_SETENV])
|
||
+ HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV])
|
||
HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD])
|
||
HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL])
|
||
HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL])
|
||
HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
|
||
HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H])
|
||
HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT])
|
||
- HAVE_UNSETENV=1; AC_SUBST([HAVE_UNSETENV])
|
||
+ HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV])
|
||
REPLACE_CALLOC=0; AC_SUBST([REPLACE_CALLOC])
|
||
REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
|
||
REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC])
|
||
+ REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC])
|
||
REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
|
||
+ REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME])
|
||
+ REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R])
|
||
REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
|
||
+ REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R])
|
||
REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC])
|
||
REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH])
|
||
REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV])
|
||
REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD])
|
||
REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV])
|
||
+ REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB])
|
||
])
|
||
diff --git a/m4/strcase.m4 b/m4/strcase.m4
|
||
index 33de423..22bf57c 100644
|
||
--- a/m4/strcase.m4
|
||
+++ b/m4/strcase.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# strcase.m4 serial 10
|
||
-dnl Copyright (C) 2002, 2005-2010 Free Software Foundation, Inc.
|
||
+# strcase.m4 serial 11
|
||
+dnl Copyright (C) 2002, 2005-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -13,19 +13,20 @@ AC_DEFUN([gl_STRCASE],
|
||
AC_DEFUN([gl_FUNC_STRCASECMP],
|
||
[
|
||
AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
|
||
- AC_REPLACE_FUNCS([strcasecmp])
|
||
+ AC_CHECK_FUNCS([strcasecmp])
|
||
if test $ac_cv_func_strcasecmp = no; then
|
||
HAVE_STRCASECMP=0
|
||
- gl_PREREQ_STRCASECMP
|
||
fi
|
||
])
|
||
|
||
AC_DEFUN([gl_FUNC_STRNCASECMP],
|
||
[
|
||
AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
|
||
- AC_REPLACE_FUNCS([strncasecmp])
|
||
- if test $ac_cv_func_strncasecmp = no; then
|
||
- gl_PREREQ_STRNCASECMP
|
||
+ AC_CHECK_FUNCS([strncasecmp])
|
||
+ if test $ac_cv_func_strncasecmp = yes; then
|
||
+ HAVE_STRNCASECMP=1
|
||
+ else
|
||
+ HAVE_STRNCASECMP=0
|
||
fi
|
||
AC_CHECK_DECLS([strncasecmp])
|
||
if test $ac_cv_have_decl_strncasecmp = no; then
|
||
diff --git a/m4/strchrnul.m4 b/m4/strchrnul.m4
|
||
index 0072e60..b59eda9 100644
|
||
--- a/m4/strchrnul.m4
|
||
+++ b/m4/strchrnul.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# strchrnul.m4 serial 7
|
||
-dnl Copyright (C) 2003, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+# strchrnul.m4 serial 9
|
||
+dnl Copyright (C) 2003, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -10,10 +10,39 @@ AC_DEFUN([gl_FUNC_STRCHRNUL],
|
||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||
|
||
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
|
||
- AC_REPLACE_FUNCS([strchrnul])
|
||
+ AC_CHECK_FUNCS([strchrnul])
|
||
if test $ac_cv_func_strchrnul = no; then
|
||
HAVE_STRCHRNUL=0
|
||
- gl_PREREQ_STRCHRNUL
|
||
+ else
|
||
+ AC_CACHE_CHECK([whether strchrnul works],
|
||
+ [gl_cv_func_strchrnul_works],
|
||
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
|
||
+#include <string.h> /* for strchrnul */
|
||
+]], [[const char *buf = "a";
|
||
+ return strchrnul (buf, 'b') != buf + 1;
|
||
+ ]])],
|
||
+ [gl_cv_func_strchrnul_works=yes],
|
||
+ [gl_cv_func_strchrnul_works=no],
|
||
+ [dnl Cygwin 1.7.9 introduced strchrnul, but it was broken until 1.7.10
|
||
+ AC_EGREP_CPP([Lucky user],
|
||
+ [
|
||
+#if defined __CYGWIN__
|
||
+ #include <cygwin/version.h>
|
||
+ #if CYGWIN_VERSION_DLL_COMBINED > CYGWIN_VERSION_DLL_MAKE_COMBINED (1007, 9)
|
||
+ Lucky user
|
||
+ #endif
|
||
+#else
|
||
+ Lucky user
|
||
+#endif
|
||
+ ],
|
||
+ [gl_cv_func_strchrnul_works="guessing yes"],
|
||
+ [gl_cv_func_strchrnul_works="guessing no"])
|
||
+ ])
|
||
+ ])
|
||
+ case "$gl_cv_func_strchrnul_works" in
|
||
+ *yes) ;;
|
||
+ *) REPLACE_STRCHRNUL=1 ;;
|
||
+ esac
|
||
fi
|
||
])
|
||
|
||
diff --git a/m4/strerror.m4 b/m4/strerror.m4
|
||
index 1649b24..3989844 100644
|
||
--- a/m4/strerror.m4
|
||
+++ b/m4/strerror.m4
|
||
@@ -1,68 +1,96 @@
|
||
-# strerror.m4 serial 9
|
||
-dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc.
|
||
+# strerror.m4 serial 17
|
||
+dnl Copyright (C) 2002, 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
AC_DEFUN([gl_FUNC_STRERROR],
|
||
[
|
||
- AC_REQUIRE([gl_FUNC_STRERROR_SEPARATE])
|
||
- if test $REPLACE_STRERROR = 1; then
|
||
- AC_LIBOBJ([strerror])
|
||
- AC_DEFINE_UNQUOTED([REPLACE_STRERROR], [$REPLACE_STRERROR],
|
||
- [Define this to 1 if strerror is broken.])
|
||
- fi
|
||
-])
|
||
-
|
||
-# Like gl_FUNC_STRERROR, except prepare for separate compilation (no AC_LIBOBJ).
|
||
-AC_DEFUN([gl_FUNC_STRERROR_SEPARATE],
|
||
-[
|
||
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
|
||
AC_REQUIRE([gl_HEADER_ERRNO_H])
|
||
- if test -z "$ERRNO_H"; then
|
||
+ AC_REQUIRE([gl_FUNC_STRERROR_0])
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
+ m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [
|
||
+ AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS])
|
||
+ ])
|
||
+ if test "$ERRNO_H:$REPLACE_STRERROR_0" = :0; then
|
||
AC_CACHE_CHECK([for working strerror function],
|
||
[gl_cv_func_working_strerror],
|
||
[AC_RUN_IFELSE(
|
||
[AC_LANG_PROGRAM(
|
||
[[#include <string.h>
|
||
]],
|
||
- [[return !*strerror (-2);]])],
|
||
+ [[if (!*strerror (-2)) return 1;]])],
|
||
[gl_cv_func_working_strerror=yes],
|
||
[gl_cv_func_working_strerror=no],
|
||
- [dnl Assume crossbuild works if it compiles.
|
||
- AC_COMPILE_IFELSE(
|
||
- [AC_LANG_PROGRAM(
|
||
- [[#include <string.h>
|
||
- ]],
|
||
- [[return !*strerror (-2);]])],
|
||
- [gl_cv_func_working_strerror=yes],
|
||
- [gl_cv_func_working_strerror=no])
|
||
- ])
|
||
+ [case "$host_os" in
|
||
+ # Guess yes on glibc systems.
|
||
+ *-gnu*) gl_cv_func_working_strerror="guessing yes" ;;
|
||
+ # If we don't know, assume the worst.
|
||
+ *) gl_cv_func_working_strerror="guessing no" ;;
|
||
+ esac
|
||
+ ])
|
||
+ ])
|
||
+ case "$gl_cv_func_working_strerror" in
|
||
+ *yes) ;;
|
||
+ *)
|
||
+ dnl The system's strerror() fails to return a string for out-of-range
|
||
+ dnl integers. Replace it.
|
||
+ REPLACE_STRERROR=1
|
||
+ ;;
|
||
+ esac
|
||
+ m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [
|
||
+ dnl If the system's strerror_r or __xpg_strerror_r clobbers strerror's
|
||
+ dnl buffer, we must replace strerror.
|
||
+ case "$gl_cv_func_strerror_r_works" in
|
||
+ *no) REPLACE_STRERROR=1 ;;
|
||
+ esac
|
||
])
|
||
- if test $gl_cv_func_working_strerror = no; then
|
||
- dnl The system's strerror() fails to return a string for out-of-range
|
||
- dnl integers. Replace it.
|
||
- REPLACE_STRERROR=1
|
||
- fi
|
||
else
|
||
dnl The system's strerror() cannot know about the new errno values we add
|
||
- dnl to <errno.h>. Replace it.
|
||
+ dnl to <errno.h>, or any fix for strerror(0). Replace it.
|
||
REPLACE_STRERROR=1
|
||
fi
|
||
- if test $REPLACE_STRERROR = 1; then
|
||
- gl_PREREQ_STRERROR
|
||
- fi
|
||
])
|
||
|
||
-# Prerequisites of lib/strerror.c.
|
||
-AC_DEFUN([gl_PREREQ_STRERROR], [
|
||
- AC_CHECK_DECLS([strerror])
|
||
- AC_CHECK_HEADERS_ONCE([sys/socket.h])
|
||
- if test $ac_cv_header_sys_socket_h != yes; then
|
||
- dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
|
||
- dnl the check for those headers unconditional; yet cygwin reports
|
||
- dnl that the headers are present but cannot be compiled (since on
|
||
- dnl cygwin, all socket information should come from sys/socket.h).
|
||
- AC_CHECK_HEADERS([winsock2.h])
|
||
- fi
|
||
+dnl Detect if strerror(0) passes (that is, does not set errno, and does not
|
||
+dnl return a string that matches strerror(-1)).
|
||
+AC_DEFUN([gl_FUNC_STRERROR_0],
|
||
+[
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
+ REPLACE_STRERROR_0=0
|
||
+ AC_CACHE_CHECK([whether strerror(0) succeeds],
|
||
+ [gl_cv_func_strerror_0_works],
|
||
+ [AC_RUN_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[#include <string.h>
|
||
+ #include <errno.h>
|
||
+ ]],
|
||
+ [[int result = 0;
|
||
+ char *str;
|
||
+ errno = 0;
|
||
+ str = strerror (0);
|
||
+ if (!*str) result |= 1;
|
||
+ if (errno) result |= 2;
|
||
+ if (strstr (str, "nknown") || strstr (str, "ndefined"))
|
||
+ result |= 4;
|
||
+ return result;]])],
|
||
+ [gl_cv_func_strerror_0_works=yes],
|
||
+ [gl_cv_func_strerror_0_works=no],
|
||
+ [case "$host_os" in
|
||
+ # Guess yes on glibc systems.
|
||
+ *-gnu*) gl_cv_func_strerror_0_works="guessing yes" ;;
|
||
+ # If we don't know, assume the worst.
|
||
+ *) gl_cv_func_strerror_0_works="guessing no" ;;
|
||
+ esac
|
||
+ ])
|
||
+ ])
|
||
+ case "$gl_cv_func_strerror_0_works" in
|
||
+ *yes) ;;
|
||
+ *)
|
||
+ REPLACE_STRERROR_0=1
|
||
+ AC_DEFINE([REPLACE_STRERROR_0], [1], [Define to 1 if strerror(0)
|
||
+ does not return a message implying success.])
|
||
+ ;;
|
||
+ esac
|
||
])
|
||
diff --git a/m4/string_h.m4 b/m4/string_h.m4
|
||
index 1977aec..cc5fbbb 100644
|
||
--- a/m4/string_h.m4
|
||
+++ b/m4/string_h.m4
|
||
@@ -1,11 +1,11 @@
|
||
# Configure a GNU-like replacement for <string.h>.
|
||
|
||
-# Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
# This file is free software; the Free Software Foundation
|
||
# gives unlimited permission to copy and/or distribute it,
|
||
# with or without modifications, as long as this notice is preserved.
|
||
|
||
-# serial 17
|
||
+# serial 21
|
||
|
||
# Written by Paul Eggert.
|
||
|
||
@@ -20,16 +20,16 @@ AC_DEFUN([gl_HEADER_STRING_H_BODY],
|
||
[
|
||
AC_REQUIRE([AC_C_RESTRICT])
|
||
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
|
||
- gl_CHECK_NEXT_HEADERS([string.h])
|
||
+ gl_NEXT_HEADERS([string.h])
|
||
|
||
dnl Check for declarations of anything we want to poison if the
|
||
dnl corresponding gnulib module is not in use, and which is not
|
||
dnl guaranteed by C89.
|
||
gl_WARN_ON_USE_PREPARE([[#include <string.h>
|
||
]],
|
||
- [memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup
|
||
- strncat strndup strnlen strpbrk strsep strcasestr strtok_r strsignal
|
||
- strverscmp])
|
||
+ [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul
|
||
+ strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r
|
||
+ strerror_r strsignal strverscmp])
|
||
])
|
||
|
||
AC_DEFUN([gl_STRING_MODULE_INDICATOR],
|
||
@@ -43,6 +43,8 @@ AC_DEFUN([gl_STRING_MODULE_INDICATOR],
|
||
|
||
AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
|
||
[
|
||
+ GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL])
|
||
+ GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL])
|
||
GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR])
|
||
GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM])
|
||
GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY])
|
||
@@ -75,10 +77,13 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
|
||
GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP])
|
||
GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R])
|
||
GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR])
|
||
+ GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R])
|
||
GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL])
|
||
GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP])
|
||
HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN])
|
||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||
+ HAVE_FFSL=1; AC_SUBST([HAVE_FFSL])
|
||
+ HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL])
|
||
HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR])
|
||
HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM])
|
||
HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY])
|
||
@@ -94,6 +99,7 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
|
||
HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP])
|
||
HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR])
|
||
HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R])
|
||
+ HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R])
|
||
HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL])
|
||
HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP])
|
||
REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR])
|
||
@@ -102,7 +108,9 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
|
||
REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP])
|
||
REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR])
|
||
REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR])
|
||
+ REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL])
|
||
REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR])
|
||
+ REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R])
|
||
REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT])
|
||
REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP])
|
||
REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN])
|
||
diff --git a/m4/strings_h.m4 b/m4/strings_h.m4
|
||
index 4374c7c..76ef242 100644
|
||
--- a/m4/strings_h.m4
|
||
+++ b/m4/strings_h.m4
|
||
@@ -1,7 +1,7 @@
|
||
-# Configure a replacement for <string.h>.
|
||
-# serial 3
|
||
+# Configure a replacement for <strings.h>.
|
||
+# serial 6
|
||
|
||
-# Copyright (C) 2007, 2009-2010 Free Software Foundation, Inc.
|
||
+# Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
|
||
# This file is free software; the Free Software Foundation
|
||
# gives unlimited permission to copy and/or distribute it,
|
||
# with or without modifications, as long as this notice is preserved.
|
||
@@ -16,12 +16,23 @@ AC_DEFUN([gl_HEADER_STRINGS_H],
|
||
AC_DEFUN([gl_HEADER_STRINGS_H_BODY],
|
||
[
|
||
AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
|
||
+
|
||
gl_CHECK_NEXT_HEADERS([strings.h])
|
||
+ if test $ac_cv_header_strings_h = yes; then
|
||
+ HAVE_STRINGS_H=1
|
||
+ else
|
||
+ HAVE_STRINGS_H=0
|
||
+ fi
|
||
+ AC_SUBST([HAVE_STRINGS_H])
|
||
|
||
dnl Check for declarations of anything we want to poison if the
|
||
dnl corresponding gnulib module is not in use.
|
||
- gl_WARN_ON_USE_PREPARE([[#include <strings.h>
|
||
- ]], [strcasecmp strncasecmp])
|
||
+ gl_WARN_ON_USE_PREPARE([[
|
||
+ /* Minix 3.1.8 has a bug: <sys/types.h> must be included before
|
||
+ <strings.h>. */
|
||
+ #include <sys/types.h>
|
||
+ #include <strings.h>
|
||
+ ]], [ffs strcasecmp strncasecmp])
|
||
])
|
||
|
||
AC_DEFUN([gl_STRINGS_MODULE_INDICATOR],
|
||
@@ -33,7 +44,9 @@ AC_DEFUN([gl_STRINGS_MODULE_INDICATOR],
|
||
|
||
AC_DEFUN([gl_HEADER_STRINGS_H_DEFAULTS],
|
||
[
|
||
+ GNULIB_FFS=0; AC_SUBST([GNULIB_FFS])
|
||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||
+ HAVE_FFS=1; AC_SUBST([HAVE_FFS])
|
||
HAVE_STRCASECMP=1; AC_SUBST([HAVE_STRCASECMP])
|
||
HAVE_DECL_STRNCASECMP=1; AC_SUBST([HAVE_DECL_STRNCASECMP])
|
||
])
|
||
diff --git a/m4/strndup.m4 b/m4/strndup.m4
|
||
index b3567d8..a1f8274 100644
|
||
--- a/m4/strndup.m4
|
||
+++ b/m4/strndup.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# strndup.m4 serial 18
|
||
-dnl Copyright (C) 2002-2003, 2005-2010 Free Software Foundation, Inc.
|
||
+# strndup.m4 serial 21
|
||
+dnl Copyright (C) 2002-2003, 2005-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -18,13 +18,18 @@ AC_DEFUN([gl_FUNC_STRNDUP],
|
||
fi
|
||
|
||
if test $ac_cv_func_strndup = yes; then
|
||
+ HAVE_STRNDUP=1
|
||
# AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'.
|
||
AC_CACHE_CHECK([for working strndup], [gl_cv_func_strndup_works],
|
||
[AC_RUN_IFELSE([
|
||
AC_LANG_PROGRAM([[#include <string.h>
|
||
#include <stdlib.h>]], [[
|
||
-#ifndef HAVE_DECL_STRNDUP
|
||
- extern char *strndup (const char *, size_t);
|
||
+#if !HAVE_DECL_STRNDUP
|
||
+ extern
|
||
+ #ifdef __cplusplus
|
||
+ "C"
|
||
+ #endif
|
||
+ char *strndup (const char *, size_t);
|
||
#endif
|
||
char *s;
|
||
s = strndup ("some longer string", 15);
|
||
@@ -42,12 +47,9 @@ changequote(,)dnl
|
||
changequote([,])dnl
|
||
])])
|
||
case $gl_cv_func_strndup_works in
|
||
- *no)
|
||
- REPLACE_STRNDUP=1
|
||
- AC_LIBOBJ([strndup])
|
||
- ;;
|
||
+ *no) REPLACE_STRNDUP=1 ;;
|
||
esac
|
||
else
|
||
- AC_LIBOBJ([strndup])
|
||
+ HAVE_STRNDUP=0
|
||
fi
|
||
])
|
||
diff --git a/m4/strnlen.m4 b/m4/strnlen.m4
|
||
index 52bb838..eae82b7 100644
|
||
--- a/m4/strnlen.m4
|
||
+++ b/m4/strnlen.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# strnlen.m4 serial 12
|
||
-dnl Copyright (C) 2002-2003, 2005-2007, 2009-2010 Free Software Foundation,
|
||
+# strnlen.m4 serial 13
|
||
+dnl Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software Foundation,
|
||
dnl Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
@@ -16,16 +16,14 @@ AC_DEFUN([gl_FUNC_STRNLEN],
|
||
if test $ac_cv_have_decl_strnlen = no; then
|
||
HAVE_DECL_STRNLEN=0
|
||
else
|
||
- AC_FUNC_STRNLEN
|
||
+ m4_pushdef([AC_LIBOBJ], [:])
|
||
dnl Note: AC_FUNC_STRNLEN does AC_LIBOBJ([strnlen]).
|
||
+ AC_FUNC_STRNLEN
|
||
+ m4_popdef([AC_LIBOBJ])
|
||
if test $ac_cv_func_strnlen_working = no; then
|
||
REPLACE_STRNLEN=1
|
||
fi
|
||
fi
|
||
- if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
|
||
- AC_LIBOBJ([strnlen])
|
||
- gl_PREREQ_STRNLEN
|
||
- fi
|
||
])
|
||
|
||
# Prerequisites of lib/strnlen.c.
|
||
diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4
|
||
new file mode 100644
|
||
index 0000000..9486377
|
||
--- /dev/null
|
||
+++ b/m4/sys_socket_h.m4
|
||
@@ -0,0 +1,176 @@
|
||
+# sys_socket_h.m4 serial 23
|
||
+dnl Copyright (C) 2005-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+dnl From Simon Josefsson.
|
||
+
|
||
+AC_DEFUN([gl_HEADER_SYS_SOCKET],
|
||
+[
|
||
+ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST])
|
||
+
|
||
+ dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have
|
||
+ dnl old-style declarations (with return type 'int' instead of 'ssize_t')
|
||
+ dnl unless _POSIX_PII_SOCKET is defined.
|
||
+ case "$host_os" in
|
||
+ osf*)
|
||
+ AC_DEFINE([_POSIX_PII_SOCKET], [1],
|
||
+ [Define to 1 in order to get the POSIX compatible declarations
|
||
+ of socket functions.])
|
||
+ ;;
|
||
+ esac
|
||
+
|
||
+ AC_CACHE_CHECK([whether <sys/socket.h> is self-contained],
|
||
+ [gl_cv_header_sys_socket_h_selfcontained],
|
||
+ [
|
||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[]])],
|
||
+ [gl_cv_header_sys_socket_h_selfcontained=yes],
|
||
+ [gl_cv_header_sys_socket_h_selfcontained=no])
|
||
+ ])
|
||
+ if test $gl_cv_header_sys_socket_h_selfcontained = yes; then
|
||
+ dnl If the shutdown function exists, <sys/socket.h> should define
|
||
+ dnl SHUT_RD, SHUT_WR, SHUT_RDWR.
|
||
+ AC_CHECK_FUNCS([shutdown])
|
||
+ if test $ac_cv_func_shutdown = yes; then
|
||
+ AC_CACHE_CHECK([whether <sys/socket.h> defines the SHUT_* macros],
|
||
+ [gl_cv_header_sys_socket_h_shut],
|
||
+ [
|
||
+ AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM([[#include <sys/socket.h>]],
|
||
+ [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])],
|
||
+ [gl_cv_header_sys_socket_h_shut=yes],
|
||
+ [gl_cv_header_sys_socket_h_shut=no])
|
||
+ ])
|
||
+ if test $gl_cv_header_sys_socket_h_shut = no; then
|
||
+ SYS_SOCKET_H='sys/socket.h'
|
||
+ fi
|
||
+ fi
|
||
+ fi
|
||
+ # We need to check for ws2tcpip.h now.
|
||
+ gl_PREREQ_SYS_H_SOCKET
|
||
+ AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[
|
||
+ /* sys/types.h is not needed according to POSIX, but the
|
||
+ sys/socket.h in i386-unknown-freebsd4.10 and
|
||
+ powerpc-apple-darwin5.5 required it. */
|
||
+#include <sys/types.h>
|
||
+#ifdef HAVE_SYS_SOCKET_H
|
||
+#include <sys/socket.h>
|
||
+#endif
|
||
+#ifdef HAVE_WS2TCPIP_H
|
||
+#include <ws2tcpip.h>
|
||
+#endif
|
||
+])
|
||
+ if test $ac_cv_type_struct_sockaddr_storage = no; then
|
||
+ HAVE_STRUCT_SOCKADDR_STORAGE=0
|
||
+ fi
|
||
+ if test $ac_cv_type_sa_family_t = no; then
|
||
+ HAVE_SA_FAMILY_T=0
|
||
+ fi
|
||
+ if test $ac_cv_type_struct_sockaddr_storage != no; then
|
||
+ AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family],
|
||
+ [],
|
||
+ [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0],
|
||
+ [#include <sys/types.h>
|
||
+ #ifdef HAVE_SYS_SOCKET_H
|
||
+ #include <sys/socket.h>
|
||
+ #endif
|
||
+ #ifdef HAVE_WS2TCPIP_H
|
||
+ #include <ws2tcpip.h>
|
||
+ #endif
|
||
+ ])
|
||
+ fi
|
||
+ if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \
|
||
+ || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then
|
||
+ SYS_SOCKET_H='sys/socket.h'
|
||
+ fi
|
||
+ gl_PREREQ_SYS_H_WINSOCK2
|
||
+
|
||
+ dnl Check for declarations of anything we want to poison if the
|
||
+ dnl corresponding gnulib module is not in use.
|
||
+ gl_WARN_ON_USE_PREPARE([[
|
||
+/* Some systems require prerequisite headers. */
|
||
+#include <sys/types.h>
|
||
+#include <sys/socket.h>
|
||
+ ]], [socket connect accept bind getpeername getsockname getsockopt
|
||
+ listen recv send recvfrom sendto setsockopt shutdown accept4])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_PREREQ_SYS_H_SOCKET],
|
||
+[
|
||
+ dnl Check prerequisites of the <sys/socket.h> replacement.
|
||
+ AC_REQUIRE([gl_CHECK_SOCKET_HEADERS])
|
||
+ gl_CHECK_NEXT_HEADERS([sys/socket.h])
|
||
+ if test $ac_cv_header_sys_socket_h = yes; then
|
||
+ HAVE_SYS_SOCKET_H=1
|
||
+ HAVE_WS2TCPIP_H=0
|
||
+ else
|
||
+ HAVE_SYS_SOCKET_H=0
|
||
+ if test $ac_cv_header_ws2tcpip_h = yes; then
|
||
+ HAVE_WS2TCPIP_H=1
|
||
+ else
|
||
+ HAVE_WS2TCPIP_H=0
|
||
+ fi
|
||
+ fi
|
||
+ AC_SUBST([HAVE_SYS_SOCKET_H])
|
||
+ AC_SUBST([HAVE_WS2TCPIP_H])
|
||
+])
|
||
+
|
||
+# Common prerequisites of the <sys/socket.h> replacement and of the
|
||
+# <sys/select.h> replacement.
|
||
+# Sets and substitutes HAVE_WINSOCK2_H.
|
||
+AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2],
|
||
+[
|
||
+ m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])])
|
||
+ m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])])
|
||
+ AC_CHECK_HEADERS_ONCE([sys/socket.h])
|
||
+ if test $ac_cv_header_sys_socket_h != yes; then
|
||
+ dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
|
||
+ dnl the check for those headers unconditional; yet cygwin reports
|
||
+ dnl that the headers are present but cannot be compiled (since on
|
||
+ dnl cygwin, all socket information should come from sys/socket.h).
|
||
+ AC_CHECK_HEADERS([winsock2.h])
|
||
+ fi
|
||
+ if test "$ac_cv_header_winsock2_h" = yes; then
|
||
+ HAVE_WINSOCK2_H=1
|
||
+ UNISTD_H_HAVE_WINSOCK2_H=1
|
||
+ SYS_IOCTL_H_HAVE_WINSOCK2_H=1
|
||
+ else
|
||
+ HAVE_WINSOCK2_H=0
|
||
+ fi
|
||
+ AC_SUBST([HAVE_WINSOCK2_H])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR],
|
||
+[
|
||
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||
+ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
|
||
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
||
+ dnl Define it also as a C macro, for the benefit of the unit tests.
|
||
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS],
|
||
+[
|
||
+ GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET])
|
||
+ GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT])
|
||
+ GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT])
|
||
+ GNULIB_BIND=0; AC_SUBST([GNULIB_BIND])
|
||
+ GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME])
|
||
+ GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME])
|
||
+ GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT])
|
||
+ GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN])
|
||
+ GNULIB_RECV=0; AC_SUBST([GNULIB_RECV])
|
||
+ GNULIB_SEND=0; AC_SUBST([GNULIB_SEND])
|
||
+ GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM])
|
||
+ GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO])
|
||
+ GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT])
|
||
+ GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN])
|
||
+ GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4])
|
||
+ HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE])
|
||
+ HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1;
|
||
+ AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY])
|
||
+ HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T])
|
||
+ HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4])
|
||
+])
|
||
diff --git a/m4/sys_types_h.m4 b/m4/sys_types_h.m4
|
||
new file mode 100644
|
||
index 0000000..d15c1b3
|
||
--- /dev/null
|
||
+++ b/m4/sys_types_h.m4
|
||
@@ -0,0 +1,24 @@
|
||
+# sys_types_h.m4 serial 5
|
||
+dnl Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN_ONCE([gl_SYS_TYPES_H],
|
||
+[
|
||
+ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
|
||
+ gl_NEXT_HEADERS([sys/types.h])
|
||
+
|
||
+ dnl Ensure the type pid_t gets defined.
|
||
+ AC_REQUIRE([AC_TYPE_PID_T])
|
||
+
|
||
+ dnl Ensure the type mode_t gets defined.
|
||
+ AC_REQUIRE([AC_TYPE_MODE_T])
|
||
+
|
||
+ dnl Whether to override the 'off_t' type.
|
||
+ AC_REQUIRE([gl_TYPE_OFF_T])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
|
||
+[
|
||
+])
|
||
diff --git a/m4/sys_wait_h.m4 b/m4/sys_wait_h.m4
|
||
deleted file mode 100644
|
||
index b0d23fa..0000000
|
||
--- a/m4/sys_wait_h.m4
|
||
+++ /dev/null
|
||
@@ -1,25 +0,0 @@
|
||
-# sys_wait_h.m4 serial 4
|
||
-dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
|
||
-dnl This file is free software; the Free Software Foundation
|
||
-dnl gives unlimited permission to copy and/or distribute it,
|
||
-dnl with or without modifications, as long as this notice is preserved.
|
||
-
|
||
-AC_DEFUN([gl_SYS_WAIT_H],
|
||
-[
|
||
- AC_REQUIRE([gl_SYS_WAIT_H_DEFAULTS])
|
||
-
|
||
- dnl <sys/wait.h> is always overridden, because of GNULIB_POSIXCHECK.
|
||
- gl_CHECK_NEXT_HEADERS([sys/wait.h])
|
||
-])
|
||
-
|
||
-AC_DEFUN([gl_SYS_WAIT_MODULE_INDICATOR],
|
||
-[
|
||
- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||
- AC_REQUIRE([gl_SYS_WAIT_H_DEFAULTS])
|
||
- gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
||
-])
|
||
-
|
||
-AC_DEFUN([gl_SYS_WAIT_H_DEFAULTS],
|
||
-[
|
||
- dnl Assume proper GNU behavior unless another module says otherwise.
|
||
-])
|
||
diff --git a/m4/sysexits.m4 b/m4/sysexits.m4
|
||
index b3baa51..bd8abaa 100644
|
||
--- a/m4/sysexits.m4
|
||
+++ b/m4/sysexits.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# sysexits.m4 serial 5
|
||
-dnl Copyright (C) 2003, 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||
+# sysexits.m4 serial 6
|
||
+dnl Copyright (C) 2003, 2005, 2007, 2009-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -40,4 +40,5 @@ AC_DEFUN([gl_SYSEXITS],
|
||
fi
|
||
AC_SUBST([HAVE_SYSEXITS_H])
|
||
AC_SUBST([SYSEXITS_H])
|
||
+ AM_CONDITIONAL([GL_GENERATE_SYSEXITS_H], [test -n "$SYSEXITS_H"])
|
||
])
|
||
diff --git a/m4/threadlib.m4 b/m4/threadlib.m4
|
||
index bff01bc..26bdeb5 100644
|
||
--- a/m4/threadlib.m4
|
||
+++ b/m4/threadlib.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# threadlib.m4 serial 6 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
|
||
+# threadlib.m4 serial 10 (gettext-0.18.2)
|
||
+dnl Copyright (C) 2005-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -9,8 +9,13 @@ dnl From Bruno Haible.
|
||
dnl gl_THREADLIB
|
||
dnl ------------
|
||
dnl Tests for a multithreading library to be used.
|
||
+dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO
|
||
+dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the
|
||
+dnl default is 'no', otherwise it is system dependent. In both cases, the user
|
||
+dnl can change the choice through the options --enable-threads=choice or
|
||
+dnl --disable-threads.
|
||
dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
|
||
-dnl USE_PTH_THREADS, USE_WIN32_THREADS
|
||
+dnl USE_PTH_THREADS, USE_WINDOWS_THREADS
|
||
dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
|
||
dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
|
||
dnl libtool).
|
||
@@ -44,10 +49,12 @@ AC_DEFUN([gl_THREADLIB_EARLY_BODY],
|
||
[AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
|
||
[AC_REQUIRE([AC_GNU_SOURCE])])
|
||
dnl Check for multithreading.
|
||
- m4_divert_text([DEFAULTS], [gl_use_threads_default=])
|
||
+ m4_ifdef([gl_THREADLIB_DEFAULT_NO],
|
||
+ [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])],
|
||
+ [m4_divert_text([DEFAULTS], [gl_use_threads_default=])])
|
||
AC_ARG_ENABLE([threads],
|
||
-AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
|
||
-AC_HELP_STRING([--disable-threads], [build without multithread safety]),
|
||
+AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
|
||
+AC_HELP_STRING([--disable-threads], [build without multithread safety])]),
|
||
[gl_use_threads=$enableval],
|
||
[if test -n "$gl_use_threads_default"; then
|
||
gl_use_threads="$gl_use_threads_default"
|
||
@@ -243,7 +250,7 @@ int main ()
|
||
AC_LIB_LINKFLAGS([pth])
|
||
gl_have_pth=
|
||
gl_save_LIBS="$LIBS"
|
||
- LIBS="$LIBS -lpth"
|
||
+ LIBS="$LIBS $LIBPTH"
|
||
AC_LINK_IFELSE(
|
||
[AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])],
|
||
[gl_have_pth=yes])
|
||
@@ -269,17 +276,19 @@ int main ()
|
||
fi
|
||
fi
|
||
if test -z "$gl_have_pthread"; then
|
||
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
|
||
- if { case "$host_os" in
|
||
- mingw*) true;;
|
||
- *) false;;
|
||
- esac
|
||
- }; then
|
||
- gl_threads_api=win32
|
||
- AC_DEFINE([USE_WIN32_THREADS], [1],
|
||
- [Define if the Win32 multithreading API can be used.])
|
||
- fi
|
||
- fi
|
||
+ case "$gl_use_threads" in
|
||
+ yes | windows | win32) # The 'win32' is for backward compatibility.
|
||
+ if { case "$host_os" in
|
||
+ mingw*) true;;
|
||
+ *) false;;
|
||
+ esac
|
||
+ }; then
|
||
+ gl_threads_api=windows
|
||
+ AC_DEFINE([USE_WINDOWS_THREADS], [1],
|
||
+ [Define if the native Windows multithreading API can be used.])
|
||
+ fi
|
||
+ ;;
|
||
+ esac
|
||
fi
|
||
fi
|
||
AC_MSG_CHECKING([for multithread API to use])
|
||
@@ -310,50 +319,50 @@ AC_DEFUN([gl_DISABLE_THREADS], [
|
||
|
||
dnl Survey of platforms:
|
||
dnl
|
||
-dnl Platform Available Compiler Supports test-lock
|
||
-dnl flavours option weak result
|
||
-dnl --------------- --------- --------- -------- ---------
|
||
-dnl Linux 2.4/glibc posix -lpthread Y OK
|
||
+dnl Platform Available Compiler Supports test-lock
|
||
+dnl flavours option weak result
|
||
+dnl --------------- --------- --------- -------- ---------
|
||
+dnl Linux 2.4/glibc posix -lpthread Y OK
|
||
dnl
|
||
-dnl GNU Hurd/glibc posix
|
||
+dnl GNU Hurd/glibc posix
|
||
dnl
|
||
-dnl FreeBSD 5.3 posix -lc_r Y
|
||
-dnl posix -lkse ? Y
|
||
-dnl posix -lpthread ? Y
|
||
-dnl posix -lthr Y
|
||
+dnl FreeBSD 5.3 posix -lc_r Y
|
||
+dnl posix -lkse ? Y
|
||
+dnl posix -lpthread ? Y
|
||
+dnl posix -lthr Y
|
||
dnl
|
||
-dnl FreeBSD 5.2 posix -lc_r Y
|
||
-dnl posix -lkse Y
|
||
-dnl posix -lthr Y
|
||
+dnl FreeBSD 5.2 posix -lc_r Y
|
||
+dnl posix -lkse Y
|
||
+dnl posix -lthr Y
|
||
dnl
|
||
-dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
|
||
+dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
|
||
dnl
|
||
-dnl NetBSD 1.6 --
|
||
+dnl NetBSD 1.6 --
|
||
dnl
|
||
-dnl OpenBSD 3.4 posix -lpthread Y OK
|
||
+dnl OpenBSD 3.4 posix -lpthread Y OK
|
||
dnl
|
||
-dnl MacOS X 10.[123] posix -lpthread Y OK
|
||
+dnl Mac OS X 10.[123] posix -lpthread Y OK
|
||
dnl
|
||
-dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
|
||
-dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
|
||
+dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
|
||
+dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
|
||
dnl
|
||
-dnl HP-UX 11 posix -lpthread N (cc) OK
|
||
+dnl HP-UX 11 posix -lpthread N (cc) OK
|
||
dnl Y (gcc)
|
||
dnl
|
||
-dnl IRIX 6.5 posix -lpthread Y 0.5
|
||
+dnl IRIX 6.5 posix -lpthread Y 0.5
|
||
dnl
|
||
-dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
|
||
+dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
|
||
dnl
|
||
-dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
|
||
+dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
|
||
dnl -lpthread (gcc) Y
|
||
dnl
|
||
-dnl Cygwin posix -lpthread Y OK
|
||
+dnl Cygwin posix -lpthread Y OK
|
||
dnl
|
||
-dnl Any of the above pth -lpth 0.0
|
||
+dnl Any of the above pth -lpth 0.0
|
||
dnl
|
||
-dnl Mingw win32 N OK
|
||
+dnl Mingw windows N OK
|
||
dnl
|
||
-dnl BeOS 5 --
|
||
+dnl BeOS 5 --
|
||
dnl
|
||
dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
|
||
dnl turned off:
|
||
diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4
|
||
index 03b51bc..c6ff800 100644
|
||
--- a/m4/uintmax_t.m4
|
||
+++ b/m4/uintmax_t.m4
|
||
@@ -1,5 +1,5 @@
|
||
# uintmax_t.m4 serial 12
|
||
-dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 1997-2004, 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
|
||
index 48d06c7..32dcfa5 100644
|
||
--- a/m4/unistd_h.m4
|
||
+++ b/m4/unistd_h.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# unistd_h.m4 serial 46
|
||
-dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
|
||
+# unistd_h.m4 serial 66
|
||
+dnl Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -11,11 +11,8 @@ AC_DEFUN([gl_UNISTD_H],
|
||
dnl Use AC_REQUIRE here, so that the default behavior below is expanded
|
||
dnl once only, before all statements that occur in other macros.
|
||
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
||
- AC_REQUIRE([AC_C_INLINE])
|
||
|
||
gl_CHECK_NEXT_HEADERS([unistd.h])
|
||
-
|
||
- AC_CHECK_HEADERS_ONCE([unistd.h])
|
||
if test $ac_cv_header_unistd_h = yes; then
|
||
HAVE_UNISTD_H=1
|
||
else
|
||
@@ -23,11 +20,20 @@ AC_DEFUN([gl_UNISTD_H],
|
||
fi
|
||
AC_SUBST([HAVE_UNISTD_H])
|
||
|
||
+ dnl Ensure the type pid_t gets defined.
|
||
+ AC_REQUIRE([AC_TYPE_PID_T])
|
||
+
|
||
+ dnl Determine WINDOWS_64_BIT_OFF_T.
|
||
+ AC_REQUIRE([gl_TYPE_OFF_T])
|
||
+
|
||
dnl Check for declarations of anything we want to poison if the
|
||
dnl corresponding gnulib module is not in use.
|
||
- gl_WARN_ON_USE_PREPARE([[#include <unistd.h>
|
||
+ gl_WARN_ON_USE_PREPARE([[
|
||
+#if HAVE_UNISTD_H
|
||
+# include <unistd.h>
|
||
+#endif
|
||
/* Some systems declare various items in the wrong headers. */
|
||
-#ifndef __GLIBC__
|
||
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
|
||
# include <fcntl.h>
|
||
# include <stdio.h>
|
||
# include <stdlib.h>
|
||
@@ -35,12 +41,13 @@ AC_DEFUN([gl_UNISTD_H],
|
||
# include <io.h>
|
||
# endif
|
||
#endif
|
||
- ]], [chown dup2 dup3 environ euidaccess faccessat fchdir fchownat
|
||
- fsync ftruncate getcwd getdomainname getdtablesize getgroups
|
||
- gethostname getlogin getlogin_r getpagesize getusershell setusershell
|
||
- endusershell lchown link linkat lseek pipe2 pread pwrite readlink
|
||
- readlinkat rmdir sleep symlink symlinkat ttyname_r unlink unlinkat
|
||
- usleep])
|
||
+ ]], [chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat
|
||
+ fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups
|
||
+ gethostname getlogin getlogin_r getpagesize
|
||
+ getusershell setusershell endusershell
|
||
+ group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite
|
||
+ readlink readlinkat rmdir sethostname sleep symlink symlinkat ttyname_r
|
||
+ unlink unlinkat usleep])
|
||
])
|
||
|
||
AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
|
||
@@ -54,46 +61,54 @@ AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
|
||
|
||
AC_DEFUN([gl_UNISTD_H_DEFAULTS],
|
||
[
|
||
- GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
|
||
- GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE])
|
||
- GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
|
||
- GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3])
|
||
- GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON])
|
||
- GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS])
|
||
- GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT])
|
||
- GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
|
||
- GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT])
|
||
- GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC])
|
||
- GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
|
||
- GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
|
||
- GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME])
|
||
- GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE])
|
||
- GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS])
|
||
- GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME])
|
||
- GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN])
|
||
- GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
|
||
- GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE])
|
||
- GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL])
|
||
- GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN])
|
||
- GNULIB_LINK=0; AC_SUBST([GNULIB_LINK])
|
||
- GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT])
|
||
- GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK])
|
||
- GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2])
|
||
- GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD])
|
||
- GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE])
|
||
- GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK])
|
||
- GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT])
|
||
- GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR])
|
||
- GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP])
|
||
- GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK])
|
||
- GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT])
|
||
- GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R])
|
||
- GNULIB_UNISTD_H_GETOPT=0; AC_SUBST([GNULIB_UNISTD_H_GETOPT])
|
||
- GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
|
||
- GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK])
|
||
- GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT])
|
||
- GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP])
|
||
- GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE])
|
||
+ GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR])
|
||
+ GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
|
||
+ GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE])
|
||
+ GNULIB_DUP=0; AC_SUBST([GNULIB_DUP])
|
||
+ GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
|
||
+ GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3])
|
||
+ GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON])
|
||
+ GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS])
|
||
+ GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT])
|
||
+ GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
|
||
+ GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT])
|
||
+ GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC])
|
||
+ GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC])
|
||
+ GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
|
||
+ GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
|
||
+ GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME])
|
||
+ GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE])
|
||
+ GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS])
|
||
+ GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME])
|
||
+ GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN])
|
||
+ GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
|
||
+ GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE])
|
||
+ GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL])
|
||
+ GNULIB_GROUP_MEMBER=0; AC_SUBST([GNULIB_GROUP_MEMBER])
|
||
+ GNULIB_ISATTY=0; AC_SUBST([GNULIB_ISATTY])
|
||
+ GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN])
|
||
+ GNULIB_LINK=0; AC_SUBST([GNULIB_LINK])
|
||
+ GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT])
|
||
+ GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK])
|
||
+ GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE])
|
||
+ GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2])
|
||
+ GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD])
|
||
+ GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE])
|
||
+ GNULIB_READ=0; AC_SUBST([GNULIB_READ])
|
||
+ GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK])
|
||
+ GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT])
|
||
+ GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR])
|
||
+ GNULIB_SETHOSTNAME=0; AC_SUBST([GNULIB_SETHOSTNAME])
|
||
+ GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP])
|
||
+ GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK])
|
||
+ GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT])
|
||
+ GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R])
|
||
+ GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
|
||
+ GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
|
||
+ GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK])
|
||
+ GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT])
|
||
+ GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP])
|
||
+ GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE])
|
||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||
HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN])
|
||
HAVE_DUP2=1; AC_SUBST([HAVE_DUP2])
|
||
@@ -102,32 +117,39 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
|
||
HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT])
|
||
HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR])
|
||
HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT])
|
||
+ HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC])
|
||
HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC])
|
||
HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
|
||
- HAVE_GETDOMAINNAME=1; AC_SUBST([HAVE_GETDOMAINNAME])
|
||
HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE])
|
||
HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS])
|
||
HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME])
|
||
HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN])
|
||
HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE])
|
||
+ HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER])
|
||
HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN])
|
||
HAVE_LINK=1; AC_SUBST([HAVE_LINK])
|
||
HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT])
|
||
+ HAVE_PIPE=1; AC_SUBST([HAVE_PIPE])
|
||
HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2])
|
||
HAVE_PREAD=1; AC_SUBST([HAVE_PREAD])
|
||
HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE])
|
||
HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
|
||
HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT])
|
||
+ HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME])
|
||
HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP])
|
||
HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK])
|
||
HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT])
|
||
- HAVE_TTYNAME_R=1; AC_SUBST([HAVE_TTYNAME_R])
|
||
HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT])
|
||
HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP])
|
||
HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON])
|
||
+ HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR])
|
||
+ HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC])
|
||
+ HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
|
||
HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
|
||
HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
|
||
HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
|
||
+ HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME])
|
||
+ HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R])
|
||
HAVE_OS_H=0; AC_SUBST([HAVE_OS_H])
|
||
HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H])
|
||
REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN])
|
||
@@ -135,15 +157,20 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
|
||
REPLACE_DUP=0; AC_SUBST([REPLACE_DUP])
|
||
REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2])
|
||
REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT])
|
||
+ REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE])
|
||
REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD])
|
||
+ REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
|
||
+ REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R])
|
||
REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS])
|
||
REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE])
|
||
+ REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY])
|
||
REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN])
|
||
REPLACE_LINK=0; AC_SUBST([REPLACE_LINK])
|
||
REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT])
|
||
REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK])
|
||
REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD])
|
||
REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE])
|
||
+ REPLACE_READ=0; AC_SUBST([REPLACE_READ])
|
||
REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK])
|
||
REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR])
|
||
REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP])
|
||
diff --git a/m4/vasnprintf.m4 b/m4/vasnprintf.m4
|
||
index ebe3c52..d730e43 100644
|
||
--- a/m4/vasnprintf.m4
|
||
+++ b/m4/vasnprintf.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# vasnprintf.m4 serial 31
|
||
-dnl Copyright (C) 2002-2004, 2006-2010 Free Software Foundation, Inc.
|
||
+# vasnprintf.m4 serial 36
|
||
+dnl Copyright (C) 2002-2004, 2006-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -29,7 +29,7 @@ AC_DEFUN([gl_REPLACE_VASNPRINTF],
|
||
gl_PREREQ_ASNPRINTF
|
||
])
|
||
|
||
-# Prequisites of lib/printf-args.h, lib/printf-args.c.
|
||
+# Prerequisites of lib/printf-args.h, lib/printf-args.c.
|
||
AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
|
||
[
|
||
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
|
||
@@ -37,9 +37,10 @@ AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
|
||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||
])
|
||
|
||
-# Prequisites of lib/printf-parse.h, lib/printf-parse.c.
|
||
+# Prerequisites of lib/printf-parse.h, lib/printf-parse.c.
|
||
AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
|
||
[
|
||
+ AC_REQUIRE([gl_FEATURES_H])
|
||
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
|
||
AC_REQUIRE([gt_TYPE_WCHAR_T])
|
||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||
@@ -54,7 +55,6 @@ AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
|
||
# Prerequisites of lib/vasnprintf.c.
|
||
AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
|
||
[
|
||
- AC_REQUIRE([AC_C_INLINE])
|
||
AC_REQUIRE([AC_FUNC_ALLOCA])
|
||
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
|
||
AC_REQUIRE([gt_TYPE_WCHAR_T])
|
||
@@ -62,7 +62,10 @@ AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
|
||
AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
|
||
dnl Use the _snprintf function only if it is declared (because on NetBSD it
|
||
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
|
||
- AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>])
|
||
+ AC_CHECK_DECLS([_snprintf], , , [[#include <stdio.h>]])
|
||
+ dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization
|
||
+ dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE.
|
||
+ AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
|
||
dnl We can avoid a lot of code by assuming that snprintf's return value
|
||
dnl conforms to ISO C99. So check that.
|
||
AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
|
||
diff --git a/m4/visibility.m4 b/m4/visibility.m4
|
||
index 19cd8f3..6cbd7e5 100644
|
||
--- a/m4/visibility.m4
|
||
+++ b/m4/visibility.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# visibility.m4 serial 4 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2005, 2008, 2010 Free Software Foundation, Inc.
|
||
+# visibility.m4 serial 5 (gettext-0.18.2)
|
||
+dnl Copyright (C) 2005, 2008, 2010-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -12,7 +12,7 @@ dnl __attribute__((__visibility__("hidden"))) and
|
||
dnl __attribute__((__visibility__("default"))).
|
||
dnl Does *not* test for __visibility__("protected") - which has tricky
|
||
dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
|
||
-dnl MacOS X.
|
||
+dnl Mac OS X.
|
||
dnl Does *not* test for __visibility__("internal") - which has processor
|
||
dnl dependent semantics.
|
||
dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
|
||
diff --git a/m4/vsnprintf.m4 b/m4/vsnprintf.m4
|
||
index ed189c2..4900764 100644
|
||
--- a/m4/vsnprintf.m4
|
||
+++ b/m4/vsnprintf.m4
|
||
@@ -1,9 +1,13 @@
|
||
-# vsnprintf.m4 serial 5
|
||
-dnl Copyright (C) 2002-2004, 2007-2010 Free Software Foundation, Inc.
|
||
+# vsnprintf.m4 serial 6
|
||
+dnl Copyright (C) 2002-2004, 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
+dnl Libintl 0.17 will replace vsnprintf only if it does not support %1$s,
|
||
+dnl but defers to any gnulib vsnprintf replacements. Therefore, gnulib
|
||
+dnl must guarantee that the decision for replacing vsnprintf is a superset
|
||
+dnl of the reasons checked by libintl.
|
||
AC_DEFUN([gl_FUNC_VSNPRINTF],
|
||
[
|
||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||
@@ -13,7 +17,17 @@ AC_DEFUN([gl_FUNC_VSNPRINTF],
|
||
gl_SNPRINTF_SIZE1
|
||
case "$gl_cv_func_snprintf_size1" in
|
||
*yes)
|
||
- gl_cv_func_vsnprintf_usable=yes
|
||
+ gl_SNPRINTF_RETVAL_C99
|
||
+ case "$gl_cv_func_snprintf_retval_c99" in
|
||
+ *yes)
|
||
+ gl_PRINTF_POSITIONS
|
||
+ case "$gl_cv_func_printf_positions" in
|
||
+ *yes)
|
||
+ gl_cv_func_vsnprintf_usable=yes
|
||
+ ;;
|
||
+ esac
|
||
+ ;;
|
||
+ esac
|
||
;;
|
||
esac
|
||
fi
|
||
diff --git a/m4/warn-on-use.m4 b/m4/warn-on-use.m4
|
||
index 42daae8..e43beeb 100644
|
||
--- a/m4/warn-on-use.m4
|
||
+++ b/m4/warn-on-use.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# warn-on-use.m4 serial 2
|
||
-dnl Copyright (C) 2010 Free Software Foundation, Inc.
|
||
+# warn-on-use.m4 serial 5
|
||
+dnl Copyright (C) 2010-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -18,8 +18,8 @@ dnl with or without modifications, as long as this notice is preserved.
|
||
# some systems declare functions in the wrong header, then INCLUDES
|
||
# should do likewise.
|
||
#
|
||
-# If you assume C89, then it is generally safe to assume declarations
|
||
-# for functions declared in that standard (such as gets) without
|
||
+# It is generally safe to assume declarations for functions declared
|
||
+# in the intersection of C89 and C11 (such as printf) without
|
||
# needing gl_WARN_ON_USE_PREPARE.
|
||
AC_DEFUN([gl_WARN_ON_USE_PREPARE],
|
||
[
|
||
@@ -27,6 +27,8 @@ AC_DEFUN([gl_WARN_ON_USE_PREPARE],
|
||
[AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])),
|
||
[Define to 1 if ]m4_defn([gl_decl])[ is declared even after
|
||
undefining macros.])])dnl
|
||
+dnl FIXME: gl_Symbol must be used unquoted until we can assume
|
||
+dnl autoconf 2.64 or newer.
|
||
for gl_func in m4_flatten([$2]); do
|
||
AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl
|
||
AC_CACHE_CHECK([whether $gl_func is declared without a macro],
|
||
@@ -35,8 +37,8 @@ AC_DEFUN([gl_WARN_ON_USE_PREPARE],
|
||
[@%:@undef $gl_func
|
||
(void) $gl_func;])],
|
||
[AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])])
|
||
- AS_VAR_IF(gl_Symbol, [yes],
|
||
- [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
|
||
+ AS_VAR_IF(gl_Symbol, [yes],
|
||
+ [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
|
||
dnl shortcut - if the raw declaration exists, then set a cache
|
||
dnl variable to allow skipping any later AC_CHECK_DECL efforts
|
||
eval ac_cv_have_decl_$gl_func=yes])
|
||
diff --git a/m4/wchar_h.m4 b/m4/wchar_h.m4
|
||
index 8cae82d..bedb15a 100644
|
||
--- a/m4/wchar_h.m4
|
||
+++ b/m4/wchar_h.m4
|
||
@@ -1,13 +1,13 @@
|
||
dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
|
||
|
||
-dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
|
||
dnl Written by Eric Blake.
|
||
|
||
-# wchar_h.m4 serial 33
|
||
+# wchar_h.m4 serial 39
|
||
|
||
AC_DEFUN([gl_WCHAR_H],
|
||
[
|
||
@@ -17,7 +17,6 @@ AC_DEFUN([gl_WCHAR_H],
|
||
dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
|
||
dnl character support).
|
||
dnl <wchar.h> is always overridden, because of GNULIB_POSIXCHECK.
|
||
- AC_CHECK_HEADERS_ONCE([wchar.h])
|
||
gl_CHECK_NEXT_HEADERS([wchar.h])
|
||
if test $ac_cv_header_wchar_h = yes; then
|
||
HAVE_WCHAR_H=1
|
||
@@ -26,6 +25,8 @@ AC_DEFUN([gl_WCHAR_H],
|
||
fi
|
||
AC_SUBST([HAVE_WCHAR_H])
|
||
|
||
+ AC_REQUIRE([gl_FEATURES_H])
|
||
+
|
||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||
if test $gt_cv_c_wint_t = yes; then
|
||
HAVE_WINT_T=1
|
||
@@ -37,15 +38,23 @@ AC_DEFUN([gl_WCHAR_H],
|
||
dnl Check for declarations of anything we want to poison if the
|
||
dnl corresponding gnulib module is not in use.
|
||
gl_WARN_ON_USE_PREPARE([[
|
||
-/* Some systems require additional headers. */
|
||
-#ifndef __GLIBC__
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
|
||
# include <stddef.h>
|
||
# include <stdio.h>
|
||
# include <time.h>
|
||
#endif
|
||
#include <wchar.h>
|
||
- ]], [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb
|
||
- wcsrtombs wcsnrtombs wcwidth])
|
||
+ ]],
|
||
+ [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb
|
||
+ wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset
|
||
+ wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp
|
||
+ wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr
|
||
+ wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth
|
||
+ ])
|
||
])
|
||
|
||
dnl Check whether <wchar.h> is usable at all.
|
||
@@ -61,6 +70,13 @@ AC_DEFUN([gl_WCHAR_H_INLINE_OK],
|
||
[gl_cv_header_wchar_h_correct_inline=yes
|
||
AC_LANG_CONFTEST([
|
||
AC_LANG_SOURCE([[#define wcstod renamed_wcstod
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
extern int zero (void);
|
||
int main () { return zero(); }
|
||
@@ -69,6 +85,13 @@ int main () { return zero(); }
|
||
mv conftest.$ac_objext conftest1.$ac_objext
|
||
AC_LANG_CONFTEST([
|
||
AC_LANG_SOURCE([[#define wcstod renamed_wcstod
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int zero (void) { return 0; }
|
||
]])])
|
||
@@ -96,13 +119,6 @@ Configuration aborted.])
|
||
fi
|
||
])
|
||
|
||
-dnl Unconditionally enables the replacement of <wchar.h>.
|
||
-AC_DEFUN([gl_REPLACE_WCHAR_H],
|
||
-[
|
||
- dnl This is a no-op, because <wchar.h> is always overridden.
|
||
- :
|
||
-])
|
||
-
|
||
AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
|
||
[
|
||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||
@@ -114,17 +130,45 @@ AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
|
||
|
||
AC_DEFUN([gl_WCHAR_H_DEFAULTS],
|
||
[
|
||
- GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC])
|
||
- GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB])
|
||
- GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT])
|
||
- GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC])
|
||
- GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN])
|
||
- GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS])
|
||
- GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
|
||
- GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB])
|
||
- GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS])
|
||
- GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
|
||
- GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH])
|
||
+ GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC])
|
||
+ GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB])
|
||
+ GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT])
|
||
+ GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC])
|
||
+ GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN])
|
||
+ GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS])
|
||
+ GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
|
||
+ GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB])
|
||
+ GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS])
|
||
+ GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
|
||
+ GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH])
|
||
+ GNULIB_WMEMCHR=0; AC_SUBST([GNULIB_WMEMCHR])
|
||
+ GNULIB_WMEMCMP=0; AC_SUBST([GNULIB_WMEMCMP])
|
||
+ GNULIB_WMEMCPY=0; AC_SUBST([GNULIB_WMEMCPY])
|
||
+ GNULIB_WMEMMOVE=0; AC_SUBST([GNULIB_WMEMMOVE])
|
||
+ GNULIB_WMEMSET=0; AC_SUBST([GNULIB_WMEMSET])
|
||
+ GNULIB_WCSLEN=0; AC_SUBST([GNULIB_WCSLEN])
|
||
+ GNULIB_WCSNLEN=0; AC_SUBST([GNULIB_WCSNLEN])
|
||
+ GNULIB_WCSCPY=0; AC_SUBST([GNULIB_WCSCPY])
|
||
+ GNULIB_WCPCPY=0; AC_SUBST([GNULIB_WCPCPY])
|
||
+ GNULIB_WCSNCPY=0; AC_SUBST([GNULIB_WCSNCPY])
|
||
+ GNULIB_WCPNCPY=0; AC_SUBST([GNULIB_WCPNCPY])
|
||
+ GNULIB_WCSCAT=0; AC_SUBST([GNULIB_WCSCAT])
|
||
+ GNULIB_WCSNCAT=0; AC_SUBST([GNULIB_WCSNCAT])
|
||
+ GNULIB_WCSCMP=0; AC_SUBST([GNULIB_WCSCMP])
|
||
+ GNULIB_WCSNCMP=0; AC_SUBST([GNULIB_WCSNCMP])
|
||
+ GNULIB_WCSCASECMP=0; AC_SUBST([GNULIB_WCSCASECMP])
|
||
+ GNULIB_WCSNCASECMP=0; AC_SUBST([GNULIB_WCSNCASECMP])
|
||
+ GNULIB_WCSCOLL=0; AC_SUBST([GNULIB_WCSCOLL])
|
||
+ GNULIB_WCSXFRM=0; AC_SUBST([GNULIB_WCSXFRM])
|
||
+ GNULIB_WCSDUP=0; AC_SUBST([GNULIB_WCSDUP])
|
||
+ GNULIB_WCSCHR=0; AC_SUBST([GNULIB_WCSCHR])
|
||
+ GNULIB_WCSRCHR=0; AC_SUBST([GNULIB_WCSRCHR])
|
||
+ GNULIB_WCSCSPN=0; AC_SUBST([GNULIB_WCSCSPN])
|
||
+ GNULIB_WCSSPN=0; AC_SUBST([GNULIB_WCSSPN])
|
||
+ GNULIB_WCSPBRK=0; AC_SUBST([GNULIB_WCSPBRK])
|
||
+ GNULIB_WCSSTR=0; AC_SUBST([GNULIB_WCSSTR])
|
||
+ GNULIB_WCSTOK=0; AC_SUBST([GNULIB_WCSTOK])
|
||
+ GNULIB_WCSWIDTH=0; AC_SUBST([GNULIB_WCSWIDTH])
|
||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||
HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC])
|
||
HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT])
|
||
@@ -135,6 +179,34 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
|
||
HAVE_WCRTOMB=1; AC_SUBST([HAVE_WCRTOMB])
|
||
HAVE_WCSRTOMBS=1; AC_SUBST([HAVE_WCSRTOMBS])
|
||
HAVE_WCSNRTOMBS=1; AC_SUBST([HAVE_WCSNRTOMBS])
|
||
+ HAVE_WMEMCHR=1; AC_SUBST([HAVE_WMEMCHR])
|
||
+ HAVE_WMEMCMP=1; AC_SUBST([HAVE_WMEMCMP])
|
||
+ HAVE_WMEMCPY=1; AC_SUBST([HAVE_WMEMCPY])
|
||
+ HAVE_WMEMMOVE=1; AC_SUBST([HAVE_WMEMMOVE])
|
||
+ HAVE_WMEMSET=1; AC_SUBST([HAVE_WMEMSET])
|
||
+ HAVE_WCSLEN=1; AC_SUBST([HAVE_WCSLEN])
|
||
+ HAVE_WCSNLEN=1; AC_SUBST([HAVE_WCSNLEN])
|
||
+ HAVE_WCSCPY=1; AC_SUBST([HAVE_WCSCPY])
|
||
+ HAVE_WCPCPY=1; AC_SUBST([HAVE_WCPCPY])
|
||
+ HAVE_WCSNCPY=1; AC_SUBST([HAVE_WCSNCPY])
|
||
+ HAVE_WCPNCPY=1; AC_SUBST([HAVE_WCPNCPY])
|
||
+ HAVE_WCSCAT=1; AC_SUBST([HAVE_WCSCAT])
|
||
+ HAVE_WCSNCAT=1; AC_SUBST([HAVE_WCSNCAT])
|
||
+ HAVE_WCSCMP=1; AC_SUBST([HAVE_WCSCMP])
|
||
+ HAVE_WCSNCMP=1; AC_SUBST([HAVE_WCSNCMP])
|
||
+ HAVE_WCSCASECMP=1; AC_SUBST([HAVE_WCSCASECMP])
|
||
+ HAVE_WCSNCASECMP=1; AC_SUBST([HAVE_WCSNCASECMP])
|
||
+ HAVE_WCSCOLL=1; AC_SUBST([HAVE_WCSCOLL])
|
||
+ HAVE_WCSXFRM=1; AC_SUBST([HAVE_WCSXFRM])
|
||
+ HAVE_WCSDUP=1; AC_SUBST([HAVE_WCSDUP])
|
||
+ HAVE_WCSCHR=1; AC_SUBST([HAVE_WCSCHR])
|
||
+ HAVE_WCSRCHR=1; AC_SUBST([HAVE_WCSRCHR])
|
||
+ HAVE_WCSCSPN=1; AC_SUBST([HAVE_WCSCSPN])
|
||
+ HAVE_WCSSPN=1; AC_SUBST([HAVE_WCSSPN])
|
||
+ HAVE_WCSPBRK=1; AC_SUBST([HAVE_WCSPBRK])
|
||
+ HAVE_WCSSTR=1; AC_SUBST([HAVE_WCSSTR])
|
||
+ HAVE_WCSTOK=1; AC_SUBST([HAVE_WCSTOK])
|
||
+ HAVE_WCSWIDTH=1; AC_SUBST([HAVE_WCSWIDTH])
|
||
HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB])
|
||
HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH])
|
||
REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T])
|
||
@@ -149,4 +221,5 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
|
||
REPLACE_WCSRTOMBS=0; AC_SUBST([REPLACE_WCSRTOMBS])
|
||
REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
|
||
REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH])
|
||
+ REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH])
|
||
])
|
||
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
|
||
index a133e6a..e1e1e69 100644
|
||
--- a/m4/wchar_t.m4
|
||
+++ b/m4/wchar_t.m4
|
||
@@ -1,5 +1,5 @@
|
||
# wchar_t.m4 serial 4 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2002-2003, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/wcrtomb.m4 b/m4/wcrtomb.m4
|
||
index 0de262e..f56b5ba 100644
|
||
--- a/m4/wcrtomb.m4
|
||
+++ b/m4/wcrtomb.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# wcrtomb.m4 serial 6
|
||
-dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
|
||
+# wcrtomb.m4 serial 11
|
||
+dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -14,6 +14,22 @@ AC_DEFUN([gl_FUNC_WCRTOMB],
|
||
AC_CHECK_FUNCS_ONCE([wcrtomb])
|
||
if test $ac_cv_func_wcrtomb = no; then
|
||
HAVE_WCRTOMB=0
|
||
+ AC_CHECK_DECLS([wcrtomb],,, [[
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>
|
||
+]])
|
||
+ if test $ac_cv_have_decl_wcrtomb = yes; then
|
||
+ dnl On Minix 3.1.8, the system's <wchar.h> declares wcrtomb() although
|
||
+ dnl it does not have the function. Avoid a collision with gnulib's
|
||
+ dnl replacement.
|
||
+ REPLACE_WCRTOMB=1
|
||
+ fi
|
||
else
|
||
if test $REPLACE_MBSTATE_T = 1; then
|
||
REPLACE_WCRTOMB=1
|
||
@@ -43,32 +59,39 @@ changequote([,])dnl
|
||
AC_RUN_IFELSE(
|
||
[AC_LANG_SOURCE([[
|
||
#include <locale.h>
|
||
-#include <stdio.h>
|
||
#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
#include <wchar.h>
|
||
int main ()
|
||
{
|
||
+ int result = 0;
|
||
if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
|
||
{
|
||
if (wcrtomb (NULL, 0, NULL) != 1)
|
||
- return 1;
|
||
+ result |= 1;
|
||
}
|
||
if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
|
||
{
|
||
if (wcrtomb (NULL, 0, NULL) != 1)
|
||
- return 1;
|
||
+ result |= 2;
|
||
}
|
||
if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
|
||
{
|
||
if (wcrtomb (NULL, 0, NULL) != 1)
|
||
- return 1;
|
||
+ result |= 4;
|
||
}
|
||
if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
|
||
{
|
||
if (wcrtomb (NULL, 0, NULL) != 1)
|
||
- return 1;
|
||
+ result |= 8;
|
||
}
|
||
- return 0;
|
||
+ return result;
|
||
}]])],
|
||
[gl_cv_func_wcrtomb_retval=yes],
|
||
[gl_cv_func_wcrtomb_retval=no],
|
||
@@ -81,11 +104,6 @@ int main ()
|
||
esac
|
||
fi
|
||
fi
|
||
- if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then
|
||
- gl_REPLACE_WCHAR_H
|
||
- AC_LIBOBJ([wcrtomb])
|
||
- gl_PREREQ_WCRTOMB
|
||
- fi
|
||
])
|
||
|
||
# Prerequisites of lib/wcrtomb.c.
|
||
diff --git a/m4/wctype_h.m4 b/m4/wctype_h.m4
|
||
index bc6b6e7..82ada0e 100644
|
||
--- a/m4/wctype_h.m4
|
||
+++ b/m4/wctype_h.m4
|
||
@@ -1,8 +1,8 @@
|
||
-# wctype_h.m4 serial 8
|
||
+# wctype_h.m4 serial 18
|
||
|
||
dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
|
||
|
||
-dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -11,6 +11,7 @@ dnl Written by Paul Eggert.
|
||
|
||
AC_DEFUN([gl_WCTYPE_H],
|
||
[
|
||
+ AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
|
||
AC_REQUIRE([AC_PROG_CC])
|
||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||
AC_CHECK_FUNCS_ONCE([iswcntrl])
|
||
@@ -20,24 +21,6 @@ AC_DEFUN([gl_WCTYPE_H],
|
||
HAVE_ISWCNTRL=0
|
||
fi
|
||
AC_SUBST([HAVE_ISWCNTRL])
|
||
- AC_CHECK_FUNCS_ONCE([iswblank])
|
||
- AC_CHECK_DECLS_ONCE([iswblank])
|
||
- if test $ac_cv_func_iswblank = yes; then
|
||
- HAVE_ISWBLANK=1
|
||
- REPLACE_ISWBLANK=0
|
||
- else
|
||
- HAVE_ISWBLANK=0
|
||
- if test $ac_cv_have_decl_iswblank = yes; then
|
||
- REPLACE_ISWBLANK=1
|
||
- else
|
||
- REPLACE_ISWBLANK=0
|
||
- fi
|
||
- fi
|
||
- AC_SUBST([HAVE_ISWBLANK])
|
||
- AC_SUBST([REPLACE_ISWBLANK])
|
||
-
|
||
- AC_CHECK_HEADERS_ONCE([wctype.h])
|
||
- AC_REQUIRE([AC_C_INLINE])
|
||
|
||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||
if test $gt_cv_c_wint_t = yes; then
|
||
@@ -47,39 +30,180 @@ AC_DEFUN([gl_WCTYPE_H],
|
||
fi
|
||
AC_SUBST([HAVE_WINT_T])
|
||
|
||
+ gl_CHECK_NEXT_HEADERS([wctype.h])
|
||
if test $ac_cv_header_wctype_h = yes; then
|
||
if test $ac_cv_func_iswcntrl = yes; then
|
||
dnl Linux libc5 has an iswprint function that returns 0 for all arguments.
|
||
dnl The other functions are likely broken in the same way.
|
||
AC_CACHE_CHECK([whether iswcntrl works], [gl_cv_func_iswcntrl_works],
|
||
[
|
||
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||
- #include <stddef.h>
|
||
- #include <stdio.h>
|
||
- #include <time.h>
|
||
- #include <wchar.h>
|
||
- #include <wctype.h>
|
||
- int main () { return iswprint ('x') == 0; }]])],
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_SOURCE([[
|
||
+ /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
|
||
+ included before <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
|
||
+ must be included before <wchar.h>. */
|
||
+ #include <stddef.h>
|
||
+ #include <stdio.h>
|
||
+ #include <time.h>
|
||
+ #include <wchar.h>
|
||
+ #include <wctype.h>
|
||
+ int main () { return iswprint ('x') == 0; }
|
||
+ ]])],
|
||
[gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no],
|
||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
|
||
#if __GNU_LIBRARY__ == 1
|
||
Linux libc5 i18n is broken.
|
||
#endif]], [])],
|
||
- [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no])
|
||
+ [gl_cv_func_iswcntrl_works="guessing yes"],
|
||
+ [gl_cv_func_iswcntrl_works="guessing no"])
|
||
])
|
||
])
|
||
fi
|
||
- gl_CHECK_NEXT_HEADERS([wctype.h])
|
||
HAVE_WCTYPE_H=1
|
||
else
|
||
HAVE_WCTYPE_H=0
|
||
fi
|
||
AC_SUBST([HAVE_WCTYPE_H])
|
||
|
||
- if test "$gl_cv_func_iswcntrl_works" = no; then
|
||
- REPLACE_ISWCNTRL=1
|
||
+ case "$gl_cv_func_iswcntrl_works" in
|
||
+ *yes) REPLACE_ISWCNTRL=0 ;;
|
||
+ *) REPLACE_ISWCNTRL=1 ;;
|
||
+ esac
|
||
+ AC_SUBST([REPLACE_ISWCNTRL])
|
||
+
|
||
+ if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
|
||
+ dnl Redefine all of iswcntrl, ..., iswxdigit in <wctype.h>.
|
||
+ :
|
||
+ fi
|
||
+
|
||
+ if test $REPLACE_ISWCNTRL = 1; then
|
||
+ REPLACE_TOWLOWER=1
|
||
else
|
||
- REPLACE_ISWCNTRL=0
|
||
+ AC_CHECK_FUNCS([towlower])
|
||
+ if test $ac_cv_func_towlower = yes; then
|
||
+ REPLACE_TOWLOWER=0
|
||
+ else
|
||
+ AC_CHECK_DECLS([towlower],,,
|
||
+ [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
|
||
+ included before <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
|
||
+ must be included before <wchar.h>. */
|
||
+ #include <stddef.h>
|
||
+ #include <stdio.h>
|
||
+ #include <time.h>
|
||
+ #include <wchar.h>
|
||
+ #if HAVE_WCTYPE_H
|
||
+ # include <wctype.h>
|
||
+ #endif
|
||
+ ]])
|
||
+ if test $ac_cv_have_decl_towlower = yes; then
|
||
+ dnl On Minix 3.1.8, the system's <wctype.h> declares towlower() and
|
||
+ dnl towupper() although it does not have the functions. Avoid a
|
||
+ dnl collision with gnulib's replacement.
|
||
+ REPLACE_TOWLOWER=1
|
||
+ else
|
||
+ REPLACE_TOWLOWER=0
|
||
+ fi
|
||
+ fi
|
||
fi
|
||
- AC_SUBST([REPLACE_ISWCNTRL])
|
||
+ AC_SUBST([REPLACE_TOWLOWER])
|
||
+
|
||
+ if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then
|
||
+ dnl Redefine towlower, towupper in <wctype.h>.
|
||
+ :
|
||
+ fi
|
||
+
|
||
+ dnl We assume that the wctype() and iswctype() functions exist if and only
|
||
+ dnl if the type wctype_t is defined in <wchar.h> or in <wctype.h> if that
|
||
+ dnl exists.
|
||
+ dnl HP-UX 11.00 declares all these in <wchar.h> and lacks <wctype.h>.
|
||
+ AC_CACHE_CHECK([for wctype_t], [gl_cv_type_wctype_t],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
|
||
+ included before <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
|
||
+ must be included before <wchar.h>. */
|
||
+ #include <stddef.h>
|
||
+ #include <stdio.h>
|
||
+ #include <time.h>
|
||
+ #include <wchar.h>
|
||
+ #if HAVE_WCTYPE_H
|
||
+ # include <wctype.h>
|
||
+ #endif
|
||
+ wctype_t a;
|
||
+ ]],
|
||
+ [[]])],
|
||
+ [gl_cv_type_wctype_t=yes],
|
||
+ [gl_cv_type_wctype_t=no])
|
||
+ ])
|
||
+ if test $gl_cv_type_wctype_t = no; then
|
||
+ HAVE_WCTYPE_T=0
|
||
+ fi
|
||
+
|
||
+ dnl We assume that the wctrans() and towctrans() functions exist if and only
|
||
+ dnl if the type wctrans_t is defined in <wctype.h>.
|
||
+ AC_CACHE_CHECK([for wctrans_t], [gl_cv_type_wctrans_t],
|
||
+ [AC_COMPILE_IFELSE(
|
||
+ [AC_LANG_PROGRAM(
|
||
+ [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
|
||
+ included before <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
|
||
+ must be included before <wchar.h>. */
|
||
+ #include <stddef.h>
|
||
+ #include <stdio.h>
|
||
+ #include <time.h>
|
||
+ #include <wchar.h>
|
||
+ #include <wctype.h>
|
||
+ wctrans_t a;
|
||
+ ]],
|
||
+ [[]])],
|
||
+ [gl_cv_type_wctrans_t=yes],
|
||
+ [gl_cv_type_wctrans_t=no])
|
||
+ ])
|
||
+ if test $gl_cv_type_wctrans_t = no; then
|
||
+ HAVE_WCTRANS_T=0
|
||
+ fi
|
||
+
|
||
+ dnl Check for declarations of anything we want to poison if the
|
||
+ dnl corresponding gnulib module is not in use.
|
||
+ gl_WARN_ON_USE_PREPARE([[
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||
+ included before <wchar.h>. */
|
||
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
|
||
+# include <stddef.h>
|
||
+# include <stdio.h>
|
||
+# include <time.h>
|
||
+# include <wchar.h>
|
||
+#endif
|
||
+#include <wctype.h>
|
||
+ ]],
|
||
+ [wctype iswctype wctrans towctrans
|
||
+ ])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_WCTYPE_MODULE_INDICATOR],
|
||
+[
|
||
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||
+ AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
|
||
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
||
+ dnl Define it also as a C macro, for the benefit of the unit tests.
|
||
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
|
||
+])
|
||
+
|
||
+AC_DEFUN([gl_WCTYPE_H_DEFAULTS],
|
||
+[
|
||
+ GNULIB_ISWBLANK=0; AC_SUBST([GNULIB_ISWBLANK])
|
||
+ GNULIB_WCTYPE=0; AC_SUBST([GNULIB_WCTYPE])
|
||
+ GNULIB_ISWCTYPE=0; AC_SUBST([GNULIB_ISWCTYPE])
|
||
+ GNULIB_WCTRANS=0; AC_SUBST([GNULIB_WCTRANS])
|
||
+ GNULIB_TOWCTRANS=0; AC_SUBST([GNULIB_TOWCTRANS])
|
||
+ dnl Assume proper GNU behavior unless another module says otherwise.
|
||
+ HAVE_ISWBLANK=1; AC_SUBST([HAVE_ISWBLANK])
|
||
+ HAVE_WCTYPE_T=1; AC_SUBST([HAVE_WCTYPE_T])
|
||
+ HAVE_WCTRANS_T=1; AC_SUBST([HAVE_WCTRANS_T])
|
||
+ REPLACE_ISWBLANK=0; AC_SUBST([REPLACE_ISWBLANK])
|
||
])
|
||
diff --git a/m4/wcwidth.m4 b/m4/wcwidth.m4
|
||
new file mode 100644
|
||
index 0000000..740f81e
|
||
--- /dev/null
|
||
+++ b/m4/wcwidth.m4
|
||
@@ -0,0 +1,101 @@
|
||
+# wcwidth.m4 serial 23
|
||
+dnl Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||
+dnl This file is free software; the Free Software Foundation
|
||
+dnl gives unlimited permission to copy and/or distribute it,
|
||
+dnl with or without modifications, as long as this notice is preserved.
|
||
+
|
||
+AC_DEFUN([gl_FUNC_WCWIDTH],
|
||
+[
|
||
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
|
||
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||
+
|
||
+ dnl Persuade glibc <wchar.h> to declare wcwidth().
|
||
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||
+
|
||
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
|
||
+ AC_REQUIRE([gt_TYPE_WINT_T])
|
||
+
|
||
+ AC_CHECK_HEADERS_ONCE([wchar.h])
|
||
+ AC_CHECK_FUNCS_ONCE([wcwidth])
|
||
+
|
||
+ AC_CHECK_DECLS([wcwidth], [], [], [[
|
||
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
|
||
+#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
|
||
+ before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>
|
||
+]])
|
||
+ if test $ac_cv_have_decl_wcwidth != yes; then
|
||
+ HAVE_DECL_WCWIDTH=0
|
||
+ fi
|
||
+
|
||
+ if test $ac_cv_func_wcwidth = yes; then
|
||
+ HAVE_WCWIDTH=1
|
||
+ dnl On Mac OS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1.
|
||
+ dnl On OpenBSD 5.0, wcwidth(0x05B0) (HEBREW POINT SHEVA) returns 1.
|
||
+ dnl On OSF/1 5.1, wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1.
|
||
+ dnl This leads to bugs in 'ls' (coreutils).
|
||
+ AC_CACHE_CHECK([whether wcwidth works reasonably in UTF-8 locales],
|
||
+ [gl_cv_func_wcwidth_works],
|
||
+ [
|
||
+ AC_RUN_IFELSE(
|
||
+ [AC_LANG_SOURCE([[
|
||
+#include <locale.h>
|
||
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
|
||
+#include <string.h>
|
||
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||
+ <wchar.h>.
|
||
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
|
||
+ before <wchar.h>. */
|
||
+#include <stddef.h>
|
||
+#include <stdio.h>
|
||
+#include <time.h>
|
||
+#include <wchar.h>
|
||
+#if !HAVE_DECL_WCWIDTH
|
||
+extern
|
||
+# ifdef __cplusplus
|
||
+"C"
|
||
+# endif
|
||
+int wcwidth (int);
|
||
+#endif
|
||
+int main ()
|
||
+{
|
||
+ int result = 0;
|
||
+ if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL)
|
||
+ {
|
||
+ if (wcwidth (0x0301) > 0)
|
||
+ result |= 1;
|
||
+ if (wcwidth (0x05B0) > 0)
|
||
+ result |= 2;
|
||
+ if (wcwidth (0x200B) > 0)
|
||
+ result |= 4;
|
||
+ }
|
||
+ return result;
|
||
+}]])],
|
||
+ [gl_cv_func_wcwidth_works=yes],
|
||
+ [gl_cv_func_wcwidth_works=no],
|
||
+ [
|
||
+changequote(,)dnl
|
||
+ case "$host_os" in
|
||
+ # Guess yes on glibc and AIX 7 systems.
|
||
+ *-gnu* | aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";;
|
||
+ *) gl_cv_func_wcwidth_works="guessing no";;
|
||
+ esac
|
||
+changequote([,])dnl
|
||
+ ])
|
||
+ ])
|
||
+ case "$gl_cv_func_wcwidth_works" in
|
||
+ *yes) ;;
|
||
+ *no) REPLACE_WCWIDTH=1 ;;
|
||
+ esac
|
||
+ else
|
||
+ HAVE_WCWIDTH=0
|
||
+ fi
|
||
+ dnl We don't substitute HAVE_WCWIDTH. We assume that if the system does not
|
||
+ dnl have the wcwidth function, then it does not declare it.
|
||
+])
|
||
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
|
||
index 58ef865..d7cd3db 100644
|
||
--- a/m4/wint_t.m4
|
||
+++ b/m4/wint_t.m4
|
||
@@ -1,5 +1,5 @@
|
||
# wint_t.m4 serial 5 (gettext-0.18.2)
|
||
-dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
|
||
+dnl Copyright (C) 2003, 2007-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
diff --git a/m4/xsize.m4 b/m4/xsize.m4
|
||
index b653693..8ea9f2c 100644
|
||
--- a/m4/xsize.m4
|
||
+++ b/m4/xsize.m4
|
||
@@ -1,5 +1,5 @@
|
||
-# xsize.m4 serial 4
|
||
-dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc.
|
||
+# xsize.m4 serial 5
|
||
+dnl Copyright (C) 2003-2004, 2008-2013 Free Software Foundation, Inc.
|
||
dnl This file is free software; the Free Software Foundation
|
||
dnl gives unlimited permission to copy and/or distribute it,
|
||
dnl with or without modifications, as long as this notice is preserved.
|
||
@@ -8,6 +8,5 @@ AC_DEFUN([gl_XSIZE],
|
||
[
|
||
dnl Prerequisites of lib/xsize.h.
|
||
AC_REQUIRE([gl_SIZE_MAX])
|
||
- AC_REQUIRE([AC_C_INLINE])
|
||
AC_CHECK_HEADERS([stdint.h])
|
||
])
|
||
diff --git a/po/POTFILES.in b/po/POTFILES.in
|
||
index ec79914..ac39418 100644
|
||
--- a/po/POTFILES.in
|
||
+++ b/po/POTFILES.in
|
||
@@ -1,6 +1,3 @@
|
||
-./build-aux/arg-nonnull.h
|
||
-./build-aux/c++defs.h
|
||
-./build-aux/warn-on-use.h
|
||
./grub-core/boot/decompressor/minilib.c
|
||
./grub-core/boot/decompressor/none.c
|
||
./grub-core/boot/decompressor/xz.c
|
||
@@ -168,6 +165,7 @@
|
||
./grub-core/fs/ntfs.c
|
||
./grub-core/fs/ntfscomp.c
|
||
./grub-core/fs/odc.c
|
||
+./grub-core/fs/proc.c
|
||
./grub-core/fs/reiserfs.c
|
||
./grub-core/fs/romfs.c
|
||
./grub-core/fs/sfs.c
|
||
@@ -226,9 +224,11 @@
|
||
./grub-core/gnulib/btowc.c
|
||
./grub-core/gnulib/dirname.h
|
||
./grub-core/gnulib/dirname-lgpl.c
|
||
+./grub-core/gnulib/dosname.h
|
||
./grub-core/gnulib/errno.in.h
|
||
./grub-core/gnulib/error.c
|
||
./grub-core/gnulib/error.h
|
||
+./grub-core/gnulib/float.c
|
||
./grub-core/gnulib/float+.h
|
||
./grub-core/gnulib/float.in.h
|
||
./grub-core/gnulib/fnmatch.c
|
||
@@ -242,16 +242,28 @@
|
||
./grub-core/gnulib/getopt_int.h
|
||
./grub-core/gnulib/gettext.h
|
||
./grub-core/gnulib/intprops.h
|
||
+./grub-core/gnulib/itold.c
|
||
./grub-core/gnulib/langinfo.in.h
|
||
./grub-core/gnulib/localcharset.c
|
||
./grub-core/gnulib/localcharset.h
|
||
+./grub-core/gnulib/localeconv.c
|
||
+./grub-core/gnulib/locale.in.h
|
||
./grub-core/gnulib/malloc.c
|
||
./grub-core/gnulib/mbrtowc.c
|
||
./grub-core/gnulib/mbsinit.c
|
||
./grub-core/gnulib/mbsrtowcs.c
|
||
+./grub-core/gnulib/mbsrtowcs-impl.h
|
||
./grub-core/gnulib/mbsrtowcs-state.c
|
||
+./grub-core/gnulib/mbswidth.c
|
||
+./grub-core/gnulib/mbswidth.h
|
||
+./grub-core/gnulib/mbtowc.c
|
||
+./grub-core/gnulib/mbtowc-impl.h
|
||
./grub-core/gnulib/memchr.c
|
||
./grub-core/gnulib/mempcpy.c
|
||
+./grub-core/gnulib/msvc-inval.c
|
||
+./grub-core/gnulib/msvc-inval.h
|
||
+./grub-core/gnulib/msvc-nothrow.c
|
||
+./grub-core/gnulib/msvc-nothrow.h
|
||
./grub-core/gnulib/nl_langinfo.c
|
||
./grub-core/gnulib/printf-args.c
|
||
./grub-core/gnulib/printf-args.h
|
||
@@ -269,16 +281,18 @@
|
||
./grub-core/gnulib/regex_internal.h
|
||
./grub-core/gnulib/size_max.h
|
||
./grub-core/gnulib/sleep.c
|
||
+./grub-core/gnulib/stdalign.in.h
|
||
./grub-core/gnulib/stdbool.in.h
|
||
./grub-core/gnulib/stddef.in.h
|
||
./grub-core/gnulib/stdint.in.h
|
||
./grub-core/gnulib/stdio.in.h
|
||
-./grub-core/gnulib/stdio-write.c
|
||
./grub-core/gnulib/stdlib.in.h
|
||
./grub-core/gnulib/strcasecmp.c
|
||
./grub-core/gnulib/strchrnul.c
|
||
./grub-core/gnulib/streq.h
|
||
./grub-core/gnulib/strerror.c
|
||
+./grub-core/gnulib/strerror-override.c
|
||
+./grub-core/gnulib/strerror-override.h
|
||
./grub-core/gnulib/string.in.h
|
||
./grub-core/gnulib/strings.in.h
|
||
./grub-core/gnulib/stripslash.c
|
||
@@ -288,15 +302,23 @@
|
||
./grub-core/gnulib/strnlen1.h
|
||
./grub-core/gnulib/strnlen.c
|
||
./grub-core/gnulib/sysexits.in.h
|
||
-./grub-core/gnulib/sys_wait.in.h
|
||
+./grub-core/gnulib/sys_types.in.h
|
||
+./grub-core/gnulib/unistd.c
|
||
./grub-core/gnulib/unistd.in.h
|
||
+./grub-core/gnulib/unitypes.in.h
|
||
+./grub-core/gnulib/uniwidth/cjk.h
|
||
+./grub-core/gnulib/uniwidth.in.h
|
||
+./grub-core/gnulib/uniwidth/width.c
|
||
./grub-core/gnulib/vasnprintf.c
|
||
./grub-core/gnulib/vasnprintf.h
|
||
./grub-core/gnulib/verify.h
|
||
./grub-core/gnulib/vsnprintf.c
|
||
./grub-core/gnulib/wchar.in.h
|
||
./grub-core/gnulib/wcrtomb.c
|
||
+./grub-core/gnulib/wctype-h.c
|
||
./grub-core/gnulib/wctype.in.h
|
||
+./grub-core/gnulib/wcwidth.c
|
||
+./grub-core/gnulib/xsize.c
|
||
./grub-core/gnulib/xsize.h
|
||
./grub-core/hello/hello.c
|
||
./grub-core/hook/datehook.c
|
||
@@ -553,6 +575,7 @@
|
||
./grub-core/loader/i386/pc/pxechainloader.c
|
||
./grub-core/loader/i386/xnu.c
|
||
./grub-core/loader/ia64/efi/linux.c
|
||
+./grub-core/loader/linux.c
|
||
./grub-core/loader/lzss.c
|
||
./grub-core/loader/macho32.c
|
||
./grub-core/loader/macho64.c
|
||
@@ -646,6 +669,7 @@
|
||
./grub-core/tests/lib/functional_test.c
|
||
./grub-core/tests/lib/test.c
|
||
./grub-core/tests/test_blockarg.c
|
||
+./grub-core/unidata.c
|
||
./grub-core/video/bitmap.c
|
||
./grub-core/video/bitmap_scale.c
|
||
./grub-core/video/bochs.c
|
||
@@ -732,6 +756,8 @@
|
||
./include/grub/font.h
|
||
./include/grub/fs.h
|
||
./include/grub/fshelp.h
|
||
+./include/grub/gcrypt/g10lib.h
|
||
+./include/grub/gcrypt/gcrypt.h
|
||
./include/grub/gcrypt/gpg-error.h
|
||
./include/grub/gcry/types.h
|
||
./include/grub/gdb.h
|
||
@@ -811,6 +837,7 @@
|
||
./include/grub/ia64/efi/memory.h
|
||
./include/grub/ia64/efi/time.h
|
||
./include/grub/ia64/kernel.h
|
||
+./include/grub/ia64/reloc.h
|
||
./include/grub/ia64/setjmp.h
|
||
./include/grub/ia64/time.h
|
||
./include/grub/ia64/types.h
|
||
@@ -834,6 +861,7 @@
|
||
./include/grub/lib/LzmaTypes.h
|
||
./include/grub/libpciaccess.h
|
||
./include/grub/libusb.h
|
||
+./include/grub/linux.h
|
||
./include/grub/list.h
|
||
./include/grub/loader.h
|
||
./include/grub/lvm.h
|
||
@@ -905,6 +933,7 @@
|
||
./include/grub/powerpc/time.h
|
||
./include/grub/powerpc/types.h
|
||
./include/grub/priority_queue.h
|
||
+./include/grub/procfs.h
|
||
./include/grub/pubkey.h
|
||
./include/grub/reader.h
|
||
./include/grub/reed_solomon.h
|
||
--
|
||
1.8.2.1
|
||
|