grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 1/1] Upgrade Gnulib; switch to bootstrap tool


From: Colin Watson
Subject: [PATCH 1/1] Upgrade Gnulib; switch to bootstrap tool
Date: Wed, 9 Jan 2019 12:29:30 +0000
User-agent: NeoMutt/20170113 (1.7.2)

Upgrade Gnulib files to 20190105.

It's much easier to maintain GRUB's use of portability support files
from Gnulib when the process is automatic and driven by a single
configuration file, rather than by maintainers occasionally running
gnulib-tool and committing the result.  Removing these
automatically-copied files from revision control also removes the
temptation to hack the output in ways that are difficult for future
maintainers to follow.  Gnulib includes a "bootstrap" program which is
designed for this.

The canonical way to bootstrap GRUB from revision control is now
"./bootstrap", but "./autogen.sh" is still useful if you just want to
generate the GRUB-specific parts of the build system.

GRUB now requires Autoconf >= 2.63 and Automake >= 1.11, in line with
Gnulib.

Signed-off-by: Colin Watson <address@hidden>
---
 .gitignore                                 |   31 +-
 ABOUT-NLS                                  |  223 -
 autogen.sh                                 |   20 +-
 bootstrap                                  | 1073 ++++
 bootstrap.conf                             |   89 +
 build-aux/config.rpath                     |  690 ---
 build-aux/gitlog-to-changelog              |  432 --
 build-aux/snippet/_Noreturn.h              |   10 -
 build-aux/snippet/arg-nonnull.h            |   26 -
 build-aux/snippet/c++defs.h                |  271 -
 build-aux/snippet/warn-on-use.h            |  109 -
 conf/Makefile.common                       |    2 +-
 conf/Makefile.extra-dist                   |    1 -
 configure.ac                               |    5 +-
 docs/grub-dev.texi                         |    2 +-
 grub-core/gnulib-fix-gcc7-fallthrough.diff |   14 -
 grub-core/gnulib-fix-null-deref.diff       |   10 +-
 grub-core/gnulib-fix-width.diff            |   96 +-
 grub-core/gnulib-no-abort.diff             |   24 +-
 grub-core/gnulib-no-gets.diff              |   10 -
 grub-core/gnulib/Makefile.am               | 1747 ------
 grub-core/gnulib/alloca.c                  |  478 --
 grub-core/gnulib/alloca.in.h               |   63 -
 grub-core/gnulib/argp-ba.c                 |   34 -
 grub-core/gnulib/argp-eexst.c              |   30 -
 grub-core/gnulib/argp-fmtstream.c          |  488 --
 grub-core/gnulib/argp-fmtstream.h          |  359 --
 grub-core/gnulib/argp-fs-xinl.c            |   46 -
 grub-core/gnulib/argp-help.c               | 1960 -------
 grub-core/gnulib/argp-namefrob.h           |  157 -
 grub-core/gnulib/argp-parse.c              |  953 ----
 grub-core/gnulib/argp-pin.c                |   26 -
 grub-core/gnulib/argp-pv.c                 |   34 -
 grub-core/gnulib/argp-pvh.c                |   31 -
 grub-core/gnulib/argp-xinl.c               |   46 -
 grub-core/gnulib/argp.h                    |  650 ---
 grub-core/gnulib/asnprintf.c               |   34 -
 grub-core/gnulib/basename-lgpl.c           |   75 -
 grub-core/gnulib/btowc.c                   |   39 -
 grub-core/gnulib/config.charset            |  684 ---
 grub-core/gnulib/dirname-lgpl.c            |   86 -
 grub-core/gnulib/dirname.h                 |   46 -
 grub-core/gnulib/dosname.h                 |   53 -
 grub-core/gnulib/errno.in.h                |  279 -
 grub-core/gnulib/error.c                   |  401 --
 grub-core/gnulib/error.h                   |   65 -
 grub-core/gnulib/float+.h                  |  147 -
 grub-core/gnulib/float.c                   |   33 -
 grub-core/gnulib/float.in.h                |  188 -
 grub-core/gnulib/fnmatch.c                 |  350 --
 grub-core/gnulib/fnmatch.in.h              |   67 -
 grub-core/gnulib/fnmatch_loop.c            | 1219 -----
 grub-core/gnulib/getdelim.c                |  135 -
 grub-core/gnulib/getline.c                 |   27 -
 grub-core/gnulib/getopt.c                  | 1245 -----
 grub-core/gnulib/getopt.in.h               |  255 -
 grub-core/gnulib/getopt1.c                 |  170 -
 grub-core/gnulib/getopt_int.h              |  135 -
 grub-core/gnulib/gettext.h                 |  288 -
 grub-core/gnulib/intprops.h                |  319 --
 grub-core/gnulib/itold.c                   |   28 -
 grub-core/gnulib/langinfo.in.h             |  176 -
 grub-core/gnulib/localcharset.c            |  553 --
 grub-core/gnulib/localcharset.h            |   40 -
 grub-core/gnulib/locale.in.h               |  216 -
 grub-core/gnulib/localeconv.c              |  103 -
 grub-core/gnulib/malloc.c                  |   56 -
 grub-core/gnulib/mbrtowc.c                 |  402 --
 grub-core/gnulib/mbsinit.c                 |   61 -
 grub-core/gnulib/mbsrtowcs-impl.h          |  122 -
 grub-core/gnulib/mbsrtowcs-state.c         |   37 -
 grub-core/gnulib/mbsrtowcs.c               |   32 -
 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                  |  172 -
 grub-core/gnulib/memchr.valgrind           |   14 -
 grub-core/gnulib/mempcpy.c                 |   28 -
 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             |  271 -
 grub-core/gnulib/printf-args.c             |  187 -
 grub-core/gnulib/printf-args.h             |  158 -
 grub-core/gnulib/printf-parse.c            |  638 ---
 grub-core/gnulib/printf-parse.h            |  193 -
 grub-core/gnulib/progname.c                |   92 -
 grub-core/gnulib/progname.h                |   62 -
 grub-core/gnulib/rawmemchr.c               |  136 -
 grub-core/gnulib/rawmemchr.valgrind        |   12 -
 grub-core/gnulib/realloc.c                 |   79 -
 grub-core/gnulib/ref-add.sin               |   29 -
 grub-core/gnulib/ref-del.sin               |   24 -
 grub-core/gnulib/regcomp.c                 | 3913 --------------
 grub-core/gnulib/regex.c                   |   81 -
 grub-core/gnulib/regex.h                   |  667 ---
 grub-core/gnulib/regex_internal.c          | 1741 ------
 grub-core/gnulib/regex_internal.h          |  873 ---
 grub-core/gnulib/regexec.c                 | 4417 ---------------
 grub-core/gnulib/size_max.h                |   30 -
 grub-core/gnulib/sleep.c                   |   76 -
 grub-core/gnulib/stdalign.in.h             |   90 -
 grub-core/gnulib/stdbool.in.h              |  132 -
 grub-core/gnulib/stddef.in.h               |   86 -
 grub-core/gnulib/stdint.in.h               |  636 ---
 grub-core/gnulib/stdio.in.h                | 1333 -----
 grub-core/gnulib/stdlib.in.h               |  954 ----
 grub-core/gnulib/strcasecmp.c              |   62 -
 grub-core/gnulib/strchrnul.c               |  142 -
 grub-core/gnulib/strchrnul.valgrind        |   12 -
 grub-core/gnulib/streq.h                   |  176 -
 grub-core/gnulib/strerror-override.c       |  302 --
 grub-core/gnulib/strerror-override.h       |   56 -
 grub-core/gnulib/strerror.c                |   70 -
 grub-core/gnulib/string.in.h               | 1029 ----
 grub-core/gnulib/strings.in.h              |  122 -
 grub-core/gnulib/stripslash.c              |   45 -
 grub-core/gnulib/strncasecmp.c             |   62 -
 grub-core/gnulib/strndup.c                 |   36 -
 grub-core/gnulib/strnlen.c                 |   30 -
 grub-core/gnulib/strnlen1.c                |   35 -
 grub-core/gnulib/strnlen1.h                |   40 -
 grub-core/gnulib/sys_types.in.h            |   51 -
 grub-core/gnulib/sysexits.in.h             |   72 -
 grub-core/gnulib/unistd.c                  |    3 -
 grub-core/gnulib/unistd.in.h               | 1530 ------
 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              | 5606 --------------------
 grub-core/gnulib/vasnprintf.h              |   79 -
 grub-core/gnulib/verify.h                  |  245 -
 grub-core/gnulib/vsnprintf.c               |   70 -
 grub-core/gnulib/wchar.in.h                | 1028 ----
 grub-core/gnulib/wcrtomb.c                 |   53 -
 grub-core/gnulib/wctype-h.c                |    4 -
 grub-core/gnulib/wctype.in.h               |  504 --
 grub-core/gnulib/wcwidth.c                 |   50 -
 grub-core/gnulib/xsize.c                   |    3 -
 grub-core/gnulib/xsize.h                   |  114 -
 m4/00gnulib.m4                             |   30 -
 m4/alloca.m4                               |  121 -
 m4/argp.m4                                 |   61 -
 m4/btowc.m4                                |  116 -
 m4/codeset.m4                              |   23 -
 m4/configmake.m4                           |   50 -
 m4/dirname.m4                              |   19 -
 m4/double-slash-root.m4                    |   38 -
 m4/eealloc.m4                              |   31 -
 m4/errno_h.m4                              |  137 -
 m4/error.m4                                |   27 -
 m4/exponentd.m4                            |  116 -
 m4/extensions.m4                           |  138 -
 m4/extern-inline.m4                        |  100 -
 m4/fcntl-o.m4                              |  134 -
 m4/float_h.m4                              |   98 -
 m4/fnmatch.m4                              |  156 -
 m4/getdelim.m4                             |   88 -
 m4/getline.m4                              |   96 -
 m4/getopt.m4                               |  368 --
 m4/gettext.m4                              |  401 --
 m4/glibc2.m4                               |   31 -
 m4/glibc21.m4                              |   34 -
 m4/gnulib-cache.m4                         |   55 -
 m4/gnulib-common.m4                        |  377 --
 m4/gnulib-comp.m4                          |  756 ---
 m4/gnulib-tool.m4                          |   57 -
 m4/iconv.m4                                |  268 -
 m4/include_next.m4                         |  270 -
 m4/intdiv0.m4                              |   87 -
 m4/intl.m4                                 |  300 --
 m4/intldir.m4                              |   19 -
 m4/intlmacosx.m4                           |   56 -
 m4/intmax.m4                               |   36 -
 m4/intmax_t.m4                             |   67 -
 m4/inttypes-pri.m4                         |   42 -
 m4/inttypes_h.m4                           |   29 -
 m4/langinfo_h.m4                           |  105 -
 m4/lcmessage.m4                            |   35 -
 m4/lib-ld.m4                               |  119 -
 m4/lib-link.m4                             |  777 ---
 m4/lib-prefix.m4                           |  224 -
 m4/libunistring-base.m4                    |  141 -
 m4/localcharset.m4                         |   17 -
 m4/locale-fr.m4                            |  250 -
 m4/locale-ja.m4                            |  136 -
 m4/locale-zh.m4                            |  130 -
 m4/locale_h.m4                             |  122 -
 m4/localeconv.m4                           |   22 -
 m4/lock.m4                                 |   39 -
 m4/longlong.m4                             |  113 -
 m4/malloc.m4                               |   98 -
 m4/math_h.m4                               |  353 --
 m4/mbrtowc.m4                              |  572 --
 m4/mbsinit.m4                              |   51 -
 m4/mbsrtowcs.m4                            |  155 -
 m4/mbstate_t.m4                            |   41 -
 m4/mbswidth.m4                             |   46 -
 m4/mbtowc.m4                               |   19 -
 m4/memchr.m4                               |   88 -
 m4/mempcpy.m4                              |   26 -
 m4/mmap-anon.m4                            |   55 -
 m4/msvc-inval.m4                           |   19 -
 m4/msvc-nothrow.m4                         |   10 -
 m4/multiarch.m4                            |   62 -
 m4/nl_langinfo.m4                          |   50 -
 m4/nls.m4                                  |   32 -
 m4/nocrash.m4                              |  130 -
 m4/off_t.m4                                |   18 -
 m4/po.m4                                   |  452 --
 m4/printf-posix.m4                         |   48 -
 m4/printf.m4                               | 1570 ------
 m4/progtest.m4                             |   91 -
 m4/rawmemchr.m4                            |   20 -
 m4/realloc.m4                              |   76 -
 m4/regex.m4                                |  261 -
 m4/size_max.m4                             |   79 -
 m4/sleep.m4                                |   62 -
 m4/ssize_t.m4                              |   23 -
 m4/stdalign.m4                             |   52 -
 m4/stdbool.m4                              |  100 -
 m4/stddef_h.m4                             |   47 -
 m4/stdint.m4                               |  484 --
 m4/stdint_h.m4                             |   27 -
 m4/stdio_h.m4                              |  194 -
 m4/stdlib_h.m4                             |  117 -
 m4/strcase.m4                              |   45 -
 m4/strchrnul.m4                            |   50 -
 m4/strerror.m4                             |   96 -
 m4/string_h.m4                             |  120 -
 m4/strings_h.m4                            |   52 -
 m4/strndup.m4                              |   55 -
 m4/strnlen.m4                              |   30 -
 m4/sys_socket_h.m4                         |  176 -
 m4/sys_types_h.m4                          |   24 -
 m4/sysexits.m4                             |   44 -
 m4/threadlib.m4                            |  371 --
 m4/uintmax_t.m4                            |   30 -
 m4/unistd_h.m4                             |  186 -
 m4/vasnprintf.m4                           |  291 -
 m4/visibility.m4                           |   77 -
 m4/vsnprintf.m4                            |   54 -
 m4/warn-on-use.m4                          |   47 -
 m4/wchar_h.m4                              |  225 -
 m4/wchar_t.m4                              |   24 -
 m4/wcrtomb.m4                              |  112 -
 m4/wctype_h.m4                             |  209 -
 m4/wcwidth.m4                              |  101 -
 m4/wint_t.m4                               |   32 -
 m4/xsize.m4                                |   12 -
 po/Makefile.in.in                          |  469 --
 po/Makevars                                |   41 -
 po/Rules-quot                              |   47 -
 256 files changed, 1252 insertions(+), 62817 deletions(-)
 delete mode 100644 ABOUT-NLS
 create mode 100755 bootstrap
 create mode 100644 bootstrap.conf
 delete mode 100755 build-aux/config.rpath
 delete mode 100755 build-aux/gitlog-to-changelog
 delete mode 100644 build-aux/snippet/_Noreturn.h
 delete mode 100644 build-aux/snippet/arg-nonnull.h
 delete mode 100644 build-aux/snippet/c++defs.h
 delete mode 100644 build-aux/snippet/warn-on-use.h
 delete mode 100644 grub-core/gnulib-fix-gcc7-fallthrough.diff
 delete mode 100644 grub-core/gnulib-no-gets.diff
 delete mode 100644 grub-core/gnulib/Makefile.am
 delete mode 100644 grub-core/gnulib/alloca.c
 delete mode 100644 grub-core/gnulib/alloca.in.h
 delete mode 100644 grub-core/gnulib/argp-ba.c
 delete mode 100644 grub-core/gnulib/argp-eexst.c
 delete mode 100644 grub-core/gnulib/argp-fmtstream.c
 delete mode 100644 grub-core/gnulib/argp-fmtstream.h
 delete mode 100644 grub-core/gnulib/argp-fs-xinl.c
 delete mode 100644 grub-core/gnulib/argp-help.c
 delete mode 100644 grub-core/gnulib/argp-namefrob.h
 delete mode 100644 grub-core/gnulib/argp-parse.c
 delete mode 100644 grub-core/gnulib/argp-pin.c
 delete mode 100644 grub-core/gnulib/argp-pv.c
 delete mode 100644 grub-core/gnulib/argp-pvh.c
 delete mode 100644 grub-core/gnulib/argp-xinl.c
 delete mode 100644 grub-core/gnulib/argp.h
 delete mode 100644 grub-core/gnulib/asnprintf.c
 delete mode 100644 grub-core/gnulib/basename-lgpl.c
 delete mode 100644 grub-core/gnulib/btowc.c
 delete mode 100644 grub-core/gnulib/config.charset
 delete mode 100644 grub-core/gnulib/dirname-lgpl.c
 delete mode 100644 grub-core/gnulib/dirname.h
 delete mode 100644 grub-core/gnulib/dosname.h
 delete mode 100644 grub-core/gnulib/errno.in.h
 delete mode 100644 grub-core/gnulib/error.c
 delete mode 100644 grub-core/gnulib/error.h
 delete mode 100644 grub-core/gnulib/float+.h
 delete mode 100644 grub-core/gnulib/float.c
 delete mode 100644 grub-core/gnulib/float.in.h
 delete mode 100644 grub-core/gnulib/fnmatch.c
 delete mode 100644 grub-core/gnulib/fnmatch.in.h
 delete mode 100644 grub-core/gnulib/fnmatch_loop.c
 delete mode 100644 grub-core/gnulib/getdelim.c
 delete mode 100644 grub-core/gnulib/getline.c
 delete mode 100644 grub-core/gnulib/getopt.c
 delete mode 100644 grub-core/gnulib/getopt.in.h
 delete mode 100644 grub-core/gnulib/getopt1.c
 delete mode 100644 grub-core/gnulib/getopt_int.h
 delete mode 100644 grub-core/gnulib/gettext.h
 delete mode 100644 grub-core/gnulib/intprops.h
 delete mode 100644 grub-core/gnulib/itold.c
 delete mode 100644 grub-core/gnulib/langinfo.in.h
 delete mode 100644 grub-core/gnulib/localcharset.c
 delete mode 100644 grub-core/gnulib/localcharset.h
 delete mode 100644 grub-core/gnulib/locale.in.h
 delete mode 100644 grub-core/gnulib/localeconv.c
 delete mode 100644 grub-core/gnulib/malloc.c
 delete mode 100644 grub-core/gnulib/mbrtowc.c
 delete mode 100644 grub-core/gnulib/mbsinit.c
 delete mode 100644 grub-core/gnulib/mbsrtowcs-impl.h
 delete mode 100644 grub-core/gnulib/mbsrtowcs-state.c
 delete mode 100644 grub-core/gnulib/mbsrtowcs.c
 delete mode 100644 grub-core/gnulib/mbswidth.c
 delete mode 100644 grub-core/gnulib/mbswidth.h
 delete mode 100644 grub-core/gnulib/mbtowc-impl.h
 delete mode 100644 grub-core/gnulib/mbtowc.c
 delete mode 100644 grub-core/gnulib/memchr.c
 delete mode 100644 grub-core/gnulib/memchr.valgrind
 delete mode 100644 grub-core/gnulib/mempcpy.c
 delete mode 100644 grub-core/gnulib/msvc-inval.c
 delete mode 100644 grub-core/gnulib/msvc-inval.h
 delete mode 100644 grub-core/gnulib/msvc-nothrow.c
 delete mode 100644 grub-core/gnulib/msvc-nothrow.h
 delete mode 100644 grub-core/gnulib/nl_langinfo.c
 delete mode 100644 grub-core/gnulib/printf-args.c
 delete mode 100644 grub-core/gnulib/printf-args.h
 delete mode 100644 grub-core/gnulib/printf-parse.c
 delete mode 100644 grub-core/gnulib/printf-parse.h
 delete mode 100644 grub-core/gnulib/progname.c
 delete mode 100644 grub-core/gnulib/progname.h
 delete mode 100644 grub-core/gnulib/rawmemchr.c
 delete mode 100644 grub-core/gnulib/rawmemchr.valgrind
 delete mode 100644 grub-core/gnulib/realloc.c
 delete mode 100644 grub-core/gnulib/ref-add.sin
 delete mode 100644 grub-core/gnulib/ref-del.sin
 delete mode 100644 grub-core/gnulib/regcomp.c
 delete mode 100644 grub-core/gnulib/regex.c
 delete mode 100644 grub-core/gnulib/regex.h
 delete mode 100644 grub-core/gnulib/regex_internal.c
 delete mode 100644 grub-core/gnulib/regex_internal.h
 delete mode 100644 grub-core/gnulib/regexec.c
 delete mode 100644 grub-core/gnulib/size_max.h
 delete mode 100644 grub-core/gnulib/sleep.c
 delete mode 100644 grub-core/gnulib/stdalign.in.h
 delete mode 100644 grub-core/gnulib/stdbool.in.h
 delete mode 100644 grub-core/gnulib/stddef.in.h
 delete mode 100644 grub-core/gnulib/stdint.in.h
 delete mode 100644 grub-core/gnulib/stdio.in.h
 delete mode 100644 grub-core/gnulib/stdlib.in.h
 delete mode 100644 grub-core/gnulib/strcasecmp.c
 delete mode 100644 grub-core/gnulib/strchrnul.c
 delete mode 100644 grub-core/gnulib/strchrnul.valgrind
 delete mode 100644 grub-core/gnulib/streq.h
 delete mode 100644 grub-core/gnulib/strerror-override.c
 delete mode 100644 grub-core/gnulib/strerror-override.h
 delete mode 100644 grub-core/gnulib/strerror.c
 delete mode 100644 grub-core/gnulib/string.in.h
 delete mode 100644 grub-core/gnulib/strings.in.h
 delete mode 100644 grub-core/gnulib/stripslash.c
 delete mode 100644 grub-core/gnulib/strncasecmp.c
 delete mode 100644 grub-core/gnulib/strndup.c
 delete mode 100644 grub-core/gnulib/strnlen.c
 delete mode 100644 grub-core/gnulib/strnlen1.c
 delete mode 100644 grub-core/gnulib/strnlen1.h
 delete mode 100644 grub-core/gnulib/sys_types.in.h
 delete mode 100644 grub-core/gnulib/sysexits.in.h
 delete mode 100644 grub-core/gnulib/unistd.c
 delete mode 100644 grub-core/gnulib/unistd.in.h
 delete mode 100644 grub-core/gnulib/unitypes.in.h
 delete mode 100644 grub-core/gnulib/uniwidth.in.h
 delete mode 100644 grub-core/gnulib/uniwidth/cjk.h
 delete mode 100644 grub-core/gnulib/uniwidth/width.c
 delete mode 100644 grub-core/gnulib/vasnprintf.c
 delete mode 100644 grub-core/gnulib/vasnprintf.h
 delete mode 100644 grub-core/gnulib/verify.h
 delete mode 100644 grub-core/gnulib/vsnprintf.c
 delete mode 100644 grub-core/gnulib/wchar.in.h
 delete mode 100644 grub-core/gnulib/wcrtomb.c
 delete mode 100644 grub-core/gnulib/wctype-h.c
 delete mode 100644 grub-core/gnulib/wctype.in.h
 delete mode 100644 grub-core/gnulib/wcwidth.c
 delete mode 100644 grub-core/gnulib/xsize.c
 delete mode 100644 grub-core/gnulib/xsize.h
 delete mode 100644 m4/00gnulib.m4
 delete mode 100644 m4/alloca.m4
 delete mode 100644 m4/argp.m4
 delete mode 100644 m4/btowc.m4
 delete mode 100644 m4/codeset.m4
 delete mode 100644 m4/configmake.m4
 delete mode 100644 m4/dirname.m4
 delete mode 100644 m4/double-slash-root.m4
 delete mode 100644 m4/eealloc.m4
 delete mode 100644 m4/errno_h.m4
 delete mode 100644 m4/error.m4
 delete mode 100644 m4/exponentd.m4
 delete mode 100644 m4/extensions.m4
 delete mode 100644 m4/extern-inline.m4
 delete mode 100644 m4/fcntl-o.m4
 delete mode 100644 m4/float_h.m4
 delete mode 100644 m4/fnmatch.m4
 delete mode 100644 m4/getdelim.m4
 delete mode 100644 m4/getline.m4
 delete mode 100644 m4/getopt.m4
 delete mode 100644 m4/gettext.m4
 delete mode 100644 m4/glibc2.m4
 delete mode 100644 m4/glibc21.m4
 delete mode 100644 m4/gnulib-cache.m4
 delete mode 100644 m4/gnulib-common.m4
 delete mode 100644 m4/gnulib-comp.m4
 delete mode 100644 m4/gnulib-tool.m4
 delete mode 100644 m4/iconv.m4
 delete mode 100644 m4/include_next.m4
 delete mode 100644 m4/intdiv0.m4
 delete mode 100644 m4/intl.m4
 delete mode 100644 m4/intldir.m4
 delete mode 100644 m4/intlmacosx.m4
 delete mode 100644 m4/intmax.m4
 delete mode 100644 m4/intmax_t.m4
 delete mode 100644 m4/inttypes-pri.m4
 delete mode 100644 m4/inttypes_h.m4
 delete mode 100644 m4/langinfo_h.m4
 delete mode 100644 m4/lcmessage.m4
 delete mode 100644 m4/lib-ld.m4
 delete mode 100644 m4/lib-link.m4
 delete mode 100644 m4/lib-prefix.m4
 delete mode 100644 m4/libunistring-base.m4
 delete mode 100644 m4/localcharset.m4
 delete mode 100644 m4/locale-fr.m4
 delete mode 100644 m4/locale-ja.m4
 delete mode 100644 m4/locale-zh.m4
 delete mode 100644 m4/locale_h.m4
 delete mode 100644 m4/localeconv.m4
 delete mode 100644 m4/lock.m4
 delete mode 100644 m4/longlong.m4
 delete mode 100644 m4/malloc.m4
 delete mode 100644 m4/math_h.m4
 delete mode 100644 m4/mbrtowc.m4
 delete mode 100644 m4/mbsinit.m4
 delete mode 100644 m4/mbsrtowcs.m4
 delete mode 100644 m4/mbstate_t.m4
 delete mode 100644 m4/mbswidth.m4
 delete mode 100644 m4/mbtowc.m4
 delete mode 100644 m4/memchr.m4
 delete mode 100644 m4/mempcpy.m4
 delete mode 100644 m4/mmap-anon.m4
 delete mode 100644 m4/msvc-inval.m4
 delete mode 100644 m4/msvc-nothrow.m4
 delete mode 100644 m4/multiarch.m4
 delete mode 100644 m4/nl_langinfo.m4
 delete mode 100644 m4/nls.m4
 delete mode 100644 m4/nocrash.m4
 delete mode 100644 m4/off_t.m4
 delete mode 100644 m4/po.m4
 delete mode 100644 m4/printf-posix.m4
 delete mode 100644 m4/printf.m4
 delete mode 100644 m4/progtest.m4
 delete mode 100644 m4/rawmemchr.m4
 delete mode 100644 m4/realloc.m4
 delete mode 100644 m4/regex.m4
 delete mode 100644 m4/size_max.m4
 delete mode 100644 m4/sleep.m4
 delete mode 100644 m4/ssize_t.m4
 delete mode 100644 m4/stdalign.m4
 delete mode 100644 m4/stdbool.m4
 delete mode 100644 m4/stddef_h.m4
 delete mode 100644 m4/stdint.m4
 delete mode 100644 m4/stdint_h.m4
 delete mode 100644 m4/stdio_h.m4
 delete mode 100644 m4/stdlib_h.m4
 delete mode 100644 m4/strcase.m4
 delete mode 100644 m4/strchrnul.m4
 delete mode 100644 m4/strerror.m4
 delete mode 100644 m4/string_h.m4
 delete mode 100644 m4/strings_h.m4
 delete mode 100644 m4/strndup.m4
 delete mode 100644 m4/strnlen.m4
 delete mode 100644 m4/sys_socket_h.m4
 delete mode 100644 m4/sys_types_h.m4
 delete mode 100644 m4/sysexits.m4
 delete mode 100644 m4/threadlib.m4
 delete mode 100644 m4/uintmax_t.m4
 delete mode 100644 m4/unistd_h.m4
 delete mode 100644 m4/vasnprintf.m4
 delete mode 100644 m4/visibility.m4
 delete mode 100644 m4/vsnprintf.m4
 delete mode 100644 m4/warn-on-use.m4
 delete mode 100644 m4/wchar_h.m4
 delete mode 100644 m4/wchar_t.m4
 delete mode 100644 m4/wcrtomb.m4
 delete mode 100644 m4/wctype_h.m4
 delete mode 100644 m4/wcwidth.m4
 delete mode 100644 m4/wint_t.m4
 delete mode 100644 m4/xsize.m4
 delete mode 100644 po/Makefile.in.in
 delete mode 100644 po/Makevars
 delete mode 100644 po/Rules-quot

diff --git a/.gitignore b/.gitignore
index eca17bec9..3ef4c0d30 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+*~
 00_header
 10_*
 20_linux_xen
@@ -6,11 +7,13 @@
 41_custom
 *.1
 *.8
+ABOUT-NLS
 aclocal.m4
 ahci_test
 ascii.bitmaps
 ascii.h
 autom4te.cache
+build-aux
 build-grub-gen-asciih
 build-grub-gen-widthspec
 build-grub-mkfont
@@ -42,6 +45,7 @@ gensymlist.sh
 gentrigtables
 gentrigtables.exe
 gettext_strings_test
+/gnulib
 grub-bin2h
 /grub-bios-setup
 /grub-bios-setup.exe
@@ -134,6 +138,7 @@ help_test
 *.image.exe
 include/grub/cpu
 include/grub/machine
+INSTALL.grub
 install-sh
 lib/libgcrypt-grub
 libgrub_a_init.c
@@ -142,6 +147,7 @@ libgrub_a_init.c
 lzocompress_test
 *.marker
 Makefile
+/m4
 *.mod
 mod-*.c
 missing
@@ -155,7 +161,11 @@ pata_test
 *.pp
 po/*.mo
 po/grub.pot
+po/Makefile.in.in
+po/Makevars
+po/Makevars.template
 po/POTFILES
+po/Rules-quot
 po/stamp-po
 printf_test
 priority_queue_unit_test
@@ -202,25 +212,7 @@ grub-core/*.module.exe
 grub-core/*.pp
 grub-core/kernel.img.bin
 util/bash-completion.d/grub
-grub-core/gnulib/alloca.h
-grub-core/gnulib/arg-nonnull.h
-grub-core/gnulib/c++defs.h
-grub-core/gnulib/charset.alias
-grub-core/gnulib/configmake.h
-grub-core/gnulib/float.h
-grub-core/gnulib/getopt.h
-grub-core/gnulib/langinfo.h
-grub-core/gnulib/ref-add.sed
-grub-core/gnulib/ref-del.sed
-grub-core/gnulib/stdio.h
-grub-core/gnulib/stdlib.h
-grub-core/gnulib/string.h
-grub-core/gnulib/strings.h
-grub-core/gnulib/sys
-grub-core/gnulib/unistd.h
-grub-core/gnulib/warn-on-use.h
-grub-core/gnulib/wchar.h
-grub-core/gnulib/wctype.h
+grub-core/gnulib
 grub-core/rs_decoder.h
 widthspec.bin
 widthspec.h
@@ -242,7 +234,6 @@ po/POTFILES-shell.in
 grub-core/gnulib/locale.h
 grub-core/gnulib/unitypes.h
 grub-core/gnulib/uniwidth.h
-build-aux/test-driver
 /garbage-gen
 /garbage-gen.exe
 /grub-fs-tester
diff --git a/ABOUT-NLS b/ABOUT-NLS
deleted file mode 100644
index 866b904ec..000000000
--- a/ABOUT-NLS
+++ /dev/null
@@ -1,223 +0,0 @@
-1 Notes on the Free Translation Project
-***************************************
-
-Free software is going international!  The Free Translation Project is
-a way to get maintainers of free software, translators, and users all
-together, so that free software will gradually become able to speak many
-languages.  A few packages already provide translations for their
-messages.
-
-   If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
-itself available at your nearest GNU archive site.  But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
-this package with messages translated.
-
-   Installers will find here some useful hints.  These notes also
-explain how users should proceed for getting the programs to use the
-available translations.  They tell how people wanting to contribute and
-work on translations can contact the appropriate team.
-
-   When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used.  The information can be found in the
-`intl/VERSION' file, in internationalized packages.
-
-1.1 Quick configuration advice
-==============================
-
-If you want to exploit the full power of internationalization, you
-should configure it using
-
-     ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed.  So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation.  Future versions of GNU `gettext' will
-very likely convey even more functionality.  So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
-   So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-1.2 INSTALL Matters
-===================
-
-Some packages are "localizable" when properly installed; the programs
-they contain can be made to speak your own native language.  Most such
-packages use GNU `gettext'.  Other packages have their own ways to
-internationalization, predating GNU `gettext'.
-
-   By default, this package will be installed to allow translation of
-messages.  It will automatically detect whether the system already
-provides the GNU `gettext' functions.  If not, the included GNU
-`gettext' library will be used.  This library is wholly contained
-within this package, usually in the `intl/' subdirectory, so prior
-installation of the GNU `gettext' package is _not_ required.
-Installers may use special options at configuration time for changing
-the default behaviour.  The commands:
-
-     ./configure --with-included-gettext
-     ./configure --disable-nls
-
-will, respectively, bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
-
-   When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this.  This might not be desirable.  You should use
-the more recent version of the GNU `gettext' library.  I.e. if the file
-`intl/VERSION' shows that the library which comes with this package is
-more recent, you should use
-
-     ./configure --with-included-gettext
-
-to prevent auto-detection.
-
-   The configuration process will not test for the `catgets' function
-and therefore it will not be used.  The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
-
-   Internationalized packages usually have many `po/LL.po' files, where
-LL gives an ISO 639 two-letter code identifying the language.  Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package.  However, the environment variable `LINGUAS'
-may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
-codes, stating which languages are allowed.
-
-1.3 Using This Package
-======================
-
-As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination.  Here `LL' is an ISO 639 two-letter language code,
-and `CC' is an ISO 3166 two-letter country code.  For example, let's
-suppose that you speak German and live in Germany.  At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
-
-   You might think that the country code specification is redundant.
-But in fact, some languages have dialects in different countries.  For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
-country code serves to distinguish the dialects.
-
-   The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc.  On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
-locales supported by your system for your language by running the
-command `locale -a | grep '^LL''.
-
-   Not all programs have translations for all languages.  By default, an
-English message is shown in place of a nonexistent translation.  If you
-understand other languages, you can set up a priority list of languages.
-This is done through a different environment variable, called
-`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
-set to the primary language; this is required by other parts of the
-system libraries.  For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
-
-   Special advice for Norwegian users: The language code for Norwegian
-bokma*l changed from `no' to `nb' recently (in 2003).  During the
-transition period, while some message catalogs for this language are
-installed under `nb' and some older ones under `no', it's recommended
-for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
-older translations are used.
-
-   In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect.  For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
-
-1.4 Translating Teams
-=====================
-
-For the Free Translation Project to be a success, we need interested
-people who like their own language and write it well, and who are also
-able to synergize with other translators speaking the same language.
-Each translation team has its own mailing list.  The up-to-date list of
-teams can be found at the Free Translation Project's homepage,
-`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
-area.
-
-   If you'd like to volunteer to _work_ at translating messages, you
-should become a member of the translating team for your own language.
-The subscribing address is _not_ the same as the list itself, it has
-`-request' appended.  For example, speakers of Swedish can send a
-message to address@hidden', having this message body:
-
-     subscribe
-
-   Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around.  If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to address@hidden' to reach the
-coordinator for all translator teams.
-
-   The English team is special.  It works at improving and uniformizing
-the terminology in use.  Proven linguistic skills are praised more than
-programming skills, here.
-
-1.5 Available Packages
-======================
-
-Languages are not equally supported in all packages.  The following
-matrix shows the current state of internationalization, as of October
-2006.  The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
-translation percentage of at least 50%.
-
-# Matrix here is removed!
-
-   Some counters in the preceding matrix are higher than the number of
-visible blocks let us expect.  This is because a few extra PO files are
-used for implementing regional variants of languages, or language
-dialects.
-
-   For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer.  There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
-   If October 2006 seems to be old, you may fetch a more recent copy of
-this `ABOUT-NLS' file on most GNU archive sites.  The most up-to-date
-matrix with full percentage details can be found at
-`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
-
-1.6 Using `gettext' in new packages
-===================================
-
-If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package.  Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library.  This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
-
-   Once the sources are changed appropriately and the setup can handle
-the use of `gettext' the only thing missing are the translations.  The
-Free Translation Project is also available for packages which are not
-developed inside the GNU project.  Therefore the information given above
-applies also for every other Free Software Project.  Contact
address@hidden' to make the `.pot' files available to
-the translation teams.
-
diff --git a/autogen.sh b/autogen.sh
index 7537561ad..38e9cdd97 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -2,6 +2,11 @@
 
 set -e
 
+if [ ! -e grub-core/gnulib/stdlib.in.h ]; then
+  echo "Gnulib not yet bootstrapped; run ./bootstrap instead." >&2
+  exit 1
+fi
+
 # Set ${PYTHON} to plain 'python' if not set already
 : ${PYTHON:=python}
 
@@ -82,6 +87,17 @@ done
 echo "Saving timestamps..."
 echo timestamp > stamp-h.in
 
-echo "Running autoreconf..."
-autoreconf -vi
+if [ -z "$FROM_BOOTSTRAP" ]; then
+  # Unaided autoreconf is likely to install older versions of many files
+  # than the ones provided by Gnulib, but in most cases this won't matter
+  # very much.  This mode is provided so that you can run ./autogen.sh to
+  # regenerate the GRUB build system in an unpacked release tarball (perhaps
+  # after patching it), even on systems that don't have access to
+  # gnulib.git.
+  echo "Running autoreconf..."
+  cp -a INSTALL INSTALL.grub
+  autoreconf -vif
+  mv INSTALL.grub INSTALL
+fi
+
 exit 0
diff --git a/bootstrap b/bootstrap
new file mode 100755
index 000000000..5b08e7e2d
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,1073 @@
+#! /bin/sh
+# Print a version string.
+scriptversion=2019-01-04.17; # UTC
+
+# Bootstrap this package from checked-out sources.
+
+# Copyright (C) 2003-2019 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 <https://www.gnu.org/licenses/>.
+
+# Originally written by Paul Eggert.  The canonical version of this
+# script is maintained as build-aux/bootstrap in gnulib, however, to
+# be useful to your project, you should place a copy of it under
+# version control in the top-level directory of your project.  The
+# intent is that all customization can be done with a bootstrap.conf
+# file also maintained in your version control; gnulib comes with a
+# template build-aux/bootstrap.conf to get you started.
+
+# Please report bugs or propose patches to address@hidden
+
+nl='
+'
+
+# Ensure file names are sorted consistently across platforms.
+LC_ALL=C
+export LC_ALL
+
+# Ensure that CDPATH is not set.  Otherwise, the output from cd
+# would cause trouble in at least one use below.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+local_gl_dir=gl
+
+# Honor $PERL, but work even if there is none.
+PERL="${PERL-perl}"
+
+me=$0
+
+default_gnulib_url=git://git.sv.gnu.org/gnulib
+
+usage() {
+  cat <<EOF
+Usage: $me [OPTION]...
+Bootstrap this package from the checked-out sources.
+
+Options:
+ --gnulib-srcdir=DIRNAME  specify the local directory where gnulib
+                          sources reside.  Use this if you already
+                          have gnulib sources on your machine, and
+                          do not want to waste your bandwidth downloading
+                          them again.  Defaults to \$GNULIB_SRCDIR
+ --bootstrap-sync         if this bootstrap script is not identical to
+                          the version in the local gnulib sources,
+                          update this script, and then restart it with
+                          /bin/sh or the shell \$CONFIG_SHELL
+ --no-bootstrap-sync      do not check whether bootstrap is out of sync
+ --copy                   copy files instead of creating symbolic links
+ --force                  attempt to bootstrap even if the sources seem
+                          not to have been checked out
+ --no-git                 do not use git to update gnulib.  Requires that
+                          --gnulib-srcdir point to a correct gnulib snapshot
+ --skip-po                do not download po files
+
+If the file $me.conf exists in the same directory as this script, its
+contents are read as shell variables to configure the bootstrap.
+
+For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR
+are honored.
+
+Gnulib sources can be fetched in various ways:
+
+ * If this package is in a git repository with a 'gnulib' submodule
+   configured, then that submodule is initialized and updated and sources
+   are fetched from there.  If \$GNULIB_SRCDIR is set (directly or via
+   --gnulib-srcdir) and is a git repository, then it is used as a reference.
+
+ * Otherwise, if \$GNULIB_SRCDIR is set (directly or via --gnulib-srcdir),
+   then sources are fetched from that local directory.  If it is a git
+   repository and \$GNULIB_REVISION is set, then that revision is checked
+   out.
+
+ * Otherwise, if this package is in a git repository with a 'gnulib'
+   submodule configured, then that submodule is initialized and updated and
+   sources are fetched from there.
+
+ * Otherwise, if the 'gnulib' directory does not exist, Gnulib sources are
+   cloned into that directory using git from \$GNULIB_URL, defaulting to
+   $default_gnulib_url.
+   If \$GNULIB_REVISION is set, then that revision is checked out.
+
+ * Otherwise, the existing Gnulib sources in the 'gnulib' directory are
+   used.  If it is a git repository and \$GNULIB_REVISION is set, then that
+   revision is checked out.
+
+If you maintain a package and want to pin a particular revision of the
+Gnulib sources that has been tested with your package, then there are two
+possible approaches: either configure a 'gnulib' submodule with the
+appropriate revision, or set \$GNULIB_REVISION (and if necessary
+\$GNULIB_URL) in $me.conf.
+
+Running without arguments will suffice in most cases.
+EOF
+}
+
+# warnf_ FORMAT-STRING ARG1...
+warnf_ ()
+{
+  warnf_format_=$1
+  shift
+  nl='
+'
+  case $* in
+    *$nl*) me_=$(printf "$me"|tr "$nl|" '??')
+       printf "$warnf_format_" "$@" | sed "s|^|$me_: |" ;;
+    *) printf "$me: $warnf_format_" "$@" ;;
+  esac >&2
+}
+
+# warn_ WORD1...
+warn_ ()
+{
+  # If IFS does not start with ' ', set it and emit the warning in a subshell.
+  case $IFS in
+    ' '*) warnf_ '%s\n' "$*";;
+    *)    (IFS=' '; warn_ "$@");;
+  esac
+}
+
+# die WORD1...
+die() { warn_ "$@"; exit 1; }
+
+# Configuration.
+
+# Name of the Makefile.am
+gnulib_mk=gnulib.mk
+
+# List of gnulib modules needed.
+gnulib_modules=
+
+# Any gnulib files needed that are not in modules.
+gnulib_files=
+
+: ${AUTOPOINT=autopoint}
+: ${AUTORECONF=autoreconf}
+
+# A function to be called right after gnulib-tool is run.
+# Override it via your own definition in bootstrap.conf.
+bootstrap_post_import_hook() { :; }
+
+# A function to be called after everything else in this script.
+# Override it via your own definition in bootstrap.conf.
+bootstrap_epilogue() { :; }
+
+# The command to download all .po files for a specified domain into a
+# specified directory.  Fill in the first %s with the destination
+# directory and the second with the domain name.
+po_download_command_format=\
+"wget --mirror --level=1 -nd -q -A.po -P '%s' \
+ https://translationproject.org/latest/%s/";
+
+# Prefer a non-empty tarname (4th argument of AC_INIT if given), else
+# fall back to the package name (1st argument with munging)
+extract_package_name='
+  /^AC_INIT(\[*/{
+     s///
+     /^[^,]*,[^,]*,[^,]*,[ []*\([^][ ,)]\)/{
+       s//\1/
+       s/[],)].*//
+       p
+       q
+     }
+     s/[],)].*//
+     s/^GNU //
+     y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+     s/[^abcdefghijklmnopqrstuvwxyz0123456789_]/-/g
+     p
+  }
+'
+package=$(sed -n "$extract_package_name" configure.ac) \
+  || die 'cannot find package name in configure.ac'
+gnulib_name=lib$package
+
+build_aux=build-aux
+source_base=lib
+m4_base=m4
+doc_base=doc
+tests_base=tests
+gnulib_extra_files="
+        build-aux/install-sh
+        build-aux/mdate-sh
+        build-aux/texinfo.tex
+        build-aux/depcomp
+        build-aux/config.guess
+        build-aux/config.sub
+        doc/INSTALL
+"
+
+# Additional gnulib-tool options to use.  Use "\newline" to break lines.
+gnulib_tool_option_extras=
+
+# Other locale categories that need message catalogs.
+EXTRA_LOCALE_CATEGORIES=
+
+# Additional xgettext options to use.  Use "\\\newline" to break lines.
+XGETTEXT_OPTIONS='\\\
+ --flag=_:1:pass-c-format\\\
+ --flag=N_:1:pass-c-format\\\
+ --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
+'
+
+# Package bug report address and copyright holder for gettext files
+COPYRIGHT_HOLDER='Free Software Foundation, Inc.'
address@hidden
+
+# Files we don't want to import.
+excluded_files=
+
+# File that should exist in the top directory of a checked out hierarchy,
+# but not in a distribution tarball.
+checkout_only_file=README-hacking
+
+# Whether to use copies instead of symlinks.
+copy=false
+
+# Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
+# those files to be generated in directories like lib/, m4/, and po/.
+# Or set it to 'auto' to make this script select which to use based
+# on which version control system (if any) is used in the source directory.
+vc_ignore=auto
+
+# Set this to true in bootstrap.conf to enable --bootstrap-sync by
+# default.
+bootstrap_sync=false
+
+# Use git to update gnulib sources
+use_git=true
+
+check_exists() {
+  if test "$1" = "--verbose"; then
+    ($2 --version </dev/null) >/dev/null 2>&1
+    if test $? -ge 126; then
+      # If not found, run with diagnostics as one may be
+      # presented with env variables to set to find the right version
+      ($2 --version </dev/null)
+    fi
+  else
+    ($1 --version </dev/null) >/dev/null 2>&1
+  fi
+
+  test $? -lt 126
+}
+
+# find_tool ENVVAR NAMES...
+# -------------------------
+# Search for a required program.  Use the value of ENVVAR, if set,
+# otherwise find the first of the NAMES that can be run.
+# If found, set ENVVAR to the program name, die otherwise.
+#
+# FIXME: code duplication, see also gnu-web-doc-update.
+find_tool ()
+{
+  find_tool_envvar=$1
+  shift
+  find_tool_names=$@
+  eval "find_tool_res=\$$find_tool_envvar"
+  if test x"$find_tool_res" = x; then
+    for i; do
+      if check_exists $i; then
+        find_tool_res=$i
+        break
+      fi
+    done
+  fi
+  if test x"$find_tool_res" = x; then
+    warn_ "one of these is required: $find_tool_names;"
+    die   "alternatively set $find_tool_envvar to a compatible tool"
+  fi
+  eval "$find_tool_envvar=\$find_tool_res"
+  eval "export $find_tool_envvar"
+}
+
+# Override the default configuration, if necessary.
+# Make sure that bootstrap.conf is sourced from the current directory
+# if we were invoked as "sh bootstrap".
+case "$0" in
+  */*) test -r "$0.conf" && . "$0.conf" ;;
+  *) test -r "$0.conf" && . ./"$0.conf" ;;
+esac
+
+if test "$vc_ignore" = auto; then
+  vc_ignore=
+  test -d .git && vc_ignore=.gitignore
+  test -d CVS && vc_ignore="$vc_ignore .cvsignore"
+fi
+
+if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then
+  use_gnulib=false
+else
+  use_gnulib=true
+fi
+
+# Translate configuration into internal form.
+
+# Parse options.
+
+for option
+do
+  case $option in
+  --help)
+    usage
+    exit;;
+  --gnulib-srcdir=*)
+    GNULIB_SRCDIR=${option#--gnulib-srcdir=};;
+  --skip-po)
+    SKIP_PO=t;;
+  --force)
+    checkout_only_file=;;
+  --copy)
+    copy=true;;
+  --bootstrap-sync)
+    bootstrap_sync=true;;
+  --no-bootstrap-sync)
+    bootstrap_sync=false;;
+  --no-git)
+    use_git=false;;
+  *)
+    die "$option: unknown option";;
+  esac
+done
+
+$use_git || test -d "$GNULIB_SRCDIR" \
+  || die "Error: --no-git requires --gnulib-srcdir"
+
+if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
+  die "Bootstrapping from a non-checked-out distribution is risky."
+fi
+
+# Strip blank and comment lines to leave significant entries.
+gitignore_entries() {
+  sed '/^#/d; /^$/d' "$@"
+}
+
+# If $STR is not already on a line by itself in $FILE, insert it at the start.
+# Entries are inserted at the start of the ignore list to ensure existing
+# entries starting with ! are not overridden.  Such entries support
+# whitelisting exceptions after a more generic blacklist pattern.
+insert_if_absent() {
+  file=$1
+  str=$2
+  test -f $file || touch $file
+  test -r $file || die "Error: failed to read ignore file: $file"
+  duplicate_entries=$(gitignore_entries $file | sort | uniq -d)
+  if [ "$duplicate_entries" ] ; then
+    die "Error: Duplicate entries in $file: " $duplicate_entries
+  fi
+  linesold=$(gitignore_entries $file | wc -l)
+  linesnew=$( { echo "$str"; cat $file; } | gitignore_entries | sort -u | wc 
-l)
+  if [ $linesold != $linesnew ] ; then
+    { echo "$str" | cat - $file > $file.bak && mv $file.bak $file; } \
+      || die "insert_if_absent $file $str: failed"
+  fi
+}
+
+# Adjust $PATTERN for $VC_IGNORE_FILE and insert it with
+# insert_if_absent.
+insert_vc_ignore() {
+  vc_ignore_file="$1"
+  pattern="$2"
+  case $vc_ignore_file in
+  *.gitignore)
+    # A .gitignore entry that does not start with '/' applies
+    # recursively to subdirectories, so prepend '/' to every
+    # .gitignore entry.
+    pattern=$(echo "$pattern" | sed s,^,/,);;
+  esac
+  insert_if_absent "$vc_ignore_file" "$pattern"
+}
+
+# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
+found_aux_dir=no
+grep '^[        ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
+    >/dev/null && found_aux_dir=yes
+grep '^[        ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
+    >/dev/null && found_aux_dir=yes
+test $found_aux_dir = yes \
+  || die "configure.ac lacks 'AC_CONFIG_AUX_DIR([$build_aux])'; add it"
+
+# If $build_aux doesn't exist, create it now, otherwise some bits
+# below will malfunction.  If creating it, also mark it as ignored.
+if test ! -d $build_aux; then
+  mkdir $build_aux
+  for dot_ig in x $vc_ignore; do
+    test $dot_ig = x && continue
+    insert_vc_ignore $dot_ig $build_aux
+  done
+fi
+
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+sort_ver() { # sort -V is not generally available
+  ver1="$1"
+  ver2="$2"
+
+  # split on '.' and compare each component
+  i=1
+  while : ; do
+    p1=$(echo "$ver1" | cut -d. -f$i)
+    p2=$(echo "$ver2" | cut -d. -f$i)
+    if [ ! "$p1" ]; then
+      echo "$1 $2"
+      break
+    elif [ ! "$p2" ]; then
+      echo "$2 $1"
+      break
+    elif [ ! "$p1" = "$p2" ]; then
+      if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison
+        echo "$2 $1"
+      elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison
+        echo "$1 $2"
+      else # numeric, then lexicographic comparison
+        lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
+        if [ "$lp" = "$p2" ]; then
+          echo "$1 $2"
+        else
+          echo "$2 $1"
+        fi
+      fi
+      break
+    fi
+    i=$(($i+1))
+  done
+}
+
+get_version_sed='
+# Move version to start of line.
+s/.*[v ]\([0-9]\)/\1/
+
+# Skip lines that do not start with version.
+/^[0-9]/!d
+
+# Remove characters after the version.
+s/[^.a-z0-9-].*//
+
+# The first component must be digits only.
+s/^\([0-9]*\)[a-z-].*/\1/
+
+#the following essentially does s/5.005/5.5/
+s/\.0*\([1-9]\)/.\1/g
+p
+q'
+
+get_version() {
+  app=$1
+
+  $app --version >/dev/null 2>&1 || { $app --version; return 1; }
+
+  $app --version 2>&1 | sed -n "$get_version_sed"
+}
+
+check_versions() {
+  ret=0
+
+  while read app req_ver; do
+    # We only need libtoolize from the libtool package.
+    if test "$app" = libtool; then
+      app=libtoolize
+    fi
+    # Exempt git if --no-git is in effect.
+    if test "$app" = git; then
+      $use_git || continue
+    fi
+    # Honor $APP variables ($TAR, $AUTOCONF, etc.)
+    appvar=$(echo $app | LC_ALL=C tr '[a-z]-' '[A-Z]_')
+    test "$appvar" = TAR && appvar=AMTAR
+    case $appvar in
+        GZIP) ;; # Do not use $GZIP:  it contains gzip options.
+        PERL::*) ;; # Keep perl modules as-is
+        *) eval "app=\${$appvar-$app}" ;;
+    esac
+
+    # Handle the still-experimental Automake-NG programs specially.
+    # They remain named as the mainstream Automake programs ("automake",
+    # and "aclocal") to avoid gratuitous incompatibilities with
+    # pre-existing usages (by, say, autoreconf, or custom autogen.sh
+    # scripts), but correctly identify themselves (as being part of
+    # "GNU automake-ng") when asked their version.
+    case $app in
+      automake-ng|aclocal-ng)
+        app=${app%-ng}
+        ($app --version | grep '(GNU automake-ng)') >/dev/null 2>&1 || {
+          warn_ "Error: '$app' not found or not from Automake-NG"
+          ret=1
+          continue
+        } ;;
+      # Another check is for perl modules.  These can be written as
+      # e.g. perl::XML::XPath in case of XML::XPath module, etc.
+      perl::*)
+        # Extract module name
+        app="${app#perl::}"
+        if ! $PERL -m"$app" -e 'exit 0' >/dev/null 2>&1; then
+          warn_ "Error: perl module '$app' not found"
+          ret=1
+        fi
+        continue
+        ;;
+    esac
+    if [ "$req_ver" = "-" ]; then
+      # Merely require app to exist; not all prereq apps are well-behaved
+      # so we have to rely on $? rather than get_version.
+      if ! check_exists --verbose $app; then
+        warn_ "Error: '$app' not found"
+        ret=1
+      fi
+    else
+      # Require app to produce a new enough version string.
+      inst_ver=$(get_version $app)
+      if [ ! "$inst_ver" ]; then
+        warn_ "Error: '$app' not found"
+        ret=1
+      else
+        latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
+        if [ ! "$latest_ver" = "$inst_ver" ]; then
+          warnf_ '%s\n'                                        \
+              "Error: '$app' version == $inst_ver is too old"  \
+              "       '$app' version >= $req_ver is required"
+          ret=1
+        fi
+      fi
+    fi
+  done
+
+  return $ret
+}
+
+print_versions() {
+  echo "Program    Min_version"
+  echo "----------------------"
+  printf %s "$buildreq"
+  echo "----------------------"
+  # can't depend on column -t
+}
+
+# Find sha1sum, named gsha1sum on MacPorts, shasum on Mac OS X 10.6.
+# Also find the compatible sha1 utility on the BSDs
+if test x"$SKIP_PO" = x; then
+  find_tool SHA1SUM sha1sum gsha1sum shasum sha1
+fi
+
+use_libtool=0
+# We'd like to use grep -E, to see if any of LT_INIT,
+# AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
+# but that's not portable enough (e.g., for Solaris).
+grep '^[        ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
+  && use_libtool=1
+grep '^[        ]*LT_INIT' configure.ac >/dev/null \
+  && use_libtool=1
+if test $use_libtool = 1; then
+  find_tool LIBTOOLIZE glibtoolize libtoolize
+fi
+
+# gnulib-tool requires at least automake and autoconf.
+# If either is not listed, add it (with minimum version) as a prerequisite.
+case $buildreq in
+  *automake*) ;;
+  *) buildreq="automake 1.9
+$buildreq" ;;
+esac
+case $buildreq in
+  *autoconf*) ;;
+  *) buildreq="autoconf 2.59
+$buildreq" ;;
+esac
+
+# When we can deduce that gnulib-tool will require patch,
+# and when patch is not already listed as a prerequisite, add it, too.
+if test -d "$local_gl_dir" \
+    && ! find "$local_gl_dir" -name '*.diff' -exec false {} +; then
+  case $buildreq in
+    *patch*) ;;
+    *) buildreq="patch -
+$buildreq" ;;
+  esac
+fi
+
+if ! printf "$buildreq" | check_versions; then
+  echo >&2
+  if test -f README-prereq; then
+    die "See README-prereq for how to get the prerequisite programs"
+  else
+    die "Please install the prerequisite programs"
+  fi
+fi
+
+# Warn the user if autom4te appears to be broken; this causes known
+# issues with at least gettext 0.18.3.
+probe=$(echo 'm4_quote([hi])' | autom4te -l M4sugar -t 'm4_quote:$%' -)
+if test "x$probe" != xhi; then
+  warn_ "WARNING: your autom4te wrapper eats stdin;"
+  warn_ "if bootstrap fails, consider upgrading your autotools"
+fi
+
+echo "$0: Bootstrapping from checked-out $package sources..."
+
+# See if we can use gnulib's git-merge-changelog merge driver.
+if $use_git && test -d .git && check_exists git; then
+  if git config merge.merge-changelog.driver >/dev/null ; then
+    :
+  elif check_exists git-merge-changelog; then
+    echo "$0: initializing git-merge-changelog driver"
+    git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
+    git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
+  else
+    echo "$0: consider installing git-merge-changelog from gnulib"
+  fi
+fi
+
+
+cleanup_gnulib() {
+  status=$?
+  rm -fr "$gnulib_path"
+  exit $status
+}
+
+git_modules_config () {
+  test -f .gitmodules && git config --file .gitmodules "$@"
+}
+
+if $use_gnulib; then
+  if $use_git; then
+    gnulib_path=$(git_modules_config submodule.gnulib.path)
+    test -z "$gnulib_path" && gnulib_path=gnulib
+  fi
+
+  # Get gnulib files.  Populate $GNULIB_SRCDIR, possibly updating a
+  # submodule, for use in the rest of the script.
+
+  case ${GNULIB_SRCDIR--} in
+  -)
+    # Note that $use_git is necessarily true in this case.
+    if git_modules_config submodule.gnulib.url >/dev/null; then
+      echo "$0: getting gnulib files..."
+      git submodule init -- "$gnulib_path" || exit $?
+      git submodule update -- "$gnulib_path" || exit $?
+
+    elif [ ! -d "$gnulib_path" ]; then
+      echo "$0: getting gnulib files..."
+
+      trap cleanup_gnulib 1 2 13 15
+
+      shallow=
+      if test -z "$GNULIB_REVISION"; then
+        git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2'
+      fi
+      git clone $shallow ${GNULIB_URL:-$default_gnulib_url} "$gnulib_path" \
+        || cleanup_gnulib
+
+      trap - 1 2 13 15
+    fi
+    GNULIB_SRCDIR=$gnulib_path
+    ;;
+  *)
+    # Use GNULIB_SRCDIR directly or as a reference.
+    if $use_git && test -d "$GNULIB_SRCDIR"/.git && \
+          git_modules_config submodule.gnulib.url >/dev/null; then
+      echo "$0: getting gnulib files..."
+      if git submodule -h|grep -- --reference > /dev/null; then
+        # Prefer the one-liner available in git 1.6.4 or newer.
+        git submodule update --init --reference "$GNULIB_SRCDIR" \
+          "$gnulib_path" || exit $?
+      else
+        # This fallback allows at least git 1.5.5.
+        if test -f "$gnulib_path"/gnulib-tool; then
+          # Since file already exists, assume submodule init already complete.
+          git submodule update -- "$gnulib_path" || exit $?
+        else
+          # Older git can't clone into an empty directory.
+          rmdir "$gnulib_path" 2>/dev/null
+          git clone --reference "$GNULIB_SRCDIR" \
+            "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \
+            && git submodule init -- "$gnulib_path" \
+            && git submodule update -- "$gnulib_path" \
+            || exit $?
+        fi
+      fi
+      GNULIB_SRCDIR=$gnulib_path
+    fi
+    ;;
+  esac
+
+  if test -d "$GNULIB_SRCDIR"/.git && test -n "$GNULIB_REVISION" \
+     && ! git_modules_config submodule.gnulib.url >/dev/null; then
+    (cd "$GNULIB_SRCDIR" && git checkout "$GNULIB_REVISION") || cleanup_gnulib
+  fi
+
+  # $GNULIB_SRCDIR now points to the version of gnulib to use, and
+  # we no longer need to use git or $gnulib_path below here.
+
+  if $bootstrap_sync; then
+    cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || {
+      echo "$0: updating bootstrap and restarting..."
+      case $(sh -c 'echo "$1"' -- a) in
+        a) ignored=--;;
+        *) ignored=ignored;;
+      esac
+      exec sh -c \
+        'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \
+        $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \
+        "$0" "$@" --no-bootstrap-sync
+    }
+  fi
+
+  gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
+  <$gnulib_tool || exit $?
+fi
+
+# Get translations.
+
+download_po_files() {
+  subdir=$1
+  domain=$2
+  echo "$me: getting translations into $subdir for $domain..."
+  cmd=$(printf "$po_download_command_format" "$subdir" "$domain")
+  eval "$cmd"
+}
+
+# Mirror .po files to $po_dir/.reference and copy only the new
+# or modified ones into $po_dir.  Also update $po_dir/LINGUAS.
+# Note po files that exist locally only are left in $po_dir but will
+# not be included in LINGUAS and hence will not be distributed.
+update_po_files() {
+  # Directory containing primary .po files.
+  # Overwrite them only when we're sure a .po file is new.
+  po_dir=$1
+  domain=$2
+
+  # Mirror *.po files into this dir.
+  # Usually contains *.s1 checksum files.
+  ref_po_dir="$po_dir/.reference"
+
+  test -d $ref_po_dir || mkdir $ref_po_dir || return
+  download_po_files $ref_po_dir $domain \
+    && ls "$ref_po_dir"/*.po 2>/dev/null |
+      sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return
+
+  langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g')
+  test "$langs" = '*' && langs=x
+  for po in $langs; do
+    case $po in x) continue;; esac
+    new_po="$ref_po_dir/$po.po"
+    cksum_file="$ref_po_dir/$po.s1"
+    if ! test -f "$cksum_file" ||
+        ! test -f "$po_dir/$po.po" ||
+        ! $SHA1SUM -c "$cksum_file" < "$new_po" > /dev/null 2>&1; then
+      echo "$me: updated $po_dir/$po.po..."
+      cp "$new_po" "$po_dir/$po.po" \
+          && $SHA1SUM < "$new_po" > "$cksum_file" || return
+    fi
+  done
+}
+
+case $SKIP_PO in
+'')
+  if test -d po; then
+    update_po_files po $package || exit
+  fi
+
+  if test -d runtime-po; then
+    update_po_files runtime-po $package-runtime || exit
+  fi;;
+esac
+
+symlink_to_dir()
+{
+  src=$1/$2
+  dst=${3-$2}
+
+  test -f "$src" && {
+
+    # If the destination directory doesn't exist, create it.
+    # This is required at least for "lib/uniwidth/cjk.h".
+    dst_dir=$(dirname "$dst")
+    if ! test -d "$dst_dir"; then
+      mkdir -p "$dst_dir"
+
+      # If we've just created a directory like lib/uniwidth,
+      # tell version control system(s) it's ignorable.
+      # FIXME: for now, this does only one level
+      parent=$(dirname "$dst_dir")
+      for dot_ig in x $vc_ignore; do
+        test $dot_ig = x && continue
+        ig=$parent/$dot_ig
+        insert_vc_ignore $ig "${dst_dir##*/}"
+      done
+    fi
+
+    if $copy; then
+      {
+        test ! -h "$dst" || {
+          echo "$me: rm -f $dst" &&
+          rm -f "$dst"
+        }
+      } &&
+      test -f "$dst" &&
+      cmp -s "$src" "$dst" || {
+        echo "$me: cp -fp $src $dst" &&
+        cp -fp "$src" "$dst"
+      }
+    else
+      # Leave any existing symlink alone, if it already points to the source,
+      # so that broken build tools that care about symlink times
+      # aren't confused into doing unnecessary builds.  Conversely, if the
+      # existing symlink's timestamp is older than the source, make it afresh,
+      # so that broken tools aren't confused into skipping needed builds.  See
+      # <https://lists.gnu.org/r/bug-gnulib/2011-05/msg00326.html>.
+      test -h "$dst" &&
+      src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 &&
+      dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 &&
+      test "$src_i" = "$dst_i" &&
+      both_ls=$(ls -dt "$src" "$dst") &&
+      test "X$both_ls" = "X$dst$nl$src" || {
+        dot_dots=
+        case $src in
+        /*) ;;
+        *)
+          case /$dst/ in
+          *//* | */../* | */./* | /*/*/*/*/*/)
+             die "invalid symlink calculation: $src -> $dst";;
+          /*/*/*/*/)    dot_dots=../../../;;
+          /*/*/*/)      dot_dots=../../;;
+          /*/*/)        dot_dots=../;;
+          esac;;
+        esac
+
+        echo "$me: ln -fs $dot_dots$src $dst" &&
+        ln -fs "$dot_dots$src" "$dst"
+      }
+    fi
+  }
+}
+
+version_controlled_file() {
+  parent=$1
+  file=$2
+  if test -d .git; then
+    git rm -n "$file" > /dev/null 2>&1
+  elif test -d .svn; then
+    svn log -r HEAD "$file" > /dev/null 2>&1
+  elif test -d CVS; then
+    grep -F "/${file##*/}/" "$parent/CVS/Entries" 2>/dev/null |
+             grep '^/[^/]*/[0-9]' > /dev/null
+  else
+    warn_ "no version control for $file?"
+    false
+  fi
+}
+
+# NOTE: we have to be careful to run both autopoint and libtoolize
+# before gnulib-tool, since gnulib-tool is likely to provide newer
+# versions of files "installed" by these two programs.
+# Then, *after* gnulib-tool (see below), we have to be careful to
+# run autoreconf in such a way that it does not run either of these
+# two just-pre-run programs.
+
+# Import from gettext.
+with_gettext=yes
+grep '^[        ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
+    with_gettext=no
+
+if test $with_gettext = yes || test $use_libtool = 1; then
+
+  tempbase=.bootstrap$$
+  trap "rm -f $tempbase.0 $tempbase.1" 1 2 13 15
+
+  > $tempbase.0 > $tempbase.1 &&
+  find . ! -type d -print | sort > $tempbase.0 || exit
+
+  if test $with_gettext = yes; then
+    # Released autopoint has the tendency to install macros that have been
+    # obsoleted in current gnulib, so run this before gnulib-tool.
+    echo "$0: $AUTOPOINT --force"
+    $AUTOPOINT --force || exit
+  fi
+
+  # Autoreconf runs aclocal before libtoolize, which causes spurious
+  # warnings if the initial aclocal is confused by the libtoolized
+  # (or worse out-of-date) macro directory.
+  # libtoolize 1.9b added the --install option; but we support back
+  # to libtoolize 1.5.22, where the install action was default.
+  if test $use_libtool = 1; then
+    install=
+    case $($LIBTOOLIZE --help) in
+      *--install*) install=--install ;;
+    esac
+    echo "running: $LIBTOOLIZE $install --copy"
+    $LIBTOOLIZE $install --copy
+  fi
+
+  find . ! -type d -print | sort >$tempbase.1
+  old_IFS=$IFS
+  IFS=$nl
+  for file in $(comm -13 $tempbase.0 $tempbase.1); do
+    IFS=$old_IFS
+    parent=${file%/*}
+    version_controlled_file "$parent" "$file" || {
+      for dot_ig in x $vc_ignore; do
+        test $dot_ig = x && continue
+        ig=$parent/$dot_ig
+        insert_vc_ignore "$ig" "${file##*/}"
+      done
+    }
+  done
+  IFS=$old_IFS
+
+  rm -f $tempbase.0 $tempbase.1
+  trap - 1 2 13 15
+fi
+
+# Import from gnulib.
+
+if $use_gnulib; then
+  gnulib_tool_options="\
+   --no-changelog\
+   --aux-dir=$build_aux\
+   --doc-base=$doc_base\
+   --lib=$gnulib_name\
+   --m4-base=$m4_base/\
+   --source-base=$source_base/\
+   --tests-base=$tests_base\
+   --local-dir=$local_gl_dir\
+   $gnulib_tool_option_extras\
+  "
+  if test $use_libtool = 1; then
+    case "$gnulib_tool_options " in
+      *' --libtool '*) ;;
+      *) gnulib_tool_options="$gnulib_tool_options --libtool" ;;
+    esac
+  fi
+  echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
+  $gnulib_tool $gnulib_tool_options --import $gnulib_modules \
+    || die "gnulib-tool failed"
+
+  for file in $gnulib_files; do
+    symlink_to_dir "$GNULIB_SRCDIR" $file \
+      || die "failed to symlink $file"
+  done
+fi
+
+bootstrap_post_import_hook \
+  || die "bootstrap_post_import_hook failed"
+
+# Don't proceed if there are uninitialized submodules.  In particular,
+# the next step will remove dangling links, which might be links into
+# uninitialized submodules.
+#
+# Uninitialized submodules are listed with an initial dash.
+if $use_git && git submodule | grep '^-' >/dev/null; then
+  die "some git submodules are not initialized. "     \
+      "Run 'git submodule init' and bootstrap again."
+fi
+
+# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
+# gnulib-populated directories.  Such .m4 files would cause aclocal to fail.
+# The following requires GNU find 4.2.3 or newer.  Considering the usual
+# portability constraints of this script, that may seem a very demanding
+# requirement, but it should be ok.  Ignore any failure, which is fine,
+# since this is only a convenience to help developers avoid the relatively
+# unusual case in which a symlinked-to .m4 file is git-removed from gnulib
+# between successive runs of this script.
+find "$m4_base" "$source_base" \
+  -depth \( -name '*.m4' -o -name '*.[ch]' \) \
+  -type l -xtype l -delete > /dev/null 2>&1
+
+# Invoke autoreconf with --force --install to ensure upgrades of tools
+# such as ylwrap.
+AUTORECONFFLAGS="--verbose --install --force -I $m4_base $ACLOCAL_FLAGS"
+
+# Some systems (RHEL 5) are using ancient autotools, for which the
+# --no-recursive option had not been invented.  Detect that lack and
+# omit the option when it's not supported.  FIXME in 2017: remove this
+# hack when RHEL 5 autotools are updated, or when they become irrelevant.
+case $($AUTORECONF --help) in
+  *--no-recursive*) AUTORECONFFLAGS="$AUTORECONFFLAGS --no-recursive";;
+esac
+
+# Tell autoreconf not to invoke autopoint or libtoolize; they were run above.
+echo "running: AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS"
+AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS \
+  || die "autoreconf failed"
+
+# Get some extra files from gnulib, overriding existing files.
+for file in $gnulib_extra_files; do
+  case $file in
+  */INSTALL) dst=INSTALL;;
+  build-aux/*) dst=$build_aux/${file#build-aux/};;
+  *) dst=$file;;
+  esac
+  symlink_to_dir "$GNULIB_SRCDIR" $file $dst \
+    || die "failed to symlink $file"
+done
+
+if test $with_gettext = yes; then
+  # Create gettext configuration.
+  echo "$0: Creating po/Makevars from po/Makevars.template ..."
+  rm -f po/Makevars
+  sed '
+    /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
+    /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/
+    /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'|
+    /^XGETTEXT_OPTIONS *=/{
+      s/$/ \\/
+      a\
+          '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
+    }
+  ' po/Makevars.template >po/Makevars \
+    || die 'cannot generate po/Makevars'
+
+  # If the 'gettext' module is in use, grab the latest Makefile.in.in.
+  # If only the 'gettext-h' module is in use, assume autopoint already
+  # put the correct version of this file into place.
+  case $gnulib_modules in
+  *gettext-h*) ;;
+  *gettext*)
+    cp $GNULIB_SRCDIR/build-aux/po/Makefile.in.in po/Makefile.in.in \
+      || die "cannot create po/Makefile.in.in"
+    ;;
+  esac
+
+  if test -d runtime-po; then
+    # Similarly for runtime-po/Makevars, but not quite the same.
+    rm -f runtime-po/Makevars
+    sed '
+      /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
+      /^subdir *=.*/s/=.*/= runtime-po/
+      /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
+      /^XGETTEXT_OPTIONS *=/{
+        s/$/ \\/
+        a\
+            '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
+      }
+    ' po/Makevars.template >runtime-po/Makevars \
+    || die 'cannot generate runtime-po/Makevars'
+
+    # Copy identical files from po to runtime-po.
+    (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
+  fi
+fi
+
+bootstrap_epilogue
+
+echo "$0: done.  Now you can run './configure'."
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/bootstrap.conf b/bootstrap.conf
new file mode 100644
index 000000000..eb6e844d5
--- /dev/null
+++ b/bootstrap.conf
@@ -0,0 +1,89 @@
+# Bootstrap configuration.
+
+# Copyright (C) 2006-2019 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 <https://www.gnu.org/licenses/>.
+
+
+GNULIB_REVISION=d271f868a8df9bbec29049d01e056481b7a1a263
+
+# gnulib modules used by this package.
+# mbswidth is used by gnulib-fix-width.diff's changes to argp rather than
+# directly.
+gnulib_modules="
+  argp
+  error
+  fnmatch
+  getdelim
+  getline
+  gettext-h
+  gitlog-to-changelog
+  mbswidth
+  progname
+  realloc-gnu
+  regex
+"
+
+gnulib_tool_option_extras="\
+  --no-conditional-dependencies \
+  --no-vc-files \
+"
+
+gnulib_name=libgnu
+source_base=grub-core/gnulib
+gnulib_extra_files="
+  build-aux/install-sh
+  build-aux/mdate-sh
+  build-aux/texinfo.tex
+  build-aux/depcomp
+  build-aux/config.guess
+  build-aux/config.sub
+"
+
+# Additional xgettext options to use.  Use "\\\newline" to break lines.
+XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
+ --from-code=UTF-8\\\
+'
+
+checkout_only_file=
+copy=true
+vc_ignore=
+
+SKIP_PO=t
+
+# Build prerequisites
+buildreq="\
+autoconf   2.63
+automake   1.11
+gettext    0.18.3
+git        1.5.5
+tar        -
+"
+
+# bootstrap doesn't give us a reasonable way to stop Automake from
+# overwriting this, so we just copy our version aside and put it back later.
+cp -a INSTALL INSTALL.grub
+
+bootstrap_post_import_hook () {
+  set -e
+  for patchname in fix-null-deref fix-width no-abort; do
+    patch -d grub-core/gnulib -p2 < "grub-core/gnulib-$patchname.diff"
+  done
+  FROM_BOOTSTRAP=1 ./autogen.sh
+  set +e  # bootstrap expects this
+}
+
+bootstrap_epilogue () {
+  mv INSTALL.grub INSTALL
+}
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
deleted file mode 100755
index c38b914d6..000000000
--- a/build-aux/config.rpath
+++ /dev/null
@@ -1,690 +0,0 @@
-#! /bin/sh
-# Output a system dependent set of variables, describing how to set the
-# run time search path of shared libraries in an executable.
-#
-#   Copyright 1996-2013 Free Software Foundation, Inc.
-#   Taken from GNU libtool, 2001
-#   Originally by Gordon Matzigkeit <address@hidden>, 1996
-#
-#   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.
-#
-# The first argument passed to this file is the canonical host specification,
-#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
-# should be set by the caller.
-#
-# The set of defined variables is at the end of this script.
-
-# Known limitations:
-# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
-#   than 256 bytes, otherwise the compiler driver will dump core. The only
-#   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,
-# which needs '.lib').
-libext=a
-shrext=.so
-
-host="$1"
-host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-# Code taken from libtool.m4's _LT_CC_BASENAME.
-
-for cc_temp in $CC""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
-
-# Code taken from libtool.m4's _LT_COMPILER_PIC.
-
-wl=
-if test "$GCC" = yes; then
-  wl='-Wl,'
-else
-  case "$host_os" in
-    aix*)
-      wl='-Wl,'
-      ;;
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      ;;
-    hpux9* | hpux10* | hpux11*)
-      wl='-Wl,'
-      ;;
-    irix5* | irix6* | nonstopux*)
-      wl='-Wl,'
-      ;;
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-        ecc*)
-          wl='-Wl,'
-          ;;
-        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,'
-              ;;
-          esac
-          ;;
-      esac
-      ;;
-    newsos6)
-      ;;
-    *nto* | *qnx*)
-      ;;
-    osf3* | osf4* | osf5*)
-      wl='-Wl,'
-      ;;
-    rdos*)
-      ;;
-    solaris*)
-      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*)
-      wl='-Wl,'
-      ;;
-    sysv4*MP*)
-      ;;
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      wl='-Wl,'
-      ;;
-    unicos*)
-      wl='-Wl,'
-      ;;
-    uts4*)
-      ;;
-  esac
-fi
-
-# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
-
-hardcode_libdir_flag_spec=
-hardcode_libdir_separator=
-hardcode_direct=no
-hardcode_minus_L=no
-
-case "$host_os" in
-  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++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-esac
-
-ld_shlibs=yes
-if test "$with_gnu_ld" = yes; then
-  # Set some defaults for GNU ld with shared library support. These
-  # are reset later if shared libraries are not supported. Putting them
-  # here allows them to be overridden if necessary.
-  # Unlike libtool, we use -rpath here, not --rpath, since the documented
-  # option of GNU ld is called -rpath, not --rpath.
-  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-  case "$host_os" in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-        ld_shlibs=no
-      fi
-      ;;
-    amigaos*)
-      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
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    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'
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    haiku*)
-      ;;
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      ;;
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    netbsd*)
-      ;;
-    solaris*)
-      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-        ld_shlibs=no
-      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; 
then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-          ld_shlibs=no
-          ;;
-        *)
-          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; 
then
-            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo 
${wl}-rpath,$libdir`'
-          else
-            ld_shlibs=no
-          fi
-          ;;
-      esac
-      ;;
-    sunos4*)
-      hardcode_direct=yes
-      ;;
-    *)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-  esac
-  if test "$ld_shlibs" = no; then
-    hardcode_libdir_flag_spec=
-  fi
-else
-  case "$host_os" in
-    aix3*)
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes; then
-        # Neither direct hardcoding nor static linking is supported with a
-        # broken collect2.
-        hardcode_direct=unsupported
-      fi
-      ;;
-    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.
-        aix_use_runtimelinking=no
-      else
-        aix_use_runtimelinking=no
-        # 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].*|aix[5-9]*)
-          for ld_flag in $LDFLAGS; do
-            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-              aix_use_runtimelinking=yes
-              break
-            fi
-          done
-          ;;
-        esac
-      fi
-      hardcode_direct=yes
-      hardcode_libdir_separator=':'
-      if test "$GCC" = yes; then
-        case $host_os in aix4.[012]|aix4.[012].*)
-          collect2name=`${CC} -print-prog-name=collect2`
-          if test -f "$collect2name" && \
-            strings "$collect2name" | grep resolve_lib_name >/dev/null
-          then
-            # We have reworked collect2
-            :
-          else
-            # We have old collect2
-            hardcode_direct=unsupported
-            hardcode_minus_L=yes
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_libdir_separator=
-          fi
-          ;;
-        esac
-      fi
-      # Begin _LT_AC_SYS_LIBPATH_AIX.
-      echo 'int main () { return 0; }' > conftest.c
-      ${CC} ${LDFLAGS} conftest.c -o conftest
-      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File 
Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-      if test -z "$aix_libpath"; then
-        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File 
Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-      fi
-      if test -z "$aix_libpath"; then
-        aix_libpath="/usr/lib:/lib"
-      fi
-      rm -f conftest.c conftest
-      # End _LT_AC_SYS_LIBPATH_AIX.
-      if test "$aix_use_runtimelinking" = yes; then
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-      else
-        if test "$host_cpu" = ia64; then
-          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-        else
-          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        fi
-      fi
-      ;;
-    amigaos*)
-      case "$host_cpu" in
-        powerpc)
-          ;;
-        m68k)
-          hardcode_libdir_flag_spec='-L$libdir'
-          hardcode_minus_L=yes
-          ;;
-      esac
-      ;;
-    bsdi[45]*)
-      ;;
-    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
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec=' '
-      libext=lib
-      ;;
-    darwin* | rhapsody*)
-      hardcode_direct=no
-      if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; 
then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    dgux*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      ;;
-    freebsd2.2*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    freebsd2*)
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      ;;
-    freebsd* | dragonfly*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    hpux9*)
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      ;;
-    hpux10*)
-      if test "$with_gnu_ld" = no; then
-        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator=:
-        hardcode_direct=yes
-        # hardcode_minus_L: Not really in the search PATH,
-        # but as the default location of the library.
-        hardcode_minus_L=yes
-      fi
-      ;;
-    hpux11*)
-      if test "$with_gnu_ld" = no; then
-        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator=:
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct=no
-            ;;
-          *)
-            hardcode_direct=yes
-            # hardcode_minus_L: Not really in the search PATH,
-            # but as the default location of the library.
-            hardcode_minus_L=yes
-            ;;
-        esac
-      fi
-      ;;
-    irix5* | irix6* | nonstopux*)
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    netbsd*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    newsos6)
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    *nto* | *qnx*)
-      ;;
-    openbsd*)
-      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
-        ld_shlibs=no
-      fi
-      ;;
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      ;;
-    osf3*)
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    osf4* | osf5*)
-      if test "$GCC" = yes; then
-        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-        # Both cc and cxx compiler support -rpath directly
-        hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      hardcode_libdir_separator=:
-      ;;
-    solaris*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      ;;
-    sunos4*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      ;;
-    sysv4)
-      case $host_vendor in
-        sni)
-          hardcode_direct=yes # is this really true???
-          ;;
-        siemens)
-          hardcode_direct=no
-          ;;
-        motorola)
-          hardcode_direct=no #Motorola manual says yes, but my tests say they 
lie
-          ;;
-      esac
-      ;;
-    sysv4.3*)
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-        ld_shlibs=yes
-      fi
-      ;;
-    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`'
-      hardcode_libdir_separator=':'
-      ;;
-    uts4*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      ;;
-    *)
-      ld_shlibs=no
-      ;;
-  esac
-fi
-
-# Check dynamic linker characteristics
-# 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'
-    ;;
-  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* | cegcc*)
-    shrext=.dll
-    library_names_spec='$libname.dll.a $libname.lib'
-    ;;
-  darwin* | rhapsody*)
-    shrext=.dylib
-    library_names_spec='$libname$shrext'
-    ;;
-  dgux*)
-    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
-      ia64*)
-        shrext=.so
-        ;;
-      hppa*64*)
-        shrext=.sl
-        ;;
-      *)
-        shrext=.sl
-        ;;
-    esac
-    library_names_spec='$libname$shrext'
-    ;;
-  interix[3-9]*)
-    library_names_spec='$libname$shrext'
-    ;;
-  irix5* | irix6* | nonstopux*)
-    library_names_spec='$libname$shrext'
-    case "$host_os" in
-      irix5* | nonstopux*)
-        libsuff= shlibsuff=
-        ;;
-      *)
-        case $LD in
-          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
-          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 
shlibsuff=N32 ;;
-          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
-          *) libsuff= shlibsuff= ;;
-        esac
-        ;;
-    esac
-    ;;
-  linux*oldld* | linux*aout* | linux*coff*)
-    ;;
-  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*)
-    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
-
-# How to pass a linker flag through the compiler.
-wl="$escaped_wl"
-
-# Static library suffix (normally "a").
-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"
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator="$hardcode_libdir_separator"
-
-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct="$hardcode_direct"
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L="$hardcode_minus_L"
-
-EOF
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog
deleted file mode 100755
index 78afff4e8..000000000
--- a/build-aux/gitlog-to-changelog
+++ /dev/null
@@ -1,432 +0,0 @@
-eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
-  & eval 'exec perl -wS "$0" $argv:q'
-    if 0;
-# Convert git log output to ChangeLog format.
-
-my $VERSION = '2012-07-29 06:11'; # UTC
-# The definition above must lie within the first 8 lines in order
-# for the Emacs time-stamp write hook (at end) to update it.
-# If you change this file with Emacs, please let the write hook
-# do its job.  Otherwise, update this string manually.
-
-# Copyright (C) 2008-2014 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 Jim Meyering
-
-use strict;
-use warnings;
-use Getopt::Long;
-use POSIX qw(strftime);
-
-(my $ME = $0) =~ s|.*/||;
-
-# use File::Coda; # http://meyering.net/code/Coda/
-END {
-  defined fileno STDOUT or return;
-  close STDOUT and return;
-  warn "$ME: failed to close standard output: $!\n";
-  $? ||= 1;
-}
-
-sub usage ($)
-{
-  my ($exit_code) = @_;
-  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
-  if ($exit_code != 0)
-    {
-      print $STREAM "Try '$ME --help' for more information.\n";
-    }
-  else
-    {
-      print $STREAM <<EOF;
-Usage: $ME [OPTIONS] [ARGS]
-
-Convert git log output to ChangeLog format.  If present, any ARGS
-are passed to "git log".  To avoid ARGS being parsed as options to
-$ME, they may be preceded by '--'.
-
-OPTIONS:
-
-   --amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that
-                  makes a change to SHA1's commit log text or metadata.
-   --append-dot append a dot to the first line of each commit message if
-                  there is no other punctuation or blank at the end.
-   --no-cluster never cluster commit messages under the same date/author
-                  header; the default is to cluster adjacent commit messages
-                  if their headers are the same and neither commit message
-                  contains multiple paragraphs.
-   --srcdir=DIR the root of the source tree, from which the .git/
-                  directory can be derived.
-   --since=DATE convert only the logs since DATE;
-                  the default is to convert all log entries.
-   --format=FMT set format string for commit subject and body;
-                  see 'man git-log' for the list of format metacharacters;
-                  the default is '%s%n%b%n'
-   --strip-tab  remove one additional leading TAB from commit message lines.
-   --strip-cherry-pick  remove data inserted by "git cherry-pick";
-                  this includes the "cherry picked from commit ..." line,
-                  and the possible final "Conflicts:" paragraph.
-   --help       display this help and exit
-   --version    output version information and exit
-
-EXAMPLE:
-
-  $ME --since=2008-01-01 > ChangeLog
-  $ME -- -n 5 foo > last-5-commits-to-branch-foo
-
-SPECIAL SYNTAX:
-
-The following types of strings are interpreted specially when they appear
-at the beginning of a log message line.  They are not copied to the output.
-
-  Copyright-paperwork-exempt: Yes
-    Append the "(tiny change)" notation to the usual "date name email"
-    ChangeLog header to mark a change that does not require a copyright
-    assignment.
-  Co-authored-by: Joe User <address@hidden>
-    List the specified name and email address on a second
-    ChangeLog header, denoting a co-author.
-  Signed-off-by: Joe User <address@hidden>
-    These lines are simply elided.
-
-In a FILE specified via --amend, comment lines (starting with "#") are ignored.
-FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
-a line) referring to a commit in the current project, and CODE refers to one
-or more consecutive lines of Perl code.  Pairs must be separated by one or
-more blank line.
-
-Here is sample input for use with --amend=FILE, from coreutils:
-
-3a169f4c5d9159283548178668d2fae6fced3030
-# fix typo in title:
-s/all tile types/all file types/
-
-1379ed974f1fa39b12e2ffab18b3f7a607082202
-# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
-# Change the author to be Paul.  Note the escaped "@":
-s,Jim .*>,Paul Eggert <address@hidden>,
-
-EOF
-    }
-  exit $exit_code;
-}
-
-# If the string $S is a well-behaved file name, simply return it.
-# If it contains white space, quotes, etc., quote it, and return the new 
string.
-sub shell_quote($)
-{
-  my ($s) = @_;
-  if ($s =~ m![^\w+/.,-]!)
-    {
-      # Convert each single quote to '\''
-      $s =~ s/\'/\'\\\'\'/g;
-      # Then single quote the string.
-      $s = "'$s'";
-    }
-  return $s;
-}
-
-sub quoted_cmd(@)
-{
-  return join (' ', map {shell_quote $_} @_);
-}
-
-# Parse file F.
-# Comment lines (starting with "#") are ignored.
-# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1
-# (alone on a line) referring to a commit in the current project, and
-# CODE refers to one or more consecutive lines of Perl code.
-# Pairs must be separated by one or more blank line.
-sub parse_amend_file($)
-{
-  my ($f) = @_;
-
-  open F, '<', $f
-    or die "$ME: $f: failed to open for reading: $!\n";
-
-  my $fail;
-  my $h = {};
-  my $in_code = 0;
-  my $sha;
-  while (defined (my $line = <F>))
-    {
-      $line =~ /^\#/
-        and next;
-      chomp $line;
-      $line eq ''
-        and $in_code = 0, next;
-
-      if (!$in_code)
-        {
-          $line =~ /^([0-9a-fA-F]{40})$/
-            or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
-              $fail = 1, next;
-          $sha = lc $1;
-          $in_code = 1;
-          exists $h->{$sha}
-            and (warn "$ME: $f:$.: duplicate SHA1\n"),
-              $fail = 1, next;
-        }
-      else
-        {
-          $h->{$sha} ||= '';
-          $h->{$sha} .= "$line\n";
-        }
-    }
-  close F;
-
-  $fail
-    and exit 1;
-
-  return $h;
-}
-
-# git_dir_option $SRCDIR
-#
-# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR
-# is undef).  Return as a list (0 or 1 element).
-sub git_dir_option($)
-{
-  my ($srcdir) = @_;
-  my @res = ();
-  if (defined $srcdir)
-    {
-      my $qdir = shell_quote $srcdir;
-      my $cmd = "cd $qdir && git rev-parse --show-toplevel";
-      my $qcmd = shell_quote $cmd;
-      my $git_dir = qx($cmd);
-      defined $git_dir
-        or die "$ME: cannot run $qcmd: $!\n";
-      $? == 0
-        or die "$ME: $qcmd had unexpected exit code or signal ($?)\n";
-      chomp $git_dir;
-      push @res, "--git-dir=$git_dir/.git";
-    }
-  @res;
-}
-
-{
-  my $since_date;
-  my $format_string = '%s%n%b%n';
-  my $amend_file;
-  my $append_dot = 0;
-  my $cluster = 1;
-  my $strip_tab = 0;
-  my $strip_cherry_pick = 0;
-  my $srcdir;
-  GetOptions
-    (
-     help => sub { usage 0 },
-     version => sub { print "$ME version $VERSION\n"; exit },
-     'since=s' => \$since_date,
-     'format=s' => \$format_string,
-     'amend=s' => \$amend_file,
-     'append-dot' => \$append_dot,
-     'cluster!' => \$cluster,
-     'strip-tab' => \$strip_tab,
-     'strip-cherry-pick' => \$strip_cherry_pick,
-     'srcdir=s' => \$srcdir,
-    ) or usage 1;
-
-  defined $since_date
-    and unshift @ARGV, "--since=$since_date";
-
-  # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/)
-  # that makes a correction in the log or attribution of that commit.
-  my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
-
-  my @cmd = ('git',
-             git_dir_option $srcdir,
-             qw(log --log-size),
-             '--pretty=format:%H:%ct  %an  <%ae>%n%n'.$format_string, @ARGV);
-  open PIPE, '-|', @cmd
-    or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n"
-            . "(Is your Git too old?  Version 1.5.1 or later is required.)\n");
-
-  my $prev_multi_paragraph;
-  my $prev_date_line = '';
-  my @prev_coauthors = ();
-  while (1)
-    {
-      defined (my $in = <PIPE>)
-        or last;
-      $in =~ /^log size (\d+)$/
-        or die "$ME:$.: Invalid line (expected log size):\n$in";
-      my $log_nbytes = $1;
-
-      my $log;
-      my $n_read = read PIPE, $log, $log_nbytes;
-      $n_read == $log_nbytes
-        or die "$ME:$.: unexpected EOF\n";
-
-      # Extract leading hash.
-      my ($sha, $rest) = split ':', $log, 2;
-      defined $sha
-        or die "$ME:$.: malformed log entry\n";
-      $sha =~ /^[0-9a-fA-F]{40}$/
-        or die "$ME:$.: invalid SHA1: $sha\n";
-
-      # If this commit's log requires any transformation, do it now.
-      my $code = $amend_code->{$sha};
-      if (defined $code)
-        {
-          eval 'use Safe';
-          my $s = new Safe;
-          # Put the unpreprocessed entry into "$_".
-          $_ = $rest;
-
-          # Let $code operate on it, safely.
-          my $r = $s->reval("$code")
-            or die "$ME:$.:$sha: failed to eval \"$code\":address@hidden";
-
-          # Note that we've used this entry.
-          delete $amend_code->{$sha};
-
-          # Update $rest upon success.
-          $rest = $_;
-        }
-
-      # Remove lines inserted by "git cherry-pick".
-      if ($strip_cherry_pick)
-        {
-          $rest =~ s/^\s*Conflicts:\n.*//sm;
-          $rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m;
-        }
-
-      my @line = split "\n", $rest;
-      my $author_line = shift @line;
-      defined $author_line
-        or die "$ME:$.: unexpected EOF\n";
-      $author_line =~ /^(\d+)  (.*>)$/
-        or die "$ME:$.: Invalid line "
-          . "(expected date/author/email):\n$author_line\n";
-
-      # Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
-      # `(tiny change)' annotation.
-      my $tiny = (grep (/^Copyright-paperwork-exempt:\s+[Yy]es$/, @line)
-                  ? '  (tiny change)' : '');
-
-      my $date_line = sprintf "%s  %s$tiny\n",
-        strftime ("%F", localtime ($1)), $2;
-
-      my @coauthors = grep /^Co-authored-by:.*$/, @line;
-      # Omit meta-data lines we've already interpreted.
-      @line = grep !/^(?:Signed-off-by:[ ].*>$
-                       |Co-authored-by:[ ]
-                       |Copyright-paperwork-exempt:[ ]
-                       )/x, @line;
-
-      # Remove leading and trailing blank lines.
-      if (@line)
-        {
-          while ($line[0] =~ /^\s*$/) { shift @line; }
-          while ($line[$#line] =~ /^\s*$/) { pop @line; }
-        }
-
-      # Record whether there are two or more paragraphs.
-      my $multi_paragraph = grep /^\s*$/, @line;
-
-      # Format 'Co-authored-by: A U Thor <address@hidden>' lines in
-      # standard multi-author ChangeLog format.
-      for (@coauthors)
-        {
-          s/^Co-authored-by:\s*/\t    /;
-          s/\s*</  </;
-
-          /<address@hidden>/
-            or warn "$ME: warning: missing email address for "
-              . substr ($_, 5) . "\n";
-        }
-
-      # If clustering of commit messages has been disabled, if this header
-      # would be different from the previous date/name/email/coauthors header,
-      # or if this or the previous entry consists of two or more paragraphs,
-      # then print the header.
-      if ( ! $cluster
-          || $date_line ne $prev_date_line
-          || "@coauthors" ne "@prev_coauthors"
-          || $multi_paragraph
-          || $prev_multi_paragraph)
-        {
-          $prev_date_line eq ''
-            or print "\n";
-          print $date_line;
-          @coauthors
-            and print join ("\n", @coauthors), "\n";
-        }
-      $prev_date_line = $date_line;
-      @prev_coauthors = @coauthors;
-      $prev_multi_paragraph = $multi_paragraph;
-
-      # If there were any lines
-      if (@line == 0)
-        {
-          warn "$ME: warning: empty commit message:\n  $date_line\n";
-        }
-      else
-        {
-          if ($append_dot)
-            {
-              # If the first line of the message has enough room, then
-              if (length $line[0] < 72)
-                {
-                  # append a dot if there is no other punctuation or blank
-                  # at the end.
-                  $line[0] =~ /[[:punct:]\s]$/
-                    or $line[0] .= '.';
-                }
-            }
-
-          # Remove one additional leading TAB from each line.
-          $strip_tab
-            and map { s/^\t// } @line;
-
-          # Prefix each non-empty line with a TAB.
-          @line = map { length $_ ? "\t$_" : '' } @line;
-
-          print "\n", join ("\n", @line), "\n";
-        }
-
-      defined ($in = <PIPE>)
-        or last;
-      $in ne "\n"
-        and die "$ME:$.: unexpected line:\n$in";
-    }
-
-  close PIPE
-    or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
-  # FIXME-someday: include $PROCESS_STATUS in the diagnostic
-
-  # Complain about any unused entry in the --amend=F specified file.
-  my $fail = 0;
-  foreach my $sha (keys %$amend_code)
-    {
-      warn "$ME:$amend_file: unused entry: $sha\n";
-      $fail = 1;
-    }
-
-  exit $fail;
-}
-
-# Local Variables:
-# mode: perl
-# indent-tabs-mode: nil
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "my $VERSION = '"
-# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "'; # UTC"
-# End:
diff --git a/build-aux/snippet/_Noreturn.h b/build-aux/snippet/_Noreturn.h
deleted file mode 100644
index c44ad89b7..000000000
--- a/build-aux/snippet/_Noreturn.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#if !defined _Noreturn && __STDC_VERSION__ < 201112
-# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
-      || 0x5110 <= __SUNPRO_C)
-#  define _Noreturn __attribute__ ((__noreturn__))
-# elif 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn
-# endif
-#endif
diff --git a/build-aux/snippet/arg-nonnull.h b/build-aux/snippet/arg-nonnull.h
deleted file mode 100644
index 8ea2a4747..000000000
--- a/build-aux/snippet/arg-nonnull.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* A C macro for declaring that specific arguments must not be NULL.
-   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 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/>.  */
-
-/* _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/snippet/c++defs.h b/build-aux/snippet/c++defs.h
deleted file mode 100644
index b35b933cd..000000000
--- a/build-aux/snippet/c++defs.h
+++ /dev/null
@@ -1,271 +0,0 @@
-/* C++ compatible function declaration macros.
-   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_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 address@hidden@
-       _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 address@hidden@   or   if address@hidden@
-       _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/snippet/warn-on-use.h b/build-aux/snippet/warn-on-use.h
deleted file mode 100644
index 1736a1bd7..000000000
--- a/build-aux/snippet/warn-on-use.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* A C macro for emitting warnings if a function is used.
-   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/>.  */
-
-/* _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 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/conf/Makefile.common b/conf/Makefile.common
index f761f7224..8f5c756f1 100644
--- a/conf/Makefile.common
+++ b/conf/Makefile.common
@@ -133,6 +133,6 @@ $(top_srcdir)/Makefile.util.am: $(top_srcdir)/gentpl.py 
$(top_srcdir)/Makefile.u
 
 .PRECIOUS: $(top_srcdir)/grub-core/Makefile.core.am
 $(top_srcdir)/grub-core/Makefile.core.am: $(top_srcdir)/gentpl.py 
$(top_srcdir)/grub-core/Makefile.core.def 
$(top_srcdir)/grub-core/Makefile.gcry.def
-       if [ "x$$GRUB_CONTRIB" != x ]; then echo "You need to run ./autogen.sh 
manually." >&2; exit 1; fi
+       if [ "x$$GRUB_CONTRIB" != x ]; then echo "You need to run ./bootstrap 
manually." >&2; exit 1; fi
        $(PYTHON) $^ > address@hidden || (rm -f address@hidden; exit 1)
        mv address@hidden $@
diff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist
index b16bd9253..7f37ea63a 100644
--- a/conf/Makefile.extra-dist
+++ b/conf/Makefile.extra-dist
@@ -31,7 +31,6 @@ EXTRA_DIST += grub-core/genemuinitheader.sh
 EXTRA_DIST += grub-core/gnulib-fix-null-deref.diff
 EXTRA_DIST += grub-core/gnulib-fix-width.diff
 EXTRA_DIST += grub-core/gnulib-no-abort.diff
-EXTRA_DIST += grub-core/gnulib-no-gets.diff
 
 EXTRA_DIST += grub-core/lib/libgcrypt
 EXTRA_DIST += grub-core/lib/libgcrypt-grub/mpi/generic
diff --git a/configure.ac b/configure.ac
index 81a19afd5..c1955542a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -45,8 +45,8 @@ save_program_prefix="${program_prefix}"
 AC_CANONICAL_TARGET
 program_prefix="${save_program_prefix}"
 
-AM_INIT_AUTOMAKE([1.10.1])
-AC_PREREQ(2.60)
+AM_INIT_AUTOMAKE([1.11])
+AC_PREREQ(2.63)
 AC_CONFIG_SRCDIR([include/grub/dl.h])
 AC_CONFIG_HEADER([config-util.h])
 
@@ -352,6 +352,7 @@ AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
 
 AC_GNU_SOURCE
 AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION([0.18.3])
 AC_SYS_LARGEFILE
 
 # Identify characteristics of the host architecture.
diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
index ca40874e5..4b43a8293 100644
--- a/docs/grub-dev.texi
+++ b/docs/grub-dev.texi
@@ -672,7 +672,7 @@ is already present and you'll need to make it follow the 
existant code paths
 for your platform adding adjustments if necessary. When done compile:
 
 @example
-./autogen.sh
+./bootstrap
 ./configure --target=$cpu --with-platform=$platform TARGET_CC=.. OBJCOPY=... 
STRIP=...
 make > /dev/null
 @end example
diff --git a/grub-core/gnulib-fix-gcc7-fallthrough.diff 
b/grub-core/gnulib-fix-gcc7-fallthrough.diff
deleted file mode 100644
index 9802e2d24..000000000
--- a/grub-core/gnulib-fix-gcc7-fallthrough.diff
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git grub-core/gnulib/regexec.c grub-core/gnulib/regexec.c
-index f632cd4..a7776f0 100644
---- grub-core/gnulib/regexec.c
-+++ grub-core/gnulib/regexec.c
-@@ -4099,6 +4099,9 @@ check_node_accept (const re_match_context_t *mctx, const 
re_token_t *node,
-     case OP_UTF8_PERIOD:
-       if (ch >= ASCII_CHARS)
-         return false;
-+#if defined __GNUC__ && __GNUC__ >= 7
-+      __attribute__ ((fallthrough));
-+#endif
-       /* FALLTHROUGH */
- #endif
-     case OP_PERIOD:
diff --git a/grub-core/gnulib-fix-null-deref.diff 
b/grub-core/gnulib-fix-null-deref.diff
index a2fba8c3b..8fafa153a 100644
--- a/grub-core/gnulib-fix-null-deref.diff
+++ b/grub-core/gnulib-fix-null-deref.diff
@@ -1,7 +1,8 @@
-=== 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 @@
+diff --git a/lib/argp-parse.c b/lib/argp-parse.c
+index 6dec57310..900adad54 100644
+--- a/lib/argp-parse.c
++++ b/lib/argp-parse.c
+@@ -940,7 +940,7 @@ weak_alias (__argp_parse, argp_parse)
  void *
  __argp_input (const struct argp *argp, const struct argp_state *state)
  {
@@ -10,4 +11,3 @@
      {
        struct group *group;
        struct parser *parser = state->pstate;
-
diff --git a/grub-core/gnulib-fix-width.diff b/grub-core/gnulib-fix-width.diff
index ae77af6c9..0a208ad08 100644
--- a/grub-core/gnulib-fix-width.diff
+++ b/grub-core/gnulib-fix-width.diff
@@ -1,8 +1,8 @@
 diff --git a/lib/argp-fmtstream.c b/lib/argp-fmtstream.c
-index 7aa317c..02406ff 100644
+index ba6a407f7..d0685b3d4 100644
 --- a/lib/argp-fmtstream.c
 +++ b/lib/argp-fmtstream.c
-@@ -29,9 +29,11 @@
+@@ -28,9 +28,11 @@
  #include <errno.h>
  #include <stdarg.h>
  #include <ctype.h>
@@ -14,7 +14,7 @@ index 7aa317c..02406ff 100644
  
  #ifndef ARGP_FMTSTREAM_USE_LINEWRAP
  
-@@ -116,6 +118,51 @@ weak_alias (__argp_fmtstream_free, argp_fmtstream_free)
+@@ -115,6 +117,51 @@ weak_alias (__argp_fmtstream_free, argp_fmtstream_free)
  #endif
  #endif
  
@@ -66,12 +66,12 @@ index 7aa317c..02406ff 100644
  /* 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)
- 
+@@ -168,13 +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.  */
++          size_t display_width = mbsnwidth (buf, fs->p - buf,
++                                            MBSW_STOP_AT_NUL);
  
 -          if (fs->point_col + len < fs->rmargin)
 +          if (fs->point_col + display_width < fs->rmargin)
@@ -84,7 +84,7 @@ index 7aa317c..02406ff 100644
                break;
              }
            else
-@@ -183,14 +231,18 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
+@@ -182,14 +231,18 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
                 the end of the buffer.  */
              nl = fs->p;
          }
@@ -111,16 +111,16 @@ index 7aa317c..02406ff 100644
  
        /* This line is too long.  */
        r = fs->rmargin - 1;
-@@ -226,7 +278,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
+@@ -225,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));
++          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)
+@@ -243,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.  */
@@ -129,21 +129,21 @@ index 7aa317c..02406ff 100644
                /* Find the end of the long word.  */
                if (p < nl)
                  do
-@@ -278,7 +330,8 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
+@@ -277,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)
++                  > 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
+index e5375a0f0..5d8f451ec 100644
 --- a/lib/argp-help.c
 +++ b/lib/argp-help.c
-@@ -50,6 +50,7 @@
+@@ -51,6 +51,7 @@
  #include "argp.h"
  #include "argp-fmtstream.h"
  #include "argp-namefrob.h"
@@ -151,7 +151,7 @@ index 354f1e2..2914f47 100644
  
  #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,
+@@ -1432,7 +1433,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.  */
@@ -161,71 +161,57 @@ index 354f1e2..2914f47 100644
        __argp_fmtstream_write (stream, cp, nl - cp);
      }
 diff --git a/lib/mbswidth.c b/lib/mbswidth.c
-index 7c2dfce..baa4f27 100644
+index 408a15e34..b3fb7f83a 100644
 --- a/lib/mbswidth.c
 +++ b/lib/mbswidth.c
-@@ -90,6 +90,9 @@ mbsnwidth (const char *string, size_t nbytes, int flags)
+@@ -38,6 +38,14 @@
+ /* Get INT_MAX.  */
+ #include <limits.h>
+ 
++#ifndef FALLTHROUGH
++# if __GNUC__ < 7
++#  define FALLTHROUGH ((void) 0)
++# else
++#  define FALLTHROUGH __attribute__ ((__fallthrough__))
++# endif
++#endif
++
+ /* 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.
+@@ -90,6 +98,10 @@ mbsnwidth (const char *string, size_t nbytes, int flags)
                p++;
                width++;
                break;
-+          case '\0':
-+            if (flags & MBSW_STOP_AT_NUL)
-+              return width;
++            case '\0':
++              if (flags & MBSW_STOP_AT_NUL)
++                return width;
++              FALLTHROUGH;
              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)
+@@ -168,6 +180,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;
++        return width;
 +
        if (isprint (c))
          {
            if (width == INT_MAX)
 diff --git a/lib/mbswidth.h b/lib/mbswidth.h
-index e9c0b03..d7207c5 100644
+index 2b5c53c37..45a123e63 100644
 --- a/lib/mbswidth.h
 +++ b/lib/mbswidth.h
-@@ -45,6 +45,9 @@ extern "C" {
+@@ -45,6 +45,10 @@ 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
index 8377338f7..e469c4762 100644
--- a/grub-core/gnulib-no-abort.diff
+++ b/grub-core/gnulib-no-abort.diff
@@ -1,14 +1,11 @@
-=== 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.  */
+diff --git a/lib/regcomp.c b/lib/regcomp.c
+index cc85f35ac..de45ebb5c 100644
+--- a/lib/regcomp.c
++++ b/lib/regcomp.c
+@@ -528,9 +528,9 @@ regerror (int errcode, const regex_t *__restrict preg, 
char *__restrict errbuf,
+        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]);
@@ -17,8 +14,8 @@
 +    msg = gettext (__re_error_msgid + __re_error_msgid_idx[errcode]);
  
    msg_size = strlen (msg) + 1; /* Includes the null.  */
-
-@@ -1119,7 +1119,7 @@
+ 
+@@ -1136,7 +1136,7 @@ optimize_utf8 (re_dfa_t *dfa)
        }
        break;
        default:
@@ -27,4 +24,3 @@
        }
  
    if (mb_chars || has_period)
-
diff --git a/grub-core/gnulib-no-gets.diff b/grub-core/gnulib-no-gets.diff
deleted file mode 100644
index 1a9487e84..000000000
--- a/grub-core/gnulib-no-gets.diff
+++ /dev/null
@@ -1,10 +0,0 @@
---- /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
deleted file mode 100644
index 3444397fe..000000000
--- a/grub-core/gnulib/Makefile.am
+++ /dev/null
@@ -1,1747 +0,0 @@
-## DO NOT EDIT! GENERATED AUTOMATICALLY!
-## Process this file with automake to produce Makefile.in.
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-#
-# 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-conditional-dependencies --no-libtool 
--macro-prefix=gl --no-vc-files argp error fnmatch getdelim getline gettext 
progname regex
-
-AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
-
-SUBDIRS =
-noinst_HEADERS =
-noinst_LIBRARIES =
-noinst_LTLIBRARIES =
-EXTRA_DIST =
-BUILT_SOURCES =
-SUFFIXES =
-MOSTLYCLEANFILES = core *.stackdump
-MOSTLYCLEANDIRS =
-CLEANFILES =
-DISTCLEANFILES =
-MAINTAINERCLEANFILES =
-
-AM_CPPFLAGS =
-AM_CFLAGS =
-
-noinst_LIBRARIES += libgnu.a
-
-libgnu_a_SOURCES =
-libgnu_a_LIBADD = $(gl_LIBOBJS)
-libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
-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
-
-## end   gnulib module alloca
-
-## begin gnulib module alloca-opt
-
-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.
-if GL_GENERATE_ALLOCA_H
-alloca.h: alloca.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         cat $(srcdir)/alloca.in.h; \
-       } > address@hidden && \
-       mv -f address@hidden $@
-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 argp
-
-libgnu_a_SOURCES += argp.h argp-ba.c argp-eexst.c \
-           argp-fmtstream.c argp-fmtstream.h argp-fs-xinl.c argp-help.c \
-           argp-namefrob.h argp-parse.c argp-pin.c argp-pv.c argp-pvh.c \
-           argp-xinl.c
-
-## end   gnulib module argp
-
-## begin gnulib module btowc
-
-
-EXTRA_DIST += btowc.c
-
-EXTRA_libgnu_a_SOURCES += btowc.c
-
-## end   gnulib module btowc
-
-## begin gnulib module configmake
-
-# 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
-       $(AM_V_GEN)rm -f address@hidden && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         echo '#define PREFIX "$(prefix)"'; \
-         echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
-         echo '#define BINDIR "$(bindir)"'; \
-         echo '#define SBINDIR "$(sbindir)"'; \
-         echo '#define LIBEXECDIR "$(libexecdir)"'; \
-         echo '#define DATAROOTDIR "$(datarootdir)"'; \
-         echo '#define DATADIR "$(datadir)"'; \
-         echo '#define SYSCONFDIR "$(sysconfdir)"'; \
-         echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
-         echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
-         echo '#define INCLUDEDIR "$(includedir)"'; \
-         echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
-         echo '#define DOCDIR "$(docdir)"'; \
-         echo '#define INFODIR "$(infodir)"'; \
-         echo '#define HTMLDIR "$(htmldir)"'; \
-         echo '#define DVIDIR "$(dvidir)"'; \
-         echo '#define PDFDIR "$(pdfdir)"'; \
-         echo '#define PSDIR "$(psdir)"'; \
-         echo '#define LIBDIR "$(libdir)"'; \
-         echo '#define LISPDIR "$(lispdir)"'; \
-         echo '#define LOCALEDIR "$(localedir)"'; \
-         echo '#define MANDIR "$(mandir)"'; \
-         echo '#define MANEXT "$(manext)"'; \
-         echo '#define PKGDATADIR "$(pkgdatadir)"'; \
-         echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
-         echo '#define PKGLIBDIR "$(pkglibdir)"'; \
-         echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
-       } | sed '/""/d' > address@hidden && \
-       mv -f address@hidden $@
-
-BUILT_SOURCES += configmake.h
-CLEANFILES += configmake.h configmake.h-t
-
-## end   gnulib module configmake
-
-## begin gnulib module dirname-lgpl
-
-libgnu_a_SOURCES += dirname-lgpl.c basename-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.
-if GL_GENERATE_ERRNO_H
-errno.h: errno.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { 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_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
-             -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
-             -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
-             -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
-             -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
-             -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
-             -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
-             < $(srcdir)/errno.in.h; \
-       } > address@hidden && \
-       mv address@hidden $@
-else
-errno.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += errno.h errno.h-t
-
-EXTRA_DIST += errno.in.h
-
-## end   gnulib module errno
-
-## begin gnulib module error
-
-
-EXTRA_DIST += error.c error.h
-
-EXTRA_libgnu_a_SOURCES += error.c
-
-## end   gnulib module error
-
-## begin gnulib module float
-
-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.
-if GL_GENERATE_FLOAT_H
-float.h: float.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { 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_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
-             -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
-             < $(srcdir)/float.in.h; \
-       } > address@hidden && \
-       mv address@hidden $@
-else
-float.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += float.h float.h-t
-
-EXTRA_DIST += float.c float.in.h itold.c
-
-EXTRA_libgnu_a_SOURCES += float.c itold.c
-
-## end   gnulib module float
-
-## begin gnulib module fnmatch
-
-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.
-if GL_GENERATE_FNMATCH_H
-fnmatch.h: fnmatch.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         sed -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-             < $(srcdir)/fnmatch.in.h; \
-       } > address@hidden && \
-       mv -f address@hidden $@
-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
-
-EXTRA_libgnu_a_SOURCES += fnmatch.c fnmatch_loop.c
-
-## end   gnulib module fnmatch
-
-## begin gnulib module getdelim
-
-
-EXTRA_DIST += getdelim.c
-
-EXTRA_libgnu_a_SOURCES += getdelim.c
-
-## end   gnulib module getdelim
-
-## begin gnulib module getline
-
-
-EXTRA_DIST += getline.c
-
-EXTRA_libgnu_a_SOURCES += getline.c
-
-## end   gnulib module getline
-
-## begin gnulib module getopt-posix
-
-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 $(top_builddir)/config.status $(ARG_NONNULL_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         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; \
-       } > address@hidden && \
-       mv -f address@hidden $@
-MOSTLYCLEANFILES += getopt.h getopt.h-t
-
-EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h
-
-EXTRA_libgnu_a_SOURCES += getopt.c getopt1.c
-
-## end   gnulib module getopt-posix
-
-## begin gnulib module gettext
-
-# This is for those projects which use "gettextize --intl" to put a source-code
-# copy of libintl into their package. In such projects, every Makefile.am needs
-# -I$(top_builddir)/intl, so that <libintl.h> can be found in this directory.
-# For the Makefile.ams in other directories it is the maintainer's
-# responsibility; for the one from gnulib we do it here.
-# This option has no effect when the user disables NLS (because then the intl
-# directory contains no libintl.h file) or when the project does not use
-# "gettextize --intl".
-AM_CPPFLAGS += -I$(top_builddir)/intl
-
-EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
-
-## end   gnulib module gettext
-
-## begin gnulib module gettext-h
-
-libgnu_a_SOURCES += gettext.h
-
-## end   gnulib module gettext-h
-
-## begin gnulib module havelib
-
-
-EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
-
-## end   gnulib module havelib
-
-## begin gnulib module intprops
-
-
-EXTRA_DIST += intprops.h
-
-## end   gnulib module intprops
-
-## begin gnulib module langinfo
-
-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 $(top_builddir)/config.status $(CXXDEFS_H) 
$(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         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|@''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' \
-             -e 's|@''HAVE_LANGINFO_YESEXPR''@|$(HAVE_LANGINFO_YESEXPR)|g' \
-             -e 's|@''HAVE_NL_LANGINFO''@|$(HAVE_NL_LANGINFO)|g' \
-             -e 's|@''REPLACE_NL_LANGINFO''@|$(REPLACE_NL_LANGINFO)|g' \
-             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             < $(srcdir)/langinfo.in.h; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += langinfo.h langinfo.h-t
-
-EXTRA_DIST += langinfo.in.h
-
-## end   gnulib module langinfo
-
-## begin gnulib module localcharset
-
-libgnu_a_SOURCES += localcharset.h localcharset.c
-
-# We need the following in order to install a simple file in $(libdir)
-# which is shared with other installed packages. We use a list of referencing
-# packages so that "make uninstall" will remove the file if and only if it
-# is not used by another installed package.
-# On systems with glibc-2.1 or newer, the file is redundant, therefore we
-# avoid installing it.
-
-all-local: charset.alias ref-add.sed ref-del.sed
-
-charset_alias = $(DESTDIR)$(libdir)/charset.alias
-charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
-install-exec-local: install-exec-localcharset
-install-exec-localcharset: all-local
-       if test $(GLIBC21) = no; then \
-         case '$(host_os)' in \
-           darwin[56]*) \
-             need_charset_alias=true ;; \
-           darwin* | cygwin* | mingw* | pw32* | cegcc*) \
-             need_charset_alias=false ;; \
-           *) \
-             need_charset_alias=true ;; \
-         esac ; \
-       else \
-         need_charset_alias=false ; \
-       fi ; \
-       if $$need_charset_alias; then \
-         $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
-       fi ; \
-       if test -f $(charset_alias); then \
-         sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
-         $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
-         rm -f $(charset_tmp) ; \
-       else \
-         if $$need_charset_alias; then \
-           sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
-           $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
-           rm -f $(charset_tmp) ; \
-         fi ; \
-       fi
-
-uninstall-local: uninstall-localcharset
-uninstall-localcharset: all-local
-       if test -f $(charset_alias); then \
-         sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
-         if grep '^# Packages using this file: $$' $(charset_tmp) \
-             > /dev/null; then \
-           rm -f $(charset_alias); \
-         else \
-           $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
-         fi; \
-         rm -f $(charset_tmp); \
-       fi
-
-charset.alias: config.charset
-       $(AM_V_GEN)rm -f t-$@ $@ && \
-       $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@ && \
-       mv t-$@ $@
-
-SUFFIXES += .sed .sin
-.sin.sed:
-       $(AM_V_GEN)rm -f t-$@ $@ && \
-       sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
-       mv t-$@ $@
-
-CLEANFILES += charset.alias ref-add.sed ref-del.sed
-
-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 address@hidden $@ && \
-       { 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; \
-       } > address@hidden && \
-       mv address@hidden $@
-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
-
-
-EXTRA_DIST += malloc.c
-
-EXTRA_libgnu_a_SOURCES += malloc.c
-
-## end   gnulib module malloc-gnu
-
-## begin gnulib module malloc-posix
-
-
-EXTRA_DIST += malloc.c
-
-EXTRA_libgnu_a_SOURCES += malloc.c
-
-## end   gnulib module malloc-posix
-
-## begin gnulib module mbrtowc
-
-
-EXTRA_DIST += mbrtowc.c
-
-EXTRA_libgnu_a_SOURCES += mbrtowc.c
-
-## end   gnulib module mbrtowc
-
-## begin gnulib module mbsinit
-
-
-EXTRA_DIST += mbsinit.c
-
-EXTRA_libgnu_a_SOURCES += mbsinit.c
-
-## end   gnulib module mbsinit
-
-## begin gnulib module mbsrtowcs
-
-
-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
-
-
-EXTRA_DIST += memchr.c memchr.valgrind
-
-EXTRA_libgnu_a_SOURCES += memchr.c
-
-## end   gnulib module memchr
-
-## begin gnulib module mempcpy
-
-
-EXTRA_DIST += mempcpy.c
-
-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
-
-
-EXTRA_DIST += nl_langinfo.c
-
-EXTRA_libgnu_a_SOURCES += nl_langinfo.c
-
-## end   gnulib module nl_langinfo
-
-## begin gnulib module progname
-
-libgnu_a_SOURCES += progname.h progname.c
-
-## end   gnulib module progname
-
-## begin gnulib module rawmemchr
-
-
-EXTRA_DIST += rawmemchr.c rawmemchr.valgrind
-
-EXTRA_libgnu_a_SOURCES += rawmemchr.c
-
-## end   gnulib module rawmemchr
-
-## begin gnulib module realloc-posix
-
-
-EXTRA_DIST += realloc.c
-
-EXTRA_libgnu_a_SOURCES += realloc.c
-
-## end   gnulib module realloc-posix
-
-## begin gnulib module regex
-
-
-EXTRA_DIST += regcomp.c regex.c regex.h regex_internal.c regex_internal.h 
regexec.c
-
-EXTRA_libgnu_a_SOURCES += regcomp.c regex.c regex_internal.c regexec.c
-
-## end   gnulib module regex
-
-## begin gnulib module size_max
-
-libgnu_a_SOURCES += size_max.h
-
-## end   gnulib module size_max
-
-## begin gnulib module sleep
-
-
-EXTRA_DIST += sleep.c
-
-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 address@hidden $@ && \
-       sed -n -e '/GL_ARG_NONNULL/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
-         > address@hidden && \
-       mv address@hidden $@
-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 address@hidden $@ && \
-       sed -n -e '/_GL_CXXDEFS/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/c++defs.h \
-         > address@hidden && \
-       mv address@hidden $@
-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 address@hidden $@ && \
-       sed -n -e '/^.ifndef/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/warn-on-use.h \
-         > address@hidden && \
-       mv address@hidden $@
-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 address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         cat $(srcdir)/stdalign.in.h; \
-       } > address@hidden && \
-       mv address@hidden $@
-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.
-if GL_GENERATE_STDBOOL_H
-stdbool.h: stdbool.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; 
\
-       } > address@hidden && \
-       mv address@hidden $@
-else
-stdbool.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += stdbool.h stdbool.h-t
-
-EXTRA_DIST += stdbool.in.h
-
-## end   gnulib module stdbool
-
-## begin gnulib module stddef
-
-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.
-if GL_GENERATE_STDDEF_H
-stddef.h: stddef.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { 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_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; \
-       } > address@hidden && \
-       mv address@hidden $@
-else
-stddef.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += stddef.h stddef.h-t
-
-EXTRA_DIST += stddef.in.h
-
-## end   gnulib module stddef
-
-## begin gnulib module stdint
-
-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.
-if GL_GENERATE_STDINT_H
-stdint.h: stdint.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         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' \
-             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
-             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
-             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
-             -e 
's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
-             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
-             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
-             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
-             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
-             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
-             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
-             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
-             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
-             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
-             < $(srcdir)/stdint.in.h; \
-       } > address@hidden && \
-       mv address@hidden $@
-else
-stdint.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += stdint.h stdint.h-t
-
-EXTRA_DIST += stdint.in.h
-
-## end   gnulib module stdint
-
-## begin gnulib module stdio
-
-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 $(top_builddir)/config.status $(CXXDEFS_H) 
$(ARG_NONNULL_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { 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_STDIO_H''@|$(NEXT_STDIO_H)|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' \
-             -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
-             -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
-             -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' \
-             -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
-             -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
-             -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
-             -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
-             -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
-             -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
-             -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \
-             -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
-             -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
-             -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
-             -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
-             -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
-             -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \
-             -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \
-             -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' \
-             -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
-             -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
-             -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
-             -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
-             -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
-             -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|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)'; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += stdio.h stdio.h-t
-
-EXTRA_DIST += stdio.in.h
-
-## end   gnulib module stdio
-
-## begin gnulib module stdlib
-
-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 $(top_builddir)/config.status $(CXXDEFS_H) \
-  $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { 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_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_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' \
-             -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
-             -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
-             -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
-             -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
-             -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_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_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)'; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += stdlib.h stdlib.h-t
-
-EXTRA_DIST += stdlib.in.h
-
-## end   gnulib module stdlib
-
-## begin gnulib module strcase
-
-
-EXTRA_DIST += strcasecmp.c strncasecmp.c
-
-EXTRA_libgnu_a_SOURCES += strcasecmp.c strncasecmp.c
-
-## end   gnulib module strcase
-
-## begin gnulib module strchrnul
-
-
-EXTRA_DIST += strchrnul.c strchrnul.valgrind
-
-EXTRA_libgnu_a_SOURCES += strchrnul.c
-
-## end   gnulib module strchrnul
-
-## begin gnulib module streq
-
-
-EXTRA_DIST += streq.h
-
-## end   gnulib module streq
-
-## begin gnulib module strerror
-
-
-EXTRA_DIST += strerror.c
-
-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 $(top_builddir)/config.status $(CXXDEFS_H) 
$(ARG_NONNULL_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { 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_STRING_H''@|$(NEXT_STRING_H)|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_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' \
-             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
-             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
-             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
-             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
-             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
-             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
-             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
-             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
-             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
-             -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' \
-             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
-             -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
-             -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|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)/string.in.h; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += string.h string.h-t
-
-EXTRA_DIST += string.in.h
-
-## end   gnulib module string
-
-## begin gnulib module strings
-
-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 $(top_builddir)/config.status $(CXXDEFS_H) 
$(WARN_ON_USE_H) $(ARG_NONNULL_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
-         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; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += strings.h strings.h-t
-
-EXTRA_DIST += strings.in.h
-
-## end   gnulib module strings
-
-## begin gnulib module strndup
-
-
-EXTRA_DIST += strndup.c
-
-EXTRA_libgnu_a_SOURCES += strndup.c
-
-## end   gnulib module strndup
-
-## begin gnulib module strnlen
-
-
-EXTRA_DIST += strnlen.c
-
-EXTRA_libgnu_a_SOURCES += strnlen.c
-
-## end   gnulib module strnlen
-
-## begin gnulib module strnlen1
-
-libgnu_a_SOURCES += strnlen1.h strnlen1.c
-
-## end   gnulib module strnlen1
-
-## begin gnulib module sys_types
-
-BUILT_SOURCES += sys/types.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 address@hidden $@ && \
-       { 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_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; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += sys/types.h sys/types.h-t
-
-EXTRA_DIST += sys_types.in.h
-
-## end   gnulib module sys_types
-
-## begin gnulib module sysexits
-
-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.
-if GL_GENERATE_SYSEXITS_H
-sysexits.h: sysexits.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         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; \
-       } > address@hidden && \
-       mv -f address@hidden $@
-else
-sysexits.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += sysexits.h sysexits.h-t
-
-EXTRA_DIST += sysexits.in.h
-
-## end   gnulib module sysexits
-
-## 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 $(top_builddir)/config.status $(CXXDEFS_H) 
$(ARG_NONNULL_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         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|@''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' \
-             -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
-             -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
-             -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_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_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' \
-         | \
-         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' \
-             -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
-             -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
-             -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
-             -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
-             -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
-             -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
-             -e 
's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
-             -e 
's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|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)'; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += unistd.h unistd.h-t
-
-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 address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         cat $(srcdir)/unitypes.in.h; \
-       } > address@hidden && \
-       mv -f address@hidden $@
-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 address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         cat $(srcdir)/uniwidth.in.h; \
-       } > address@hidden && \
-       mv -f address@hidden $@
-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
-
-
-EXTRA_DIST += asnprintf.c float+.h printf-args.c printf-args.h printf-parse.c 
printf-parse.h vasnprintf.c vasnprintf.h
-
-EXTRA_libgnu_a_SOURCES += asnprintf.c printf-args.c printf-parse.c vasnprintf.c
-
-## end   gnulib module vasnprintf
-
-## begin gnulib module verify
-
-
-EXTRA_DIST += verify.h
-
-## end   gnulib module verify
-
-## begin gnulib module vsnprintf
-
-
-EXTRA_DIST += vsnprintf.c
-
-EXTRA_libgnu_a_SOURCES += vsnprintf.c
-
-## end   gnulib module vsnprintf
-
-## 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 $(top_builddir)/config.status $(CXXDEFS_H) 
$(ARG_NONNULL_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { 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|@''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/@''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' \
-             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
-             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
-             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
-             -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' \
-         | \
-         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' \
-             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
-             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
-             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
-             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
-             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
-             -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)'; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += wchar.h wchar.h-t
-
-EXTRA_DIST += wchar.in.h
-
-## end   gnulib module wchar
-
-## begin gnulib module wcrtomb
-
-
-EXTRA_DIST += wcrtomb.c
-
-EXTRA_libgnu_a_SOURCES += wcrtomb.c
-
-## end   gnulib module wcrtomb
-
-## 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 $(top_builddir)/config.status $(CXXDEFS_H) 
$(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f address@hidden $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         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; \
-       } > address@hidden && \
-       mv address@hidden $@
-MOSTLYCLEANFILES += wctype.h wctype.h-t
-
-EXTRA_DIST += wctype.in.h
-
-## 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 xsize.c
-
-## end   gnulib module xsize
-
-
-mostlyclean-local: mostlyclean-generic
-       @for dir in '' $(MOSTLYCLEANDIRS); do \
-         if test -n "$$dir" && test -d $$dir; then \
-           echo "rmdir $$dir"; rmdir $$dir; \
-         fi; \
-       done; \
-       :
diff --git a/grub-core/gnulib/alloca.c b/grub-core/gnulib/alloca.c
deleted file mode 100644
index ee0f01886..000000000
--- a/grub-core/gnulib/alloca.c
+++ /dev/null
@@ -1,478 +0,0 @@
-/* alloca.c -- allocate automatically reclaimed memory
-   (Mostly) portable public-domain implementation -- D A Gwyn
-
-   This implementation of the PWB library alloca function,
-   which is used to allocate space off the run-time stack so
-   that it is automatically reclaimed upon procedure exit,
-   was inspired by discussions with J. Q. Johnson of Cornell.
-   J.Otto Tennant <address@hidden> contributed the Cray support.
-
-   There are some preprocessor constants that can
-   be defined when compiling for your specific system, for
-   improved efficiency; however, the defaults should be okay.
-
-   The general concept of this implementation is to keep
-   track of all alloca-allocated blocks, and reclaim any
-   that are found to be deeper in the stack than the current
-   invocation.  This heuristic does not reclaim storage as
-   soon as it becomes invalid, but it will do so eventually.
-
-   As a special case, alloca(0) reclaims storage without
-   allocating any.  It is a good idea to use alloca(0) in
-   your main control loop, etc. to force garbage collection.  */
-
-#include <config.h>
-
-#include <alloca.h>
-
-#include <string.h>
-#include <stdlib.h>
-
-#ifdef emacs
-# include "lisp.h"
-# include "blockinput.h"
-# ifdef EMACS_FREE
-#  undef free
-#  define free EMACS_FREE
-# endif
-#else
-# define memory_full() abort ()
-#endif
-
-/* If compiling with GCC 2, this file's not needed.  */
-#if !defined (__GNUC__) || __GNUC__ < 2
-
-/* If someone has defined alloca as a macro,
-   there must be some other way alloca is supposed to work.  */
-# ifndef alloca
-
-#  ifdef emacs
-#   ifdef static
-/* actually, only want this if static is defined as ""
-   -- this is for usg, in which emacs must undefine static
-   in order to make unexec workable
-   */
-#    ifndef STACK_DIRECTION
-you
-lose
--- must know STACK_DIRECTION at compile-time
-/* Using #error here is not wise since this file should work for
-   old and obscure compilers.  */
-#    endif /* STACK_DIRECTION undefined */
-#   endif /* static */
-#  endif /* emacs */
-
-/* If your stack is a linked list of frames, you have to
-   provide an "address metric" ADDRESS_FUNCTION macro.  */
-
-#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
-long i00afunc ();
-#   define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
-#  else
-#   define ADDRESS_FUNCTION(arg) &(arg)
-#  endif
-
-/* Define STACK_DIRECTION if you know the direction of stack
-   growth for your system; otherwise it will be automatically
-   deduced at run-time.
-
-   STACK_DIRECTION > 0 => grows toward higher addresses
-   STACK_DIRECTION < 0 => grows toward lower addresses
-   STACK_DIRECTION = 0 => direction of growth unknown  */
-
-#  ifndef STACK_DIRECTION
-#   define STACK_DIRECTION      0       /* Direction unknown.  */
-#  endif
-
-#  if STACK_DIRECTION != 0
-
-#   define STACK_DIR    STACK_DIRECTION /* Known at compile-time.  */
-
-#  else /* STACK_DIRECTION == 0; need run-time code.  */
-
-static int stack_dir;           /* 1 or -1 once known.  */
-#   define STACK_DIR    stack_dir
-
-static 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;
-}
-
-#  endif /* STACK_DIRECTION == 0 */
-
-/* An "alloca header" is used to:
-   (a) chain together all alloca'ed blocks;
-   (b) keep track of stack depth.
-
-   It is very important that sizeof(header) agree with malloc
-   alignment chunk size.  The following default should work okay.  */
-
-#  ifndef       ALIGN_SIZE
-#   define ALIGN_SIZE   sizeof(double)
-#  endif
-
-typedef union hdr
-{
-  char align[ALIGN_SIZE];       /* To force sizeof(header).  */
-  struct
-    {
-      union hdr *next;          /* For chaining headers.  */
-      char *deep;               /* For stack depth measure.  */
-    } h;
-} header;
-
-static header *last_alloca_header = NULL;       /* -> last alloca header.  */
-
-/* Return a pointer to at least SIZE bytes of storage,
-   which will be automatically reclaimed upon exit from
-   the procedure that called alloca.  Originally, this space
-   was supposed to be taken from the current stack frame of the
-   caller, but that method cannot be made to work for some
-   implementations of C, for example under Gould's UTX/32.  */
-
-void *
-alloca (size_t size)
-{
-  auto char probe;              /* Probes stack depth: */
-  register char *depth = ADDRESS_FUNCTION (probe);
-
-#  if STACK_DIRECTION == 0
-  if (STACK_DIR == 0)           /* Unknown growth direction.  */
-    STACK_DIR = find_stack_direction (NULL, (size & 1) + 20);
-#  endif
-
-  /* Reclaim garbage, defined as all alloca'd storage that
-     was allocated from deeper in the stack than currently.  */
-
-  {
-    register header *hp;        /* Traverses linked list.  */
-
-#  ifdef emacs
-    BLOCK_INPUT;
-#  endif
-
-    for (hp = last_alloca_header; hp != NULL;)
-      if ((STACK_DIR > 0 && hp->h.deep > depth)
-          || (STACK_DIR < 0 && hp->h.deep < depth))
-        {
-          register header *np = hp->h.next;
-
-          free (hp);            /* Collect garbage.  */
-
-          hp = np;              /* -> next header.  */
-        }
-      else
-        break;                  /* Rest are not deeper.  */
-
-    last_alloca_header = hp;    /* -> last valid storage.  */
-
-#  ifdef emacs
-    UNBLOCK_INPUT;
-#  endif
-  }
-
-  if (size == 0)
-    return NULL;                /* No allocation required.  */
-
-  /* Allocate combined header + user data storage.  */
-
-  {
-    /* Address of header.  */
-    register header *new;
-
-    size_t combined_size = sizeof (header) + size;
-    if (combined_size < sizeof (header))
-      memory_full ();
-
-    new = malloc (combined_size);
-
-    if (! new)
-      memory_full ();
-
-    new->h.next = last_alloca_header;
-    new->h.deep = depth;
-
-    last_alloca_header = new;
-
-    /* User storage begins just after header.  */
-
-    return (void *) (new + 1);
-  }
-}
-
-#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
-
-#   ifdef DEBUG_I00AFUNC
-#    include <stdio.h>
-#   endif
-
-#   ifndef CRAY_STACK
-#    define CRAY_STACK
-#    ifndef CRAY2
-/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
-struct stack_control_header
-  {
-    long shgrow:32;             /* Number of times stack has grown.  */
-    long shaseg:32;             /* Size of increments to stack.  */
-    long shhwm:32;              /* High water mark of stack.  */
-    long shsize:32;             /* Current size of stack (all segments).  */
-  };
-
-/* The stack segment linkage control information occurs at
-   the high-address end of a stack segment.  (The stack
-   grows from low addresses to high addresses.)  The initial
-   part of the stack segment linkage control information is
-   0200 (octal) words.  This provides for register storage
-   for the routine which overflows the stack.  */
-
-struct stack_segment_linkage
-  {
-    long ss[0200];              /* 0200 overflow words.  */
-    long sssize:32;             /* Number of words in this segment.  */
-    long ssbase:32;             /* Offset to stack base.  */
-    long:32;
-    long sspseg:32;             /* Offset to linkage control of previous
-                                   segment of stack.  */
-    long:32;
-    long sstcpt:32;             /* Pointer to task common address block.  */
-    long sscsnm;                /* Private control structure number for
-                                   microtasking.  */
-    long ssusr1;                /* Reserved for user.  */
-    long ssusr2;                /* Reserved for user.  */
-    long sstpid;                /* Process ID for pid based multi-tasking.  */
-    long ssgvup;                /* Pointer to multitasking thread giveup.  */
-    long sscray[7];             /* Reserved for Cray Research.  */
-    long ssa0;
-    long ssa1;
-    long ssa2;
-    long ssa3;
-    long ssa4;
-    long ssa5;
-    long ssa6;
-    long ssa7;
-    long sss0;
-    long sss1;
-    long sss2;
-    long sss3;
-    long sss4;
-    long sss5;
-    long sss6;
-    long sss7;
-  };
-
-#    else /* CRAY2 */
-/* The following structure defines the vector of words
-   returned by the STKSTAT library routine.  */
-struct stk_stat
-  {
-    long now;                   /* Current total stack size.  */
-    long maxc;                  /* Amount of contiguous space which would
-                                   be required to satisfy the maximum
-                                   stack demand to date.  */
-    long high_water;            /* Stack high-water mark.  */
-    long overflows;             /* Number of stack overflow ($STKOFEN) calls.  
*/
-    long hits;                  /* Number of internal buffer hits.  */
-    long extends;               /* Number of block extensions.  */
-    long stko_mallocs;          /* Block allocations by $STKOFEN.  */
-    long underflows;            /* Number of stack underflow calls ($STKRETN). 
 */
-    long stko_free;             /* Number of deallocations by $STKRETN.  */
-    long stkm_free;             /* Number of deallocations by $STKMRET.  */
-    long segments;              /* Current number of stack segments.  */
-    long maxs;                  /* Maximum number of stack segments so far.  */
-    long pad_size;              /* Stack pad size.  */
-    long current_address;       /* Current stack segment address.  */
-    long current_size;          /* Current stack segment size.  This
-                                   number is actually corrupted by STKSTAT to
-                                   include the fifteen word trailer area.  */
-    long initial_address;       /* Address of initial segment.  */
-    long initial_size;          /* Size of initial segment.  */
-  };
-
-/* The following structure describes the data structure which trails
-   any stack segment.  I think that the description in 'asdef' is
-   out of date.  I only describe the parts that I am sure about.  */
-
-struct stk_trailer
-  {
-    long this_address;          /* Address of this block.  */
-    long this_size;             /* Size of this block (does not include
-                                   this trailer).  */
-    long unknown2;
-    long unknown3;
-    long link;                  /* Address of trailer block of previous
-                                   segment.  */
-    long unknown5;
-    long unknown6;
-    long unknown7;
-    long unknown8;
-    long unknown9;
-    long unknown10;
-    long unknown11;
-    long unknown12;
-    long unknown13;
-    long unknown14;
-  };
-
-#    endif /* CRAY2 */
-#   endif /* not CRAY_STACK */
-
-#   ifdef CRAY2
-/* Determine a "stack measure" for an arbitrary ADDRESS.
-   I doubt that "lint" will like this much.  */
-
-static long
-i00afunc (long *address)
-{
-  struct stk_stat status;
-  struct stk_trailer *trailer;
-  long *block, size;
-  long result = 0;
-
-  /* We want to iterate through all of the segments.  The first
-     step is to get the stack status structure.  We could do this
-     more quickly and more directly, perhaps, by referencing the
-     $LM00 common block, but I know that this works.  */
-
-  STKSTAT (&status);
-
-  /* Set up the iteration.  */
-
-  trailer = (struct stk_trailer *) (status.current_address
-                                    + status.current_size
-                                    - 15);
-
-  /* There must be at least one stack segment.  Therefore it is
-     a fatal error if "trailer" is null.  */
-
-  if (trailer == 0)
-    abort ();
-
-  /* Discard segments that do not contain our argument address.  */
-
-  while (trailer != 0)
-    {
-      block = (long *) trailer->this_address;
-      size = trailer->this_size;
-      if (block == 0 || size == 0)
-        abort ();
-      trailer = (struct stk_trailer *) trailer->link;
-      if ((block <= address) && (address < (block + size)))
-        break;
-    }
-
-  /* Set the result to the offset in this segment and add the sizes
-     of all predecessor segments.  */
-
-  result = address - block;
-
-  if (trailer == 0)
-    {
-      return result;
-    }
-
-  do
-    {
-      if (trailer->this_size <= 0)
-        abort ();
-      result += trailer->this_size;
-      trailer = (struct stk_trailer *) trailer->link;
-    }
-  while (trailer != 0);
-
-  /* We are done.  Note that if you present a bogus address (one
-     not in any segment), you will get a different number back, formed
-     from subtracting the address of the first block.  This is probably
-     not what you want.  */
-
-  return (result);
-}
-
-#   else /* not CRAY2 */
-/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
-   Determine the number of the cell within the stack,
-   given the address of the cell.  The purpose of this
-   routine is to linearize, in some sense, stack addresses
-   for alloca.  */
-
-static long
-i00afunc (long address)
-{
-  long stkl = 0;
-
-  long size, pseg, this_segment, stack;
-  long result = 0;
-
-  struct stack_segment_linkage *ssptr;
-
-  /* Register B67 contains the address of the end of the
-     current stack segment.  If you (as a subprogram) store
-     your registers on the stack and find that you are past
-     the contents of B67, you have overflowed the segment.
-
-     B67 also points to the stack segment linkage control
-     area, which is what we are really interested in.  */
-
-  stkl = CRAY_STACKSEG_END ();
-  ssptr = (struct stack_segment_linkage *) stkl;
-
-  /* If one subtracts 'size' from the end of the segment,
-     one has the address of the first word of the segment.
-
-     If this is not the first segment, 'pseg' will be
-     nonzero.  */
-
-  pseg = ssptr->sspseg;
-  size = ssptr->sssize;
-
-  this_segment = stkl - size;
-
-  /* It is possible that calling this routine itself caused
-     a stack overflow.  Discard stack segments which do not
-     contain the target address.  */
-
-  while (!(this_segment <= address && address <= stkl))
-    {
-#    ifdef DEBUG_I00AFUNC
-      fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
-#    endif
-      if (pseg == 0)
-        break;
-      stkl = stkl - pseg;
-      ssptr = (struct stack_segment_linkage *) stkl;
-      size = ssptr->sssize;
-      pseg = ssptr->sspseg;
-      this_segment = stkl - size;
-    }
-
-  result = address - this_segment;
-
-  /* If you subtract pseg from the current end of the stack,
-     you get the address of the previous stack segment's end.
-     This seems a little convoluted to me, but I'll bet you save
-     a cycle somewhere.  */
-
-  while (pseg != 0)
-    {
-#    ifdef DEBUG_I00AFUNC
-      fprintf (stderr, "%011o %011o\n", pseg, size);
-#    endif
-      stkl = stkl - pseg;
-      ssptr = (struct stack_segment_linkage *) stkl;
-      size = ssptr->sssize;
-      pseg = ssptr->sspseg;
-      result += size;
-    }
-  return (result);
-}
-
-#   endif /* not CRAY2 */
-#  endif /* CRAY */
-
-# endif /* no alloca */
-#endif /* not GCC 2 */
diff --git a/grub-core/gnulib/alloca.in.h b/grub-core/gnulib/alloca.in.h
deleted file mode 100644
index 72d28ee30..000000000
--- a/grub-core/gnulib/alloca.in.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Memory allocation on the stack.
-
-   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
-   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/>.
-  */
-
-/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
-   means there is a real alloca function.  */
-#ifndef _GL_ALLOCA_H
-#define _GL_ALLOCA_H
-
-/* alloca (N) returns a pointer to N bytes of memory
-   allocated on the stack, which will last until the function returns.
-   Use of alloca should be avoided:
-     - inside arguments of function calls - undefined behaviour,
-     - in inline functions - the allocation may actually last until the
-       calling function returns,
-     - for huge N (say, N >= 65536) - you never know how large (or small)
-       the stack is, and when the stack cannot fulfill the memory allocation
-       request, the program just crashes.
- */
-
-#ifndef alloca
-# ifdef __GNUC__
-#  define alloca __builtin_alloca
-# elif defined _AIX
-#  define alloca __alloca
-# elif defined _MSC_VER
-#  include <malloc.h>
-#  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
-extern "C"
-#  endif
-void *alloca (size_t);
-# endif
-#endif
-
-#endif /* _GL_ALLOCA_H */
diff --git a/grub-core/gnulib/argp-ba.c b/grub-core/gnulib/argp-ba.c
deleted file mode 100644
index 5abc9d00a..000000000
--- a/grub-core/gnulib/argp-ba.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Default definition for ARGP_PROGRAM_BUG_ADDRESS.
-   Copyright (C) 1996-1997, 1999, 2009-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Written by Miles Bader <address@hidden>.
-
-   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 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."  */
-const char *argp_program_bug_address
-/* This variable should be zero-initialized.  On most systems, putting it into
-   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__
-  /* On ELF systems, variables in BSS behave well.  */
-#else
-  = (const char *) 0
-#endif
-  ;
diff --git a/grub-core/gnulib/argp-eexst.c b/grub-core/gnulib/argp-eexst.c
deleted file mode 100644
index a8bb77fcf..000000000
--- a/grub-core/gnulib/argp-eexst.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Default definition for ARGP_ERR_EXIT_STATUS
-   Copyright (C) 1997, 2009-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Written by Miles Bader <address@hidden>.
-
-   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/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <sysexits.h>
-
-#include "argp.h"
-
-/* The exit status that argp will use when exiting due to a parsing error.
-   If not defined or set by the user program, this defaults to EX_USAGE from
-   <sysexits.h>.  */
-error_t argp_err_exit_status = EX_USAGE;
diff --git a/grub-core/gnulib/argp-fmtstream.c 
b/grub-core/gnulib/argp-fmtstream.c
deleted file mode 100644
index 02406ff2a..000000000
--- a/grub-core/gnulib/argp-fmtstream.c
+++ /dev/null
@@ -1,488 +0,0 @@
-/* Word-wrapping and line-truncating streams
-   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 <address@hidden>.
-
-   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/>.  */
-
-/* This package emulates glibc 'line_wrap_stream' semantics for systems that
-   don't have that.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#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
-
-#ifndef isblank
-#define isblank(ch) ((ch)==' ' || (ch)=='\t')
-#endif
-
-#if defined _LIBC && defined USE_IN_LIBIO
-# include <wchar.h>
-# include <libio/libioP.h>
-# define __vsnprintf(s, l, f, a) _IO_vsnprintf (s, l, f, a)
-#endif
-
-#define INIT_BUF_SIZE 200
-#define PRINTF_SIZE_GUESS 150
-
-/* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines
-   written on it with LMARGIN spaces and limits them to RMARGIN columns
-   total.  If WMARGIN >= 0, words that extend past RMARGIN are wrapped by
-   replacing the whitespace before them with a newline and WMARGIN spaces.
-   Otherwise, chars beyond RMARGIN are simply dropped until a newline.
-   Returns NULL if there was an error.  */
-argp_fmtstream_t
-__argp_make_fmtstream (FILE *stream,
-                       size_t lmargin, size_t rmargin, ssize_t wmargin)
-{
-  argp_fmtstream_t fs;
-
-  fs = (struct argp_fmtstream *) malloc (sizeof (struct argp_fmtstream));
-  if (fs != NULL)
-    {
-      fs->stream = stream;
-
-      fs->lmargin = lmargin;
-      fs->rmargin = rmargin;
-      fs->wmargin = wmargin;
-      fs->point_col = 0;
-      fs->point_offs = 0;
-
-      fs->buf = (char *) malloc (INIT_BUF_SIZE);
-      if (! fs->buf)
-        {
-          free (fs);
-          fs = 0;
-        }
-      else
-        {
-          fs->p = fs->buf;
-          fs->end = fs->buf + INIT_BUF_SIZE;
-        }
-    }
-
-  return fs;
-}
-#if 0
-/* Not exported.  */
-#ifdef weak_alias
-weak_alias (__argp_make_fmtstream, argp_make_fmtstream)
-#endif
-#endif
-
-/* Flush FS to its stream, and free it (but don't close the stream).  */
-void
-__argp_fmtstream_free (argp_fmtstream_t fs)
-{
-  __argp_fmtstream_update (fs);
-  if (fs->p > fs->buf)
-    {
-#ifdef USE_IN_LIBIO
-      __fxprintf (fs->stream, "%.*s", (int) (fs->p - fs->buf), fs->buf);
-#else
-      fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream);
-#endif
-    }
-  free (fs->buf);
-  free (fs);
-}
-#if 0
-/* Not exported.  */
-#ifdef weak_alias
-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
-__argp_fmtstream_update (argp_fmtstream_t fs)
-{
-  char *buf, *nl;
-  size_t len;
-
-  /* Scan the buffer for newlines.  */
-  buf = fs->buf + fs->point_offs;
-  while (buf < fs->p)
-    {
-      size_t r;
-
-      if (fs->point_col == 0 && fs->lmargin != 0)
-        {
-          /* We are starting a new line.  Print spaces to the left margin.  */
-          const size_t pad = fs->lmargin;
-          if (fs->p + pad < fs->end)
-            {
-              /* We can fit in them in the buffer by moving the
-                 buffer text up and filling in the beginning.  */
-              memmove (buf + pad, buf, fs->p - buf);
-              fs->p += pad; /* Compensate for bigger buffer. */
-              memset (buf, ' ', pad); /* Fill in the spaces.  */
-              buf += pad; /* Don't bother searching them.  */
-            }
-          else
-            {
-              /* No buffer space for spaces.  Must flush.  */
-              size_t i;
-              for (i = 0; i < pad; i++)
-                {
-#ifdef USE_IN_LIBIO
-                  if (_IO_fwide (fs->stream, 0) > 0)
-                    putwc_unlocked (L' ', fs->stream);
-                  else
-#endif
-                    putc_unlocked (' ', fs->stream);
-                }
-            }
-          fs->point_col = pad;
-        }
-
-      len = fs->p - buf;
-      nl = memchr (buf, '\n', len);
-
-      if (fs->point_col < 0)
-        fs->point_col = 0;
-
-      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 + 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_width;
-              break;
-            }
-          else
-            /* Set the end-of-line pointer for the code below to
-               the end of the buffer.  */
-            nl = fs->p;
-        }
-      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;
-
-      if (fs->wmargin < 0)
-        {
-          /* Truncate the line by overwriting the excess with the
-             newline and anything after it in the buffer.  */
-          if (nl < fs->p)
-            {
-              memmove (buf + (r - fs->point_col), nl, fs->p - nl);
-              fs->p -= buf + (r - fs->point_col) - nl;
-              /* Reset point for the next line and start scanning it.  */
-              fs->point_col = 0;
-              buf += r + 1; /* Skip full line plus \n. */
-            }
-          else
-            {
-              /* The buffer ends with a partial line that is beyond the
-                 maximum line width.  Advance point for the characters
-                 written, and discard those past the max from the buffer.  */
-              fs->point_col += len;
-              fs->p -= fs->point_col - r;
-              break;
-            }
-        }
-      else
-        {
-          /* Do word wrap.  Go to the column just past the maximum line
-             width and scan back for the beginning of the word there.
-             Then insert a line break.  */
-
-          char *p, *nextline;
-          int i;
-
-         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.  */
-
-          if (nextline > buf)
-            {
-              /* Swallow separating blanks.  */
-              if (p >= buf)
-                do
-                  --p;
-                while (p >= buf && isblank ((unsigned char) *p));
-              nl = p + 1;       /* The newline will replace the first blank. */
-            }
-          else
-            {
-              /* A single word that is greater than the maximum line width.
-                 Oh well.  Put it on an overlong line by itself.  */
-              p = buf + add_width (buf, fs->p, (r + 1 - fs->point_col));
-              /* Find the end of the long word.  */
-              if (p < nl)
-                do
-                  ++p;
-                while (p < nl && !isblank ((unsigned char) *p));
-              if (p == nl)
-                {
-                  /* It already ends a line.  No fussing required.  */
-                  fs->point_col = 0;
-                  buf = nl + 1;
-                  continue;
-                }
-              /* We will move the newline to replace the first blank.  */
-              nl = p;
-              /* Swallow separating blanks.  */
-              do
-                ++p;
-              while (isblank ((unsigned char) *p));
-              /* The next line will start here.  */
-              nextline = p;
-            }
-
-          /* Note: There are a bunch of tests below for
-             NEXTLINE == BUF + LEN + 1; this case is where NL happens to fall
-             at the end of the buffer, and NEXTLINE is in fact empty (and so
-             we need not be careful to maintain its contents).  */
-
-          if ((nextline == buf + len + 1
-               ? fs->end - nl < fs->wmargin + 1
-               : nextline - (nl + 1) < fs->wmargin)
-              && fs->p > nextline)
-            {
-              /* The margin needs more blanks than we removed.  */
-              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;
-                  memmove (nl + 1 + fs->wmargin, nextline, mv);
-                  nextline = nl + 1 + fs->wmargin;
-                  len = nextline + mv - buf;
-                  *nl++ = '\n';
-                }
-              else
-                /* Output the first line so we can use the space.  */
-                {
-#ifdef _LIBC
-                  __fxprintf (fs->stream, "%.*s\n",
-                              (int) (nl - fs->buf), fs->buf);
-#else
-                  if (nl > fs->buf)
-                    fwrite_unlocked (fs->buf, 1, nl - fs->buf, fs->stream);
-                  putc_unlocked ('\n', fs->stream);
-#endif
-
-                  len += buf - fs->buf;
-                  nl = buf = fs->buf;
-                }
-            }
-          else
-            /* We can fit the newline and blanks in before
-               the next word.  */
-            *nl++ = '\n';
-
-          if (nextline - nl >= fs->wmargin
-              || (nextline == buf + len + 1 && fs->end - nextline >= 
fs->wmargin))
-            /* Add blanks up to the wrap margin column.  */
-            for (i = 0; i < fs->wmargin; ++i)
-              *nl++ = ' ';
-          else
-            for (i = 0; i < fs->wmargin; ++i)
-#ifdef USE_IN_LIBIO
-              if (_IO_fwide (fs->stream, 0) > 0)
-                putwc_unlocked (L' ', fs->stream);
-              else
-#endif
-                putc_unlocked (' ', fs->stream);
-
-          /* Copy the tail of the original buffer into the current buffer
-             position.  */
-          if (nl < nextline)
-            memmove (nl, nextline, buf + len - nextline);
-          len -= nextline - buf;
-
-          /* Continue the scan on the remaining lines in the buffer.  */
-          buf = nl;
-
-          /* Restore bufp to include all the remaining text.  */
-          fs->p = nl + len;
-
-          /* Reset the counter of what has been output this line.  If wmargin
-             is 0, we want to avoid the lmargin getting added, so we set
-             point_col to a magic value of -1 in that case.  */
-          fs->point_col = fs->wmargin ? fs->wmargin : -1;
-        }
-    }
-
-  /* Remember that we've scanned as far as the end of the buffer.  */
-  fs->point_offs = fs->p - fs->buf;
-}
-
-/* Ensure that FS has space for AMOUNT more bytes in its buffer, either by
-   growing the buffer, or by flushing it.  True is returned iff we succeed. */
-int
-__argp_fmtstream_ensure (struct argp_fmtstream *fs, size_t amount)
-{
-  if ((size_t) (fs->end - fs->p) < amount)
-    {
-      ssize_t wrote;
-
-      /* Flush FS's buffer.  */
-      __argp_fmtstream_update (fs);
-
-#ifdef _LIBC
-      __fxprintf (fs->stream, "%.*s", (int) (fs->p - fs->buf), fs->buf);
-      wrote = fs->p - fs->buf;
-#else
-      wrote = fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream);
-#endif
-      if (wrote == fs->p - fs->buf)
-        {
-          fs->p = fs->buf;
-          fs->point_offs = 0;
-        }
-      else
-        {
-          fs->p -= wrote;
-          fs->point_offs -= wrote;
-          memmove (fs->buf, fs->buf + wrote, fs->p - fs->buf);
-          return 0;
-        }
-
-      if ((size_t) (fs->end - fs->buf) < amount)
-        /* Gotta grow the buffer.  */
-        {
-          size_t old_size = fs->end - fs->buf;
-          size_t new_size = old_size + amount;
-          char *new_buf;
-
-          if (new_size < old_size || ! (new_buf = realloc (fs->buf, new_size)))
-            {
-              __set_errno (ENOMEM);
-              return 0;
-            }
-
-          fs->buf = new_buf;
-          fs->end = new_buf + new_size;
-          fs->p = fs->buf;
-        }
-    }
-
-  return 1;
-}
-
-ssize_t
-__argp_fmtstream_printf (struct argp_fmtstream *fs, const char *fmt, ...)
-{
-  int out;
-  size_t avail;
-  size_t size_guess = PRINTF_SIZE_GUESS; /* How much space to reserve. */
-
-  do
-    {
-      va_list args;
-
-      if (! __argp_fmtstream_ensure (fs, size_guess))
-        return -1;
-
-      va_start (args, fmt);
-      avail = fs->end - fs->p;
-      out = __vsnprintf (fs->p, avail, fmt, args);
-      va_end (args);
-      if ((size_t) out >= avail)
-        size_guess = out + 1;
-    }
-  while ((size_t) out >= avail);
-
-  fs->p += out;
-
-  return out;
-}
-#if 0
-/* Not exported.  */
-#ifdef weak_alias
-weak_alias (__argp_fmtstream_printf, argp_fmtstream_printf)
-#endif
-#endif
-
-#endif /* !ARGP_FMTSTREAM_USE_LINEWRAP */
diff --git a/grub-core/gnulib/argp-fmtstream.h 
b/grub-core/gnulib/argp-fmtstream.h
deleted file mode 100644
index 000090ea6..000000000
--- a/grub-core/gnulib/argp-fmtstream.h
+++ /dev/null
@@ -1,359 +0,0 @@
-/* Word-wrapping and line-truncating streams.
-   Copyright (C) 1997, 2006-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Written by Miles Bader <address@hidden>.
-
-   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/>.  */
-
-/* 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.  */
-
-#ifndef _ARGP_FMTSTREAM_H
-#define _ARGP_FMTSTREAM_H
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-/* 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 _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 _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
-#else
-# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
-#endif
-
-#if    (_LIBC - 0 && !defined (USE_IN_LIBIO)) \
-    || (defined (__GNU_LIBRARY__) && defined (HAVE_LINEWRAP_H))
-/* line_wrap_stream is available, so use that.  */
-#define ARGP_FMTSTREAM_USE_LINEWRAP
-#endif
-
-#ifdef ARGP_FMTSTREAM_USE_LINEWRAP
-/* Just be a simple wrapper for line_wrap_stream; the semantics are
-   *slightly* different, as line_wrap_stream doesn't actually make a new
-   object, it just modifies the given stream (reversibly) to do
-   line-wrapping.  Since we control who uses this code, it doesn't matter.  */
-
-#include <linewrap.h>
-
-typedef FILE *argp_fmtstream_t;
-
-#define argp_make_fmtstream line_wrap_stream
-#define __argp_make_fmtstream line_wrap_stream
-#define argp_fmtstream_free line_unwrap_stream
-#define __argp_fmtstream_free line_unwrap_stream
-
-#define __argp_fmtstream_putc(fs,ch) putc(ch,fs)
-#define argp_fmtstream_putc(fs,ch) putc(ch,fs)
-#define __argp_fmtstream_puts(fs,str) fputs(str,fs)
-#define argp_fmtstream_puts(fs,str) fputs(str,fs)
-#define __argp_fmtstream_write(fs,str,len) fwrite(str,1,len,fs)
-#define argp_fmtstream_write(fs,str,len) fwrite(str,1,len,fs)
-#define __argp_fmtstream_printf fprintf
-#define argp_fmtstream_printf fprintf
-
-#define __argp_fmtstream_lmargin line_wrap_lmargin
-#define argp_fmtstream_lmargin line_wrap_lmargin
-#define __argp_fmtstream_set_lmargin line_wrap_set_lmargin
-#define argp_fmtstream_set_lmargin line_wrap_set_lmargin
-#define __argp_fmtstream_rmargin line_wrap_rmargin
-#define argp_fmtstream_rmargin line_wrap_rmargin
-#define __argp_fmtstream_set_rmargin line_wrap_set_rmargin
-#define argp_fmtstream_set_rmargin line_wrap_set_rmargin
-#define __argp_fmtstream_wmargin line_wrap_wmargin
-#define argp_fmtstream_wmargin line_wrap_wmargin
-#define __argp_fmtstream_set_wmargin line_wrap_set_wmargin
-#define argp_fmtstream_set_wmargin line_wrap_set_wmargin
-#define __argp_fmtstream_point line_wrap_point
-#define argp_fmtstream_point line_wrap_point
-
-#else /* !ARGP_FMTSTREAM_USE_LINEWRAP */
-/* Guess we have to define our own version.  */
-
-struct argp_fmtstream
-{
-  FILE *stream;                 /* The stream we're outputting to.  */
-
-  size_t lmargin, rmargin;      /* Left and right margins.  */
-  ssize_t wmargin;              /* Margin to wrap to, or -1 to truncate.  */
-
-  /* Point in buffer to which we've processed for wrapping, but not output.  */
-  size_t point_offs;
-  /* Output column at POINT_OFFS, or -1 meaning 0 but don't add lmargin.  */
-  ssize_t point_col;
-
-  char *buf;                    /* Output buffer.  */
-  char *p;                      /* Current end of text in BUF. */
-  char *end;                    /* Absolute end of BUF.  */
-};
-
-typedef struct argp_fmtstream *argp_fmtstream_t;
-
-/* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines
-   written on it with LMARGIN spaces and limits them to RMARGIN columns
-   total.  If WMARGIN >= 0, words that extend past RMARGIN are wrapped by
-   replacing the whitespace before them with a newline and WMARGIN spaces.
-   Otherwise, chars beyond RMARGIN are simply dropped until a newline.
-   Returns NULL if there was an error.  */
-extern argp_fmtstream_t __argp_make_fmtstream (FILE *__stream,
-                                               size_t __lmargin,
-                                               size_t __rmargin,
-                                               ssize_t __wmargin);
-extern argp_fmtstream_t argp_make_fmtstream (FILE *__stream,
-                                             size_t __lmargin,
-                                             size_t __rmargin,
-                                             ssize_t __wmargin);
-
-/* Flush __FS to its stream, and free it (but don't close the stream).  */
-extern void __argp_fmtstream_free (argp_fmtstream_t __fs);
-extern void argp_fmtstream_free (argp_fmtstream_t __fs);
-
-extern ssize_t __argp_fmtstream_printf (argp_fmtstream_t __fs,
-                                        const char *__fmt, ...)
-     _GL_ATTRIBUTE_FORMAT ((printf, 2, 3));
-extern ssize_t argp_fmtstream_printf (argp_fmtstream_t __fs,
-                                      const char *__fmt, ...)
-     _GL_ATTRIBUTE_FORMAT ((printf, 2, 3));
-
-#if _LIBC
-extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);
-extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);
-
-extern int __argp_fmtstream_puts (argp_fmtstream_t __fs, const char *__str);
-extern int argp_fmtstream_puts (argp_fmtstream_t __fs, const char *__str);
-
-extern size_t __argp_fmtstream_write (argp_fmtstream_t __fs,
-                                      const char *__str, size_t __len);
-extern size_t argp_fmtstream_write (argp_fmtstream_t __fs,
-                                    const char *__str, size_t __len);
-#endif
-
-/* Access macros for various bits of state.  */
-#define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin)
-#define argp_fmtstream_rmargin(__fs) ((__fs)->rmargin)
-#define argp_fmtstream_wmargin(__fs) ((__fs)->wmargin)
-#define __argp_fmtstream_lmargin argp_fmtstream_lmargin
-#define __argp_fmtstream_rmargin argp_fmtstream_rmargin
-#define __argp_fmtstream_wmargin argp_fmtstream_wmargin
-
-#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);
-extern size_t __argp_fmtstream_set_lmargin (argp_fmtstream_t __fs,
-                                            size_t __lmargin);
-
-/* Set __FS's right margin to __RMARGIN and return the old value.  */
-extern size_t argp_fmtstream_set_rmargin (argp_fmtstream_t __fs,
-                                          size_t __rmargin);
-extern size_t __argp_fmtstream_set_rmargin (argp_fmtstream_t __fs,
-                                            size_t __rmargin);
-
-/* Set __FS's wrap margin to __WMARGIN and return the old value.  */
-extern size_t argp_fmtstream_set_wmargin (argp_fmtstream_t __fs,
-                                          size_t __wmargin);
-extern size_t __argp_fmtstream_set_wmargin (argp_fmtstream_t __fs,
-                                            size_t __wmargin);
-
-/* Return the column number of the current output point in __FS.  */
-extern size_t argp_fmtstream_point (argp_fmtstream_t __fs);
-extern size_t __argp_fmtstream_point (argp_fmtstream_t __fs);
-#endif
-
-/* Internal routines.  */
-extern void _argp_fmtstream_update (argp_fmtstream_t __fs);
-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);
-
-#if !_LIBC || defined __OPTIMIZE__
-/* Inline versions of above routines.  */
-
-#if !_LIBC
-#define __argp_fmtstream_putc argp_fmtstream_putc
-#define __argp_fmtstream_puts argp_fmtstream_puts
-#define __argp_fmtstream_write argp_fmtstream_write
-#define __argp_fmtstream_set_lmargin argp_fmtstream_set_lmargin
-#define __argp_fmtstream_set_rmargin argp_fmtstream_set_rmargin
-#define __argp_fmtstream_set_wmargin argp_fmtstream_set_wmargin
-#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
-# ifdef __GNUC__
-   /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
-      inline semantics, unless -fgnu89-inline is used.  It defines a macro
-      __GNUC_STDC_INLINE__ to indicate this situation or a macro
-      __GNUC_GNU_INLINE__ to indicate the opposite situation.
-
-      GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
-      semantics but warns, unless -fgnu89-inline is used:
-        warning: C99 inline functions are not supported; using GNU89
-        warning: to disable this warning use -fgnu89-inline or the gnu_inline 
function attribute
-      It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
-
-      Whereas Apple GCC 4.0.1 build 5479 without -std=c99 or -std=gnu99
-      implements the GNU C inline semantics and defines the macro
-      __GNUC_GNU_INLINE__, but it does not warn and does not support
-      __attribute__ ((__gnu_inline__)).
-
-      All in all, these are the possible combinations.  For every compiler,
-      we need to choose ARGP_FS_EI so that the corresponding table cell
-      contains an "ok".
-
-        \    ARGP_FS_EI                      inline   extern    extern
-          \                                           inline    inline
-      CC    \                                                   __attribute__
-                                                                ((gnu_inline))
-
-      gcc 4.3.0                              error    ok        ok
-      gcc 4.3.0 -std=gnu99 -fgnu89-inline    error    ok        ok
-      gcc 4.3.0 -std=gnu99                   ok       error     ok
-
-      gcc 4.2.2                              error    ok        ok
-      gcc 4.2.2 -std=gnu99 -fgnu89-inline    error    ok        ok
-      gcc 4.2.2 -std=gnu99                   error    warning   ok
-
-      gcc 4.1.2                              error    ok        warning
-      gcc 4.1.2 -std=gnu99                   error    ok        warning
-
-      Apple gcc 4.0.1                        error    ok        warning
-      Apple gcc 4.0.1 -std=gnu99             ok       error     warning
-    */
-#  if defined __GNUC_STDC_INLINE__
-#   define ARGP_FS_EI inline
-#  elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)
-#   define ARGP_FS_EI extern inline __attribute__ ((__gnu_inline__))
-#  else
-#   define ARGP_FS_EI extern inline
-#  endif
-# else
-   /* With other compilers, assume the ISO C99 meaning of 'inline', if
-      the compiler supports 'inline' at all.  */
-#  define ARGP_FS_EI inline
-# endif
-#endif
-
-ARGP_FS_EI size_t
-__argp_fmtstream_write (argp_fmtstream_t __fs,
-                        const char *__str, size_t __len)
-{
-  if (__fs->p + __len <= __fs->end || __argp_fmtstream_ensure (__fs, __len))
-    {
-      memcpy (__fs->p, __str, __len);
-      __fs->p += __len;
-      return __len;
-    }
-  else
-    return 0;
-}
-
-ARGP_FS_EI int
-__argp_fmtstream_puts (argp_fmtstream_t __fs, const char *__str)
-{
-  size_t __len = strlen (__str);
-  if (__len)
-    {
-      size_t __wrote = __argp_fmtstream_write (__fs, __str, __len);
-      return __wrote == __len ? 0 : -1;
-    }
-  else
-    return 0;
-}
-
-ARGP_FS_EI int
-__argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch)
-{
-  if (__fs->p < __fs->end || __argp_fmtstream_ensure (__fs, 1))
-    return *__fs->p++ = __ch;
-  else
-    return EOF;
-}
-
-/* Set __FS's left margin to __LMARGIN and return the old value.  */
-ARGP_FS_EI size_t
-__argp_fmtstream_set_lmargin (argp_fmtstream_t __fs, size_t __lmargin)
-{
-  size_t __old;
-  if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs)
-    __argp_fmtstream_update (__fs);
-  __old = __fs->lmargin;
-  __fs->lmargin = __lmargin;
-  return __old;
-}
-
-/* Set __FS's right margin to __RMARGIN and return the old value.  */
-ARGP_FS_EI size_t
-__argp_fmtstream_set_rmargin (argp_fmtstream_t __fs, size_t __rmargin)
-{
-  size_t __old;
-  if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs)
-    __argp_fmtstream_update (__fs);
-  __old = __fs->rmargin;
-  __fs->rmargin = __rmargin;
-  return __old;
-}
-
-/* Set FS's wrap margin to __WMARGIN and return the old value.  */
-ARGP_FS_EI size_t
-__argp_fmtstream_set_wmargin (argp_fmtstream_t __fs, size_t __wmargin)
-{
-  size_t __old;
-  if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs)
-    __argp_fmtstream_update (__fs);
-  __old = __fs->wmargin;
-  __fs->wmargin = __wmargin;
-  return __old;
-}
-
-/* Return the column number of the current output point in __FS.  */
-ARGP_FS_EI size_t
-__argp_fmtstream_point (argp_fmtstream_t __fs)
-{
-  if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs)
-    __argp_fmtstream_update (__fs);
-  return __fs->point_col >= 0 ? __fs->point_col : 0;
-}
-
-#if !_LIBC
-#undef __argp_fmtstream_putc
-#undef __argp_fmtstream_puts
-#undef __argp_fmtstream_write
-#undef __argp_fmtstream_set_lmargin
-#undef __argp_fmtstream_set_rmargin
-#undef __argp_fmtstream_set_wmargin
-#undef __argp_fmtstream_point
-#undef __argp_fmtstream_update
-#undef __argp_fmtstream_ensure
-_GL_INLINE_HEADER_END
-#endif
-
-#endif /* !_LIBC || __OPTIMIZE__ */
-
-#endif /* ARGP_FMTSTREAM_USE_LINEWRAP */
-
-#endif /* argp-fmtstream.h */
diff --git a/grub-core/gnulib/argp-fs-xinl.c b/grub-core/gnulib/argp-fs-xinl.c
deleted file mode 100644
index 35547d93d..000000000
--- a/grub-core/gnulib/argp-fs-xinl.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Real definitions for extern inline functions in argp-fmtstream.h
-   Copyright (C) 1997, 2003-2004, 2009-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Written by Miles Bader <address@hidden>.
-
-   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/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define ARGP_FS_EI
-#else
-# define ARGP_FS_EI _GL_EXTERN_INLINE
-#endif
-#undef __OPTIMIZE__
-#define __OPTIMIZE__ 1
-#include "argp-fmtstream.h"
-
-#if 0
-/* Not exported.  */
-/* Add weak aliases.  */
-#if _LIBC - 0 && !defined (ARGP_FMTSTREAM_USE_LINEWRAP) && defined (weak_alias)
-
-weak_alias (__argp_fmtstream_putc, argp_fmtstream_putc)
-weak_alias (__argp_fmtstream_puts, argp_fmtstream_puts)
-weak_alias (__argp_fmtstream_write, argp_fmtstream_write)
-weak_alias (__argp_fmtstream_set_lmargin, argp_fmtstream_set_lmargin)
-weak_alias (__argp_fmtstream_set_rmargin, argp_fmtstream_set_rmargin)
-weak_alias (__argp_fmtstream_set_wmargin, argp_fmtstream_set_wmargin)
-weak_alias (__argp_fmtstream_point, argp_fmtstream_point)
-
-#endif
-#endif
diff --git a/grub-core/gnulib/argp-help.c b/grub-core/gnulib/argp-help.c
deleted file mode 100644
index b9be63f40..000000000
--- a/grub-core/gnulib/argp-help.c
+++ /dev/null
@@ -1,1960 +0,0 @@
-/* Hierarchical argument parsing help output
-   Copyright (C) 1995-2005, 2007, 2009-2015 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Written by Miles Bader <address@hidden>.
-
-   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 _GNU_SOURCE
-# define _GNU_SOURCE    1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <alloca.h>
-#include <errno.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
-#include <assert.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <limits.h>
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#endif
-
-#ifdef _LIBC
-# include <libintl.h>
-# undef dgettext
-# define dgettext(domain, msgid) \
-   INTUSE(__dcgettext) (domain, msgid, LC_MESSAGES)
-#else
-# include "gettext.h"
-#endif
-
-#include "argp.h"
-#include "argp-fmtstream.h"
-#include "argp-namefrob.h"
-#include "mbswidth.h"
-
-#ifndef SIZE_MAX
-# define SIZE_MAX ((size_t) -1)
-#endif
-
-/* User-selectable (using an environment variable) formatting parameters.
-
-   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.  */
-
-/* Default parameters.  */
-#define DUP_ARGS      0         /* True if option argument can be duplicated. 
*/
-#define DUP_ARGS_NOTE 1         /* True to print a note about duplicate args. 
*/
-#define SHORT_OPT_COL 2         /* column in which short options start */
-#define LONG_OPT_COL  6         /* column in which long options start */
-#define DOC_OPT_COL   2         /* column in which doc options start */
-#define OPT_DOC_COL  29         /* column in which option text starts */
-#define HEADER_COL    1         /* column in which group headers are printed */
-#define USAGE_INDENT 12         /* indentation of wrapped usage lines */
-#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.  */
-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'.
-     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
-     this really means both is printed below the options.  */
-  int dup_args;
-
-  /* This is true if when DUP_ARGS is false, and some duplicate arguments have
-     been suppressed, an explanatory message should be printed.  */
-  int dup_args_note;
-
-  /* Various output columns.  */
-  int short_opt_col;      /* column in which short options start */
-  int long_opt_col;       /* column in which long options start */
-  int doc_opt_col;        /* column in which doc options start */
-  int opt_doc_col;        /* column in which option text starts */
-  int header_col;         /* column in which group headers are printed */
-  int usage_indent;       /* indentation of wrapped usage lines */
-  int rmargin;            /* right margin used for wrapping */
-
-  int valid;              /* True when the values in here are valid.  */
-};
-
-/* This is a global variable, as user options are only ever read once.  */
-static struct uparams uparams = {
-  DUP_ARGS, DUP_ARGS_NOTE,
-  SHORT_OPT_COL, LONG_OPT_COL, DOC_OPT_COL, OPT_DOC_COL, HEADER_COL,
-  USAGE_INDENT, RMARGIN,
-  0
-};
-
-/* A particular uparam, and what the user name is.  */
-struct uparam_name
-{
-  const char *name;             /* User name.  */
-  int is_bool;                  /* Whether it's 'boolean'.  */
-  size_t uparams_offs;          /* Location of the (int) field in UPARAMS.  */
-};
-
-/* The name-field mappings we know about.  */
-static const struct uparam_name uparam_names[] =
-{
-  { "dup-args",       1, offsetof (struct uparams, dup_args) },
-  { "dup-args-note",  1, offsetof (struct uparams, dup_args_note) },
-  { "short-opt-col",  0, offsetof (struct uparams, short_opt_col) },
-  { "long-opt-col",   0, offsetof (struct uparams, long_opt_col) },
-  { "doc-opt-col",    0, offsetof (struct uparams, doc_opt_col) },
-  { "opt-doc-col",    0, offsetof (struct uparams, opt_doc_col) },
-  { "header-col",     0, offsetof (struct uparams, header_col) },
-  { "usage-indent",   0, offsetof (struct uparams, usage_indent) },
-  { "rmargin",        0, offsetof (struct uparams, rmargin) },
-  { 0 }
-};
-
-static void
-validate_uparams (const struct argp_state *state, struct uparams *upptr)
-{
-  const struct uparam_name *up;
-
-  for (up = uparam_names; up->name; up++)
-    {
-      if (up->is_bool
-          || up->uparams_offs == offsetof (struct uparams, rmargin))
-        continue;
-      if (*(int *)((char *)upptr + up->uparams_offs) >= upptr->rmargin)
-        {
-          __argp_failure (state, 0, 0,
-                          dgettext (state->root_argp->argp_domain,
-                                    "\
-ARGP_HELP_FMT: %s value is less than or equal to %s"),
-                          "rmargin", up->name);
-          return;
-        }
-    }
-  uparams = *upptr;
-  uparams.valid = 1;
-}
-
-/* Read user options from the environment, and fill in UPARAMS appropriately. 
*/
-static void
-fill_in_uparams (const struct argp_state *state)
-{
-  const char *var = getenv ("ARGP_HELP_FMT");
-  struct uparams new_params = uparams;
-
-#define SKIPWS(p) do { while (isspace ((unsigned char) *p)) p++; } while (0);
-
-  if (var)
-    {
-      /* Parse var. */
-      while (*var)
-        {
-          SKIPWS (var);
-
-          if (isalpha ((unsigned char) *var))
-            {
-              size_t var_len;
-              const struct uparam_name *un;
-              int unspec = 0, val = 0;
-              const char *arg = var;
-
-              while (isalnum ((unsigned char) *arg) || *arg == '-' || *arg == 
'_')
-                arg++;
-              var_len = arg - var;
-
-              SKIPWS (arg);
-
-              if (*arg == '\0' || *arg == ',')
-                unspec = 1;
-              else if (*arg == '=')
-                {
-                  arg++;
-                  SKIPWS (arg);
-                }
-
-              if (unspec)
-                {
-                  if (var[0] == 'n' && var[1] == 'o' && var[2] == '-')
-                    {
-                      val = 0;
-                      var += 3;
-                      var_len -= 3;
-                    }
-                  else
-                    val = 1;
-                }
-              else if (isdigit ((unsigned char) *arg))
-                {
-                  val = atoi (arg);
-                  while (isdigit ((unsigned char) *arg))
-                    arg++;
-                  SKIPWS (arg);
-                }
-
-              for (un = uparam_names; un->name; un++)
-                if (strlen (un->name) == var_len
-                    && strncmp (var, un->name, var_len) == 0)
-                  {
-                    if (unspec && !un->is_bool)
-                      __argp_failure (state, 0, 0,
-                                      dgettext (state->root_argp->argp_domain,
-                                                "\
-%.*s: ARGP_HELP_FMT parameter requires a value"),
-                                      (int) var_len, var);
-                    else if (val < 0)
-                      __argp_failure (state, 0, 0,
-                                      dgettext (state->root_argp->argp_domain,
-                                                "\
-%.*s: ARGP_HELP_FMT parameter must be positive"),
-                                      (int) var_len, var);
-                    else
-                      *(int *)((char *)&new_params + un->uparams_offs) = val;
-                    break;
-                  }
-              if (! un->name)
-                __argp_failure (state, 0, 0,
-                                dgettext (state->root_argp->argp_domain, "\
-%.*s: Unknown ARGP_HELP_FMT parameter"),
-                                (int) var_len, var);
-
-              var = arg;
-              if (*var == ',')
-                var++;
-            }
-          else if (*var)
-            {
-              __argp_failure (state, 0, 0,
-                              dgettext (state->root_argp->argp_domain,
-                                        "Garbage in ARGP_HELP_FMT: %s"), var);
-              break;
-            }
-        }
-      validate_uparams (state, &new_params);
-    }
-}
-
-/* Returns true if OPT hasn't been marked invisible.  Visibility only affects
-   whether OPT is displayed or used in sorting, not option shadowing.  */
-#define ovisible(opt) (! ((opt)->flags & OPTION_HIDDEN))
-
-/* Returns true if OPT is an alias for an earlier option.  */
-#define oalias(opt) ((opt)->flags & OPTION_ALIAS)
-
-/* Returns true if OPT is a documentation-only entry.  */
-#define odoc(opt) ((opt)->flags & OPTION_DOC)
-
-/* Returns true if OPT should not be translated */
-#define onotrans(opt) ((opt)->flags & OPTION_NO_TRANS)
-
-/* Returns true if OPT is the end-of-list marker for a list of options.  */
-#define oend(opt) __option_is_end (opt)
-
-/* Returns true if OPT has a short option.  */
-#define oshort(opt) __option_is_short (opt)
-
-/*
-   The help format for a particular option is like:
-
-     -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 "]" 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 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):
-
-     -p PID, --pid=PID          List the process PID
-         --pgrp=PGRP            List processes in the process group PGRP
-     -P, -x, --no-parent        Include processes without parents
-     -Q, --all-fields           Don't elide unusable fields (normally if 
there's
-                                some reason ps can't print a field for any
-                                process, it's removed from the output entirely)
-     -r, --reverse, --gratuitously-long-reverse-option
-                                Reverse the order of any sort
-         --session[=SID]        Add the processes from the session SID (which
-                                defaults to the sid of the current process)
-
-    Here are some more options:
-     -f ZOT, --foonly=ZOT       Glork a foonly
-     -z, --zaza                 Snit a zar
-
-     -?, --help                 Give this help list
-         --usage                Give a short usage message
-     -V, --version              Print program version
-
-   The struct argp_option array for the above could look like:
-
-   {
-     {"pid",       'p',      "PID",  0, "List the process PID"},
-     {"pgrp",      OPT_PGRP, "PGRP", 0, "List processes in the process group 
PGRP"},
-     {"no-parent", 'P',       0,     0, "Include processes without parents"},
-     {0,           'x',       0,     OPTION_ALIAS},
-     {"all-fields",'Q',       0,     0, "Don't elide unusable fields (normally"
-                                        " if there's some reason ps can't"
-                                        " print a field for any process, it's"
-                                        " removed from the output entirely)" },
-     {"reverse",   'r',       0,     0, "Reverse the order of any sort"},
-     {"gratuitously-long-reverse-option", 0, 0, OPTION_ALIAS},
-     {"session",   OPT_SESS,  "SID", OPTION_ARG_OPTIONAL,
-                                        "Add the processes from the session"
-                                        " SID (which defaults to the sid of"
-                                        " the current process)" },
-
-     {0,0,0,0, "Here are some more options:"},
-     {"foonly", 'f', "ZOT", 0, "Glork a foonly"},
-     {"zaza", 'z', 0, 0, "Snit a zar"},
-
-     {0}
-   }
-
-   Note that the last three options are automatically supplied by argp_parse,
-   unless you tell it not to with ARGP_NO_HELP.
-
-*/
-
-/* Returns true if CH occurs between BEG and END.  */
-static int
-find_char (char ch, char *beg, char *end)
-{
-  while (beg < end)
-    if (*beg == ch)
-      return 1;
-    else
-      beg++;
-  return 0;
-}
-
-struct hol_cluster;             /* fwd decl */
-
-struct hol_entry
-{
-  /* First option.  */
-  const struct argp_option *opt;
-  /* Number of options (including aliases).  */
-  unsigned num;
-
-  /* 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 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;
-
-  /* Entries are sorted by their group first, in the order:
-       1, 2, ..., n, 0, -m, ..., -2, -1
-     and then alphabetically within each group.  The default is 0.  */
-  int group;
-
-  /* The cluster of options this entry belongs to, or 0 if none.  */
-  struct hol_cluster *cluster;
-
-  /* The argp from which this option came.  */
-  const struct argp *argp;
-
-  /* Position in the array */
-  unsigned ord;
-};
-
-/* A cluster of entries to reflect the argp tree structure.  */
-struct hol_cluster
-{
-  /* A descriptive header printed before options in this cluster.  */
-  const char *header;
-
-  /* Used to order clusters within the same group with the same parent,
-     according to the order in which they occurred in the parent argp's child
-     list.  */
-  int index;
-
-  /* How to sort this cluster with respect to options and other clusters at the
-     same depth (clusters always follow options in the same group).  */
-  int group;
-
-  /* The cluster to which this cluster belongs, or 0 if it's at the base
-     level.  */
-  struct hol_cluster *parent;
-
-  /* The argp from which this cluster is (eventually) derived.  */
-  const struct argp *argp;
-
-  /* The distance this cluster is from the root.  */
-  int depth;
-
-  /* Clusters in a given hol are kept in a linked list, to make freeing them
-     possible.  */
-  struct hol_cluster *next;
-};
-
-/* A list of options for help.  */
-struct hol
-{
-  /* An array of hol_entry's.  */
-  struct hol_entry *entries;
-  /* The number of entries in this hol.  If this field is zero, the others
-     are undefined.  */
-  unsigned num_entries;
-
-  /* A string containing all short options in this HOL.  Each entry contains
-     pointers into this string, so the order can't be messed with blindly.  */
-  char *short_options;
-
-  /* Clusters of entries in this hol.  */
-  struct hol_cluster *clusters;
-};
-
-/* Create a struct hol from the options in ARGP.  CLUSTER is the
-   hol_cluster in which these entries occur, or 0, if at the root.  */
-static struct hol *
-make_hol (const struct argp *argp, struct hol_cluster *cluster)
-{
-  char *so;
-  const struct argp_option *o;
-  const struct argp_option *opts = argp->options;
-  struct hol_entry *entry;
-  unsigned num_short_options = 0;
-  struct hol *hol = malloc (sizeof (struct hol));
-
-  assert (hol);
-
-  hol->num_entries = 0;
-  hol->clusters = 0;
-
-  if (opts)
-    {
-      int cur_group = 0;
-
-      /* The first option must not be an alias.  */
-      assert (! oalias (opts));
-
-      /* Calculate the space needed.  */
-      for (o = opts; ! oend (o); o++)
-        {
-          if (! oalias (o))
-            hol->num_entries++;
-          if (oshort (o))
-            num_short_options++;        /* This is an upper bound.  */
-        }
-
-      hol->entries = malloc (sizeof (struct hol_entry) * hol->num_entries);
-      hol->short_options = malloc (num_short_options + 1);
-
-      assert (hol->entries && hol->short_options);
-      if (SIZE_MAX <= UINT_MAX)
-        assert (hol->num_entries <= SIZE_MAX / sizeof (struct hol_entry));
-
-      /* Fill in the entries.  */
-      so = hol->short_options;
-      for (o = opts, entry = hol->entries; ! oend (o); entry++)
-        {
-          entry->opt = o;
-          entry->num = 0;
-          entry->short_options = so;
-          entry->group = cur_group =
-            o->group
-            ? o->group
-            : ((!o->name && !o->key)
-               ? cur_group + 1
-               : cur_group);
-          entry->cluster = cluster;
-          entry->argp = argp;
-
-          do
-            {
-              entry->num++;
-              if (oshort (o) && ! find_char (o->key, hol->short_options, so))
-                /* O has a valid short option which hasn't already been used.*/
-                *so++ = o->key;
-              o++;
-            }
-          while (! oend (o) && oalias (o));
-        }
-      *so = '\0';               /* null terminated so we can find the length */
-    }
-
-  return hol;
-}
-
-/* Add a new cluster to HOL, with the given GROUP and HEADER (taken from the
-   associated argp child list entry), INDEX, and PARENT, and return a pointer
-   to it.  ARGP is the argp that this cluster results from.  */
-static struct hol_cluster *
-hol_add_cluster (struct hol *hol, int group, const char *header, int index,
-                 struct hol_cluster *parent, const struct argp *argp)
-{
-  struct hol_cluster *cl = malloc (sizeof (struct hol_cluster));
-  if (cl)
-    {
-      cl->group = group;
-      cl->header = header;
-
-      cl->index = index;
-      cl->parent = parent;
-      cl->argp = argp;
-      cl->depth = parent ? parent->depth + 1 : 0;
-
-      cl->next = hol->clusters;
-      hol->clusters = cl;
-    }
-  return cl;
-}
-
-/* Free HOL and any resources it uses.  */
-static void
-hol_free (struct hol *hol)
-{
-  struct hol_cluster *cl = hol->clusters;
-
-  while (cl)
-    {
-      struct hol_cluster *next = cl->next;
-      free (cl);
-      cl = next;
-    }
-
-  if (hol->num_entries > 0)
-    {
-      free (hol->entries);
-      free (hol->short_options);
-    }
-
-  free (hol);
-}
-
-static int
-hol_entry_short_iterate (const struct hol_entry *entry,
-                         int (*func)(const struct argp_option *opt,
-                                     const struct argp_option *real,
-                                     const char *domain, void *cookie),
-                         const char *domain, void *cookie)
-{
-  unsigned nopts;
-  int val = 0;
-  const struct argp_option *opt, *real = entry->opt;
-  char *so = entry->short_options;
-
-  for (opt = real, nopts = entry->num; nopts > 0 && !val; opt++, nopts--)
-    if (oshort (opt) && *so == opt->key)
-      {
-        if (!oalias (opt))
-          real = opt;
-        if (ovisible (opt))
-          val = (*func)(opt, real, domain, cookie);
-        so++;
-      }
-
-  return val;
-}
-
-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,
-                                    const char *domain, void *cookie),
-                        const char *domain, void *cookie)
-{
-  unsigned nopts;
-  int val = 0;
-  const struct argp_option *opt, *real = entry->opt;
-
-  for (opt = real, nopts = entry->num; nopts > 0 && !val; opt++, nopts--)
-    if (opt->name)
-      {
-        if (!oalias (opt))
-          real = opt;
-        if (ovisible (opt))
-          val = (*func)(opt, real, domain, cookie);
-      }
-
-  return val;
-}
-
-/* Iterator that returns true for the first short option.  */
-static int
-until_short (const struct argp_option *opt, const struct argp_option *real,
-             const char *domain, void *cookie)
-{
-  return oshort (opt) ? opt->key : 0;
-}
-
-/* Returns the first valid short option in ENTRY, or 0 if there is none.  */
-static char
-hol_entry_first_short (const struct hol_entry *entry)
-{
-  return hol_entry_short_iterate (entry, until_short,
-                                  entry->argp->argp_domain, 0);
-}
-
-/* Returns the first valid long option in ENTRY, or 0 if there is none.  */
-static const char *
-hol_entry_first_long (const struct hol_entry *entry)
-{
-  const struct argp_option *opt;
-  unsigned num;
-  for (opt = entry->opt, num = entry->num; num > 0; opt++, num--)
-    if (opt->name && ovisible (opt))
-      return opt->name;
-  return 0;
-}
-
-/* Returns the entry in HOL with the long option name NAME, or 0 if there is
-   none.  */
-static struct hol_entry *
-hol_find_entry (struct hol *hol, const char *name)
-{
-  struct hol_entry *entry = hol->entries;
-  unsigned num_entries = hol->num_entries;
-
-  while (num_entries-- > 0)
-    {
-      const struct argp_option *opt = entry->opt;
-      unsigned num_opts = entry->num;
-
-      while (num_opts-- > 0)
-        if (opt->name && ovisible (opt) && strcmp (opt->name, name) == 0)
-          return entry;
-        else
-          opt++;
-
-      entry++;
-    }
-
-  return 0;
-}
-
-/* If an entry with the long option NAME occurs in HOL, set its special
-   sort position to GROUP.  */
-static void
-hol_set_group (struct hol *hol, const char *name, int group)
-{
-  struct hol_entry *entry = hol_find_entry (hol, name);
-  if (entry)
-    entry->group = group;
-}
-
-/* Order by group:  0, 1, 2, ..., n, -m, ..., -2, -1.
-   EQ is what to return if GROUP1 and GROUP2 are the same.  */
-static int
-group_cmp (int group1, int group2, int eq)
-{
-  if (group1 == group2)
-    return eq;
-  else if ((group1 < 0 && group2 < 0) || (group1 >= 0 && group2 >= 0))
-    return group1 - group2;
-  else
-    return group2 - group1;
-}
-
-/* Compare clusters CL1 & CL2 by the order that they should appear in
-   output.  */
-static int
-hol_cluster_cmp (const struct hol_cluster *cl1, const struct hol_cluster *cl2)
-{
-  /* If one cluster is deeper than the other, use its ancestor at the same
-     level, so that finding the common ancestor is straightforward.
-
-     clN->depth > 0 means that clN->parent != NULL (see hol_add_cluster) */
-  while (cl1->depth > cl2->depth)
-    cl1 = cl1->parent;
-  while (cl2->depth > cl1->depth)
-    cl2 = cl2->parent;
-
-  /* Now reduce both clusters to their ancestors at the point where both have
-     a common parent; these can be directly compared.  */
-  while (cl1->parent != cl2->parent)
-    cl1 = cl1->parent, cl2 = cl2->parent;
-
-  return group_cmp (cl1->group, cl2->group, cl2->index - cl1->index);
-}
-
-/* Return the ancestor of CL that's just below the root (i.e., has a parent
-   of 0).  */
-static struct hol_cluster *
-hol_cluster_base (struct hol_cluster *cl)
-{
-  while (cl->parent)
-    cl = cl->parent;
-  return cl;
-}
-
-/* Return true if CL1 is a child of CL2.  */
-static int
-hol_cluster_is_child (const struct hol_cluster *cl1,
-                      const struct hol_cluster *cl2)
-{
-  while (cl1 && cl1 != cl2)
-    cl1 = cl1->parent;
-  return cl1 == cl2;
-}
-
-/* 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
-canon_doc_option (const char **name)
-{
-  int non_opt;
-
-  if (!*name)
-    non_opt = 1;
-  else
-    {
-      /* Skip initial whitespace.  */
-      while (isspace ((unsigned char) **name))
-        (*name)++;
-      /* 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))
-        (*name)++;
-    }
-  return non_opt;
-}
-
-#define HOL_ENTRY_PTRCMP(a,b) ((a)->ord < (b)->ord ? -1 : 1)
-
-/* Order ENTRY1 & ENTRY2 by the order which they should appear in a help
-   listing.  */
-static int
-hol_entry_cmp (const struct hol_entry *entry1,
-               const struct hol_entry *entry2)
-{
-  /* The group numbers by which the entries should be ordered; if either is
-     in a cluster, then this is just the group within the cluster.  */
-  int group1 = entry1->group, group2 = entry2->group;
-  int rc;
-
-  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 appropriate clustering level too.  */
-      if (! entry1->cluster)
-        /* 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.  */
-        return group_cmp (group1, hol_cluster_base (entry2->cluster)->group, 
-1);
-      else if (! entry2->cluster)
-        /* Likewise, but ENTRY2's not in a cluster.  */
-        return group_cmp (hol_cluster_base (entry1->cluster)->group, group2, 
1);
-      else
-        /* Both entries are in clusters, we can just compare the clusters.  */
-        return (rc = hol_cluster_cmp (entry1->cluster, entry2->cluster)) ?
-               rc : HOL_ENTRY_PTRCMP (entry1, entry2);
-    }
-  else if (group1 == group2)
-    /* The entries are both in the same cluster and group, so compare them
-       alphabetically.  */
-    {
-      int short1 = hol_entry_first_short (entry1);
-      int short2 = hol_entry_first_short (entry2);
-      int doc1 = odoc (entry1->opt);
-      int doc2 = odoc (entry2->opt);
-      const char *long1 = hol_entry_first_long (entry1);
-      const char *long2 = hol_entry_first_long (entry2);
-
-      if (doc1)
-        doc1 = canon_doc_option (&long1);
-      if (doc2)
-        doc2 = canon_doc_option (&long2);
-
-      if (doc1 != doc2)
-        /* "documentation" options always follow normal options (or
-           documentation options that *look* like normal options).  */
-        return doc1 - doc2;
-      else if (!short1 && !short2 && long1 && long2)
-        /* Only long options.  */
-        return (rc = __strcasecmp (long1, long2)) ?
-               rc : HOL_ENTRY_PTRCMP (entry1, entry2);
-      else
-        /* Compare short/short, long/short, short/long, using the first
-           character of long options.  Entries without *any* valid
-           options (such as options with OPTION_HIDDEN set) will be put
-           first, but as they're not displayed, it doesn't matter where
-           they are.  */
-        {
-          unsigned char first1 = short1 ? short1 : long1 ? *long1 : 0;
-          unsigned char first2 = short2 ? short2 : long2 ? *long2 : 0;
-          /* Use tolower, not _tolower, since only the former is
-             guaranteed to work on something already lower case.  */
-          int lower_cmp = tolower (first1) - tolower (first2);
-          /* Compare ignoring case, except when the options are both the
-             same letter, in which case lower-case always comes first.  */
-          return lower_cmp ? lower_cmp :
-                 (rc = first2 - first1) ?
-                 rc : HOL_ENTRY_PTRCMP (entry1, entry2);
-        }
-    }
-  else
-    /* Within the same cluster, but not the same group, so just compare
-       groups.  */
-    return group_cmp (group1, group2, HOL_ENTRY_PTRCMP (entry1, entry2));
-}
-
-/* Version of hol_entry_cmp with correct signature for qsort.  */
-static int
-hol_entry_qcmp (const void *entry1_v, const void *entry2_v)
-{
-  return hol_entry_cmp (entry1_v, entry2_v);
-}
-
-/* Sort HOL by group and alphabetically by option name (with short options
-   taking precedence over long).  Since the sorting is for display purposes
-   only, the shadowing of options isn't effected.  */
-static void
-hol_sort (struct hol *hol)
-{
-  if (hol->num_entries > 0)
-    {
-      unsigned i;
-      struct hol_entry *e;
-      for (i = 0, e = hol->entries; i < hol->num_entries; i++, e++)
-        e->ord = i;
-      qsort (hol->entries, hol->num_entries, sizeof (struct hol_entry),
-             hol_entry_qcmp);
-    }
-}
-
-/* Append MORE to HOL, destroying MORE in the process.  Options in HOL shadow
-   any in MORE with the same name.  */
-static void
-hol_append (struct hol *hol, struct hol *more)
-{
-  struct hol_cluster **cl_end = &hol->clusters;
-
-  /* Steal MORE's cluster list, and add it to the end of HOL's.  */
-  while (*cl_end)
-    cl_end = &(*cl_end)->next;
-  *cl_end = more->clusters;
-  more->clusters = 0;
-
-  /* Merge entries.  */
-  if (more->num_entries > 0)
-    {
-      if (hol->num_entries == 0)
-        {
-          hol->num_entries = more->num_entries;
-          hol->entries = more->entries;
-          hol->short_options = more->short_options;
-          more->num_entries = 0;        /* Mark MORE's fields as invalid.  */
-        }
-      else
-        /* Append the entries in MORE to those in HOL, taking care to only add
-           non-shadowed SHORT_OPTIONS values.  */
-        {
-          unsigned left;
-          char *so, *more_so;
-          struct hol_entry *e;
-          unsigned num_entries = hol->num_entries + more->num_entries;
-          struct hol_entry *entries =
-            malloc (num_entries * sizeof (struct hol_entry));
-          unsigned hol_so_len = strlen (hol->short_options);
-          char *short_options =
-            malloc (hol_so_len + strlen (more->short_options) + 1);
-
-          assert (entries && short_options);
-          if (SIZE_MAX <= UINT_MAX)
-            assert (num_entries <= SIZE_MAX / sizeof (struct hol_entry));
-
-          __mempcpy (__mempcpy (entries, hol->entries,
-                                hol->num_entries * sizeof (struct hol_entry)),
-                     more->entries,
-                     more->num_entries * sizeof (struct hol_entry));
-
-          __mempcpy (short_options, hol->short_options, hol_so_len);
-
-          /* Fix up the short options pointers from HOL.  */
-          for (e = entries, left = hol->num_entries; left > 0; e++, left--)
-            e->short_options =
-              short_options + (e->short_options - hol->short_options);
-
-          /* Now add the short options from MORE, fixing up its entries
-             too.  */
-          so = short_options + hol_so_len;
-          more_so = more->short_options;
-          for (left = more->num_entries; left > 0; e++, left--)
-            {
-              int opts_left;
-              const struct argp_option *opt;
-
-              e->short_options = so;
-
-              for (opts_left = e->num, opt = e->opt; opts_left; opt++, 
opts_left--)
-                {
-                  int ch = *more_so;
-                  if (oshort (opt) && ch == opt->key)
-                    /* The next short option in MORE_SO, CH, is from OPT.  */
-                    {
-                      if (! find_char (ch, short_options,
-                                       short_options + hol_so_len))
-                        /* The short option CH isn't shadowed by HOL's options,
-                           so add it to the sum.  */
-                        *so++ = ch;
-                      more_so++;
-                    }
-                }
-            }
-
-          *so = '\0';
-
-          free (hol->entries);
-          free (hol->short_options);
-
-          hol->entries = entries;
-          hol->num_entries = num_entries;
-          hol->short_options = short_options;
-        }
-    }
-
-  hol_free (more);
-}
-
-/* Inserts enough spaces to make sure STREAM is at column COL.  */
-static void
-indent_to (argp_fmtstream_t stream, unsigned col)
-{
-  int needed = col - __argp_fmtstream_point (stream);
-  while (needed-- > 0)
-    __argp_fmtstream_putc (stream, ' ');
-}
-
-/* Output to STREAM either a space, or a newline if there isn't room for at
-   least ENSURE characters before the right margin.  */
-static void
-space (argp_fmtstream_t stream, size_t ensure)
-{
-  if (__argp_fmtstream_point (stream) + ensure
-      >= __argp_fmtstream_rmargin (stream))
-    __argp_fmtstream_putc (stream, '\n');
-  else
-    __argp_fmtstream_putc (stream, ' ');
-}
-
-/* If the option REAL has an argument, we print it in using the printf
-   format REQ_FMT or OPT_FMT depending on whether it's a required or
-   optional argument.  */
-static void
-arg (const struct argp_option *real, const char *req_fmt, const char *opt_fmt,
-     const char *domain, argp_fmtstream_t stream)
-{
-  if (real->arg)
-    {
-      if (real->flags & OPTION_ARG_OPTIONAL)
-        __argp_fmtstream_printf (stream, opt_fmt,
-                                 dgettext (domain, real->arg));
-      else
-        __argp_fmtstream_printf (stream, req_fmt,
-                                 dgettext (domain, real->arg));
-    }
-}
-
-/* Helper functions for hol_entry_help.  */
-
-/* State used during the execution of hol_help.  */
-struct hol_help_state
-{
-  /* PREV_ENTRY should contain the previous entry printed, or 0.  */
-  struct hol_entry *prev_entry;
-
-  /* If an entry is in a different group from the previous one, and SEP_GROUPS
-     is true, then a blank line will be printed before any output. */
-  int sep_groups;
-
-  /* True if a duplicate option argument was suppressed (only ever set if
-     UPARAMS.dup_args is false).  */
-  int suppressed_dup_arg;
-};
-
-/* Some state used while printing a help entry (used to communicate with
-   helper functions).  See the doc for hol_entry_help for more info, as most
-   of the fields are copied from its arguments.  */
-struct pentry_state
-{
-  const struct hol_entry *entry;
-  argp_fmtstream_t stream;
-  struct hol_help_state *hhstate;
-
-  /* True if nothing's been printed so far.  */
-  int first;
-
-  /* If non-zero, the state that was used to print this help.  */
-  const struct argp_state *state;
-};
-
-/* If a user doc filter should be applied to DOC, do so.  */
-static const char *
-filter_doc (const char *doc, int key, const struct argp *argp,
-            const struct argp_state *state)
-{
-  if (argp->help_filter)
-    /* We must apply a user filter to this output.  */
-    {
-      void *input = __argp_input (argp, state);
-      return (*argp->help_filter) (key, doc, input);
-    }
-  else
-    /* No filter.  */
-    return doc;
-}
-
-/* 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
-   to 0.  */
-static void
-print_header (const char *str, const struct argp *argp,
-              struct pentry_state *pest)
-{
-  const char *tstr = dgettext (argp->argp_domain, str);
-  const char *fstr = filter_doc (tstr, ARGP_KEY_HELP_HEADER, argp, 
pest->state);
-
-  if (fstr)
-    {
-      if (*fstr)
-        {
-          if (pest->hhstate->prev_entry)
-            /* Precede with a blank line.  */
-            __argp_fmtstream_putc (pest->stream, '\n');
-          indent_to (pest->stream, uparams.header_col);
-          __argp_fmtstream_set_lmargin (pest->stream, uparams.header_col);
-          __argp_fmtstream_set_wmargin (pest->stream, uparams.header_col);
-          __argp_fmtstream_puts (pest->stream, fstr);
-          __argp_fmtstream_set_lmargin (pest->stream, 0);
-          __argp_fmtstream_putc (pest->stream, '\n');
-        }
-
-      pest->hhstate->sep_groups = 1; /* Separate subsequent groups. */
-    }
-
-  if (fstr != tstr)
-    free ((char *) fstr);
-}
-
-/* Inserts a comma if this isn't the first item on the line, and then makes
-   sure we're at least to column COL.  If this *is* the first item on a line,
-   prints any pending whitespace/headers that should precede this line. Also
-   clears FIRST.  */
-static void
-comma (unsigned col, struct pentry_state *pest)
-{
-  if (pest->first)
-    {
-      const struct hol_entry *pe = pest->hhstate->prev_entry;
-      const struct hol_cluster *cl = pest->entry->cluster;
-
-      if (pest->hhstate->sep_groups && pe && pest->entry->group != pe->group)
-        __argp_fmtstream_putc (pest->stream, '\n');
-
-      if (cl && cl->header && *cl->header
-          && (!pe
-              || (pe->cluster != cl
-                  && !hol_cluster_is_child (pe->cluster, cl))))
-        /* If we're changing clusters, then this must be the start of the
-           ENTRY's cluster unless that is an ancestor of the previous one
-           (in which case we had just popped into a sub-cluster for a bit).
-           If so, then print the cluster's header line.  */
-        {
-          int old_wm = __argp_fmtstream_wmargin (pest->stream);
-          print_header (cl->header, cl->argp, pest);
-          __argp_fmtstream_set_wmargin (pest->stream, old_wm);
-        }
-
-      pest->first = 0;
-    }
-  else
-    __argp_fmtstream_puts (pest->stream, ", ");
-
-  indent_to (pest->stream, col);
-}
-
-/* Print help for ENTRY to STREAM.  */
-static void
-hol_entry_help (struct hol_entry *entry, const struct argp_state *state,
-                argp_fmtstream_t stream, struct hol_help_state *hhstate)
-{
-  unsigned num;
-  const struct argp_option *real = entry->opt, *opt;
-  char *so = entry->short_options;
-  int have_long_opt = 0;        /* We have any long options.  */
-  /* Saved margins.  */
-  int old_lm = __argp_fmtstream_set_lmargin (stream, 0);
-  int old_wm = __argp_fmtstream_wmargin (stream);
-  /* PEST is a state block holding some of our variables that we'd like to
-     share with helper functions.  */
-  struct pentry_state pest;
-
-  pest.entry = entry;
-  pest.stream = stream;
-  pest.hhstate = hhstate;
-  pest.first = 1;
-  pest.state = state;
-
-  if (! odoc (real))
-    for (opt = real, num = entry->num; num > 0; opt++, num--)
-      if (opt->name && ovisible (opt))
-        {
-          have_long_opt = 1;
-          break;
-        }
-
-  /* First emit short options.  */
-  __argp_fmtstream_set_wmargin (stream, uparams.short_opt_col); /* For truly 
bizarre cases. */
-  for (opt = real, num = entry->num; num > 0; opt++, num--)
-    if (oshort (opt) && opt->key == *so)
-      /* OPT has a valid (non shadowed) short option.  */
-      {
-        if (ovisible (opt))
-          {
-            comma (uparams.short_opt_col, &pest);
-            __argp_fmtstream_putc (stream, '-');
-            __argp_fmtstream_putc (stream, *so);
-            if (!have_long_opt || uparams.dup_args)
-              arg (real, " %s", "[%s]", state->root_argp->argp_domain, stream);
-            else if (real->arg)
-              hhstate->suppressed_dup_arg = 1;
-          }
-        so++;
-      }
-
-  /* Now, long options.  */
-  if (odoc (real))
-    /* A "documentation" option.  */
-    {
-      __argp_fmtstream_set_wmargin (stream, uparams.doc_opt_col);
-      for (opt = real, num = entry->num; num > 0; opt++, num--)
-        if (opt->name && *opt->name && ovisible (opt))
-          {
-            comma (uparams.doc_opt_col, &pest);
-            /* Calling dgettext here isn't quite right, since sorting will
-               have been done on the original; but documentation options
-               should be pretty rare anyway...  */
-            __argp_fmtstream_puts (stream,
-                                   onotrans (opt) ?
-                                             opt->name :
-                                   dgettext (state->root_argp->argp_domain,
-                                             opt->name));
-          }
-    }
-  else
-    /* A real long option.  */
-    {
-      int first_long_opt = 1;
-
-      __argp_fmtstream_set_wmargin (stream, uparams.long_opt_col);
-      for (opt = real, num = entry->num; num > 0; opt++, num--)
-        if (opt->name && ovisible (opt))
-          {
-            comma (uparams.long_opt_col, &pest);
-            __argp_fmtstream_printf (stream, "--%s", opt->name);
-            if (first_long_opt || uparams.dup_args)
-              arg (real, "=%s", "[=%s]", state->root_argp->argp_domain,
-                   stream);
-            else if (real->arg)
-              hhstate->suppressed_dup_arg = 1;
-          }
-    }
-
-  /* Next, documentation strings.  */
-  __argp_fmtstream_set_lmargin (stream, 0);
-
-  if (pest.first)
-    {
-      /* Didn't print any switches, what's up?  */
-      if (!oshort (real) && !real->name)
-        /* This is a group header, print it nicely.  */
-        print_header (real->doc, entry->argp, &pest);
-      else
-        /* Just a totally shadowed option or null header; print nothing.  */
-        goto cleanup;           /* Just return, after cleaning up.  */
-    }
-  else
-    {
-      const char *tstr = real->doc ? dgettext (state->root_argp->argp_domain,
-                                               real->doc) : 0;
-      const char *fstr = filter_doc (tstr, real->key, entry->argp, state);
-      if (fstr && *fstr)
-        {
-          unsigned int col = __argp_fmtstream_point (stream);
-
-          __argp_fmtstream_set_lmargin (stream, uparams.opt_doc_col);
-          __argp_fmtstream_set_wmargin (stream, uparams.opt_doc_col);
-
-          if (col > (unsigned int) (uparams.opt_doc_col + 3))
-            __argp_fmtstream_putc (stream, '\n');
-          else if (col >= (unsigned int) uparams.opt_doc_col)
-            __argp_fmtstream_puts (stream, "   ");
-          else
-            indent_to (stream, uparams.opt_doc_col);
-
-          __argp_fmtstream_puts (stream, fstr);
-        }
-      if (fstr && fstr != tstr)
-        free ((char *) fstr);
-
-      /* Reset the left margin.  */
-      __argp_fmtstream_set_lmargin (stream, 0);
-      __argp_fmtstream_putc (stream, '\n');
-    }
-
-  hhstate->prev_entry = entry;
-
-cleanup:
-  __argp_fmtstream_set_lmargin (stream, old_lm);
-  __argp_fmtstream_set_wmargin (stream, old_wm);
-}
-
-/* Output a long help message about the options in HOL to STREAM.  */
-static void
-hol_help (struct hol *hol, const struct argp_state *state,
-          argp_fmtstream_t stream)
-{
-  unsigned num;
-  struct hol_entry *entry;
-  struct hol_help_state hhstate = { 0, 0, 0 };
-
-  for (entry = hol->entries, num = hol->num_entries; num > 0; entry++, num--)
-    hol_entry_help (entry, state, stream, &hhstate);
-
-  if (hhstate.suppressed_dup_arg && uparams.dup_args_note)
-    {
-      const char *tstr = dgettext (state->root_argp->argp_domain, "\
-Mandatory or optional arguments to long options are also mandatory or \
-optional for any corresponding short options.");
-      const char *fstr = filter_doc (tstr, ARGP_KEY_HELP_DUP_ARGS_NOTE,
-                                     state ? state->root_argp : 0, state);
-      if (fstr && *fstr)
-        {
-          __argp_fmtstream_putc (stream, '\n');
-          __argp_fmtstream_puts (stream, fstr);
-          __argp_fmtstream_putc (stream, '\n');
-        }
-      if (fstr && fstr != tstr)
-        free ((char *) fstr);
-    }
-}
-
-/* Helper functions for hol_usage.  */
-
-/* If OPT is a short option without an arg, append its key to the string
-   pointer pointer to by COOKIE, and advance the pointer.  */
-static int
-add_argless_short_opt (const struct argp_option *opt,
-                       const struct argp_option *real,
-                       const char *domain, void *cookie)
-{
-  char **snao_end = cookie;
-  if (!(opt->arg || real->arg)
-      && !((opt->flags | real->flags) & OPTION_NO_USAGE))
-    *(*snao_end)++ = opt->key;
-  return 0;
-}
-
-/* If OPT is a short option with an arg, output a usage entry for it to the
-   stream pointed at by COOKIE.  */
-static int
-usage_argful_short_opt (const struct argp_option *opt,
-                        const struct argp_option *real,
-                        const char *domain, void *cookie)
-{
-  argp_fmtstream_t stream = cookie;
-  const char *arg = opt->arg;
-  int flags = opt->flags | real->flags;
-
-  if (! arg)
-    arg = real->arg;
-
-  if (arg && !(flags & OPTION_NO_USAGE))
-    {
-      arg = dgettext (domain, arg);
-
-      if (flags & OPTION_ARG_OPTIONAL)
-        __argp_fmtstream_printf (stream, " [-%c[%s]]", opt->key, arg);
-      else
-        {
-          /* Manually do line wrapping so that it (probably) won't
-             get wrapped at the embedded space.  */
-          space (stream, 6 + strlen (arg));
-          __argp_fmtstream_printf (stream, "[-%c %s]", opt->key, arg);
-        }
-    }
-
-  return 0;
-}
-
-/* Output a usage entry for the long option opt to the stream pointed at by
-   COOKIE.  */
-static int
-usage_long_opt (const struct argp_option *opt,
-                const struct argp_option *real,
-                const char *domain, void *cookie)
-{
-  argp_fmtstream_t stream = cookie;
-  const char *arg = opt->arg;
-  int flags = opt->flags | real->flags;
-
-  if (! arg)
-    arg = real->arg;
-
-  if (! (flags & OPTION_NO_USAGE) && !odoc (opt))
-    {
-      if (arg)
-        {
-          arg = dgettext (domain, arg);
-          if (flags & OPTION_ARG_OPTIONAL)
-            __argp_fmtstream_printf (stream, " [--%s[=%s]]", opt->name, arg);
-          else
-            __argp_fmtstream_printf (stream, " [--%s=%s]", opt->name, arg);
-        }
-      else
-        __argp_fmtstream_printf (stream, " [--%s]", opt->name);
-    }
-
-  return 0;
-}
-
-/* Print a short usage description for the arguments in HOL to STREAM.  */
-static void
-hol_usage (struct hol *hol, argp_fmtstream_t stream)
-{
-  if (hol->num_entries > 0)
-    {
-      unsigned nentries;
-      struct hol_entry *entry;
-      char *short_no_arg_opts = alloca (strlen (hol->short_options) + 1);
-      char *snao_end = short_no_arg_opts;
-
-      /* First we put a list of short options without arguments.  */
-      for (entry = hol->entries, nentries = hol->num_entries
-           ; nentries > 0
-           ; entry++, nentries--)
-        hol_entry_short_iterate (entry, add_argless_short_opt,
-                                 entry->argp->argp_domain, &snao_end);
-      if (snao_end > short_no_arg_opts)
-        {
-          *snao_end++ = 0;
-          __argp_fmtstream_printf (stream, " [-%s]", short_no_arg_opts);
-        }
-
-      /* Now a list of short options *with* arguments.  */
-      for (entry = hol->entries, nentries = hol->num_entries
-           ; nentries > 0
-           ; entry++, nentries--)
-        hol_entry_short_iterate (entry, usage_argful_short_opt,
-                                 entry->argp->argp_domain, stream);
-
-      /* Finally, a list of long options (whew!).  */
-      for (entry = hol->entries, nentries = hol->num_entries
-           ; nentries > 0
-           ; entry++, nentries--)
-        hol_entry_long_iterate (entry, usage_long_opt,
-                                entry->argp->argp_domain, stream);
-    }
-}
-
-/* Make a HOL containing all levels of options in ARGP.  CLUSTER is the
-   cluster in which ARGP's entries should be clustered, or 0.  */
-static struct hol *
-argp_hol (const struct argp *argp, struct hol_cluster *cluster)
-{
-  const struct argp_child *child = argp->children;
-  struct hol *hol = make_hol (argp, cluster);
-  if (child)
-    while (child->argp)
-      {
-        struct hol_cluster *child_cluster =
-          ((child->group || child->header)
-           /* Put CHILD->argp within its own cluster.  */
-           ? hol_add_cluster (hol, child->group, child->header,
-                              child - argp->children, cluster, argp)
-           /* Just merge it into the parent's cluster.  */
-           : cluster);
-        hol_append (hol, argp_hol (child->argp, child_cluster)) ;
-        child++;
-      }
-  return hol;
-}
-
-/* Calculate how many different levels with alternative args strings exist in
-   ARGP.  */
-static size_t
-argp_args_levels (const struct argp *argp)
-{
-  size_t levels = 0;
-  const struct argp_child *child = argp->children;
-
-  if (argp->args_doc && strchr (argp->args_doc, '\n'))
-    levels++;
-
-  if (child)
-    while (child->argp)
-      levels += argp_args_levels ((child++)->argp);
-
-  return levels;
-}
-
-/* Print all the non-option args documented in ARGP to STREAM.  Any output is
-   preceded by a space.  LEVELS is a pointer to a byte vector the length
-   returned by argp_args_levels; it should be initialized to zero, and
-   updated by this routine for the next call if ADVANCE is true.  True is
-   returned as long as there are more patterns to output.  */
-static int
-argp_args_usage (const struct argp *argp, const struct argp_state *state,
-                 char **levels, int advance, argp_fmtstream_t stream)
-{
-  char *our_level = *levels;
-  int multiple = 0;
-  const struct argp_child *child = argp->children;
-  const char *tdoc = dgettext (argp->argp_domain, argp->args_doc), *nl = 0;
-  const char *fdoc = filter_doc (tdoc, ARGP_KEY_HELP_ARGS_DOC, argp, state);
-
-  if (fdoc)
-    {
-      const char *cp = fdoc;
-      nl = __strchrnul (cp, '\n');
-      if (*nl != '\0')
-        /* This is a "multi-level" args doc; advance to the correct position
-           as determined by our state in LEVELS, and update LEVELS.  */
-        {
-          int i;
-          multiple = 1;
-          for (i = 0; i < *our_level; i++)
-            cp = nl + 1, nl = __strchrnul (cp, '\n');
-          (*levels)++;
-        }
-
-      /* Manually do line wrapping so that it (probably) won't get wrapped at
-         any embedded spaces.  */
-      space (stream, 1 + mbsnwidth (cp, nl - cp, MBSW_STOP_AT_NUL));
-
-      __argp_fmtstream_write (stream, cp, nl - cp);
-    }
-  if (fdoc && fdoc != tdoc)
-    free ((char *)fdoc);        /* Free user's modified doc string.  */
-
-  if (child)
-    while (child->argp)
-      advance = !argp_args_usage ((child++)->argp, state, levels, advance, 
stream);
-
-  if (advance && multiple)
-    {
-      /* Need to increment our level.  */
-      if (*nl)
-        /* There's more we can do here.  */
-        {
-          (*our_level)++;
-          advance = 0;          /* Our parent shouldn't advance also. */
-        }
-      else if (*our_level > 0)
-        /* We had multiple levels, but used them up; reset to zero.  */
-        *our_level = 0;
-    }
-
-  return !advance;
-}
-
-/* Print the documentation for ARGP to STREAM; if POST is false, then
-   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
-   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.  */
-static int
-argp_doc (const struct argp *argp, const struct argp_state *state,
-          int post, int pre_blank, int first_only,
-          argp_fmtstream_t stream)
-{
-  const char *text;
-  const char *inp_text;
-  size_t inp_text_len = 0;
-  const char *trans_text;
-  void *input = 0;
-  int anything = 0;
-  const struct argp_child *child = argp->children;
-
-  if (argp->doc)
-    {
-      char *vt = strchr (argp->doc, '\v');
-      if (vt)
-        {
-          if (post)
-            {
-              inp_text = vt + 1;
-              if (! *inp_text)
-                inp_text = 0;
-            }
-          else
-            {
-              inp_text_len = vt - argp->doc;
-              inp_text = inp_text_len ? __strndup (argp->doc, inp_text_len) : 
0;
-            }
-        }
-      else
-        inp_text = post ? 0 : argp->doc;
-      trans_text = inp_text ? dgettext (argp->argp_domain, inp_text) : NULL;
-    }
-  else
-    trans_text = inp_text = 0;
-
-  if (argp->help_filter)
-    /* We have to filter the doc strings.  */
-    {
-      input = __argp_input (argp, state);
-      text =
-        (*argp->help_filter) (post
-                              ? ARGP_KEY_HELP_POST_DOC
-                              : ARGP_KEY_HELP_PRE_DOC,
-                              trans_text, input);
-    }
-  else
-    text = (const char *) trans_text;
-
-  if (text)
-    {
-      if (pre_blank)
-        __argp_fmtstream_putc (stream, '\n');
-
-      __argp_fmtstream_puts (stream, text);
-
-      if (__argp_fmtstream_point (stream) > __argp_fmtstream_lmargin (stream))
-        __argp_fmtstream_putc (stream, '\n');
-
-      anything = 1;
-    }
-
-  if (text && text != trans_text)
-    free ((char *) text);       /* Free TEXT returned from the help filter.  */
-
-  if (inp_text && inp_text_len)
-    free ((char *) inp_text);   /* We copied INP_TEXT, so free it now.  */
-
-  if (post && argp->help_filter)
-    /* 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)
-        {
-          if (anything || pre_blank)
-            __argp_fmtstream_putc (stream, '\n');
-          __argp_fmtstream_puts (stream, text);
-          free ((char *) text);
-          if (__argp_fmtstream_point (stream)
-              > __argp_fmtstream_lmargin (stream))
-            __argp_fmtstream_putc (stream, '\n');
-          anything = 1;
-        }
-    }
-
-  if (child)
-    while (child->argp && !(first_only && anything))
-      anything |=
-        argp_doc ((child++)->argp, state,
-                  post, anything || pre_blank, first_only,
-                  stream);
-
-  return anything;
-}
-
-/* Output a usage message for ARGP to STREAM.  If called from
-   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,
-       unsigned flags, char *name)
-{
-  int anything = 0;             /* Whether we've output anything.  */
-  struct hol *hol = 0;
-  argp_fmtstream_t fs;
-
-  if (! stream)
-    return;
-
-#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE)
-  __flockfile (stream);
-#endif
-
-  if (! uparams.valid)
-    fill_in_uparams (state);
-
-  fs = __argp_make_fmtstream (stream, 0, uparams.rmargin, 0);
-  if (! fs)
-    {
-#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE)
-      __funlockfile (stream);
-#endif
-      return;
-    }
-
-  if (flags & (ARGP_HELP_USAGE | ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG))
-    {
-      hol = argp_hol (argp, 0);
-
-      /* If present, these options always come last.  */
-      hol_set_group (hol, "help", -1);
-      hol_set_group (hol, "version", -1);
-
-      hol_sort (hol);
-    }
-
-  if (flags & (ARGP_HELP_USAGE | ARGP_HELP_SHORT_USAGE))
-    /* Print a short "Usage:" message.  */
-    {
-      int first_pattern = 1, more_patterns;
-      size_t num_pattern_levels = argp_args_levels (argp);
-      char *pattern_levels = alloca (num_pattern_levels);
-
-      memset (pattern_levels, 0, num_pattern_levels);
-
-      do
-        {
-          int old_lm;
-          int old_wm = __argp_fmtstream_set_wmargin (fs, uparams.usage_indent);
-          char *levels = pattern_levels;
-
-          if (first_pattern)
-            __argp_fmtstream_printf (fs, "%s %s",
-                                     dgettext (argp->argp_domain, "Usage:"),
-                                     name);
-          else
-            __argp_fmtstream_printf (fs, "%s %s",
-                                     dgettext (argp->argp_domain, "  or: "),
-                                     name);
-
-          /* We set the lmargin as well as the wmargin, because hol_usage
-             manually wraps options with newline to avoid annoying breaks.  */
-          old_lm = __argp_fmtstream_set_lmargin (fs, uparams.usage_indent);
-
-          if (flags & ARGP_HELP_SHORT_USAGE)
-            /* Just show where the options go.  */
-            {
-              if (hol->num_entries > 0)
-                __argp_fmtstream_puts (fs, dgettext (argp->argp_domain,
-                                                     " [OPTION...]"));
-            }
-          else
-            /* Actually print the options.  */
-            {
-              hol_usage (hol, fs);
-              flags |= ARGP_HELP_SHORT_USAGE; /* But only do so once.  */
-            }
-
-          more_patterns = argp_args_usage (argp, state, &levels, 1, fs);
-
-          __argp_fmtstream_set_wmargin (fs, old_wm);
-          __argp_fmtstream_set_lmargin (fs, old_lm);
-
-          __argp_fmtstream_putc (fs, '\n');
-          anything = 1;
-
-          first_pattern = 0;
-        }
-      while (more_patterns);
-    }
-
-  if (flags & ARGP_HELP_PRE_DOC)
-    anything |= argp_doc (argp, state, 0, 0, 1, fs);
-
-  if (flags & ARGP_HELP_SEE)
-    {
-      __argp_fmtstream_printf (fs, dgettext (argp->argp_domain, "\
-Try '%s --help' or '%s --usage' for more information.\n"),
-                               name, name);
-      anything = 1;
-    }
-
-  if (flags & ARGP_HELP_LONG)
-    /* Print a long, detailed help message.  */
-    {
-      /* Print info about all the options.  */
-      if (hol->num_entries > 0)
-        {
-          if (anything)
-            __argp_fmtstream_putc (fs, '\n');
-          hol_help (hol, state, fs);
-          anything = 1;
-        }
-    }
-
-  if (flags & ARGP_HELP_POST_DOC)
-    /* Print any documentation strings at the end.  */
-    anything |= argp_doc (argp, state, 1, anything, 0, fs);
-
-  if ((flags & ARGP_HELP_BUG_ADDR) && argp_program_bug_address)
-    {
-      if (anything)
-        __argp_fmtstream_putc (fs, '\n');
-      __argp_fmtstream_printf (fs, dgettext (argp->argp_domain,
-                                             "Report bugs to %s.\n"),
-                               argp_program_bug_address);
-      anything = 1;
-    }
-
-#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE)
-  __funlockfile (stream);
-#endif
-
-  if (hol)
-    hol_free (hol);
-
-  __argp_fmtstream_free (fs);
-}
-
-/* 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. */
-void __argp_help (const struct argp *argp, FILE *stream,
-                  unsigned flags, char *name)
-{
-  struct argp_state state;
-  memset (&state, 0, sizeof state);
-  state.root_argp = argp;
-  _help (argp, &state, stream, flags, name);
-}
-#ifdef weak_alias
-weak_alias (__argp_help, argp_help)
-#endif
-
-#if ! (defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME)
-char *
-__argp_short_program_name (void)
-{
-# if HAVE_DECL_PROGRAM_INVOCATION_NAME
-  return __argp_base_name (program_invocation_name);
-# else
-  /* FIXME: What now? Miles suggests that it is better to use NULL,
-     but currently the value is passed on directly to fputs_unlocked,
-     so that requires more changes. */
-# if __GNUC__
-#  warning No reasonable value to return
-# endif /* __GNUC__ */
-  return "";
-# endif
-}
-#endif
-
-/* Output, if appropriate, a usage message for STATE to STREAM.  FLAGS are
-   from the set ARGP_HELP_*.  */
-void
-__argp_state_help (const struct argp_state *state, FILE *stream, unsigned 
flags)
-{
-  if ((!state || ! (state->flags & ARGP_NO_ERRS)) && stream)
-    {
-      if (state && (state->flags & ARGP_LONG_ONLY))
-        flags |= ARGP_HELP_LONG_ONLY;
-
-      _help (state ? state->root_argp : 0, state, stream, flags,
-             state ? state->name : __argp_short_program_name ());
-
-      if (!state || ! (state->flags & ARGP_NO_EXIT))
-        {
-          if (flags & ARGP_HELP_EXIT_ERR)
-            exit (argp_err_exit_status);
-          if (flags & ARGP_HELP_EXIT_OK)
-            exit (0);
-        }
-  }
-}
-#ifdef weak_alias
-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"
-   message, then exit (1).  */
-void
-__argp_error (const struct argp_state *state, const char *fmt, ...)
-{
-  if (!state || !(state->flags & ARGP_NO_ERRS))
-    {
-      FILE *stream = state ? state->err_stream : stderr;
-
-      if (stream)
-        {
-          va_list ap;
-
-#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE)
-          __flockfile (stream);
-#endif
-
-          va_start (ap, fmt);
-
-#ifdef USE_IN_LIBIO
-          if (_IO_fwide (stream, 0) > 0)
-            {
-              char *buf;
-
-              if (__asprintf (&buf, fmt, ap) < 0)
-                buf = NULL;
-
-              __fwprintf (stream, L"%s: %s\n",
-                          state ? state->name : __argp_short_program_name (),
-                          buf);
-
-              free (buf);
-            }
-          else
-#endif
-            {
-              fputs_unlocked (state
-                              ? state->name : __argp_short_program_name (),
-                              stream);
-              putc_unlocked (':', stream);
-              putc_unlocked (' ', stream);
-
-              vfprintf (stream, fmt, ap);
-
-              putc_unlocked ('\n', stream);
-            }
-
-          __argp_state_help (state, stream, ARGP_HELP_STD_ERR);
-
-          va_end (ap);
-
-#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE)
-          __funlockfile (stream);
-#endif
-        }
-    }
-}
-#ifdef weak_alias
-weak_alias (__argp_error, argp_error)
-#endif
-
-/* 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
-   to STATE->err_stream.  This is useful for argument parsing code that is
-   shared between program startup (when exiting is desired) and runtime
-   option parsing (when typically an error code is returned instead).  The
-   difference between this function and argp_error is that the latter is for
-   *parsing errors*, and the former is for other problems that occur during
-   parsing but don't reflect a (syntactic) problem with the input.  */
-void
-__argp_failure (const struct argp_state *state, int status, int errnum,
-                const char *fmt, ...)
-{
-  if (!state || !(state->flags & ARGP_NO_ERRS))
-    {
-      FILE *stream = state ? state->err_stream : stderr;
-
-      if (stream)
-        {
-#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE)
-          __flockfile (stream);
-#endif
-
-#ifdef USE_IN_LIBIO
-          if (_IO_fwide (stream, 0) > 0)
-            __fwprintf (stream, L"%s",
-                        state ? state->name : __argp_short_program_name ());
-          else
-#endif
-            fputs_unlocked (state
-                            ? state->name : __argp_short_program_name (),
-                            stream);
-
-          if (fmt)
-            {
-              va_list ap;
-
-              va_start (ap, fmt);
-#ifdef USE_IN_LIBIO
-              if (_IO_fwide (stream, 0) > 0)
-                {
-                  char *buf;
-
-                  if (__asprintf (&buf, fmt, ap) < 0)
-                    buf = NULL;
-
-                  __fwprintf (stream, L": %s", buf);
-
-                  free (buf);
-                }
-              else
-#endif
-                {
-                  putc_unlocked (':', stream);
-                  putc_unlocked (' ', stream);
-
-                  vfprintf (stream, fmt, ap);
-                }
-
-              va_end (ap);
-            }
-
-          if (errnum)
-            {
-              char buf[200];
-
-#ifdef USE_IN_LIBIO
-              if (_IO_fwide (stream, 0) > 0)
-                __fwprintf (stream, L": %s",
-                            __strerror_r (errnum, buf, sizeof (buf)));
-              else
-#endif
-                {
-                  char const *s = NULL;
-                  putc_unlocked (':', stream);
-                  putc_unlocked (' ', stream);
-#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)
-                    s = buf;
-#endif
-#if !_LIBC
-                  if (! s && ! (s = strerror (errnum)))
-                    s = dgettext (state->root_argp->argp_domain,
-                                  "Unknown system error");
-#endif
-                  fputs (s, stream);
-                }
-            }
-
-#ifdef USE_IN_LIBIO
-          if (_IO_fwide (stream, 0) > 0)
-            putwc_unlocked (L'\n', stream);
-          else
-#endif
-            putc_unlocked ('\n', stream);
-
-#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE)
-          __funlockfile (stream);
-#endif
-
-          if (status && (!state || !(state->flags & ARGP_NO_EXIT)))
-            exit (status);
-        }
-    }
-}
-#ifdef weak_alias
-weak_alias (__argp_failure, argp_failure)
-#endif
diff --git a/grub-core/gnulib/argp-namefrob.h b/grub-core/gnulib/argp-namefrob.h
deleted file mode 100644
index 6333958c6..000000000
--- a/grub-core/gnulib/argp-namefrob.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Name frobnication for compiling argp outside of glibc
-   Copyright (C) 1997, 2003, 2007, 2009-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Written by Miles Bader <address@hidden>.
-
-   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 !_LIBC
-/* This code is written for inclusion in gnu-libc, and uses names in the
-   namespace reserved for libc.  If we're not compiling in libc, define those
-   names to be the normal ones instead.  */
-
-/* argp-parse functions */
-#undef __argp_parse
-#define __argp_parse argp_parse
-#undef __option_is_end
-#define __option_is_end _option_is_end
-#undef __option_is_short
-#define __option_is_short _option_is_short
-#undef __argp_input
-#define __argp_input _argp_input
-
-/* argp-help functions */
-#undef __argp_help
-#define __argp_help argp_help
-#undef __argp_error
-#define __argp_error argp_error
-#undef __argp_failure
-#define __argp_failure argp_failure
-#undef __argp_state_help
-#define __argp_state_help argp_state_help
-#undef __argp_usage
-#define __argp_usage argp_usage
-
-/* argp-fmtstream functions */
-#undef __argp_make_fmtstream
-#define __argp_make_fmtstream argp_make_fmtstream
-#undef __argp_fmtstream_free
-#define __argp_fmtstream_free argp_fmtstream_free
-#undef __argp_fmtstream_putc
-#define __argp_fmtstream_putc argp_fmtstream_putc
-#undef __argp_fmtstream_puts
-#define __argp_fmtstream_puts argp_fmtstream_puts
-#undef __argp_fmtstream_write
-#define __argp_fmtstream_write argp_fmtstream_write
-#undef __argp_fmtstream_printf
-#define __argp_fmtstream_printf argp_fmtstream_printf
-#undef __argp_fmtstream_set_lmargin
-#define __argp_fmtstream_set_lmargin argp_fmtstream_set_lmargin
-#undef __argp_fmtstream_set_rmargin
-#define __argp_fmtstream_set_rmargin argp_fmtstream_set_rmargin
-#undef __argp_fmtstream_set_wmargin
-#define __argp_fmtstream_set_wmargin argp_fmtstream_set_wmargin
-#undef __argp_fmtstream_point
-#define __argp_fmtstream_point argp_fmtstream_point
-#undef __argp_fmtstream_update
-#define __argp_fmtstream_update _argp_fmtstream_update
-#undef __argp_fmtstream_ensure
-#define __argp_fmtstream_ensure _argp_fmtstream_ensure
-#undef __argp_fmtstream_lmargin
-#define __argp_fmtstream_lmargin argp_fmtstream_lmargin
-#undef __argp_fmtstream_rmargin
-#define __argp_fmtstream_rmargin argp_fmtstream_rmargin
-#undef __argp_fmtstream_wmargin
-#define __argp_fmtstream_wmargin argp_fmtstream_wmargin
-
-/* normal libc functions we call */
-#undef __flockfile
-#define __flockfile flockfile
-#undef __funlockfile
-#define __funlockfile funlockfile
-#undef __mempcpy
-#define __mempcpy mempcpy
-#undef __sleep
-#define __sleep sleep
-#undef __strcasecmp
-#define __strcasecmp strcasecmp
-#undef __strchrnul
-#define __strchrnul strchrnul
-#undef __strerror_r
-#define __strerror_r strerror_r
-#undef __strndup
-#define __strndup strndup
-#undef __vsnprintf
-#define __vsnprintf vsnprintf
-
-#if defined(HAVE_DECL_CLEARERR_UNLOCKED) && !HAVE_DECL_CLEARERR_UNLOCKED
-# define clearerr_unlocked(x) clearerr (x)
-#endif
-#if defined(HAVE_DECL_FEOF_UNLOCKED) && !HAVE_DECL_FEOF_UNLOCKED
-# define feof_unlocked(x) feof (x)
-#endif
-#if defined(HAVE_DECL_FERROR_UNLOCKED) && !HAVE_DECL_FERROR_UNLOCKED
-# define ferror_unlocked(x) ferror (x)
-#endif
-#if defined(HAVE_DECL_FFLUSH_UNLOCKED) && !HAVE_DECL_FFLUSH_UNLOCKED
-# define fflush_unlocked(x) fflush (x)
-#endif
-#if defined(HAVE_DECL_FGETS_UNLOCKED) && !HAVE_DECL_FGETS_UNLOCKED
-# define fgets_unlocked(x,y,z) fgets (x,y,z)
-#endif
-#if defined(HAVE_DECL_FPUTC_UNLOCKED) && !HAVE_DECL_FPUTC_UNLOCKED
-# define fputc_unlocked(x,y) fputc (x,y)
-#endif
-#if defined(HAVE_DECL_FPUTS_UNLOCKED) && !HAVE_DECL_FPUTS_UNLOCKED
-# define fputs_unlocked(x,y) fputs (x,y)
-#endif
-#if defined(HAVE_DECL_FREAD_UNLOCKED) && !HAVE_DECL_FREAD_UNLOCKED
-# define fread_unlocked(w,x,y,z) fread (w,x,y,z)
-#endif
-#if defined(HAVE_DECL_FWRITE_UNLOCKED) && !HAVE_DECL_FWRITE_UNLOCKED
-# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z)
-#endif
-#if defined(HAVE_DECL_GETC_UNLOCKED) && !HAVE_DECL_GETC_UNLOCKED
-# define getc_unlocked(x) getc (x)
-#endif
-#if defined(HAVE_DECL_GETCHAR_UNLOCKED) && !HAVE_DECL_GETCHAR_UNLOCKED
-#  define getchar_unlocked() getchar ()
-#endif
-#if defined(HAVE_DECL_PUTC_UNLOCKED) && !HAVE_DECL_PUTC_UNLOCKED
-# define putc_unlocked(x,y) putc (x,y)
-#endif
-#if defined(HAVE_DECL_PUTCHAR_UNLOCKED) && !HAVE_DECL_PUTCHAR_UNLOCKED
-# define putchar_unlocked(x) putchar (x)
-#endif
-
-#endif /* !_LIBC */
-
-#ifndef __set_errno
-# define __set_errno(e) (errno = (e))
-#endif
-
-#if defined GNULIB_ARGP_DISABLE_DIRNAME
-# define __argp_base_name(arg) arg
-#elif defined GNULIB_ARGP_EXTERN_BASENAME
-extern char *__argp_base_name (const char *arg);
-#else
-# include "dirname.h"
-# define __argp_base_name last_component
-#endif
-
-#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
-# define __argp_short_program_name()    (program_invocation_short_name)
-#else
-extern char *__argp_short_program_name (void);
-#endif
diff --git a/grub-core/gnulib/argp-parse.c b/grub-core/gnulib/argp-parse.c
deleted file mode 100644
index 67ea32c54..000000000
--- a/grub-core/gnulib/argp-parse.c
+++ /dev/null
@@ -1,953 +0,0 @@
-/* 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 <address@hidden>.
-
-   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/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <alloca.h>
-#include <stdalign.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <limits.h>
-#include <getopt.h>
-#include <getopt_int.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-# undef dgettext
-# define dgettext(domain, msgid) \
-   INTUSE(__dcgettext) (domain, msgid, LC_MESSAGES)
-#else
-# include "gettext.h"
-#endif
-#define N_(msgid) msgid
-
-#include "argp.h"
-#include "argp-namefrob.h"
-
-#define alignto(n, d) ((((n) + (d) - 1) / (d)) * (d))
-
-/* Getopt return values.  */
-#define KEY_END (-1)            /* The end of the options.  */
-#define KEY_ARG 1               /* A non-option argument.  */
-#define KEY_ERR '?'             /* An error parsing the options.  */
-
-/* The meta-argument used to prevent any further arguments being interpreted
-   as options.  */
-#define QUOTE "--"
-
-/* The number of bits we steal in a long-option value for our own use.  */
-#define GROUP_BITS CHAR_BIT
-
-/* The number of bits available for the user value.  */
-#define USER_BITS ((sizeof ((struct option *)0)->val * CHAR_BIT) - GROUP_BITS)
-#define USER_MASK ((1 << USER_BITS) - 1)
-
-/* EZ alias for ARGP_ERR_UNKNOWN.  */
-#define EBADKEY ARGP_ERR_UNKNOWN
-
-/* Default options.  */
-
-/* When argp is given the --HANG switch, _ARGP_HANG is set and argp will sleep
-   for one second intervals, decrementing _ARGP_HANG until it's zero.  Thus
-   you can force the program to continue by attaching a debugger and setting
-   it to 0 yourself.  */
-static volatile int _argp_hang;
-
-#define OPT_PROGNAME    -2
-#define OPT_USAGE       -3
-#define OPT_HANG        -4
-
-static const struct argp_option argp_default_options[] =
-{
-  {"help",        '?',          0, 0,  N_("give this help list"), -1},
-  {"usage",       OPT_USAGE,    0, 0,  N_("give a short usage message"), 0},
-  {"program-name",OPT_PROGNAME,N_("NAME"), OPTION_HIDDEN, N_("set the program 
name"), 0},
-  {"HANG",        OPT_HANG,    N_("SECS"), OPTION_ARG_OPTIONAL | OPTION_HIDDEN,
-     N_("hang for SECS seconds (default 3600)"), 0},
-  {NULL, 0, 0, 0, NULL, 0}
-};
-
-static error_t
-argp_default_parser (int key, char *arg, struct argp_state *state)
-{
-  switch (key)
-    {
-    case '?':
-      __argp_state_help (state, state->out_stream, ARGP_HELP_STD_HELP);
-      break;
-    case OPT_USAGE:
-      __argp_state_help (state, state->out_stream,
-                         ARGP_HELP_USAGE | ARGP_HELP_EXIT_OK);
-      break;
-
-    case OPT_PROGNAME:          /* Set the program name.  */
-#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_NAME
-      program_invocation_name = arg;
-#endif
-      /* [Note that some systems only have PROGRAM_INVOCATION_SHORT_NAME (aka
-         __PROGNAME), in which case, PROGRAM_INVOCATION_NAME is just defined
-         to be that, so we have to be a bit careful here.]  */
-
-      /* Update what we use for messages.  */
-      state->name = __argp_base_name (arg);
-
-#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
-      program_invocation_short_name = state->name;
-#endif
-
-      if ((state->flags & (ARGP_PARSE_ARGV0 | ARGP_NO_ERRS))
-          == ARGP_PARSE_ARGV0)
-        /* Update what getopt uses too.  */
-        state->argv[0] = arg;
-
-      break;
-
-    case OPT_HANG:
-      _argp_hang = atoi (arg ? arg : "3600");
-      while (_argp_hang-- > 0)
-        __sleep (1);
-      break;
-
-    default:
-      return EBADKEY;
-    }
-  return 0;
-}
-
-static const struct argp argp_default_argp =
-  {argp_default_options, &argp_default_parser, NULL, NULL, NULL, NULL, "libc"};
-
-
-static const struct argp_option argp_version_options[] =
-{
-  {"version",     'V',          0, 0,  N_("print program version"), -1},
-  {NULL, 0, 0, 0, NULL, 0}
-};
-
-static error_t
-argp_version_parser (int key, char *arg, struct argp_state *state)
-{
-  switch (key)
-    {
-    case 'V':
-      if (argp_program_version_hook)
-        (*argp_program_version_hook) (state->out_stream, state);
-      else if (argp_program_version)
-        fprintf (state->out_stream, "%s\n", argp_program_version);
-      else
-        __argp_error (state, "%s",
-                      dgettext (state->root_argp->argp_domain,
-                                "(PROGRAM ERROR) No version known!?"));
-      if (! (state->flags & ARGP_NO_EXIT))
-        exit (0);
-      break;
-    default:
-      return EBADKEY;
-    }
-  return 0;
-}
-
-static const struct argp argp_version_argp =
-  {argp_version_options, &argp_version_parser, NULL, NULL, NULL, NULL, "libc"};
-
-/* Returns the offset into the getopt long options array LONG_OPTIONS of a
-   long option with called NAME, or -1 if none is found.  Passing NULL as
-   NAME will return the number of options.  */
-static int
-find_long_option (struct option *long_options, const char *name)
-{
-  struct option *l = long_options;
-  while (l->name != NULL)
-    if (name != NULL && strcmp (l->name, name) == 0)
-      return l - long_options;
-    else
-      l++;
-  if (name == NULL)
-    return l - long_options;
-  else
-    return -1;
-}
-
-
-/* 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
-{
-  /* This group's parsing function.  */
-  argp_parser_t parser;
-
-  /* Which argp this group is from.  */
-  const struct argp *argp;
-
-  /* Points to the point in SHORT_OPTS corresponding to the end of the short
-     options for this group.  We use it to determine from which group a
-     particular short options is from.  */
-  char *short_end;
-
-  /* The number of non-option args successfully handled by this parser.  */
-  unsigned args_processed;
-
-  /* This group's parser's parent's group.  */
-  struct group *parent;
-  unsigned parent_index;        /* And the our position in the parent.   */
-
-  /* These fields are swapped into and out of the state structure when
-     calling this group's parser.  */
-  void *input, **child_inputs;
-  void *hook;
-};
-
-/* Call GROUP's parser with KEY and ARG, swapping any group-specific info
-   from STATE before calling, and back into state afterwards.  If GROUP has
-   no parser, EBADKEY is returned.  */
-static error_t
-group_parse (struct group *group, struct argp_state *state, int key, char *arg)
-{
-  if (group->parser)
-    {
-      error_t err;
-      state->hook = group->hook;
-      state->input = group->input;
-      state->child_inputs = group->child_inputs;
-      state->arg_num = group->args_processed;
-      err = (*group->parser)(key, arg, state);
-      group->hook = state->hook;
-      return err;
-    }
-  else
-    return EBADKEY;
-}
-
-struct parser
-{
-  const struct argp *argp;
-
-  /* SHORT_OPTS is the getopt short options string for the union of all the
-     groups of options.  */
-  char *short_opts;
-  /* LONG_OPTS is the array of getop long option structures for the union of
-     all the groups of options.  */
-  struct option *long_opts;
-  /* OPT_DATA is the getopt data used for the re-entrant getopt.  */
-  struct _getopt_data opt_data;
-
-  /* States of the various parsing groups.  */
-  struct group *groups;
-  /* The end of the GROUPS array.  */
-  struct group *egroup;
-  /* 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
-     remaining arguments are just passed verbatim with ARGP_KEY_ARG.  This is
-     cleared whenever getopt returns KEY_END, but may be set again if the user
-     moves the next argument pointer backwards.  */
-  int try_getopt;
-
-  /* State block supplied to parsing routines.  */
-  struct argp_state state;
-
-  /* Memory used by this parser.  */
-  void *storage;
-};
-
-/* The next usable entries in the various parser tables being filled in by
-   convert_options.  */
-struct parser_convert_state
-{
-  struct parser *parser;
-  char *short_end;
-  struct option *long_end;
-  void **child_inputs_end;
-};
-
-/* Converts all options in ARGP (which is put in GROUP) and ancestors
-   into getopt options stored in SHORT_OPTS and LONG_OPTS; SHORT_END and
-   CVT->LONG_END are the points at which new options are added.  Returns the
-   next unused group entry.  CVT holds state used during the conversion.  */
-static struct group *
-convert_options (const struct argp *argp,
-                 struct group *parent, unsigned parent_index,
-                 struct group *group, struct parser_convert_state *cvt)
-{
-  /* REAL is the most recent non-alias value of OPT.  */
-  const struct argp_option *real = argp->options;
-  const struct argp_child *children = argp->children;
-
-  if (real || argp->parser)
-    {
-      const struct argp_option *opt;
-
-      if (real)
-        for (opt = real; !__option_is_end (opt); opt++)
-          {
-            if (! (opt->flags & OPTION_ALIAS))
-              /* OPT isn't an alias, so we can use values from it.  */
-              real = opt;
-
-            if (! (real->flags & OPTION_DOC))
-              /* A real option (not just documentation).  */
-              {
-                if (__option_is_short (opt))
-                  /* OPT can be used as a short option.  */
-                  {
-                    *cvt->short_end++ = opt->key;
-                    if (real->arg)
-                      {
-                        *cvt->short_end++ = ':';
-                        if (real->flags & OPTION_ARG_OPTIONAL)
-                          *cvt->short_end++ = ':';
-                      }
-                    *cvt->short_end = '\0'; /* keep 0 terminated */
-                  }
-
-                if (opt->name
-                    && find_long_option (cvt->parser->long_opts, opt->name) < 
0)
-                  /* OPT can be used as a long option.  */
-                  {
-                    cvt->long_end->name = opt->name;
-                    cvt->long_end->has_arg =
-                      (real->arg
-                       ? (real->flags & OPTION_ARG_OPTIONAL
-                          ? optional_argument
-                          : required_argument)
-                       : no_argument);
-                    cvt->long_end->flag = 0;
-                    /* we add a disambiguating code to all the user's
-                       values (which is removed before we actually call
-                       the function to parse the value); this means that
-                       the user loses use of the high 8 bits in all his
-                       values (the sign of the lower bits is preserved
-                       however)...  */
-                    cvt->long_end->val =
-                      ((opt->key ? opt->key : real->key) & USER_MASK)
-                      + (((group - cvt->parser->groups) + 1) << USER_BITS);
-
-                    /* Keep the LONG_OPTS list terminated.  */
-                    (++cvt->long_end)->name = NULL;
-                  }
-              }
-            }
-
-      group->parser = argp->parser;
-      group->argp = argp;
-      group->short_end = cvt->short_end;
-      group->args_processed = 0;
-      group->parent = parent;
-      group->parent_index = parent_index;
-      group->input = 0;
-      group->hook = 0;
-      group->child_inputs = 0;
-
-      if (children)
-        /* Assign GROUP's CHILD_INPUTS field some space from
-           CVT->child_inputs_end.*/
-        {
-          unsigned num_children = 0;
-          while (children[num_children].argp)
-            num_children++;
-          group->child_inputs = cvt->child_inputs_end;
-          cvt->child_inputs_end += num_children;
-        }
-
-      parent = group++;
-    }
-  else
-    parent = 0;
-
-  if (children)
-    {
-      unsigned index = 0;
-      while (children->argp)
-        group =
-          convert_options (children++->argp, parent, index++, group, cvt);
-    }
-
-  return group;
-}
-
-/* Find the merged set of getopt options, with keys appropriately prefixed. */
-static void
-parser_convert (struct parser *parser, const struct argp *argp, int flags)
-{
-  struct parser_convert_state cvt;
-
-  cvt.parser = parser;
-  cvt.short_end = parser->short_opts;
-  cvt.long_end = parser->long_opts;
-  cvt.child_inputs_end = parser->child_inputs;
-
-  if (flags & ARGP_IN_ORDER)
-    *cvt.short_end++ = '-';
-  else if (flags & ARGP_NO_ARGS)
-    *cvt.short_end++ = '+';
-  *cvt.short_end = '\0';
-
-  cvt.long_end->name = NULL;
-
-  parser->argp = argp;
-
-  if (argp)
-    parser->egroup = convert_options (argp, 0, 0, parser->groups, &cvt);
-  else
-    parser->egroup = parser->groups; /* No parsers at all! */
-}
-
-/* Lengths of various parser fields which we will allocated.  */
-struct parser_sizes
-{
-  size_t short_len;             /* Getopt short options string.  */
-  size_t long_len;              /* Getopt long options vector.  */
-  size_t num_groups;            /* Group structures we allocate.  */
-  size_t num_child_inputs;      /* Child input slots.  */
-};
-
-/* For ARGP, increments the NUM_GROUPS field in SZS by the total number of
- argp structures descended from it, and the SHORT_LEN & LONG_LEN fields by
- the maximum lengths of the resulting merged getopt short options string and
- long-options array, respectively.  */
-static void
-calc_sizes (const struct argp *argp,  struct parser_sizes *szs)
-{
-  const struct argp_child *child = argp->children;
-  const struct argp_option *opt = argp->options;
-
-  if (opt || argp->parser)
-    {
-      szs->num_groups++;
-      if (opt)
-        {
-          int num_opts = 0;
-          while (!__option_is_end (opt++))
-            num_opts++;
-          szs->short_len += num_opts * 3; /* opt + up to 2 ':'s */
-          szs->long_len += num_opts;
-        }
-    }
-
-  if (child)
-    while (child->argp)
-      {
-        calc_sizes ((child++)->argp, szs);
-        szs->num_child_inputs++;
-      }
-}
-
-/* Initializes PARSER to parse ARGP in a manner described by FLAGS.  */
-static error_t
-parser_init (struct parser *parser, const struct argp *argp,
-             int argc, char **argv, int flags, void *input)
-{
-  error_t err = 0;
-  struct group *group;
-  struct parser_sizes szs;
-  struct _getopt_data opt_data = _GETOPT_DATA_INITIALIZER;
-  char *storage;
-  size_t glen, gsum;
-  size_t clen, csum;
-  size_t llen, lsum;
-  size_t slen, ssum;
-
-  szs.short_len = (flags & ARGP_NO_ARGS) ? 0 : 1;
-  szs.long_len = 0;
-  szs.num_groups = 0;
-  szs.num_child_inputs = 0;
-
-  if (argp)
-    calc_sizes (argp, &szs);
-
-  /* Lengths of the various bits of storage used by PARSER.  */
-  glen = (szs.num_groups + 1) * sizeof (struct group);
-  clen = szs.num_child_inputs * sizeof (void *);
-  llen = (szs.long_len + 1) * sizeof (struct option);
-  slen = szs.short_len + 1;
-
-  /* Sums of previous lengths, properly aligned.  There's no need to
-     align gsum, since struct group is aligned at least as strictly as
-     void * (since it contains a void * member).  And there's no need
-     to align lsum, since struct option is aligned at least as
-     strictly as char.  */
-  gsum = glen;
-  csum = alignto (gsum + clen, alignof (struct option));
-  lsum = csum + llen;
-  ssum = lsum + slen;
-
-  parser->storage = malloc (ssum);
-  if (! parser->storage)
-    return ENOMEM;
-
-  storage = parser->storage;
-  parser->groups = parser->storage;
-  parser->child_inputs = (void **) (storage + gsum);
-  parser->long_opts = (struct option *) (storage + csum);
-  parser->short_opts = storage + lsum;
-  parser->opt_data = opt_data;
-
-  memset (parser->child_inputs, 0, clen);
-  parser_convert (parser, argp, flags);
-
-  memset (&parser->state, 0, sizeof (struct argp_state));
-  parser->state.root_argp = parser->argp;
-  parser->state.argc = argc;
-  parser->state.argv = argv;
-  parser->state.flags = flags;
-  parser->state.err_stream = stderr;
-  parser->state.out_stream = stdout;
-  parser->state.next = 0;       /* Tell getopt to initialize.  */
-  parser->state.pstate = parser;
-
-  parser->try_getopt = 1;
-
-  /* Call each parser for the first time, giving it a chance to propagate
-     values to child parsers.  */
-  if (parser->groups < parser->egroup)
-    parser->groups->input = input;
-  for (group = parser->groups;
-       group < parser->egroup && (!err || err == EBADKEY);
-       group++)
-    {
-      if (group->parent)
-        /* If a child parser, get the initial input value from the parent. */
-        group->input = group->parent->child_inputs[group->parent_index];
-
-      if (!group->parser
-          && group->argp->children && group->argp->children->argp)
-        /* For the special case where no parsing function is supplied for an
-           argp, propagate its input to its first child, if any (this just
-           makes very simple wrapper argps more convenient).  */
-        group->child_inputs[0] = group->input;
-
-      err = group_parse (group, &parser->state, ARGP_KEY_INIT, 0);
-    }
-  if (err == EBADKEY)
-    err = 0;                    /* Some parser didn't understand.  */
-
-  if (err)
-    return err;
-
-  if (parser->state.flags & ARGP_NO_ERRS)
-    {
-      parser->opt_data.opterr = 0;
-      if (parser->state.flags & ARGP_PARSE_ARGV0)
-        /* getopt always skips ARGV[0], so we have to fake it out.  As long
-           as OPTERR is 0, then it shouldn't actually try to access it.  */
-        parser->state.argv--, parser->state.argc++;
-    }
-  else
-    parser->opt_data.opterr = 1;        /* Print error messages.  */
-
-  if (parser->state.argv == argv && argv[0])
-    /* There's an argv[0]; use it for messages.  */
-    parser->state.name = __argp_base_name (argv[0]);
-  else
-    parser->state.name = __argp_short_program_name ();
-
-  return 0;
-}
-
-/* Free any storage consumed by PARSER (but not PARSER itself).  */
-static error_t
-parser_finalize (struct parser *parser,
-                 error_t err, int arg_ebadkey, int *end_index)
-{
-  struct group *group;
-
-  if (err == EBADKEY && arg_ebadkey)
-    /* Suppress errors generated by unparsed arguments.  */
-    err = 0;
-
-  if (! err)
-    {
-      if (parser->state.next == parser->state.argc)
-        /* We successfully parsed all arguments!  Call all the parsers again,
-           just a few more times... */
-        {
-          for (group = parser->groups;
-               group < parser->egroup && (!err || err==EBADKEY);
-               group++)
-            if (group->args_processed == 0)
-              err = group_parse (group, &parser->state, ARGP_KEY_NO_ARGS, 0);
-          for (group = parser->egroup - 1;
-               group >= parser->groups && (!err || err==EBADKEY);
-               group--)
-            err = group_parse (group, &parser->state, ARGP_KEY_END, 0);
-
-          if (err == EBADKEY)
-            err = 0;            /* Some parser didn't understand.  */
-
-          /* Tell the user that all arguments are parsed.  */
-          if (end_index)
-            *end_index = parser->state.next;
-        }
-      else if (end_index)
-        /* Return any remaining arguments to the user.  */
-        *end_index = parser->state.next;
-      else
-        /* No way to return the remaining arguments, they must be bogus. */
-        {
-          if (!(parser->state.flags & ARGP_NO_ERRS)
-              && parser->state.err_stream)
-            fprintf (parser->state.err_stream,
-                     dgettext (parser->argp->argp_domain,
-                               "%s: Too many arguments\n"),
-                     parser->state.name);
-          err = EBADKEY;
-        }
-    }
-
-  /* Okay, we're all done, with either an error or success; call the parsers
-     to indicate which one.  */
-
-  if (err)
-    {
-      /* Maybe print an error message.  */
-      if (err == EBADKEY)
-        /* An appropriate message describing what the error was should have
-           been printed earlier.  */
-        __argp_state_help (&parser->state, parser->state.err_stream,
-                           ARGP_HELP_STD_ERR);
-
-      /* Since we didn't exit, give each parser an error indication.  */
-      for (group = parser->groups; group < parser->egroup; group++)
-        group_parse (group, &parser->state, ARGP_KEY_ERROR, 0);
-    }
-  else
-    /* Notify parsers of success, and propagate back values from parsers.  */
-    {
-      /* We pass over the groups in reverse order so that child groups are
-         given a chance to do there processing before passing back a value to
-         the parent.  */
-      for (group = parser->egroup - 1
-           ; group >= parser->groups && (!err || err == EBADKEY)
-           ; group--)
-        err = group_parse (group, &parser->state, ARGP_KEY_SUCCESS, 0);
-      if (err == EBADKEY)
-        err = 0;                /* Some parser didn't understand.  */
-    }
-
-  /* Call parsers once more, to do any final cleanup.  Errors are ignored.  */
-  for (group = parser->egroup - 1; group >= parser->groups; group--)
-    group_parse (group, &parser->state, ARGP_KEY_FINI, 0);
-
-  if (err == EBADKEY)
-    err = EINVAL;
-
-  free (parser->storage);
-
-  return err;
-}
-
-/* Call the user parsers to parse the non-option argument VAL, at the current
-   position, returning any error.  The state NEXT pointer is assumed to have
-   been adjusted (by getopt) to point after this argument; this function will
-   adjust it correctly to reflect however many args actually end up being
-   consumed.  */
-static error_t
-parser_parse_arg (struct parser *parser, char *val)
-{
-  /* Save the starting value of NEXT, first adjusting it so that the arg
-     we're parsing is again the front of the arg vector.  */
-  int index = --parser->state.next;
-  error_t err = EBADKEY;
-  struct group *group;
-  int key = 0;                  /* Which of ARGP_KEY_ARG[S] we used.  */
-
-  /* Try to parse the argument in each parser.  */
-  for (group = parser->groups
-       ; group < parser->egroup && err == EBADKEY
-       ; group++)
-    {
-      parser->state.next++;     /* For ARGP_KEY_ARG, consume the arg.  */
-      key = ARGP_KEY_ARG;
-      err = group_parse (group, &parser->state, key, val);
-
-      if (err == EBADKEY)
-        /* This parser doesn't like ARGP_KEY_ARG; try ARGP_KEY_ARGS instead. */
-        {
-          parser->state.next--; /* For ARGP_KEY_ARGS, put back the arg.  */
-          key = ARGP_KEY_ARGS;
-          err = group_parse (group, &parser->state, key, 0);
-        }
-    }
-
-  if (! err)
-    {
-      if (key == ARGP_KEY_ARGS)
-        /* The default for ARGP_KEY_ARGS is to assume that if NEXT isn't
-           changed by the user, *all* arguments should be considered
-           consumed.  */
-        parser->state.next = parser->state.argc;
-
-      if (parser->state.next > index)
-        /* Remember that we successfully processed a non-option
-           argument -- but only if the user hasn't gotten tricky and set
-           the clock back.  */
-        (--group)->args_processed += (parser->state.next - index);
-      else
-        /* The user wants to reparse some args, give getopt another try.  */
-        parser->try_getopt = 1;
-    }
-
-  return err;
-}
-
-/* Call the user parsers to parse the option OPT, with argument VAL, at the
-   current position, returning any error.  */
-static error_t
-parser_parse_opt (struct parser *parser, int opt, char *val)
-{
-  /* The group key encoded in the high bits; 0 for short opts or
-     group_number + 1 for long opts.  */
-  int group_key = opt >> USER_BITS;
-  error_t err = EBADKEY;
-
-  if (group_key == 0)
-    /* A short option.  By comparing OPT's position in SHORT_OPTS to the
-       various starting positions in each group's SHORT_END field, we can
-       determine which group OPT came from.  */
-    {
-      struct group *group;
-      char *short_index = strchr (parser->short_opts, opt);
-
-      if (short_index)
-        for (group = parser->groups; group < parser->egroup; group++)
-          if (group->short_end > short_index)
-            {
-              err = group_parse (group, &parser->state, opt,
-                                 parser->opt_data.optarg);
-              break;
-            }
-    }
-  else
-    /* A long option.  We use shifts instead of masking for extracting
-       the user value in order to preserve the sign.  */
-    err =
-      group_parse (&parser->groups[group_key - 1], &parser->state,
-                   (opt << GROUP_BITS) >> GROUP_BITS,
-                   parser->opt_data.optarg);
-
-  if (err == EBADKEY)
-    /* At least currently, an option not recognized is an error in the
-       parser, because we pre-compute which parser is supposed to deal
-       with each option.  */
-    {
-      static const char bad_key_err[] =
-        N_("(PROGRAM ERROR) Option should have been recognized!?");
-      if (group_key == 0)
-        __argp_error (&parser->state, "-%c: %s", opt,
-                      dgettext (parser->argp->argp_domain, bad_key_err));
-      else
-        {
-          struct option *long_opt = parser->long_opts;
-          while (long_opt->val != opt && long_opt->name)
-            long_opt++;
-          __argp_error (&parser->state, "--%s: %s",
-                        long_opt->name ? long_opt->name : "???",
-                        dgettext (parser->argp->argp_domain, bad_key_err));
-        }
-    }
-
-  return err;
-}
-
-/* Parse the next argument in PARSER (as indicated by PARSER->state.next).
-   Any error from the parsers is returned, and *ARGP_EBADKEY indicates
-   whether a value of EBADKEY is due to an unrecognized argument (which is
-   generally not fatal).  */
-static error_t
-parser_parse_next (struct parser *parser, int *arg_ebadkey)
-{
-  int opt;
-  error_t err = 0;
-
-  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
-       another chance.  If the user hasn't removed it, getopt will just
-       process it again.  */
-    parser->state.quoted = 0;
-
-  if (parser->try_getopt && !parser->state.quoted)
-    /* Give getopt a chance to parse this.  */
-    {
-      /* Put it back in OPTIND for getopt.  */
-      parser->opt_data.optind = parser->state.next;
-      /* Distinguish KEY_ERR from a real option.  */
-      parser->opt_data.optopt = KEY_END;
-      if (parser->state.flags & ARGP_LONG_ONLY)
-        opt = _getopt_long_only_r (parser->state.argc, parser->state.argv,
-                                   parser->short_opts, parser->long_opts, 0,
-                                   &parser->opt_data);
-      else
-        opt = _getopt_long_r (parser->state.argc, parser->state.argv,
-                              parser->short_opts, parser->long_opts, 0,
-                              &parser->opt_data);
-      /* And see what getopt did.  */
-      parser->state.next = parser->opt_data.optind;
-
-      if (opt == KEY_END)
-        /* Getopt says there are no more options, so stop using
-           getopt; we'll continue if necessary on our own.  */
-        {
-          parser->try_getopt = 0;
-          if (parser->state.next > 1
-              && 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
-               options, so we definitely shouldn't try to use getopt past
-               here, whatever happens.  */
-            parser->state.quoted = parser->state.next;
-        }
-      else if (opt == KEY_ERR && parser->opt_data.optopt != KEY_END)
-        /* KEY_ERR can have the same value as a valid user short
-           option, but in the case of a real error, getopt sets OPTOPT
-           to the offending character, which can never be KEY_END.  */
-        {
-          *arg_ebadkey = 0;
-          return EBADKEY;
-        }
-    }
-  else
-    opt = KEY_END;
-
-  if (opt == KEY_END)
-    {
-      /* We're past what getopt considers the options.  */
-      if (parser->state.next >= parser->state.argc
-          || (parser->state.flags & ARGP_NO_ARGS))
-        /* Indicate that we're done.  */
-        {
-          *arg_ebadkey = 1;
-          return EBADKEY;
-        }
-      else
-        /* A non-option arg; simulate what getopt might have done.  */
-        {
-          opt = KEY_ARG;
-          parser->opt_data.optarg = parser->state.argv[parser->state.next++];
-        }
-    }
-
-  if (opt == KEY_ARG)
-    /* A non-option argument; try each parser in turn.  */
-    err = parser_parse_arg (parser, parser->opt_data.optarg);
-  else
-    err = parser_parse_opt (parser, opt, parser->opt_data.optarg);
-
-  if (err == EBADKEY)
-    *arg_ebadkey = (opt == KEY_END || opt == KEY_ARG);
-
-  return err;
-}
-
-/* Parse the options strings in ARGC & ARGV according to the argp in ARGP.
-   FLAGS is one of the ARGP_ flags above.  If END_INDEX is non-NULL, the
-   index in ARGV of the first unparsed option is returned in it.  If an
-   unknown option is present, EINVAL is returned; if some parser routine
-   returned a non-zero value, it is returned; otherwise 0 is returned.  */
-error_t
-__argp_parse (const struct argp *argp, int argc, char **argv, unsigned flags,
-              int *end_index, void *input)
-{
-  error_t err;
-  struct parser parser;
-
-  /* If true, then err == EBADKEY is a result of a non-option argument failing
-     to be parsed (which in some cases isn't actually an error).  */
-  int arg_ebadkey = 0;
-
-#ifndef _LIBC
-  if (!(flags & ARGP_PARSE_ARGV0))
-    {
-#if HAVE_DECL_PROGRAM_INVOCATION_NAME
-      if (!program_invocation_name)
-        program_invocation_name = argv[0];
-#endif
-#if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
-      if (!program_invocation_short_name)
-        program_invocation_short_name = __argp_base_name (argv[0]);
-#endif
-    }
-#endif
-
-  if (! (flags & ARGP_NO_HELP))
-    /* Add our own options.  */
-    {
-      struct argp_child *child = alloca (4 * sizeof (struct argp_child));
-      struct argp *top_argp = alloca (sizeof (struct argp));
-
-      /* TOP_ARGP has no options, it just serves to group the user & default
-         argps.  */
-      memset (top_argp, 0, sizeof (*top_argp));
-      top_argp->children = child;
-
-      memset (child, 0, 4 * sizeof (struct argp_child));
-
-      if (argp)
-        (child++)->argp = argp;
-      (child++)->argp = &argp_default_argp;
-      if (argp_program_version || argp_program_version_hook)
-        (child++)->argp = &argp_version_argp;
-      child->argp = 0;
-
-      argp = top_argp;
-    }
-
-  /* Construct a parser for these arguments.  */
-  err = parser_init (&parser, argp, argc, argv, flags, input);
-
-  if (! err)
-    /* Parse! */
-    {
-      while (! err)
-        err = parser_parse_next (&parser, &arg_ebadkey);
-      err = parser_finalize (&parser, err, arg_ebadkey, end_index);
-    }
-
-  return err;
-}
-#ifdef weak_alias
-weak_alias (__argp_parse, argp_parse)
-#endif
-
-/* Return the input field for ARGP in the parser corresponding to STATE; used
-   by the help routines.  */
-void *
-__argp_input (const struct argp *argp, const struct argp_state *state)
-{
-  if (state && state->pstate)
-    {
-      struct group *group;
-      struct parser *parser = state->pstate;
-
-      for (group = parser->groups; group < parser->egroup; group++)
-        if (group->argp == argp)
-          return group->input;
-    }
-
-  return 0;
-}
-#ifdef weak_alias
-weak_alias (__argp_input, _argp_input)
-#endif
diff --git a/grub-core/gnulib/argp-pin.c b/grub-core/gnulib/argp-pin.c
deleted file mode 100644
index 78cbb355b..000000000
--- a/grub-core/gnulib/argp-pin.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Full and short program names for argp module
-   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
-   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/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifndef HAVE_PROGRAM_INVOCATION_SHORT_NAME
-char *program_invocation_short_name = 0;
-#endif
-#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
deleted file mode 100644
index c74070d12..000000000
--- a/grub-core/gnulib/argp-pv.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Default definition for ARGP_PROGRAM_VERSION.
-   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 <address@hidden>.
-
-   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 set by the user program to a non-zero value, then a default option
-   --version is added (unless the ARGP_NO_HELP flag is used), which will
-   print this string followed by a newline and exit (unless the
-   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 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__
-  /* On ELF systems, variables in BSS behave well.  */
-#else
-  = (const char *) 0
-#endif
-  ;
diff --git a/grub-core/gnulib/argp-pvh.c b/grub-core/gnulib/argp-pvh.c
deleted file mode 100644
index 885ff4b75..000000000
--- a/grub-core/gnulib/argp-pvh.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Default definition for ARGP_PROGRAM_VERSION_HOOK.
-   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 <address@hidden>.
-
-   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/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "argp.h"
-
-/* If set by the user program to a non-zero value, then a default option
-   --version is added (unless the ARGP_NO_HELP flag is used), which calls
-   this function with a stream to print the version to and a pointer to the
-   current parsing state, and then exits (unless the ARGP_NO_EXIT flag is
-   used).  This variable takes precedent over ARGP_PROGRAM_VERSION.  */
-void (*argp_program_version_hook) (FILE *stream, struct argp_state *state) = 
NULL;
diff --git a/grub-core/gnulib/argp-xinl.c b/grub-core/gnulib/argp-xinl.c
deleted file mode 100644
index 04d8cf703..000000000
--- a/grub-core/gnulib/argp-xinl.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Real definitions for extern inline functions in argp.h
-   Copyright (C) 1997-1998, 2004, 2009-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Written by Miles Bader <address@hidden>.
-
-   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/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined _LIBC || defined HAVE_FEATURES_H
-# include <features.h>
-#endif
-
-#ifndef __USE_EXTERN_INLINES
-# define __USE_EXTERN_INLINES   1
-#endif
-#ifdef _LIBC
-# define ARGP_EI
-#else
-# define ARGP_EI _GL_EXTERN_INLINE
-#endif
-#undef __OPTIMIZE__
-#define __OPTIMIZE__ 1
-#include "argp.h"
-
-/* Add weak aliases.  */
-#if _LIBC - 0 && defined (weak_alias)
-
-weak_alias (__argp_usage, argp_usage)
-weak_alias (__option_is_short, _option_is_short)
-weak_alias (__option_is_end, _option_is_end)
-
-#endif
diff --git a/grub-core/gnulib/argp.h b/grub-core/gnulib/argp.h
deleted file mode 100644
index c4094a40c..000000000
--- a/grub-core/gnulib/argp.h
+++ /dev/null
@@ -1,650 +0,0 @@
-/* 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 <address@hidden>.
-
-   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 _ARGP_H
-#define _ARGP_H
-
-#include <stdio.h>
-#include <ctype.h>
-#include <getopt.h>
-#include <limits.h>
-
-#define __need_error_t
-#include <errno.h>
-
-#ifndef __THROW
-# define __THROW
-#endif
-#ifndef __NTH
-# define __NTH(fct) fct __THROW
-#endif
-
-/* 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 _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 _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
-   "restrict", and "configure" may have defined "restrict".
-   Other compilers use __restrict, __restrict__, and _Restrict, and
-   'configure' might #define 'restrict' to those words.  */
-#ifndef __restrict
-# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
-#  if 199901L <= __STDC_VERSION__
-#   define __restrict restrict
-#  else
-#   define __restrict
-#  endif
-# endif
-#endif
-
-#ifndef __error_t_defined
-typedef int error_t;
-# define __error_t_defined
-#endif
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-/* A description of a particular option.  A pointer to an array of
-   these is passed in the OPTIONS field of an argp structure.  Each option
-   entry can correspond to one long option and/or one short option; more
-   names for the same option can be added by following an entry in an option
-   array with options having the OPTION_ALIAS flag set.  */
-struct argp_option
-{
-  /* The long option name.  For more than one name for the same option, you
-     can use following options with the OPTION_ALIAS flag set.  */
-  const char *name;
-
-  /* What key is returned for this option.  If > 0 and printable, then it's
-     also accepted as a short option.  */
-  int key;
-
-  /* If non-NULL, this is the name of the argument associated with this
-     option, which is required unless the OPTION_ARG_OPTIONAL flag is set. */
-  const char *arg;
-
-  /* OPTION_ flags.  */
-  int flags;
-
-  /* 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 ':'.
-
-     Write the initial value as N_("TEXT") if you want xgettext to collect
-     it into a POT file.  */
-  const char *doc;
-
-  /* The group this option is in.  In a long help message, options are sorted
-     alphabetically within each group, and the groups presented in the order
-     0, 1, 2, ..., n, -m, ..., -2, -1.  Every entry in an options array with
-     if this field 0 will inherit the group number of the previous entry, or
-     zero if it's the first one, unless its a group header (NAME and KEY both
-     0), in which case, the previous entry + 1 is the default.  Automagic
-     options such as --help are put into group -1.  */
-  int group;
-};
-
-/* The argument associated with this option is optional.  */
-#define OPTION_ARG_OPTIONAL     0x1
-
-/* This option isn't displayed in any help messages.  */
-#define OPTION_HIDDEN           0x2
-
-/* This option is an alias for the closest previous non-alias option.  This
-   means that it will be displayed in the same help entry, and will inherit
-   fields other than NAME and KEY from the aliased option.  */
-#define OPTION_ALIAS            0x4
-
-/* 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 '--'
-   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
-   entry is displayed after all options (and OPTION_DOC entries with a leading
-   '-') in the same group.  */
-#define OPTION_DOC              0x8
-
-/* 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
-   distinguish these two cases, -x should probably be marked
-   OPTION_NO_USAGE.  */
-#define OPTION_NO_USAGE         0x10
-
-/* Valid only in conjunction with OPTION_DOC. This option disables translation
-   of option name. */
-#define OPTION_NO_TRANS         0x20
-
-
-struct argp;                    /* fwd declare this type */
-struct argp_state;              /* " */
-struct argp_child;              /* " */
-
-/* The type of a pointer to an argp parsing function.  */
-typedef error_t (*argp_parser_t) (int key, char *arg,
-                                  struct argp_state *state);
-
-/* What to return for unrecognized keys.  For special ARGP_KEY_ keys, such
-   returns will simply be ignored.  For user keys, this error will be turned
-   into EINVAL (if the call to argp_parse is such that errors are propagated
-   back to the user instead of exiting); returning EINVAL itself would result
-   in an immediate stop to parsing in *all* cases.  */
-#define ARGP_ERR_UNKNOWN        E2BIG /* Hurd should never need E2BIG.  XXX */
-
-/* Special values for the KEY argument to an argument parsing function.
-   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):
-
-       INIT opt... NO_ARGS END SUCCESS  -- No non-option arguments at all
-   or  INIT (opt | ARG)... END SUCCESS  -- All non-option args parsed
-   or  INIT (opt | ARG)... SUCCESS      -- Some non-option arg unrecognized
-
-   The third case is where every parser returned ARGP_KEY_UNKNOWN for an
-   argument, in which case parsing stops at that argument (returning the
-   unparsed arguments to the caller of argp_parse if requested, or stopping
-   with an error message if not).
-
-   If an error occurs (either detected by argp, or because the parsing
-   function returned an error value), then the parser is called with
-   ARGP_KEY_ERROR, and no further calls are made.  */
-
-/* This is not an option at all, but rather a command line argument.  If a
-   parser receiving this key returns success, the fact is recorded, and the
-   ARGP_KEY_NO_ARGS case won't be used.  HOWEVER, if while processing the
-   argument, a parser function decrements the NEXT field of the state it's
-   passed, the option won't be considered processed; this is to allow you to
-   actually modify the argument (perhaps into an option), and have it
-   processed again.  */
-#define ARGP_KEY_ARG            0
-/* There are remaining arguments not parsed by any parser, which may be found
-   starting at (STATE->argv + STATE->next).  If success is returned, but
-   STATE->next left untouched, it's assumed that all arguments were consume,
-   otherwise, the parser should adjust STATE->next to reflect any arguments
-   consumed.  */
-#define ARGP_KEY_ARGS           0x1000006
-/* There are no more command line arguments at all.  */
-#define ARGP_KEY_END            0x1000001
-/* Because it's common to want to do some special processing if there aren't
-   any non-option args, user parsers are called with this key if they didn't
-   successfully process any non-option arguments.  Called just before
-   ARGP_KEY_END (where more general validity checks on previously parsed
-   arguments can take place).  */
-#define ARGP_KEY_NO_ARGS        0x1000002
-/* Passed in before any parsing is done.  Afterwards, the values of each
-   element of the CHILD_INPUT field, if any, in the state structure is
-   copied to each child's state to be the initial value of the INPUT field.  */
-#define ARGP_KEY_INIT           0x1000003
-/* Use after all other keys, including SUCCESS & END.  */
-#define ARGP_KEY_FINI           0x1000007
-/* Passed in when parsing has successfully been completed (even if there are
-   still arguments remaining).  */
-#define ARGP_KEY_SUCCESS        0x1000004
-/* Passed in if an error occurs.  */
-#define ARGP_KEY_ERROR          0x1000005
-
-/* An argp structure contains a set of options declarations, a function to
-   deal with parsing one, documentation string, a possible vector of child
-   argp's, and perhaps a function to filter help output.  When actually
-   parsing options, getopt is called with the union of all the argp
-   structures chained together through their CHILD pointers, with conflicts
-   being resolved in favor of the first occurrence in the chain.  */
-struct argp
-{
-  /* An array of argp_option structures, terminated by an entry with both
-     NAME and KEY having a value of 0.  */
-  const struct argp_option *options;
-
-  /* What to do with an option from this structure.  KEY is the key
-     associated with the option, and ARG is any associated argument (NULL if
-     none was supplied).  If KEY isn't understood, ARGP_ERR_UNKNOWN should be
-     returned.  If a non-zero, non-ARGP_ERR_UNKNOWN value is returned, then
-     parsing is stopped immediately, and that value is returned from
-     argp_parse().  For special (non-user-supplied) values of KEY, see the
-     ARGP_KEY_ definitions below.  */
-  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
-     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:").  */
-  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).
-     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;
-
-  /* A vector of argp_children structures, terminated by a member with a 0
-     argp field, pointing to child argps should be parsed with this one.  Any
-     conflicts are resolved in favor of this argp, or early argps in the
-     CHILDREN list.  This field is useful if you use libraries that supply
-     their own argp structure, which you want to use in conjunction with your
-     own.  */
-  const struct argp_child *children;
-
-  /* If non-zero, this should be a function to filter the output of help
-     messages.  KEY is either a key from an option, in which case TEXT is
-     that option's help text, or a special key from the ARGP_KEY_HELP_
-     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
-     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.  */
-  char *(*help_filter) (int __key, const char *__text, void *__input);
-
-  /* If non-zero the strings used in the argp library are translated using
-     the domain described by this string.  Otherwise the currently installed
-     default domain is used.  */
-  const char *argp_domain;
-};
-
-/* Possible KEY arguments to a help filter function.  */
-#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;
-                                             TEXT is NULL for this key.  */
-/* Explanatory note emitted when duplicate option arguments have been
-   suppressed.  */
-#define ARGP_KEY_HELP_DUP_ARGS_NOTE 0x2000005
-#define ARGP_KEY_HELP_ARGS_DOC  0x2000006 /* Argument doc string.  */
-
-/* When an argp has a non-zero CHILDREN field, it should point to a vector of
-   argp_child structures, each of which describes a subsidiary argp.  */
-struct argp_child
-{
-  /* The child parser.  */
-  const struct argp *argp;
-
-  /* Flags for this child.  */
-  int flags;
-
-  /* If non-zero, an optional header to be printed in help output before the
-     child options.  As a side-effect, a non-zero value forces the child
-     options to be grouped together; to achieve this effect without actually
-     printing a header string, use a value of "".  */
-  const char *header;
-
-  /* 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
-     they aren't grouped at all, but rather merged with the parent options
-     (merging the child's grouping levels with the parents).  */
-  int group;
-};
-
-/* Parsing state.  This is provided to parsing functions called by argp,
-   which may examine and, as noted, modify fields.  */
-struct argp_state
-{
-  /* The top level ARGP being parsed.  */
-  const struct argp *root_argp;
-
-  /* The argument vector being parsed.  May be modified.  */
-  int argc;
-  char **argv;
-
-  /* The index in ARGV of the next arg that to be parsed.  May be modified. */
-  int next;
-
-  /* The flags supplied to argp_parse.  May be modified.  */
-  unsigned flags;
-
-  /* While calling a parsing function with a key of ARGP_KEY_ARG, this is the
-     number of the current arg, starting at zero, and incremented after each
-     such call returns.  At all other times, this is the number of such
-     arguments that have been processed.  */
-  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
-     option).  Only set once argument parsing has proceeded past this point. */
-  int quoted;
-
-  /* An arbitrary pointer passed in from the user.  */
-  void *input;
-  /* Values to pass to child parsers.  This vector will be the same length as
-     the number of children for the current parser.  */
-  void **child_inputs;
-
-  /* For the parser's use.  Initialized to 0.  */
-  void *hook;
-
-  /* The name used when printing messages.  This is initialized to ARGV[0],
-     or PROGRAM_INVOCATION_NAME if that is unavailable.  */
-  char *name;
-
-  /* Streams used when argp prints something.  */
-  FILE *err_stream;             /* For errors; initialized to stderr. */
-  FILE *out_stream;             /* For information; initialized to stdout. */
-
-  void *pstate;                 /* Private, for use by argp.  */
-};
-
-/* Flags for argp_parse (note that the defaults are those that are
-   convenient for program command line parsing): */
-
-/* Don't ignore the first element of ARGV.  Normally (and always unless
-   ARGP_NO_ERRS is set) the first element of the argument vector is
-   skipped for option parsing purposes, as it corresponds to the program name
-   in a command line.  */
-#define ARGP_PARSE_ARGV0  0x01
-
-/* Don't print error messages for unknown options to stderr; unless this flag
-   is set, ARGP_PARSE_ARGV0 is ignored, as ARGV[0] is used as the program
-   name in the error messages.  This flag implies ARGP_NO_EXIT (on the
-   assumption that silent exiting upon errors is bad behaviour).  */
-#define ARGP_NO_ERRS    0x02
-
-/* Don't parse any non-option args.  Normally non-option args are parsed by
-   calling the parse functions with a key of ARGP_KEY_ARG, and the actual arg
-   as the value.  Since it's impossible to know which parse function wants to
-   handle it, each one is called in turn, until one returns 0 or an error
-   other than ARGP_ERR_UNKNOWN; if an argument is handled by no one, the
-   argp_parse returns prematurely (but with a return value of 0).  If all
-   args have been parsed without error, all parsing functions are called one
-   last time with a key of ARGP_KEY_END.  This flag needn't normally be set,
-   as the normal behavior is to stop parsing as soon as some argument can't
-   be handled.  */
-#define ARGP_NO_ARGS    0x04
-
-/* Parse options and arguments in the same order they occur on the command
-   line -- normally they're rearranged so that all options come first. */
-#define ARGP_IN_ORDER   0x08
-
-/* Don't provide the standard long option --help, which causes usage and
-      option help information to be output to stdout, and exit (0) called. */
-#define ARGP_NO_HELP    0x10
-
-/* 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.  */
-#define ARGP_LONG_ONLY  0x40
-
-/* Turns off any message-printing/exiting options.  */
-#define ARGP_SILENT    (ARGP_NO_EXIT | ARGP_NO_ERRS | ARGP_NO_HELP)
-
-/* Parse the options strings in ARGC & ARGV according to the options in ARGP.
-   FLAGS is one of the ARGP_ flags above.  If ARG_INDEX is non-NULL, the
-   index in ARGV of the first unparsed option is returned in it.  If an
-   unknown option is present, ARGP_ERR_UNKNOWN is returned; if some parser
-   routine returned a non-zero value, it is returned; otherwise 0 is
-   returned.  This function may also call exit unless the ARGP_NO_HELP flag
-   is set.  INPUT is a pointer to a value to be passed in to the parser.  */
-extern error_t argp_parse (const struct argp *__restrict __argp,
-                           int /*argc*/, char **__restrict /*argv*/,
-                           unsigned __flags, int *__restrict __arg_index,
-                           void *__restrict __input);
-extern error_t __argp_parse (const struct argp *__restrict __argp,
-                             int /*argc*/, char **__restrict /*argv*/,
-                             unsigned __flags, int *__restrict __arg_index,
-                             void *__restrict __input);
-
-/* Global variables.  */
-
-/* GNULIB makes sure both program_invocation_name and
-   program_invocation_short_name are available */
-#ifdef GNULIB_PROGRAM_INVOCATION_NAME
-extern char *program_invocation_name;
-# undef HAVE_DECL_PROGRAM_INVOCATION_NAME
-# define HAVE_DECL_PROGRAM_INVOCATION_NAME 1
-#endif
-
-#ifdef GNULIB_PROGRAM_INVOCATION_SHORT_NAME
-extern char *program_invocation_short_name;
-# undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
-# define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 1
-#endif
-
-/* If defined or set by the user program to a non-zero value, then a default
-   option --version is added (unless the ARGP_NO_HELP flag is used), which
-   will print this string followed by a newline and exit (unless the
-   ARGP_NO_EXIT flag is used).  Overridden by ARGP_PROGRAM_VERSION_HOOK.  */
-extern const char *argp_program_version;
-
-/* If defined or set by the user program to a non-zero value, then a default
-   option --version is added (unless the ARGP_NO_HELP flag is used), which
-   calls this function with a stream to print the version to and a pointer to
-   the current parsing state, and then exits (unless the ARGP_NO_EXIT flag is
-   used).  This variable takes precedent over ARGP_PROGRAM_VERSION.  */
-extern void (*argp_program_version_hook) (FILE *__restrict __stream,
-                                          struct argp_state *__restrict
-                                          __state);
-
-/* If defined or 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."  */
-extern const char *argp_program_bug_address;
-
-/* The exit status that argp will use when exiting due to a parsing error.
-   If not defined or set by the user program, this defaults to EX_USAGE from
-   <sysexits.h>.  */
-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_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.  */
-#define ARGP_HELP_DOC           (ARGP_HELP_PRE_DOC | ARGP_HELP_POST_DOC)
-#define ARGP_HELP_BUG_ADDR      0x40 /* bug report address */
-#define ARGP_HELP_LONG_ONLY     0x80 /* modify output appropriately to
-                                        reflect ARGP_LONG_ONLY mode.  */
-
-/* These ARGP_HELP flags are only understood by argp_state_help.  */
-#define ARGP_HELP_EXIT_ERR      0x100 /* Call exit(1) instead of returning.  */
-#define ARGP_HELP_EXIT_OK       0x200 /* Call exit(0) instead of returning.  */
-
-/* The standard thing to do after a program command line parsing error, if an
-   error message has already been printed.  */
-#define ARGP_HELP_STD_ERR \
-  (ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR)
-/* The standard thing to do after a program command line parsing error, if no
-   more specific error message has been printed.  */
-#define ARGP_HELP_STD_USAGE \
-  (ARGP_HELP_SHORT_USAGE | ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR)
-/* The standard thing to do in response to a --help option.  */
-#define ARGP_HELP_STD_HELP \
-  (ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG | ARGP_HELP_EXIT_OK \
-   | ARGP_HELP_DOC | ARGP_HELP_BUG_ADDR)
-
-/* Output a usage message for ARGP to STREAM.  FLAGS are from the set
-   ARGP_HELP_*.  */
-extern void argp_help (const struct argp *__restrict __argp,
-                       FILE *__restrict __stream,
-                       unsigned __flags, char *__restrict __name);
-extern void __argp_help (const struct argp *__restrict __argp,
-                         FILE *__restrict __stream, unsigned __flags,
-                         char *__name);
-
-/* The following routines are intended to be called from within an 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 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]  */
-
-/* Output, if appropriate, a usage message for STATE to STREAM.  FLAGS are
-   from the set ARGP_HELP_*.  */
-extern void argp_state_help (const struct argp_state *__restrict __state,
-                             FILE *__restrict __stream,
-                             unsigned int __flags);
-extern void __argp_state_help (const struct argp_state *__restrict __state,
-                               FILE *__restrict __stream,
-                               unsigned int __flags);
-
-#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"
-   message, then exit (1).  */
-extern void argp_error (const struct argp_state *__restrict __state,
-                        const char *__restrict __fmt, ...)
-     _GL_ATTRIBUTE_FORMAT ((__printf__, 2, 3));
-extern void __argp_error (const struct argp_state *__restrict __state,
-                          const char *__restrict __fmt, ...)
-     _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
-   to STATE->err_stream.  This is useful for argument parsing code that is
-   shared between program startup (when exiting is desired) and runtime
-   option parsing (when typically an error code is returned instead).  The
-   difference between this function and argp_error is that the latter is for
-   *parsing errors*, and the former is for other problems that occur during
-   parsing but don't reflect a (syntactic) problem with the input.  */
-extern void argp_failure (const struct argp_state *__restrict __state,
-                          int __status, int __errnum,
-                          const char *__restrict __fmt, ...)
-     _GL_ATTRIBUTE_FORMAT ((__printf__, 4, 5));
-extern void __argp_failure (const struct argp_state *__restrict __state,
-                            int __status, int __errnum,
-                            const char *__restrict __fmt, ...)
-     _GL_ATTRIBUTE_FORMAT ((__printf__, 4, 5));
-
-#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;
-
-/* Returns true if the option OPT is in fact the last (unused) entry in an
-   options array.  */
-extern int _option_is_end (const struct argp_option *__opt) __THROW;
-extern int __option_is_end (const struct argp_option *__opt) __THROW;
-#endif
-
-/* Return the input field for ARGP in the parser corresponding to STATE; used
-   by the help routines.  */
-extern void *_argp_input (const struct argp *__restrict __argp,
-                          const struct argp_state *__restrict __state)
-     __THROW;
-extern void *__argp_input (const struct argp *__restrict __argp,
-                           const struct argp_state *__restrict __state)
-     __THROW;
-
-#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
-#  ifdef __GNUC__
-    /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
-       inline semantics, unless -fgnu89-inline is used.  It defines a macro
-       __GNUC_STDC_INLINE__ to indicate this situation or a macro
-       __GNUC_GNU_INLINE__ to indicate the opposite situation.
-       GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
-       semantics but warns, unless -fgnu89-inline is used:
-         warning: C99 inline functions are not supported; using GNU89
-         warning: to disable this warning use -fgnu89-inline or the gnu_inline 
function attribute
-       It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.  */
-#   if defined __GNUC_STDC_INLINE__
-#    define ARGP_EI __inline__
-#   elif defined __GNUC_GNU_INLINE__
-#    define ARGP_EI extern __inline__ __attribute__ ((__gnu_inline__))
-#   else
-#    define ARGP_EI extern __inline__
-#   endif
-#  else
-    /* With other compilers, assume the ISO C99 meaning of 'inline', if
-       the compiler supports 'inline' at all.  */
-#   define ARGP_EI inline
-#  endif
-# endif
-
-ARGP_EI void
-__argp_usage (const struct argp_state *__state)
-{
-  __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE);
-}
-
-ARGP_EI int
-__NTH (__option_is_short (const struct argp_option *__opt))
-{
-  if (__opt->flags & OPTION_DOC)
-    return 0;
-  else
-    {
-      int __key = __opt->key;
-      return __key > 0 && __key <= UCHAR_MAX && isprint (__key);
-    }
-}
-
-ARGP_EI int
-__NTH (__option_is_end (const struct argp_option *__opt))
-{
-  return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;
-}
-
-# if !_LIBC
-#  undef __argp_usage
-#  undef __argp_state_help
-#  undef __option_is_short
-#  undef __option_is_end
-_GL_INLINE_HEADER_END
-# endif
-#endif /* Use extern inlines.  */
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif /* argp.h */
diff --git a/grub-core/gnulib/asnprintf.c b/grub-core/gnulib/asnprintf.c
deleted file mode 100644
index 76e228d86..000000000
--- a/grub-core/gnulib/asnprintf.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Formatted output to strings.
-   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
-   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 "vasnprintf.h"
-
-#include <stdarg.h>
-
-char *
-asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
-{
-  va_list args;
-  char *result;
-
-  va_start (args, format);
-  result = vasnprintf (resultbuf, lengthp, format, args);
-  va_end (args);
-  return result;
-}
diff --git a/grub-core/gnulib/basename-lgpl.c b/grub-core/gnulib/basename-lgpl.c
deleted file mode 100644
index 9307e8314..000000000
--- a/grub-core/gnulib/basename-lgpl.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* basename.c -- return the last element in a file name
-
-   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
-   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 "dirname.h"
-
-#include <string.h>
-
-/* Return the address of the last file name component of NAME.  If
-   NAME has no relative file name components because it is a file
-   system root, return the empty string.  */
-
-char *
-last_component (char const *name)
-{
-  char const *base = name + FILE_SYSTEM_PREFIX_LEN (name);
-  char const *p;
-  bool saw_slash = false;
-
-  while (ISSLASH (*base))
-    base++;
-
-  for (p = base; *p; p++)
-    {
-      if (ISSLASH (*p))
-        saw_slash = true;
-      else if (saw_slash)
-        {
-          base = p;
-          saw_slash = false;
-        }
-    }
-
-  return (char *) base;
-}
-
-/* Return the length of the basename NAME.  Typically NAME is the
-   value returned by base_name or last_component.  Act like strlen
-   (NAME), except omit all trailing slashes.  */
-
-size_t
-base_len (char const *name)
-{
-  size_t len;
-  size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name);
-
-  for (len = strlen (name);  1 < len && ISSLASH (name[len - 1]);  len--)
-    continue;
-
-  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && len == 1
-      && ISSLASH (name[0]) && ISSLASH (name[1]) && ! name[2])
-    return 2;
-
-  if (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && prefix_len
-      && len == prefix_len && ISSLASH (name[prefix_len]))
-    return prefix_len + 1;
-
-  return len;
-}
diff --git a/grub-core/gnulib/btowc.c b/grub-core/gnulib/btowc.c
deleted file mode 100644
index 6c7cbec9d..000000000
--- a/grub-core/gnulib/btowc.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Convert unibyte character to wide character.
-   Copyright (C) 2008, 2010-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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 <wchar.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-
-wint_t
-btowc (int c)
-{
-  if (c != EOF)
-    {
-      char buf[1];
-      wchar_t wc;
-
-      buf[0] = c;
-      if (mbtowc (&wc, buf, 1) >= 0)
-        return wc;
-    }
-  return WEOF;
-}
diff --git a/grub-core/gnulib/config.charset b/grub-core/gnulib/config.charset
deleted file mode 100644
index a991419cd..000000000
--- a/grub-core/gnulib/config.charset
+++ /dev/null
@@ -1,684 +0,0 @@
-#! /bin/sh
-# Output a system dependent table of character encoding aliases.
-#
-#   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
-#   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/>.
-#
-# The table consists of lines of the form
-#    ALIAS  CANONICAL
-#
-# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
-# ALIAS is compared in a case sensitive way.
-#
-# CANONICAL is the GNU canonical name for this character encoding.
-# It must be an encoding supported by libiconv. Support by GNU libc is
-# also desirable. CANONICAL is case insensitive. Usually an upper case
-# MIME charset name is preferred.
-# 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
-#   ISO-8859-3              Y   glibc solaris cygwin
-#   ISO-8859-4              Y   osf solaris freebsd netbsd openbsd darwin
-#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd 
openbsd darwin cygwin
-#   ISO-8859-6              Y   glibc aix hpux solaris cygwin
-#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd openbsd 
darwin cygwin
-#   ISO-8859-8              Y   glibc aix hpux osf solaris cygwin
-#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin cygwin
-#   ISO-8859-13                 glibc netbsd openbsd darwin cygwin
-#   ISO-8859-14                 glibc cygwin
-#   ISO-8859-15                 glibc aix osf solaris freebsd netbsd openbsd 
darwin cygwin
-#   KOI8-R                  Y   glibc solaris freebsd netbsd openbsd darwin
-#   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin cygwin
-#   KOI8-T                      glibc
-#   CP437                       dos
-#   CP775                       dos
-#   CP850                       aix osf dos
-#   CP852                       dos
-#   CP855                       dos
-#   CP856                       aix
-#   CP857                       dos
-#   CP861                       dos
-#   CP862                       dos
-#   CP864                       dos
-#   CP865                       dos
-#   CP866                       freebsd netbsd openbsd darwin dos
-#   CP869                       dos
-#   CP874                       woe32 dos
-#   CP922                       aix
-#   CP932                       aix cygwin woe32 dos
-#   CP943                       aix
-#   CP949                       osf darwin woe32 dos
-#   CP950                       woe32 dos
-#   CP1046                      aix
-#   CP1124                      aix
-#   CP1125                      dos
-#   CP1129                      aix
-#   CP1131                      darwin
-#   CP1250                      woe32
-#   CP1251                      glibc solaris netbsd openbsd darwin cygwin 
woe32
-#   CP1252                      aix woe32
-#   CP1253                      woe32
-#   CP1254                      woe32
-#   CP1255                      glibc woe32
-#   CP1256                      woe32
-#   CP1257                      woe32
-#   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd 
darwin
-#   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd 
darwin
-#   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd 
darwin cygwin
-#   EUC-TW                      glibc aix hpux irix osf solaris netbsd
-#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd 
darwin cygwin
-#   BIG5-HKSCS                  glibc solaris darwin
-#   GBK                         glibc aix osf solaris darwin cygwin woe32 dos
-#   GB18030                     glibc solaris netbsd darwin
-#   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
-#   JOHAB                       glibc solaris woe32
-#   TIS-620                     glibc aix hpux osf solaris cygwin
-#   VISCII                  Y   glibc
-#   TCVN5712-1                  glibc
-#   ARMSCII-8                   glibc darwin
-#   GEORGIAN-PS                 glibc cygwin
-#   PT154                       glibc
-#   HP-ROMAN8                   hpux
-#   HP-ARABIC8                  hpux
-#   HP-GREEK8                   hpux
-#   HP-HEBREW8                  hpux
-#   HP-TURKISH8                 hpux
-#   HP-KANA8                    hpux
-#   DEC-KANJI                   osf
-#   DEC-HANYU                   osf
-#   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin cygwin
-#
-# Note: Names which are not marked as being a MIME name should not be used in
-# Internet protocols for information interchange (mail, news, etc.).
-#
-# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
-# must understand both names and treat them as equivalent.
-#
-# The first argument passed to this file is the canonical host specification,
-#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-
-host="$1"
-os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
-echo "# This file contains a table of character encoding aliases,"
-echo "# suitable for operating system '${os}'."
-echo "# It was automatically generated from config.charset."
-# List of references, updated during installation:
-echo "# Packages using this file: "
-case "$os" in
-  linux-gnulibc1*)
-    # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
-    # localcharset.c falls back to using the full locale name
-    # from the environment variables.
-    echo "C ASCII"
-    echo "POSIX ASCII"
-    for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
-             en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
-             en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
-             es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
-             et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
-             fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
-             it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
-             sv_FI sv_SE; do
-      echo "$l ISO-8859-1"
-      echo "$l.iso-8859-1 ISO-8859-1"
-      echo "$l.iso-8859-15 ISO-8859-15"
-      echo "address@hidden ISO-8859-15"
-      echo "address@hidden ISO-8859-15"
-      echo "$l.cp-437 CP437"
-      echo "$l.cp-850 CP850"
-      echo "$l.cp-1252 CP1252"
-      echo "address@hidden CP1252"
-      #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
-      echo "$l.utf-8 UTF-8"
-      echo "address@hidden UTF-8"
-    done
-    for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
-             sl_SI sr sr_CS sr_YU; do
-      echo "$l ISO-8859-2"
-      echo "$l.iso-8859-2 ISO-8859-2"
-      echo "$l.cp-852 CP852"
-      echo "$l.cp-1250 CP1250"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in mk mk_MK ru ru_RU; do
-      echo "$l ISO-8859-5"
-      echo "$l.iso-8859-5 ISO-8859-5"
-      echo "$l.koi8-r KOI8-R"
-      echo "$l.cp-866 CP866"
-      echo "$l.cp-1251 CP1251"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in ar ar_SA; do
-      echo "$l ISO-8859-6"
-      echo "$l.iso-8859-6 ISO-8859-6"
-      echo "$l.cp-864 CP864"
-      #echo "$l.cp-868 CP868" # not a commonly used encoding
-      echo "$l.cp-1256 CP1256"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in el el_GR gr gr_GR; do
-      echo "$l ISO-8859-7"
-      echo "$l.iso-8859-7 ISO-8859-7"
-      echo "$l.cp-869 CP869"
-      echo "$l.cp-1253 CP1253"
-      echo "address@hidden CP1253"
-      echo "$l.utf-8 UTF-8"
-      echo "address@hidden UTF-8"
-    done
-    for l in he he_IL iw iw_IL; do
-      echo "$l ISO-8859-8"
-      echo "$l.iso-8859-8 ISO-8859-8"
-      echo "$l.cp-862 CP862"
-      echo "$l.cp-1255 CP1255"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in tr tr_TR; do
-      echo "$l ISO-8859-9"
-      echo "$l.iso-8859-9 ISO-8859-9"
-      echo "$l.cp-857 CP857"
-      echo "$l.cp-1254 CP1254"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in lt lt_LT lv lv_LV; do
-      #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
-      echo "$l ISO-8859-13"
-    done
-    for l in ru_UA uk uk_UA; do
-      echo "$l KOI8-U"
-    done
-    for l in zh zh_CN; do
-      #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
-      echo "$l GB2312"
-    done
-    for l in ja ja_JP ja_JP.EUC; do
-      echo "$l EUC-JP"
-    done
-    for l in ko ko_KR; do
-      echo "$l EUC-KR"
-    done
-    for l in th th_TH; do
-      echo "$l TIS-620"
-    done
-    for l in fa fa_IR; do
-      #echo "$l ISIRI-3342" # a broken encoding
-      echo "$l.utf-8 UTF-8"
-    done
-    ;;
-  linux* | *-gnu*)
-    # With glibc-2.1 or newer, we don't need any canonicalization,
-    # because glibc has iconv and both glibc and libiconv support all
-    # GNU canonical names directly. Therefore, the Makefile does not
-    # need to install the alias file at all.
-    # The following applies only to glibc-2.0.x and older libcs.
-    echo "ISO_646.IRV:1983 ASCII"
-    ;;
-  aix*)
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-6 ISO-8859-6"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-8 ISO-8859-8"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "IBM-850 CP850"
-    echo "IBM-856 CP856"
-    echo "IBM-921 ISO-8859-13"
-    echo "IBM-922 CP922"
-    echo "IBM-932 CP932"
-    echo "IBM-943 CP943"
-    echo "IBM-1046 CP1046"
-    echo "IBM-1124 CP1124"
-    echo "IBM-1129 CP1129"
-    echo "IBM-1252 CP1252"
-    echo "IBM-eucCN GB2312"
-    echo "IBM-eucJP EUC-JP"
-    echo "IBM-eucKR EUC-KR"
-    echo "IBM-eucTW EUC-TW"
-    echo "big5 BIG5"
-    echo "GBK GBK"
-    echo "TIS-620 TIS-620"
-    echo "UTF-8 UTF-8"
-    ;;
-  hpux*)
-    echo "iso88591 ISO-8859-1"
-    echo "iso88592 ISO-8859-2"
-    echo "iso88595 ISO-8859-5"
-    echo "iso88596 ISO-8859-6"
-    echo "iso88597 ISO-8859-7"
-    echo "iso88598 ISO-8859-8"
-    echo "iso88599 ISO-8859-9"
-    echo "iso885915 ISO-8859-15"
-    echo "roman8 HP-ROMAN8"
-    echo "arabic8 HP-ARABIC8"
-    echo "greek8 HP-GREEK8"
-    echo "hebrew8 HP-HEBREW8"
-    echo "turkish8 HP-TURKISH8"
-    echo "kana8 HP-KANA8"
-    echo "tis620 TIS-620"
-    echo "big5 BIG5"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "eucTW EUC-TW"
-    echo "hp15CN GB2312"
-    #echo "ccdc ?" # what is this?
-    echo "SJIS SHIFT_JIS"
-    echo "utf8 UTF-8"
-    ;;
-  irix*)
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "eucCN GB2312"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "eucTW EUC-TW"
-    ;;
-  osf*)
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-8 ISO-8859-8"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "cp850 CP850"
-    echo "big5 BIG5"
-    echo "dechanyu DEC-HANYU"
-    echo "dechanzi GB2312"
-    echo "deckanji DEC-KANJI"
-    echo "deckorean EUC-KR"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "eucTW EUC-TW"
-    echo "GBK GBK"
-    echo "KSC5601 CP949"
-    echo "sdeckanji EUC-JP"
-    echo "SJIS SHIFT_JIS"
-    echo "TACTIS TIS-620"
-    echo "UTF-8 UTF-8"
-    ;;
-  solaris*)
-    echo "646 ASCII"
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-3 ISO-8859-3"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-6 ISO-8859-6"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-8 ISO-8859-8"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "koi8-r KOI8-R"
-    echo "ansi-1251 CP1251"
-    echo "BIG5 BIG5"
-    echo "Big5-HKSCS BIG5-HKSCS"
-    echo "gb2312 GB2312"
-    echo "GBK GBK"
-    echo "GB18030 GB18030"
-    echo "cns11643 EUC-TW"
-    echo "5601 EUC-KR"
-    echo "ko_KR.johap92 JOHAB"
-    echo "eucJP EUC-JP"
-    echo "PCK SHIFT_JIS"
-    echo "TIS620.2533 TIS-620"
-    #echo "sun_eu_greek ?" # what is this?
-    echo "UTF-8 UTF-8"
-    ;;
-  freebsd* | os2*)
-    # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
-    # localcharset.c falls back to using the full locale name
-    # from the environment variables.
-    # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
-    # reuse FreeBSD's locale data for OS/2.
-    echo "C ASCII"
-    echo "US-ASCII ASCII"
-    for l in la_LN lt_LN; do
-      echo "$l.ASCII ASCII"
-    done
-    for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
-             fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
-             lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
-      echo "$l.ISO_8859-1 ISO-8859-1"
-      echo "$l.DIS_8859-15 ISO-8859-15"
-    done
-    for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
-      echo "$l.ISO_8859-2 ISO-8859-2"
-    done
-    for l in la_LN lt_LT; do
-      echo "$l.ISO_8859-4 ISO-8859-4"
-    done
-    for l in ru_RU ru_SU; do
-      echo "$l.KOI8-R KOI8-R"
-      echo "$l.ISO_8859-5 ISO-8859-5"
-      echo "$l.CP866 CP866"
-    done
-    echo "uk_UA.KOI8-U KOI8-U"
-    echo "zh_TW.BIG5 BIG5"
-    echo "zh_TW.Big5 BIG5"
-    echo "zh_CN.EUC GB2312"
-    echo "ja_JP.EUC EUC-JP"
-    echo "ja_JP.SJIS SHIFT_JIS"
-    echo "ja_JP.Shift_JIS SHIFT_JIS"
-    echo "ko_KR.EUC EUC-KR"
-    ;;
-  netbsd*)
-    echo "646 ASCII"
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-13 ISO-8859-13"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "eucCN GB2312"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "eucTW EUC-TW"
-    echo "BIG5 BIG5"
-    echo "SJIS SHIFT_JIS"
-    ;;
-  openbsd*)
-    echo "646 ASCII"
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-13 ISO-8859-13"
-    echo "ISO8859-15 ISO-8859-15"
-    ;;
-  darwin[56]*)
-    # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
-    # localcharset.c falls back to using the full locale name
-    # from the environment variables.
-    echo "C ASCII"
-    for l in en_AU en_CA en_GB en_US la_LN; do
-      echo "$l.US-ASCII ASCII"
-    done
-    for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
-             fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
-             nl_NL no_NO pt_PT sv_SE; do
-      echo "$l ISO-8859-1"
-      echo "$l.ISO8859-1 ISO-8859-1"
-      echo "$l.ISO8859-15 ISO-8859-15"
-    done
-    for l in la_LN; do
-      echo "$l.ISO8859-1 ISO-8859-1"
-      echo "$l.ISO8859-15 ISO-8859-15"
-    done
-    for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
-      echo "$l.ISO8859-2 ISO-8859-2"
-    done
-    for l in la_LN lt_LT; do
-      echo "$l.ISO8859-4 ISO-8859-4"
-    done
-    for l in ru_RU; do
-      echo "$l.KOI8-R KOI8-R"
-      echo "$l.ISO8859-5 ISO-8859-5"
-      echo "$l.CP866 CP866"
-    done
-    for l in bg_BG; do
-      echo "$l.CP1251 CP1251"
-    done
-    echo "uk_UA.KOI8-U KOI8-U"
-    echo "zh_TW.BIG5 BIG5"
-    echo "zh_TW.Big5 BIG5"
-    echo "zh_CN.EUC GB2312"
-    echo "ja_JP.EUC EUC-JP"
-    echo "ja_JP.SJIS SHIFT_JIS"
-    echo "ko_KR.EUC EUC-KR"
-    ;;
-  darwin*)
-    # Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is
-    # useless:
-    # - It returns the empty string when LANG is set to a locale of the
-    #   form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
-    #   LC_CTYPE file.
-    # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
-    #   the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
-    # - The documentation says:
-    #     "... all code that calls BSD system routines should ensure
-    #      that the const *char parameters of these routines are in UTF-8
-    #      encoding. All BSD system functions expect their string
-    #      parameters to be in UTF-8 encoding and nothing else."
-    #   It also says
-    #     "An additional caveat is that string parameters for files,
-    #      paths, and other file-system entities must be in canonical
-    #      UTF-8. In a canonical UTF-8 Unicode string, all decomposable
-    #      characters are decomposed ..."
-    #   but this is not true: You can pass non-decomposed UTF-8 strings
-    #   to file system functions, and it is the OS which will convert
-    #   them to decomposed UTF-8 before accessing the file system.
-    # - The Apple Terminal application displays UTF-8 by default.
-    # - However, other applications are free to use different encodings:
-    #   - xterm uses ISO-8859-1 by default.
-    #   - TextEdit uses MacRoman by default.
-    # We prefer UTF-8 over decomposed UTF-8-MAC because one should
-    # minimize the use of decomposed Unicode. Unfortunately, through the
-    # Darwin file system, decomposed UTF-8 strings are leaked into user
-    # space nevertheless.
-    # Then there are also the locales with encodings other than US-ASCII
-    # and UTF-8. These locales can be occasionally useful to users (e.g.
-    # when grepping through ISO-8859-1 encoded text files), when all their
-    # file names are in US-ASCII.
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "ISO8859-13 ISO-8859-13"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "KOI8-R KOI8-R"
-    echo "KOI8-U KOI8-U"
-    echo "CP866 CP866"
-    echo "CP949 CP949"
-    echo "CP1131 CP1131"
-    echo "CP1251 CP1251"
-    echo "eucCN GB2312"
-    echo "GB2312 GB2312"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "Big5 BIG5"
-    echo "Big5HKSCS BIG5-HKSCS"
-    echo "GBK GBK"
-    echo "GB18030 GB18030"
-    echo "SJIS SHIFT_JIS"
-    echo "ARMSCII-8 ARMSCII-8"
-    echo "PT154 PT154"
-    #echo "ISCII-DEV ?"
-    echo "* UTF-8"
-    ;;
-  beos* | haiku*)
-    # BeOS and Haiku have a single locale, and it has UTF-8 encoding.
-    echo "* UTF-8"
-    ;;
-  msdosdjgpp*)
-    # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
-    # localcharset.c falls back to using the full locale name
-    # from the environment variables.
-    echo "#"
-    echo "# The encodings given here may not all be correct."
-    echo "# If you find that the encoding given for your language and"
-    echo "# country is not the one your DOS machine actually uses, just"
-    echo "# correct it in this file, and send a mail to"
-    echo "# Juan Manuel Guerrero <address@hidden>"
-    echo "# and Bruno Haible <address@hidden>."
-    echo "#"
-    echo "C ASCII"
-    # ISO-8859-1 languages
-    echo "ca CP850"
-    echo "ca_ES CP850"
-    echo "da CP865"    # not CP850 ??
-    echo "da_DK CP865" # not CP850 ??
-    echo "de CP850"
-    echo "de_AT CP850"
-    echo "de_CH CP850"
-    echo "de_DE CP850"
-    echo "en CP850"
-    echo "en_AU CP850" # not CP437 ??
-    echo "en_CA CP850"
-    echo "en_GB CP850"
-    echo "en_NZ CP437"
-    echo "en_US CP437"
-    echo "en_ZA CP850" # not CP437 ??
-    echo "es CP850"
-    echo "es_AR CP850"
-    echo "es_BO CP850"
-    echo "es_CL CP850"
-    echo "es_CO CP850"
-    echo "es_CR CP850"
-    echo "es_CU CP850"
-    echo "es_DO CP850"
-    echo "es_EC CP850"
-    echo "es_ES CP850"
-    echo "es_GT CP850"
-    echo "es_HN CP850"
-    echo "es_MX CP850"
-    echo "es_NI CP850"
-    echo "es_PA CP850"
-    echo "es_PY CP850"
-    echo "es_PE CP850"
-    echo "es_SV CP850"
-    echo "es_UY CP850"
-    echo "es_VE CP850"
-    echo "et CP850"
-    echo "et_EE CP850"
-    echo "eu CP850"
-    echo "eu_ES CP850"
-    echo "fi CP850"
-    echo "fi_FI CP850"
-    echo "fr CP850"
-    echo "fr_BE CP850"
-    echo "fr_CA CP850"
-    echo "fr_CH CP850"
-    echo "fr_FR CP850"
-    echo "ga CP850"
-    echo "ga_IE CP850"
-    echo "gd CP850"
-    echo "gd_GB CP850"
-    echo "gl CP850"
-    echo "gl_ES CP850"
-    echo "id CP850"    # not CP437 ??
-    echo "id_ID CP850" # not CP437 ??
-    echo "is CP861"    # not CP850 ??
-    echo "is_IS CP861" # not CP850 ??
-    echo "it CP850"
-    echo "it_CH CP850"
-    echo "it_IT CP850"
-    echo "lt CP775"
-    echo "lt_LT CP775"
-    echo "lv CP775"
-    echo "lv_LV CP775"
-    echo "nb CP865"    # not CP850 ??
-    echo "nb_NO CP865" # not CP850 ??
-    echo "nl CP850"
-    echo "nl_BE CP850"
-    echo "nl_NL CP850"
-    echo "nn CP865"    # not CP850 ??
-    echo "nn_NO CP865" # not CP850 ??
-    echo "no CP865"    # not CP850 ??
-    echo "no_NO CP865" # not CP850 ??
-    echo "pt CP850"
-    echo "pt_BR CP850"
-    echo "pt_PT CP850"
-    echo "sv CP850"
-    echo "sv_SE CP850"
-    # ISO-8859-2 languages
-    echo "cs CP852"
-    echo "cs_CZ CP852"
-    echo "hr CP852"
-    echo "hr_HR CP852"
-    echo "hu CP852"
-    echo "hu_HU CP852"
-    echo "pl CP852"
-    echo "pl_PL CP852"
-    echo "ro CP852"
-    echo "ro_RO CP852"
-    echo "sk CP852"
-    echo "sk_SK CP852"
-    echo "sl CP852"
-    echo "sl_SI CP852"
-    echo "sq CP852"
-    echo "sq_AL CP852"
-    echo "sr CP852"    # CP852 or CP866 or CP855 ??
-    echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
-    echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
-    # ISO-8859-3 languages
-    echo "mt CP850"
-    echo "mt_MT CP850"
-    # ISO-8859-5 languages
-    echo "be CP866"
-    echo "be_BE CP866"
-    echo "bg CP866"    # not CP855 ??
-    echo "bg_BG CP866" # not CP855 ??
-    echo "mk CP866"    # not CP855 ??
-    echo "mk_MK CP866" # not CP855 ??
-    echo "ru CP866"
-    echo "ru_RU CP866"
-    echo "uk CP1125"
-    echo "uk_UA CP1125"
-    # ISO-8859-6 languages
-    echo "ar CP864"
-    echo "ar_AE CP864"
-    echo "ar_DZ CP864"
-    echo "ar_EG CP864"
-    echo "ar_IQ CP864"
-    echo "ar_IR CP864"
-    echo "ar_JO CP864"
-    echo "ar_KW CP864"
-    echo "ar_MA CP864"
-    echo "ar_OM CP864"
-    echo "ar_QA CP864"
-    echo "ar_SA CP864"
-    echo "ar_SY CP864"
-    # ISO-8859-7 languages
-    echo "el CP869"
-    echo "el_GR CP869"
-    # ISO-8859-8 languages
-    echo "he CP862"
-    echo "he_IL CP862"
-    # ISO-8859-9 languages
-    echo "tr CP857"
-    echo "tr_TR CP857"
-    # Japanese
-    echo "ja CP932"
-    echo "ja_JP CP932"
-    # Chinese
-    echo "zh_CN GBK"
-    echo "zh_TW CP950" # not CP938 ??
-    # Korean
-    echo "kr CP949"    # not CP934 ??
-    echo "kr_KR CP949" # not CP934 ??
-    # Thai
-    echo "th CP874"
-    echo "th_TH CP874"
-    # Other
-    echo "eo CP850"
-    echo "eo_EO CP850"
-    ;;
-esac
diff --git a/grub-core/gnulib/dirname-lgpl.c b/grub-core/gnulib/dirname-lgpl.c
deleted file mode 100644
index 82f66301f..000000000
--- a/grub-core/gnulib/dirname-lgpl.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* dirname.c -- return all but the last element in a file name
-
-   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
-   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 "dirname.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-/* 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
-   if there are trailing slashes (by effectively ignoring them).  */
-
-size_t
-dir_len (char const *file)
-{
-  size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file);
-  size_t length;
-
-  /* Advance prefix_length beyond important leading slashes.  */
-  prefix_length += (prefix_length != 0
-                    ? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
-                       && ISSLASH (file[prefix_length]))
-                    : (ISSLASH (file[0])
-                       ? ((DOUBLE_SLASH_IS_DISTINCT_ROOT
-                           && ISSLASH (file[1]) && ! ISSLASH (file[2])
-                           ? 2 : 1))
-                       : 0));
-
-  /* Strip the basename and any redundant slashes before it.  */
-  for (length = last_component (file) - file;
-       prefix_length < length; length--)
-    if (! ISSLASH (file[length - 1]))
-      break;
-  return length;
-}
-
-
-/* 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.
-
-   Return the leading directories part of FILE, allocated with malloc.
-   Works properly even if there are trailing slashes (by effectively
-   ignoring them).  Return NULL on failure.
-
-   If lstat (FILE) would succeed, then { chdir (dir_name (FILE));
-   lstat (base_name (FILE)); } will access the same file.  Likewise,
-   if the sequence { chdir (dir_name (FILE));
-   rename (base_name (FILE), "foo"); } succeeds, you have renamed FILE
-   to "foo" in the same directory FILE was in.  */
-
-char *
-mdir_name (char const *file)
-{
-  size_t length = dir_len (file);
-  bool append_dot = (length == 0
-                     || (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
-                         && length == FILE_SYSTEM_PREFIX_LEN (file)
-                         && file[2] != '\0' && ! ISSLASH (file[2])));
-  char *dir = malloc (length + append_dot + 1);
-  if (!dir)
-    return NULL;
-  memcpy (dir, file, length);
-  if (append_dot)
-    dir[length++] = '.';
-  dir[length] = '\0';
-  return dir;
-}
diff --git a/grub-core/gnulib/dirname.h b/grub-core/gnulib/dirname.h
deleted file mode 100644
index 4ad031200..000000000
--- a/grub-core/gnulib/dirname.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*  Take file names apart into directory and base names.
-
-    Copyright (C) 1998, 2001, 2003-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 DIRNAME_H_
-# define DIRNAME_H_ 1
-
-# include <stdbool.h>
-# include <stddef.h>
-# include "dosname.h"
-
-# ifndef DIRECTORY_SEPARATOR
-#  define DIRECTORY_SEPARATOR '/'
-# endif
-
-# ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
-#  define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
-# endif
-
-# 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) _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);
-
-#endif /* not DIRNAME_H_ */
diff --git a/grub-core/gnulib/dosname.h b/grub-core/gnulib/dosname.h
deleted file mode 100644
index ba63ce4bd..000000000
--- a/grub-core/gnulib/dosname.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* 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
deleted file mode 100644
index 49b35464b..000000000
--- a/grub-core/gnulib/errno.in.h
+++ /dev/null
@@ -1,279 +0,0 @@
-/* A POSIX-like <errno.h>.
-
-   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
-   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 address@hidden@_ERRNO_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-/* The include_next requires a split double-inclusion guard.  */
address@hidden@ @NEXT_ERRNO_H@
-
-#ifndef address@hidden@_ERRNO_H
-#define address@hidden@_ERRNO_H
-
-
-/* On native Windows platforms, many macros are not defined.  */
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-
-/* These are the same values as defined by MSVC 10, for interoperability.  */
-
-#  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 ESOCKTNOSUPPORT 10044  /* not required by POSIX */
-#  define EPFNOSUPPORT    10046  /* not required by POSIX */
-#  define ESHUTDOWN       10058  /* not required by POSIX */
-#  define ETOOMANYREFS    10059  /* not required by POSIX */
-#  define EHOSTDOWN       10064  /* not required by POSIX */
-#  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_EWINSOCK 1
-
-# endif
-
-
-/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros
-   EMULTIHOP, ENOLINK, EOVERFLOW are not defined.  */
-# if @EMULTIHOP_HIDDEN@
-#  define EMULTIHOP @EMULTIHOP_VALUE@
-#  define GNULIB_defined_EMULTIHOP 1
-# endif
-# if @ENOLINK_HIDDEN@
-#  define ENOLINK   @ENOLINK_VALUE@
-#  define GNULIB_defined_ENOLINK 1
-# endif
-# if @EOVERFLOW_HIDDEN@
-#  define EOVERFLOW @EOVERFLOW_VALUE@
-#  define GNULIB_defined_EOVERFLOW 1
-# endif
-
-
-/* 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.
-
-   Note: When one of these systems defines some of these macros some day,
-   binaries will have to be recompiled so that they recognizes the new
-   errno values from the system.  */
-
-# ifndef ENOMSG
-#  define ENOMSG    2000
-#  define GNULIB_defined_ENOMSG 1
-# endif
-
-# ifndef EIDRM
-#  define EIDRM     2001
-#  define GNULIB_defined_EIDRM 1
-# endif
-
-# ifndef ENOLINK
-#  define ENOLINK   2002
-#  define GNULIB_defined_ENOLINK 1
-# endif
-
-# ifndef EPROTO
-#  define EPROTO    2003
-#  define GNULIB_defined_EPROTO 1
-# endif
-
-# ifndef EMULTIHOP
-#  define EMULTIHOP 2004
-#  define GNULIB_defined_EMULTIHOP 1
-# endif
-
-# ifndef EBADMSG
-#  define EBADMSG   2005
-#  define GNULIB_defined_EBADMSG 1
-# endif
-
-# ifndef EOVERFLOW
-#  define EOVERFLOW 2006
-#  define GNULIB_defined_EOVERFLOW 1
-# endif
-
-# ifndef ENOTSUP
-#  define ENOTSUP   2007
-#  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 /* address@hidden@_ERRNO_H */
-#endif /* address@hidden@_ERRNO_H */
diff --git a/grub-core/gnulib/error.c b/grub-core/gnulib/error.c
deleted file mode 100644
index 865b29340..000000000
--- a/grub-core/gnulib/error.c
+++ /dev/null
@@ -1,401 +0,0 @@
-/* Error handler for noninteractive utilities
-   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
-   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 David MacKenzie <address@hidden>.  */
-
-#if !_LIBC
-# include <config.h>
-#endif
-
-#include "error.h"
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if !_LIBC && ENABLE_NLS
-# include "gettext.h"
-# define _(msgid) gettext (msgid)
-#endif
-
-#ifdef _LIBC
-# include <libintl.h>
-# include <stdbool.h>
-# include <stdint.h>
-# include <wchar.h>
-# define mbsrtowcs __mbsrtowcs
-#endif
-
-#if USE_UNLOCKED_IO
-# include "unlocked-io.h"
-#endif
-
-#ifndef _
-# define _(String) String
-#endif
-
-/* 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.  */
-void (*error_print_progname) (void);
-
-/* This variable is incremented each time 'error' is called.  */
-unsigned int error_message_count;
-
-#ifdef _LIBC
-/* In the GNU C library, there is a predefined variable for this.  */
-
-# define program_name program_invocation_name
-# include <errno.h>
-# include <limits.h>
-# include <libio/libioP.h>
-
-/* 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)));
-extern void __error_at_line (int status, int errnum, const char *file_name,
-                             unsigned int line_number, const char *message,
-                             ...)
-     __attribute__ ((__format__ (__printf__, 5, 6)));;
-# define error __error
-# define error_at_line __error_at_line
-
-# include <libio/iolibio.h>
-# define fflush(s) INTUSE(_IO_fflush) (s)
-# undef putc
-# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
-
-# include <bits/libc-lock.h>
-
-#else /* not _LIBC */
-
-# include <fcntl.h>
-# include <unistd.h>
-
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-/* 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
-#  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
-   name of the executing program.  */
-extern char *program_name;
-
-# if HAVE_STRERROR_R || defined strerror_r
-#  define __strerror_r strerror_r
-# endif /* HAVE_STRERROR_R || defined strerror_r */
-#endif  /* not _LIBC */
-
-#if !_LIBC
-/* Return non-zero if FD is open.  */
-static int
-is_open (int fd)
-{
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-  /* 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
-#   error Please port fcntl to your platform
-#  endif
-  return 0 <= fcntl (fd, F_GETFL);
-# endif
-}
-#endif
-
-static void
-flush_stdout (void)
-{
-#if !_LIBC
-  int stdout_fd;
-
-# if GNULIB_FREOPEN_SAFER
-  /* Use of gnulib's freopen-safer module normally ensures that
-       fileno (stdout) == 1
-     whenever stdout is open.  */
-  stdout_fd = STDOUT_FILENO;
-# else
-  /* POSIX states that fileno (stdout) after fclose is unspecified.  But in
-     practice it is not a problem, because stdout is statically allocated and
-     the fd of a FILE stream is stored as a field in its allocated memory.  */
-  stdout_fd = fileno (stdout);
-# endif
-  /* POSIX states that fflush (stdout) after fclose is unspecified; it
-     is safe in glibc, but not on all other platforms.  fflush (NULL)
-     is always defined, but too draconian.  */
-  if (0 <= stdout_fd && is_open (stdout_fd))
-#endif
-    fflush (stdout);
-}
-
-static void
-print_errno_message (int errnum)
-{
-  char const *s;
-
-#if defined HAVE_STRERROR_R || _LIBC
-  char errbuf[1024];
-# if STRERROR_R_CHAR_P || _LIBC
-  s = __strerror_r (errnum, errbuf, sizeof errbuf);
-# else
-  if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
-    s = errbuf;
-  else
-    s = 0;
-# endif
-#else
-  s = strerror (errnum);
-#endif
-
-#if !_LIBC
-  if (! s)
-    s = _("Unknown system error");
-#endif
-
-#if _LIBC
-  __fxprintf (NULL, ": %s", s);
-#else
-  fprintf (stderr, ": %s", s);
-#endif
-}
-
-static void
-error_tail (int status, int errnum, const char *message, va_list args)
-{
-#if _LIBC
-  if (_IO_fwide (stderr, 0) > 0)
-    {
-# define ALLOCA_LIMIT 2000
-      size_t len = strlen (message) + 1;
-      wchar_t *wmessage = NULL;
-      mbstate_t st;
-      size_t res;
-      const char *tmp;
-      bool use_malloc = false;
-
-      while (1)
-        {
-          if (__libc_use_alloca (len * sizeof (wchar_t)))
-            wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
-          else
-            {
-              if (!use_malloc)
-                wmessage = NULL;
-
-              wchar_t *p = (wchar_t *) realloc (wmessage,
-                                                len * sizeof (wchar_t));
-              if (p == NULL)
-                {
-                  free (wmessage);
-                  fputws_unlocked (L"out of memory\n", stderr);
-                  return;
-                }
-              wmessage = p;
-              use_malloc = true;
-            }
-
-          memset (&st, '\0', sizeof (st));
-          tmp = message;
-
-          res = mbsrtowcs (wmessage, &tmp, len, &st);
-          if (res != len)
-            break;
-
-          if (__builtin_expect (len >= SIZE_MAX / 2, 0))
-            {
-              /* This really should not happen if everything is fine.  */
-              res = (size_t) -1;
-              break;
-            }
-
-          len *= 2;
-        }
-
-      if (res == (size_t) -1)
-        {
-          /* The string cannot be converted.  */
-          if (use_malloc)
-            {
-              free (wmessage);
-              use_malloc = false;
-            }
-          wmessage = (wchar_t *) L"???";
-        }
-
-      __vfwprintf (stderr, wmessage, args);
-
-      if (use_malloc)
-        free (wmessage);
-    }
-  else
-#endif
-    vfprintf (stderr, message, args);
-  va_end (args);
-
-  ++error_message_count;
-  if (errnum)
-    print_errno_message (errnum);
-#if _LIBC
-  __fxprintf (NULL, "\n");
-#else
-  putc ('\n', stderr);
-#endif
-  fflush (stderr);
-  if (status)
-    exit (status);
-}
-
-
-/* Print the program name and error message MESSAGE, which is a printf-style
-   format string with optional args.
-   If ERRNUM is nonzero, print its corresponding system error message.
-   Exit with status STATUS if it is nonzero.  */
-void
-error (int status, int errnum, const char *message, ...)
-{
-  va_list args;
-
-#if defined _LIBC && defined __libc_ptf_call
-  /* We do not want this call to be cut short by a thread
-     cancellation.  Therefore disable cancellation for now.  */
-  int state = PTHREAD_CANCEL_ENABLE;
-  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
-                   0);
-#endif
-
-  flush_stdout ();
-#ifdef _LIBC
-  _IO_flockfile (stderr);
-#endif
-  if (error_print_progname)
-    (*error_print_progname) ();
-  else
-    {
-#if _LIBC
-      __fxprintf (NULL, "%s: ", program_name);
-#else
-      fprintf (stderr, "%s: ", program_name);
-#endif
-    }
-
-  va_start (args, message);
-  error_tail (status, errnum, message, args);
-
-#ifdef _LIBC
-  _IO_funlockfile (stderr);
-# ifdef __libc_ptf_call
-  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
-# endif
-#endif
-}
-
-/* Sometimes we want to have at most one error per line.  This
-   variable controls whether this mode is selected or not.  */
-int error_one_per_line;
-
-void
-error_at_line (int status, int errnum, const char *file_name,
-               unsigned int line_number, const char *message, ...)
-{
-  va_list args;
-
-  if (error_one_per_line)
-    {
-      static const char *old_file_name;
-      static unsigned int old_line_number;
-
-      if (old_line_number == line_number
-          && (file_name == old_file_name
-              || strcmp (old_file_name, file_name) == 0))
-        /* Simply return and print nothing.  */
-        return;
-
-      old_file_name = file_name;
-      old_line_number = line_number;
-    }
-
-#if defined _LIBC && defined __libc_ptf_call
-  /* We do not want this call to be cut short by a thread
-     cancellation.  Therefore disable cancellation for now.  */
-  int state = PTHREAD_CANCEL_ENABLE;
-  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
-                   0);
-#endif
-
-  flush_stdout ();
-#ifdef _LIBC
-  _IO_flockfile (stderr);
-#endif
-  if (error_print_progname)
-    (*error_print_progname) ();
-  else
-    {
-#if _LIBC
-      __fxprintf (NULL, "%s:", program_name);
-#else
-      fprintf (stderr, "%s:", program_name);
-#endif
-    }
-
-#if _LIBC
-  __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ",
-              file_name, line_number);
-#else
-  fprintf (stderr, file_name != NULL ? "%s:%d: " : " ",
-           file_name, line_number);
-#endif
-
-  va_start (args, message);
-  error_tail (status, errnum, message, args);
-
-#ifdef _LIBC
-  _IO_funlockfile (stderr);
-# ifdef __libc_ptf_call
-  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
-# endif
-#endif
-}
-
-#ifdef _LIBC
-/* Make the weak alias.  */
-# undef error
-# undef error_at_line
-weak_alias (__error, error)
-weak_alias (__error_at_line, error_at_line)
-#endif
diff --git a/grub-core/gnulib/error.h b/grub-core/gnulib/error.h
deleted file mode 100644
index afcb0e10c..000000000
--- a/grub-core/gnulib/error.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Declaration for error-reporting function
-   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
-   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 _ERROR_H
-#define _ERROR_H 1
-
-/* 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 _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 _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, ...)';
-   if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
-   If STATUS is nonzero, terminate the program with 'exit (STATUS)'.  */
-
-extern void error (int __status, int __errnum, const char *__format, ...)
-     _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4));
-
-extern void error_at_line (int __status, int __errnum, const char *__fname,
-                           unsigned int __lineno, const char *__format, ...)
-     _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.  */
-extern unsigned int error_message_count;
-
-/* Sometimes we want to have at most one error per line.  This
-   variable controls whether this mode is selected or not.  */
-extern int error_one_per_line;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* error.h */
diff --git a/grub-core/gnulib/float+.h b/grub-core/gnulib/float+.h
deleted file mode 100644
index 32fb790bb..000000000
--- a/grub-core/gnulib/float+.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Supplemental information about the floating-point formats.
-   Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 2007.
-
-   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 _FLOATPLUS_H
-#define _FLOATPLUS_H
-
-#include <float.h>
-#include <limits.h>
-
-/* Number of bits in the mantissa of a floating-point number, including the
-   "hidden bit".  */
-#if FLT_RADIX == 2
-# define FLT_MANT_BIT FLT_MANT_DIG
-# define DBL_MANT_BIT DBL_MANT_DIG
-# define LDBL_MANT_BIT LDBL_MANT_DIG
-#elif FLT_RADIX == 4
-# define FLT_MANT_BIT (FLT_MANT_DIG * 2)
-# define DBL_MANT_BIT (DBL_MANT_DIG * 2)
-# define LDBL_MANT_BIT (LDBL_MANT_DIG * 2)
-#elif FLT_RADIX == 16
-# define FLT_MANT_BIT (FLT_MANT_DIG * 4)
-# define DBL_MANT_BIT (DBL_MANT_DIG * 4)
-# define LDBL_MANT_BIT (LDBL_MANT_DIG * 4)
-#endif
-
-/* Bit mask that can be used to mask the exponent, as an unsigned number.  */
-#define FLT_EXP_MASK ((FLT_MAX_EXP - FLT_MIN_EXP) | 7)
-#define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
-#define LDBL_EXP_MASK ((LDBL_MAX_EXP - LDBL_MIN_EXP) | 7)
-
-/* Number of bits used for the exponent of a floating-point number, including
-   the exponent's sign.  */
-#define FLT_EXP_BIT \
-  (FLT_EXP_MASK < 0x100 ? 8 : \
-   FLT_EXP_MASK < 0x200 ? 9 : \
-   FLT_EXP_MASK < 0x400 ? 10 : \
-   FLT_EXP_MASK < 0x800 ? 11 : \
-   FLT_EXP_MASK < 0x1000 ? 12 : \
-   FLT_EXP_MASK < 0x2000 ? 13 : \
-   FLT_EXP_MASK < 0x4000 ? 14 : \
-   FLT_EXP_MASK < 0x8000 ? 15 : \
-   FLT_EXP_MASK < 0x10000 ? 16 : \
-   FLT_EXP_MASK < 0x20000 ? 17 : \
-   FLT_EXP_MASK < 0x40000 ? 18 : \
-   FLT_EXP_MASK < 0x80000 ? 19 : \
-   FLT_EXP_MASK < 0x100000 ? 20 : \
-   FLT_EXP_MASK < 0x200000 ? 21 : \
-   FLT_EXP_MASK < 0x400000 ? 22 : \
-   FLT_EXP_MASK < 0x800000 ? 23 : \
-   FLT_EXP_MASK < 0x1000000 ? 24 : \
-   FLT_EXP_MASK < 0x2000000 ? 25 : \
-   FLT_EXP_MASK < 0x4000000 ? 26 : \
-   FLT_EXP_MASK < 0x8000000 ? 27 : \
-   FLT_EXP_MASK < 0x10000000 ? 28 : \
-   FLT_EXP_MASK < 0x20000000 ? 29 : \
-   FLT_EXP_MASK < 0x40000000 ? 30 : \
-   FLT_EXP_MASK <= 0x7fffffff ? 31 : \
-   32)
-#define DBL_EXP_BIT \
-  (DBL_EXP_MASK < 0x100 ? 8 : \
-   DBL_EXP_MASK < 0x200 ? 9 : \
-   DBL_EXP_MASK < 0x400 ? 10 : \
-   DBL_EXP_MASK < 0x800 ? 11 : \
-   DBL_EXP_MASK < 0x1000 ? 12 : \
-   DBL_EXP_MASK < 0x2000 ? 13 : \
-   DBL_EXP_MASK < 0x4000 ? 14 : \
-   DBL_EXP_MASK < 0x8000 ? 15 : \
-   DBL_EXP_MASK < 0x10000 ? 16 : \
-   DBL_EXP_MASK < 0x20000 ? 17 : \
-   DBL_EXP_MASK < 0x40000 ? 18 : \
-   DBL_EXP_MASK < 0x80000 ? 19 : \
-   DBL_EXP_MASK < 0x100000 ? 20 : \
-   DBL_EXP_MASK < 0x200000 ? 21 : \
-   DBL_EXP_MASK < 0x400000 ? 22 : \
-   DBL_EXP_MASK < 0x800000 ? 23 : \
-   DBL_EXP_MASK < 0x1000000 ? 24 : \
-   DBL_EXP_MASK < 0x2000000 ? 25 : \
-   DBL_EXP_MASK < 0x4000000 ? 26 : \
-   DBL_EXP_MASK < 0x8000000 ? 27 : \
-   DBL_EXP_MASK < 0x10000000 ? 28 : \
-   DBL_EXP_MASK < 0x20000000 ? 29 : \
-   DBL_EXP_MASK < 0x40000000 ? 30 : \
-   DBL_EXP_MASK <= 0x7fffffff ? 31 : \
-   32)
-#define LDBL_EXP_BIT \
-  (LDBL_EXP_MASK < 0x100 ? 8 : \
-   LDBL_EXP_MASK < 0x200 ? 9 : \
-   LDBL_EXP_MASK < 0x400 ? 10 : \
-   LDBL_EXP_MASK < 0x800 ? 11 : \
-   LDBL_EXP_MASK < 0x1000 ? 12 : \
-   LDBL_EXP_MASK < 0x2000 ? 13 : \
-   LDBL_EXP_MASK < 0x4000 ? 14 : \
-   LDBL_EXP_MASK < 0x8000 ? 15 : \
-   LDBL_EXP_MASK < 0x10000 ? 16 : \
-   LDBL_EXP_MASK < 0x20000 ? 17 : \
-   LDBL_EXP_MASK < 0x40000 ? 18 : \
-   LDBL_EXP_MASK < 0x80000 ? 19 : \
-   LDBL_EXP_MASK < 0x100000 ? 20 : \
-   LDBL_EXP_MASK < 0x200000 ? 21 : \
-   LDBL_EXP_MASK < 0x400000 ? 22 : \
-   LDBL_EXP_MASK < 0x800000 ? 23 : \
-   LDBL_EXP_MASK < 0x1000000 ? 24 : \
-   LDBL_EXP_MASK < 0x2000000 ? 25 : \
-   LDBL_EXP_MASK < 0x4000000 ? 26 : \
-   LDBL_EXP_MASK < 0x8000000 ? 27 : \
-   LDBL_EXP_MASK < 0x10000000 ? 28 : \
-   LDBL_EXP_MASK < 0x20000000 ? 29 : \
-   LDBL_EXP_MASK < 0x40000000 ? 30 : \
-   LDBL_EXP_MASK <= 0x7fffffff ? 31 : \
-   32)
-
-/* Number of bits used for a floating-point number: the mantissa (not
-   counting the "hidden bit", since it may or may not be explicit), the
-   exponent, and the sign.  */
-#define FLT_TOTAL_BIT ((FLT_MANT_BIT - 1) + FLT_EXP_BIT + 1)
-#define DBL_TOTAL_BIT ((DBL_MANT_BIT - 1) + DBL_EXP_BIT + 1)
-#define LDBL_TOTAL_BIT ((LDBL_MANT_BIT - 1) + LDBL_EXP_BIT + 1)
-
-/* Number of bytes used for a floating-point number.
-   This can be smaller than the 'sizeof'.  For example, on i386 systems,
-   'long double' most often have LDBL_MANT_BIT = 64, LDBL_EXP_BIT = 16, hence
-   LDBL_TOTAL_BIT = 80 bits, i.e. 10 bytes of consecutive memory, but
-   sizeof (long double) = 12 or = 16.  */
-#define SIZEOF_FLT ((FLT_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
-#define SIZEOF_DBL ((DBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
-#define SIZEOF_LDBL ((LDBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
-
-/* Verify that SIZEOF_FLT <= sizeof (float) etc.  */
-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
deleted file mode 100644
index 366945fa3..000000000
--- a/grub-core/gnulib/float.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Auxiliary definitions for <float.h>.
-   Copyright (C) 2011-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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
deleted file mode 100644
index 84e1950f9..000000000
--- a/grub-core/gnulib/float.in.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/* A correct <float.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/>.  */
-
-#ifndef address@hidden@_FLOAT_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-/* The include_next requires a split double-inclusion guard.  */
address@hidden@ @NEXT_FLOAT_H@
-
-#ifndef address@hidden@_FLOAT_H
-#define address@hidden@_FLOAT_H
-
-/* 'long double' properties.  */
-
-#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
-/* 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.0842021724855044340E-19L
-/* 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.3621031431120935063E-4932L
-/* Maximum representable finite number.  */
-# undef LDBL_MAX
-# define LDBL_MAX        1.1897314953572317650E+4932L
-/* 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 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 /* address@hidden@_FLOAT_H */
-#endif /* address@hidden@_FLOAT_H */
diff --git a/grub-core/gnulib/fnmatch.c b/grub-core/gnulib/fnmatch.c
deleted file mode 100644
index 6a09e1a9b..000000000
--- a/grub-core/gnulib/fnmatch.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/* 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
-   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 _LIBC
-# include <config.h>
-#endif
-
-/* Enable GNU extensions in fnmatch.h.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE    1
-#endif
-
-#if ! defined __builtin_expect && __GNUC__ < 3
-# define __builtin_expect(expr, expected) (expr)
-#endif
-
-#include <fnmatch.h>
-
-#include <alloca.h>
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <stddef.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define WIDE_CHAR_SUPPORT \
-  (HAVE_WCTYPE_H && HAVE_BTOWC && HAVE_ISWCTYPE \
-   && HAVE_WMEMCHR && (HAVE_WMEMCPY || HAVE_WMEMPCPY))
-
-/* 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>
-# include <wchar.h>
-#endif
-
-/* We need some of the locale data (the collation sequence information)
-   but there is no interface to get this information in general.  Therefore
-   we support a correct implementation only in glibc.  */
-#ifdef _LIBC
-# include "../locale/localeinfo.h"
-# include "../locale/elem-hash.h"
-# include "../locale/coll-lookup.h"
-# include <shlib-compat.h>
-
-# define CONCAT(a,b) __CONCAT(a,b)
-# define mbsrtowcs __mbsrtowcs
-# define fnmatch __fnmatch
-extern int fnmatch (const char *pattern, const char *string, int flags);
-#endif
-
-#ifndef SIZE_MAX
-# define SIZE_MAX ((size_t) -1)
-#endif
-
-/* We often have to test for FNM_FILE_NAME and FNM_PERIOD being both set.  */
-#define NO_LEADING_PERIOD(flags) \
-  ((flags & (FNM_FILE_NAME | FNM_PERIOD)) == (FNM_FILE_NAME | FNM_PERIOD))
-
-/* Comment out all this code if we are using the GNU C Library, and are not
-   actually compiling the library itself, and have not detected a bug
-   in the library.  This code is part of the GNU C
-   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,
-   it is simpler to just do this in the source for each such file.  */
-
-#if defined _LIBC || !defined __GNU_LIBRARY__ || !HAVE_FNMATCH_GNU
-
-
-# if ! (defined isblank || (HAVE_ISBLANK && HAVE_DECL_ISBLANK))
-#  define isblank(c) ((c) == ' ' || (c) == '\t')
-# endif
-
-# define STREQ(s1, s2) (strcmp (s1, s2) == 0)
-
-# if defined _LIBC || WIDE_CHAR_SUPPORT
-/* The GNU C library provides support for user-defined character classes
-   and the functions from ISO C amendment 1.  */
-#  ifdef CHARCLASS_NAME_MAX
-#   define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
-#  else
-/* This shouldn't happen but some implementation might still have this
-   problem.  Use a reasonable default value.  */
-#   define CHAR_CLASS_MAX_LENGTH 256
-#  endif
-
-#  ifdef _LIBC
-#   define IS_CHAR_CLASS(string) __wctype (string)
-#  else
-#   define IS_CHAR_CLASS(string) wctype (string)
-#  endif
-
-#  ifdef _LIBC
-#   define ISWCTYPE(WC, WT)     __iswctype (WC, WT)
-#  else
-#   define ISWCTYPE(WC, WT)     iswctype (WC, WT)
-#  endif
-
-#  if (HAVE_MBSTATE_T && HAVE_MBSRTOWCS) || _LIBC
-/* In this case we are implementing the multibyte character handling.  */
-#   define HANDLE_MULTIBYTE     1
-#  endif
-
-# else
-#  define CHAR_CLASS_MAX_LENGTH  6 /* Namely, 'xdigit'.  */
-
-#  define IS_CHAR_CLASS(string)                                               \
-   (STREQ (string, "alpha") || STREQ (string, "upper")                        \
-    || STREQ (string, "lower") || STREQ (string, "digit")                     \
-    || STREQ (string, "alnum") || STREQ (string, "xdigit")                    \
-    || STREQ (string, "space") || STREQ (string, "print")                     \
-    || STREQ (string, "punct") || STREQ (string, "graph")                     \
-    || STREQ (string, "cntrl") || STREQ (string, "blank"))
-# endif
-
-/* Avoid depending on library functions or files
-   whose names are inconsistent.  */
-
-/* Global variable.  */
-static int posixly_correct;
-
-# ifndef internal_function
-/* Inside GNU libc we mark some function in a special way.  In other
-   environments simply ignore the marking.  */
-#  define internal_function
-# endif
-
-/* Note that this evaluates C many times.  */
-# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c))
-# define CHAR   char
-# define UCHAR  unsigned char
-# define INT    int
-# define FCT    internal_fnmatch
-# define EXT    ext_match
-# define END    end_pattern
-# define L_(CS) CS
-# ifdef _LIBC
-#  define BTOWC(C)      __btowc (C)
-# else
-#  define BTOWC(C)      btowc (C)
-# endif
-# define STRLEN(S) strlen (S)
-# define STRCAT(D, S) strcat (D, S)
-# ifdef _LIBC
-#  define MEMPCPY(D, S, N) __mempcpy (D, S, N)
-# else
-#  if HAVE_MEMPCPY
-#   define MEMPCPY(D, S, N) mempcpy (D, S, N)
-#  else
-#   define MEMPCPY(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
-#  endif
-# endif
-# define MEMCHR(S, C, N) memchr (S, C, N)
-# include "fnmatch_loop.c"
-
-
-# if HANDLE_MULTIBYTE
-#  define FOLD(c) ((flags & FNM_CASEFOLD) ? towlower (c) : (c))
-#  define CHAR  wchar_t
-#  define UCHAR wint_t
-#  define INT   wint_t
-#  define FCT   internal_fnwmatch
-#  define EXT   ext_wmatch
-#  define END   end_wpattern
-#  define L_(CS)        L##CS
-#  define BTOWC(C)      (C)
-#  ifdef _LIBC
-#   define STRLEN(S) __wcslen (S)
-#   define STRCAT(D, S) __wcscat (D, S)
-#   define MEMPCPY(D, S, N) __wmempcpy (D, S, N)
-#  else
-#   define STRLEN(S) wcslen (S)
-#   define STRCAT(D, S) wcscat (D, S)
-#   if HAVE_WMEMPCPY
-#    define MEMPCPY(D, S, N) wmempcpy (D, S, N)
-#   else
-#    define MEMPCPY(D, S, N) (wmemcpy (D, S, N) + (N))
-#   endif
-#  endif
-#  define MEMCHR(S, C, N) wmemchr (S, C, N)
-#  define WIDE_CHAR_VERSION 1
-
-#  undef IS_CHAR_CLASS
-/* We have to convert the wide character string in a multibyte string.  But
-   we know that the character class names consist of alphanumeric characters
-   from the portable character set, and since the wide character encoding
-   for a member of the portable character set is the same code point as
-   its single-byte encoding, we can use a simplified method to convert the
-   string to a multibyte character string.  */
-static wctype_t
-is_char_class (const wchar_t *wcs)
-{
-  char s[CHAR_CLASS_MAX_LENGTH + 1];
-  char *cp = s;
-
-  do
-    {
-      /* Test for a printable character from the portable character set.  */
-#  ifdef _LIBC
-      if (*wcs < 0x20 || *wcs > 0x7e
-          || *wcs == 0x24 || *wcs == 0x40 || *wcs == 0x60)
-        return (wctype_t) 0;
-#  else
-      switch (*wcs)
-        {
-        case L' ': case L'!': case L'"': case L'#': case L'%':
-        case L'&': case L'\'': case L'(': case L')': case L'*':
-        case L'+': case L',': case L'-': case L'.': case L'/':
-        case L'0': case L'1': case L'2': case L'3': case L'4':
-        case L'5': case L'6': case L'7': case L'8': case L'9':
-        case L':': case L';': case L'<': case L'=': case L'>':
-        case L'?':
-        case L'A': case L'B': case L'C': case L'D': case L'E':
-        case L'F': case L'G': case L'H': case L'I': case L'J':
-        case L'K': case L'L': case L'M': case L'N': case L'O':
-        case L'P': case L'Q': case L'R': case L'S': case L'T':
-        case L'U': case L'V': case L'W': case L'X': case L'Y':
-        case L'Z':
-        case L'[': case L'\\': case L']': case L'^': case L'_':
-        case L'a': case L'b': case L'c': case L'd': case L'e':
-        case L'f': case L'g': case L'h': case L'i': case L'j':
-        case L'k': case L'l': case L'm': case L'n': case L'o':
-        case L'p': case L'q': case L'r': case L's': case L't':
-        case L'u': case L'v': case L'w': case L'x': case L'y':
-        case L'z': case L'{': case L'|': case L'}': case L'~':
-          break;
-        default:
-          return (wctype_t) 0;
-        }
-#  endif
-
-      /* Avoid overrunning the buffer.  */
-      if (cp == s + CHAR_CLASS_MAX_LENGTH)
-        return (wctype_t) 0;
-
-      *cp++ = (char) *wcs++;
-    }
-  while (*wcs != L'\0');
-
-  *cp = '\0';
-
-#  ifdef _LIBC
-  return __wctype (s);
-#  else
-  return wctype (s);
-#  endif
-}
-#  define IS_CHAR_CLASS(string) is_char_class (string)
-
-#  include "fnmatch_loop.c"
-# endif
-
-
-int
-fnmatch (const char *pattern, const char *string, int flags)
-{
-# if HANDLE_MULTIBYTE
-#  define ALLOCA_LIMIT 2000
-  if (__builtin_expect (MB_CUR_MAX, 1) != 1)
-    {
-      mbstate_t ps;
-      size_t patsize;
-      size_t strsize;
-      size_t totsize;
-      wchar_t *wpattern;
-      wchar_t *wstring;
-      int res;
-
-      /* Calculate the size needed to convert the strings to
-         wide characters.  */
-      memset (&ps, '\0', sizeof (ps));
-      patsize = mbsrtowcs (NULL, &pattern, 0, &ps) + 1;
-      if (__builtin_expect (patsize != 0, 1))
-        {
-          assert (mbsinit (&ps));
-          strsize = mbsrtowcs (NULL, &string, 0, &ps) + 1;
-          if (__builtin_expect (strsize != 0, 1))
-            {
-              assert (mbsinit (&ps));
-              totsize = patsize + strsize;
-              if (__builtin_expect (! (patsize <= totsize
-                                       && totsize <= SIZE_MAX / sizeof 
(wchar_t)),
-                                    0))
-                {
-                  errno = ENOMEM;
-                  return -1;
-                }
-
-              /* Allocate room for the wide characters.  */
-              if (__builtin_expect (totsize < ALLOCA_LIMIT, 1))
-                wpattern = (wchar_t *) alloca (totsize * sizeof (wchar_t));
-              else
-                {
-                  wpattern = malloc (totsize * sizeof (wchar_t));
-                  if (__builtin_expect (! wpattern, 0))
-                    {
-                      errno = ENOMEM;
-                      return -1;
-                    }
-                }
-              wstring = wpattern + patsize;
-
-              /* Convert the strings into wide characters.  */
-              mbsrtowcs (wpattern, &pattern, patsize, &ps);
-              assert (mbsinit (&ps));
-              mbsrtowcs (wstring, &string, strsize, &ps);
-
-              res = internal_fnwmatch (wpattern, wstring, wstring + strsize - 
1,
-                                       flags & FNM_PERIOD, flags);
-
-              if (__builtin_expect (! (totsize < ALLOCA_LIMIT), 0))
-                free (wpattern);
-              return res;
-            }
-        }
-    }
-
-# endif /* HANDLE_MULTIBYTE */
-
-  return internal_fnmatch (pattern, string, string + strlen (string),
-                           flags & FNM_PERIOD, flags);
-}
-
-# ifdef _LIBC
-#  undef fnmatch
-versioned_symbol (libc, __fnmatch, fnmatch, GLIBC_2_2_3);
-#  if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_3)
-strong_alias (__fnmatch, __fnmatch_old)
-compat_symbol (libc, __fnmatch_old, fnmatch, GLIBC_2_0);
-#  endif
-libc_hidden_ver (__fnmatch, fnmatch)
-# endif
-
-#endif  /* _LIBC or not __GNU_LIBRARY__.  */
diff --git a/grub-core/gnulib/fnmatch.in.h b/grub-core/gnulib/fnmatch.in.h
deleted file mode 100644
index d39ce2f1c..000000000
--- a/grub-core/gnulib/fnmatch.in.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 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.
-
-   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 _FNMATCH_H
-#define _FNMATCH_H      1
-
-/* The definition of _GL_ARG_NONNULL is copied here.  */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* We #undef these before defining them because some losing systems
-   (HP-UX A.08.07 for example) define these in <unistd.h>.  */
-#undef  FNM_PATHNAME
-#undef  FNM_NOESCAPE
-#undef  FNM_PERIOD
-
-/* 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.  */
-
-#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_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.  */
-#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
-   returned but the conformance test suites still require the symbol
-   to be defined.  */
-#ifdef _XOPEN_SOURCE
-# define FNM_NOSYS      (-1)
-#endif
-
-/* Match NAME against the file name pattern PATTERN,
-   returning zero if it matches, FNM_NOMATCH if not.  */
-extern int fnmatch (const char *__pattern, const char *__name,
-                    int __flags)
-     _GL_ARG_NONNULL ((1, 2));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* fnmatch.h */
diff --git a/grub-core/gnulib/fnmatch_loop.c b/grub-core/gnulib/fnmatch_loop.c
deleted file mode 100644
index f57cd63f9..000000000
--- a/grub-core/gnulib/fnmatch_loop.c
+++ /dev/null
@@ -1,1219 +0,0 @@
-/* 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
-   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/>.  */
-
-/* Match STRING against the file name pattern PATTERN, returning zero if
-   it matches, nonzero if not.  */
-static int EXT (INT opt, const CHAR *pattern, const CHAR *string,
-                const CHAR *string_end, bool no_leading_period, int flags)
-     internal_function;
-static const CHAR *END (const CHAR *patternp) internal_function;
-
-static int
-internal_function
-FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
-     bool no_leading_period, int flags)
-{
-  register const CHAR *p = pattern, *n = string;
-  register UCHAR c;
-#ifdef _LIBC
-# if WIDE_CHAR_VERSION
-  const char *collseq = (const char *)
-    _NL_CURRENT(LC_COLLATE, _NL_COLLATE_COLLSEQWC);
-# else
-  const UCHAR *collseq = (const UCHAR *)
-    _NL_CURRENT(LC_COLLATE, _NL_COLLATE_COLLSEQMB);
-# endif
-#endif
-
-  while ((c = *p++) != L_('\0'))
-    {
-      bool new_no_leading_period = false;
-      c = FOLD (c);
-
-      switch (c)
-        {
-        case L_('?'):
-          if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
-            {
-              int res;
-
-              res = EXT (c, p, n, string_end, no_leading_period,
-                         flags);
-              if (res != -1)
-                return res;
-            }
-
-          if (n == string_end)
-            return FNM_NOMATCH;
-          else if (*n == L_('/') && (flags & FNM_FILE_NAME))
-            return FNM_NOMATCH;
-          else if (*n == L_('.') && no_leading_period)
-            return FNM_NOMATCH;
-          break;
-
-        case L_('\\'):
-          if (!(flags & FNM_NOESCAPE))
-            {
-              c = *p++;
-              if (c == L_('\0'))
-                /* Trailing \ loses.  */
-                return FNM_NOMATCH;
-              c = FOLD (c);
-            }
-          if (n == string_end || FOLD ((UCHAR) *n) != c)
-            return FNM_NOMATCH;
-          break;
-
-        case L_('*'):
-          if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
-            {
-              int res;
-
-              res = EXT (c, p, n, string_end, no_leading_period,
-                         flags);
-              if (res != -1)
-                return res;
-            }
-
-          if (n != string_end && *n == L_('.') && no_leading_period)
-            return FNM_NOMATCH;
-
-          for (c = *p++; c == L_('?') || c == L_('*'); c = *p++)
-            {
-              if (*p == L_('(') && (flags & FNM_EXTMATCH) != 0)
-                {
-                  const CHAR *endp = END (p);
-                  if (endp != p)
-                    {
-                      /* This is a pattern.  Skip over it.  */
-                      p = endp;
-                      continue;
-                    }
-                }
-
-              if (c == L_('?'))
-                {
-                  /* A ? needs to match one character.  */
-                  if (n == string_end)
-                    /* There isn't another character; no match.  */
-                    return FNM_NOMATCH;
-                  else if (*n == L_('/')
-                           && __builtin_expect (flags & FNM_FILE_NAME, 0))
-                    /* A slash does not match a wildcard under
-                       FNM_FILE_NAME.  */
-                    return FNM_NOMATCH;
-                  else
-                    /* One character of the string is consumed in matching
-                       this ? wildcard, so *??? won't match if there are
-                       less than three characters.  */
-                    ++n;
-                }
-            }
-
-          if (c == L_('\0'))
-            /* The wildcard(s) is/are the last element of the pattern.
-               If the name is a file name and contains another slash
-               this means it cannot match, unless the FNM_LEADING_DIR
-               flag is set.  */
-            {
-              int result = (flags & FNM_FILE_NAME) == 0 ? 0 : FNM_NOMATCH;
-
-              if (flags & FNM_FILE_NAME)
-                {
-                  if (flags & FNM_LEADING_DIR)
-                    result = 0;
-                  else
-                    {
-                      if (MEMCHR (n, L_('/'), string_end - n) == NULL)
-                        result = 0;
-                    }
-                }
-
-              return result;
-            }
-          else
-            {
-              const CHAR *endp;
-
-              endp = MEMCHR (n, (flags & FNM_FILE_NAME) ? L_('/') : L_('\0'),
-                             string_end - n);
-              if (endp == NULL)
-                endp = string_end;
-
-              if (c == L_('[')
-                  || (__builtin_expect (flags & FNM_EXTMATCH, 0) != 0
-                      && (c == L_('@') || c == L_('+') || c == L_('!'))
-                      && *p == L_('(')))
-                {
-                  int flags2 = ((flags & FNM_FILE_NAME)
-                                ? flags : (flags & ~FNM_PERIOD));
-                  bool no_leading_period2 = no_leading_period;
-
-                  for (--p; n < endp; ++n, no_leading_period2 = false)
-                    if (FCT (p, n, string_end, no_leading_period2, flags2)
-                        == 0)
-                      return 0;
-                }
-              else if (c == L_('/') && (flags & FNM_FILE_NAME))
-                {
-                  while (n < string_end && *n != L_('/'))
-                    ++n;
-                  if (n < string_end && *n == L_('/')
-                      && (FCT (p, n + 1, string_end, flags & FNM_PERIOD, flags)
-                          == 0))
-                    return 0;
-                }
-              else
-                {
-                  int flags2 = ((flags & FNM_FILE_NAME)
-                                ? flags : (flags & ~FNM_PERIOD));
-                  int no_leading_period2 = no_leading_period;
-
-                  if (c == L_('\\') && !(flags & FNM_NOESCAPE))
-                    c = *p;
-                  c = FOLD (c);
-                  for (--p; n < endp; ++n, no_leading_period2 = false)
-                    if (FOLD ((UCHAR) *n) == c
-                        && (FCT (p, n, string_end, no_leading_period2, flags2)
-                            == 0))
-                      return 0;
-                }
-            }
-
-          /* If we come here no match is possible with the wildcard.  */
-          return FNM_NOMATCH;
-
-        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;
-
-            if (posixly_correct == 0)
-              posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1;
-
-            if (n == string_end)
-              return FNM_NOMATCH;
-
-            if (*n == L_('.') && no_leading_period)
-              return FNM_NOMATCH;
-
-            if (*n == L_('/') && (flags & FNM_FILE_NAME))
-              /* '/' cannot be matched.  */
-              return FNM_NOMATCH;
-
-            not = (*p == L_('!') || (posixly_correct < 0 && *p == L_('^')));
-            if (not)
-              ++p;
-
-            fn = FOLD ((UCHAR) *n);
-
-            c = *p++;
-            for (;;)
-              {
-                if (!(flags & FNM_NOESCAPE) && c == L_('\\'))
-                  {
-                    if (*p == L_('\0'))
-                      return FNM_NOMATCH;
-                    c = FOLD ((UCHAR) *p);
-                    ++p;
-
-                    goto normal_bracket;
-                  }
-                else if (c == L_('[') && *p == L_(':'))
-                  {
-                    /* Leave room for the null.  */
-                    CHAR str[CHAR_CLASS_MAX_LENGTH + 1];
-                    size_t c1 = 0;
-#if defined _LIBC || WIDE_CHAR_SUPPORT
-                    wctype_t wt;
-#endif
-                    const CHAR *startp = p;
-
-                    for (;;)
-                      {
-                        if (c1 == CHAR_CLASS_MAX_LENGTH)
-                          /* The name is too long and therefore the pattern
-                             is ill-formed.  */
-                          return FNM_NOMATCH;
-
-                        c = *++p;
-                        if (c == L_(':') && p[1] == L_(']'))
-                          {
-                            p += 2;
-                            break;
-                          }
-                        if (c < L_('a') || c >= L_('z'))
-                          {
-                            /* This cannot possibly be a character class name.
-                               Match it as a normal range.  */
-                            p = startp;
-                            c = L_('[');
-                            goto normal_bracket;
-                          }
-                        str[c1++] = c;
-                      }
-                    str[c1] = L_('\0');
-
-#if defined _LIBC || WIDE_CHAR_SUPPORT
-                    wt = IS_CHAR_CLASS (str);
-                    if (wt == 0)
-                      /* Invalid character class name.  */
-                      return FNM_NOMATCH;
-
-# if defined _LIBC && ! WIDE_CHAR_VERSION
-                    /* The following code is glibc specific but does
-                       there a good job in speeding up the code since
-                       we can avoid the btowc() call.  */
-                    if (_ISCTYPE ((UCHAR) *n, wt))
-                      goto matched;
-# else
-                    if (ISWCTYPE (BTOWC ((UCHAR) *n), wt))
-                      goto matched;
-# endif
-#else
-                    if ((STREQ (str, L_("alnum")) && isalnum ((UCHAR) *n))
-                        || (STREQ (str, L_("alpha")) && isalpha ((UCHAR) *n))
-                        || (STREQ (str, L_("blank")) && isblank ((UCHAR) *n))
-                        || (STREQ (str, L_("cntrl")) && iscntrl ((UCHAR) *n))
-                        || (STREQ (str, L_("digit")) && isdigit ((UCHAR) *n))
-                        || (STREQ (str, L_("graph")) && isgraph ((UCHAR) *n))
-                        || (STREQ (str, L_("lower")) && islower ((UCHAR) *n))
-                        || (STREQ (str, L_("print")) && isprint ((UCHAR) *n))
-                        || (STREQ (str, L_("punct")) && ispunct ((UCHAR) *n))
-                        || (STREQ (str, L_("space")) && isspace ((UCHAR) *n))
-                        || (STREQ (str, L_("upper")) && isupper ((UCHAR) *n))
-                        || (STREQ (str, L_("xdigit")) && isxdigit ((UCHAR) 
*n)))
-                      goto matched;
-#endif
-                    c = *p++;
-                  }
-#ifdef _LIBC
-                else if (c == L_('[') && *p == L_('='))
-                  {
-                    UCHAR str[1];
-                    uint32_t nrules =
-                      _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
-                    const CHAR *startp = p;
-
-                    c = *++p;
-                    if (c == L_('\0'))
-                      {
-                        p = startp;
-                        c = L_('[');
-                        goto normal_bracket;
-                      }
-                    str[0] = c;
-
-                    c = *++p;
-                    if (c != L_('=') || p[1] != L_(']'))
-                      {
-                        p = startp;
-                        c = L_('[');
-                        goto normal_bracket;
-                      }
-                    p += 2;
-
-                    if (nrules == 0)
-                      {
-                        if ((UCHAR) *n == str[0])
-                          goto matched;
-                      }
-                    else
-                      {
-                        const int32_t *table;
-# if WIDE_CHAR_VERSION
-                        const int32_t *weights;
-                        const int32_t *extra;
-# else
-                        const unsigned char *weights;
-                        const unsigned char *extra;
-# endif
-                        const int32_t *indirect;
-                        int32_t idx;
-                        const UCHAR *cp = (const UCHAR *) str;
-
-                        /* This #include defines a local function!  */
-# if WIDE_CHAR_VERSION
-#  include <locale/weightwc.h>
-# else
-#  include <locale/weight.h>
-# endif
-
-# if WIDE_CHAR_VERSION
-                        table = (const int32_t *)
-                          _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEWC);
-                        weights = (const int32_t *)
-                          _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTWC);
-                        extra = (const int32_t *)
-                          _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAWC);
-                        indirect = (const int32_t *)
-                          _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTWC);
-# else
-                        table = (const int32_t *)
-                          _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
-                        weights = (const unsigned char *)
-                          _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTMB);
-                        extra = (const unsigned char *)
-                          _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
-                        indirect = (const int32_t *)
-                          _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB);
-# endif
-
-                        idx = findidx (&cp);
-                        if (idx != 0)
-                          {
-                            /* We found a table entry.  Now see whether the
-                               character we are currently at has the same
-                               equivalence class value.  */
-                            int len = weights[idx & 0xffffff];
-                            int32_t idx2;
-                            const UCHAR *np = (const UCHAR *) n;
-
-                            idx2 = findidx (&np);
-                            if (idx2 != 0
-                                && (idx >> 24) == (idx2 >> 24)
-                                && len == weights[idx2 & 0xffffff])
-                              {
-                                int cnt = 0;
-
-                                idx &= 0xffffff;
-                                idx2 &= 0xffffff;
-
-                                while (cnt < len
-                                       && (weights[idx + 1 + cnt]
-                                           == weights[idx2 + 1 + cnt]))
-                                  ++cnt;
-
-                                if (cnt == len)
-                                  goto matched;
-                              }
-                          }
-                      }
-
-                    c = *p++;
-                  }
-#endif
-                else if (c == L_('\0'))
-                  {
-                    /* [ unterminated, treat as normal character.  */
-                    p = p_init;
-                    n = n_init;
-                    c = L_('[');
-                    goto normal_match;
-                  }
-                else
-                  {
-                    bool is_range = false;
-
-#ifdef _LIBC
-                    bool is_seqval = false;
-
-                    if (c == L_('[') && *p == L_('.'))
-                      {
-                        uint32_t nrules =
-                          _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
-                        const CHAR *startp = p;
-                        size_t c1 = 0;
-
-                        while (1)
-                          {
-                            c = *++p;
-                            if (c == L_('.') && p[1] == L_(']'))
-                              {
-                                p += 2;
-                                break;
-                              }
-                            if (c == '\0')
-                              return FNM_NOMATCH;
-                            ++c1;
-                          }
-
-                        /* We have to handling the symbols differently in
-                           ranges since then the collation sequence is
-                           important.  */
-                        is_range = *p == L_('-') && p[1] != L_('\0');
-
-                        if (nrules == 0)
-                          {
-                            /* There are no names defined in the collation
-                               data.  Therefore we only accept the trivial
-                               names consisting of the character itself.  */
-                            if (c1 != 1)
-                              return FNM_NOMATCH;
-
-                            if (!is_range && *n == startp[1])
-                              goto matched;
-
-                            cold = startp[1];
-                            c = *p++;
-                          }
-                        else
-                          {
-                            int32_t table_size;
-                            const int32_t *symb_table;
-# ifdef WIDE_CHAR_VERSION
-                            char str[c1];
-                            size_t strcnt;
-# else
-#  define str (startp + 1)
-# endif
-                            const unsigned char *extra;
-                            int32_t idx;
-                            int32_t elem;
-                            int32_t second;
-                            int32_t hash;
-
-# ifdef WIDE_CHAR_VERSION
-                            /* We have to convert the name to a single-byte
-                               string.  This is possible since the names
-                               consist of ASCII characters and the internal
-                               representation is UCS4.  */
-                            for (strcnt = 0; strcnt < c1; ++strcnt)
-                              str[strcnt] = startp[1 + strcnt];
-# endif
-
-                            table_size =
-                              _NL_CURRENT_WORD (LC_COLLATE,
-                                                _NL_COLLATE_SYMB_HASH_SIZEMB);
-                            symb_table = (const int32_t *)
-                              _NL_CURRENT (LC_COLLATE,
-                                           _NL_COLLATE_SYMB_TABLEMB);
-                            extra = (const unsigned char *)
-                              _NL_CURRENT (LC_COLLATE,
-                                           _NL_COLLATE_SYMB_EXTRAMB);
-
-                            /* Locate the character in the hashing table.  */
-                            hash = elem_hash (str, c1);
-
-                            idx = 0;
-                            elem = hash % table_size;
-                            if (symb_table[2 * elem] != 0)
-                              {
-                                second = hash % (table_size - 2) + 1;
-
-                                do
-                                  {
-                                    /* First compare the hashing value.  */
-                                    if (symb_table[2 * elem] == hash
-                                        && (c1
-                                            == extra[symb_table[2 * elem + 1]])
-                                        && memcmp (str,
-                                                   &extra[symb_table[2 * elem
-                                                                     + 1]
-                                                          + 1], c1) == 0)
-                                      {
-                                        /* Yep, this is the entry.  */
-                                        idx = symb_table[2 * elem + 1];
-                                        idx += 1 + extra[idx];
-                                        break;
-                                      }
-
-                                    /* Next entry.  */
-                                    elem += second;
-                                  }
-                                while (symb_table[2 * elem] != 0);
-                              }
-
-                            if (symb_table[2 * elem] != 0)
-                              {
-                                /* Compare the byte sequence but only if
-                                   this is not part of a range.  */
-# ifdef WIDE_CHAR_VERSION
-                                int32_t *wextra;
-
-                                idx += 1 + extra[idx];
-                                /* Adjust for the alignment.  */
-                                idx = (idx + 3) & ~3;
-
-                                wextra = (int32_t *) &extra[idx + 4];
-# endif
-
-                                if (! is_range)
-                                  {
-# ifdef WIDE_CHAR_VERSION
-                                    for (c1 = 0;
-                                         (int32_t) c1 < wextra[idx];
-                                         ++c1)
-                                      if (n[c1] != wextra[1 + c1])
-                                        break;
-
-                                    if ((int32_t) c1 == wextra[idx])
-                                      goto matched;
-# else
-                                    for (c1 = 0; c1 < extra[idx]; ++c1)
-                                      if (n[c1] != extra[1 + c1])
-                                        break;
-
-                                    if (c1 == extra[idx])
-                                      goto matched;
-# endif
-                                  }
-
-                                /* Get the collation sequence value.  */
-                                is_seqval = true;
-# ifdef WIDE_CHAR_VERSION
-                                cold = wextra[1 + wextra[idx]];
-# else
-                                /* Adjust for the alignment.  */
-                                idx += 1 + extra[idx];
-                                idx = (idx + 3) & ~4;
-                                cold = *((int32_t *) &extra[idx]);
-# endif
-
-                                c = *p++;
-                              }
-                            else if (c1 == 1)
-                              {
-                                /* No valid character.  Match it as a
-                                   single byte.  */
-                                if (!is_range && *n == str[0])
-                                  goto matched;
-
-                                cold = str[0];
-                                c = *p++;
-                              }
-                            else
-                              return FNM_NOMATCH;
-                          }
-                      }
-                    else
-# undef str
-#endif
-                      {
-                        c = FOLD (c);
-                      normal_bracket:
-
-                        /* We have to handling the symbols differently in
-                           ranges since then the collation sequence is
-                           important.  */
-                        is_range = (*p == L_('-') && p[1] != L_('\0')
-                                    && p[1] != L_(']'));
-
-                        if (!is_range && c == fn)
-                          goto matched;
-
-#if _LIBC
-                        /* This is needed if we goto normal_bracket; from
-                           outside of is_seqval's scope.  */
-                        is_seqval = false;
-#endif
-
-                        cold = c;
-                        c = *p++;
-                      }
-
-                    if (c == L_('-') && *p != L_(']'))
-                      {
-#if _LIBC
-                        /* We have to find the collation sequence
-                           value for C.  Collation sequence is nothing
-                           we can regularly access.  The sequence
-                           value is defined by the order in which the
-                           definitions of the collation values for the
-                           various characters appear in the source
-                           file.  A strange concept, nowhere
-                           documented.  */
-                        uint32_t fcollseq;
-                        uint32_t lcollseq;
-                        UCHAR cend = *p++;
-
-# ifdef WIDE_CHAR_VERSION
-                        /* 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
-                             we are supposed to match.  This means we are
-                             failing.  */
-                          goto range_not_matched;
-
-                        if (is_seqval)
-                          lcollseq = cold;
-                        else
-                          lcollseq = __collseq_table_lookup (collseq, cold);
-# else
-                        fcollseq = collseq[fn];
-                        lcollseq = is_seqval ? cold : collseq[(UCHAR) cold];
-# endif
-
-                        is_seqval = false;
-                        if (cend == L_('[') && *p == L_('.'))
-                          {
-                            uint32_t nrules =
-                              _NL_CURRENT_WORD (LC_COLLATE,
-                                                _NL_COLLATE_NRULES);
-                            const CHAR *startp = p;
-                            size_t c1 = 0;
-
-                            while (1)
-                              {
-                                c = *++p;
-                                if (c == L_('.') && p[1] == L_(']'))
-                                  {
-                                    p += 2;
-                                    break;
-                                  }
-                                if (c == '\0')
-                                  return FNM_NOMATCH;
-                                ++c1;
-                              }
-
-                            if (nrules == 0)
-                              {
-                                /* There are no names defined in the
-                                   collation data.  Therefore we only
-                                   accept the trivial names consisting
-                                   of the character itself.  */
-                                if (c1 != 1)
-                                  return FNM_NOMATCH;
-
-                                cend = startp[1];
-                              }
-                            else
-                              {
-                                int32_t table_size;
-                                const int32_t *symb_table;
-# ifdef WIDE_CHAR_VERSION
-                                char str[c1];
-                                size_t strcnt;
-# else
-#  define str (startp + 1)
-# endif
-                                const unsigned char *extra;
-                                int32_t idx;
-                                int32_t elem;
-                                int32_t second;
-                                int32_t hash;
-
-# ifdef WIDE_CHAR_VERSION
-                                /* We have to convert the name to a single-byte
-                                   string.  This is possible since the names
-                                   consist of ASCII characters and the internal
-                                   representation is UCS4.  */
-                                for (strcnt = 0; strcnt < c1; ++strcnt)
-                                  str[strcnt] = startp[1 + strcnt];
-# endif
-
-                                table_size =
-                                  _NL_CURRENT_WORD (LC_COLLATE,
-                                                    
_NL_COLLATE_SYMB_HASH_SIZEMB);
-                                symb_table = (const int32_t *)
-                                  _NL_CURRENT (LC_COLLATE,
-                                               _NL_COLLATE_SYMB_TABLEMB);
-                                extra = (const unsigned char *)
-                                  _NL_CURRENT (LC_COLLATE,
-                                               _NL_COLLATE_SYMB_EXTRAMB);
-
-                                /* Locate the character in the hashing
-                                   table.  */
-                                hash = elem_hash (str, c1);
-
-                                idx = 0;
-                                elem = hash % table_size;
-                                if (symb_table[2 * elem] != 0)
-                                  {
-                                    second = hash % (table_size - 2) + 1;
-
-                                    do
-                                      {
-                                        /* First compare the hashing value.  */
-                                        if (symb_table[2 * elem] == hash
-                                            && (c1
-                                                == extra[symb_table[2 * elem + 
1]])
-                                            && memcmp (str,
-                                                       &extra[symb_table[2 * 
elem + 1]
-                                                              + 1], c1) == 0)
-                                          {
-                                            /* Yep, this is the entry.  */
-                                            idx = symb_table[2 * elem + 1];
-                                            idx += 1 + extra[idx];
-                                            break;
-                                          }
-
-                                        /* Next entry.  */
-                                        elem += second;
-                                      }
-                                    while (symb_table[2 * elem] != 0);
-                                  }
-
-                                if (symb_table[2 * elem] != 0)
-                                  {
-                                    /* Compare the byte sequence but only if
-                                       this is not part of a range.  */
-# ifdef WIDE_CHAR_VERSION
-                                    int32_t *wextra;
-
-                                    idx += 1 + extra[idx];
-                                    /* Adjust for the alignment.  */
-                                    idx = (idx + 3) & ~4;
-
-                                    wextra = (int32_t *) &extra[idx + 4];
-# endif
-                                    /* Get the collation sequence value.  */
-                                    is_seqval = true;
-# ifdef WIDE_CHAR_VERSION
-                                    cend = wextra[1 + wextra[idx]];
-# else
-                                    /* Adjust for the alignment.  */
-                                    idx += 1 + extra[idx];
-                                    idx = (idx + 3) & ~4;
-                                    cend = *((int32_t *) &extra[idx]);
-# endif
-                                  }
-                                else if (symb_table[2 * elem] != 0 && c1 == 1)
-                                  {
-                                    cend = str[0];
-                                    c = *p++;
-                                  }
-                                else
-                                  return FNM_NOMATCH;
-                              }
-# undef str
-                          }
-                        else
-                          {
-                            if (!(flags & FNM_NOESCAPE) && cend == L_('\\'))
-                              cend = *p++;
-                            if (cend == L_('\0'))
-                              return FNM_NOMATCH;
-                            cend = FOLD (cend);
-                          }
-
-                        /* XXX It is not entirely clear to me how to handle
-                           characters which are not mentioned in the
-                           collation specification.  */
-                        if (
-# ifdef WIDE_CHAR_VERSION
-                            lcollseq == 0xffffffff ||
-# endif
-                            lcollseq <= fcollseq)
-                          {
-                            /* We have to look at the upper bound.  */
-                            uint32_t hcollseq;
-
-                            if (is_seqval)
-                              hcollseq = cend;
-                            else
-                              {
-# ifdef WIDE_CHAR_VERSION
-                                hcollseq =
-                                  __collseq_table_lookup (collseq, cend);
-                                if (hcollseq == ~((uint32_t) 0))
-                                  {
-                                    /* Hum, no information about the upper
-                                       bound.  The matching succeeds if the
-                                       lower bound is matched exactly.  */
-                                    if (lcollseq != fcollseq)
-                                      goto range_not_matched;
-
-                                    goto matched;
-                                  }
-# else
-                                hcollseq = collseq[cend];
-# endif
-                              }
-
-                            if (lcollseq <= hcollseq && fcollseq <= hcollseq)
-                              goto matched;
-                          }
-# ifdef WIDE_CHAR_VERSION
-                      range_not_matched:
-# endif
-#else
-                        /* We use a boring value comparison of the character
-                           values.  This is better than comparing using
-                           'strcoll' since the latter would have surprising
-                           and sometimes fatal consequences.  */
-                        UCHAR cend = *p++;
-
-                        if (!(flags & FNM_NOESCAPE) && cend == L_('\\'))
-                          cend = *p++;
-                        if (cend == L_('\0'))
-                          return FNM_NOMATCH;
-
-                        /* It is a range.  */
-                        if (cold <= fn && fn <= cend)
-                          goto matched;
-#endif
-
-                        c = *p++;
-                      }
-                  }
-
-                if (c == L_(']'))
-                  break;
-              }
-
-            if (!not)
-              return FNM_NOMATCH;
-            break;
-
-          matched:
-            /* Skip the rest of the [...] that already matched.  */
-            do
-              {
-              ignore_next:
-                c = *p++;
-
-                if (c == L_('\0'))
-                  /* [... (unterminated) loses.  */
-                  return FNM_NOMATCH;
-
-                if (!(flags & FNM_NOESCAPE) && c == L_('\\'))
-                  {
-                    if (*p == L_('\0'))
-                      return FNM_NOMATCH;
-                    /* XXX 1003.2d11 is unclear if this is right.  */
-                    ++p;
-                  }
-                else if (c == L_('[') && *p == L_(':'))
-                  {
-                    int c1 = 0;
-                    const CHAR *startp = p;
-
-                    while (1)
-                      {
-                        c = *++p;
-                        if (++c1 == CHAR_CLASS_MAX_LENGTH)
-                          return FNM_NOMATCH;
-
-                        if (*p == L_(':') && p[1] == L_(']'))
-                          break;
-
-                        if (c < L_('a') || c >= L_('z'))
-                          {
-                            p = startp;
-                            goto ignore_next;
-                          }
-                      }
-                    p += 2;
-                    c = *p++;
-                  }
-                else if (c == L_('[') && *p == L_('='))
-                  {
-                    c = *++p;
-                    if (c == L_('\0'))
-                      return FNM_NOMATCH;
-                    c = *++p;
-                    if (c != L_('=') || p[1] != L_(']'))
-                      return FNM_NOMATCH;
-                    p += 2;
-                    c = *p++;
-                  }
-                else if (c == L_('[') && *p == L_('.'))
-                  {
-                    ++p;
-                    while (1)
-                      {
-                        c = *++p;
-                        if (c == '\0')
-                          return FNM_NOMATCH;
-
-                        if (*p == L_('.') && p[1] == L_(']'))
-                          break;
-                      }
-                    p += 2;
-                    c = *p++;
-                  }
-              }
-            while (c != L_(']'));
-            if (not)
-              return FNM_NOMATCH;
-          }
-          break;
-
-        case L_('+'):
-        case L_('@'):
-        case L_('!'):
-          if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
-            {
-              int res;
-
-              res = EXT (c, p, n, string_end, no_leading_period, flags);
-              if (res != -1)
-                return res;
-            }
-          goto normal_match;
-
-        case L_('/'):
-          if (NO_LEADING_PERIOD (flags))
-            {
-              if (n == string_end || c != (UCHAR) *n)
-                return FNM_NOMATCH;
-
-              new_no_leading_period = true;
-              break;
-            }
-          /* FALLTHROUGH */
-        default:
-        normal_match:
-          if (n == string_end || c != FOLD ((UCHAR) *n))
-            return FNM_NOMATCH;
-        }
-
-      no_leading_period = new_no_leading_period;
-      ++n;
-    }
-
-  if (n == string_end)
-    return 0;
-
-  if ((flags & FNM_LEADING_DIR) && n != string_end && *n == L_('/'))
-    /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz".  */
-    return 0;
-
-  return FNM_NOMATCH;
-}
-
-
-static const CHAR *
-internal_function
-END (const CHAR *pattern)
-{
-  const CHAR *p = pattern;
-
-  while (1)
-    if (*++p == L_('\0'))
-      /* This is an invalid pattern.  */
-      return pattern;
-    else if (*p == L_('['))
-      {
-        /* Handle brackets special.  */
-        if (posixly_correct == 0)
-          posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1;
-
-        /* Skip the not sign.  We have to recognize it because of a possibly
-           following ']'.  */
-        if (*++p == L_('!') || (posixly_correct < 0 && *p == L_('^')))
-          ++p;
-        /* A leading ']' is recognized as such.  */
-        if (*p == L_(']'))
-          ++p;
-        /* Skip over all characters of the list.  */
-        while (*p != L_(']'))
-          if (*p++ == L_('\0'))
-            /* This is no valid pattern.  */
-            return pattern;
-      }
-    else if ((*p == L_('?') || *p == L_('*') || *p == L_('+') || *p == L_('@')
-              || *p == L_('!')) && p[1] == L_('('))
-      p = END (p + 1);
-    else if (*p == L_(')'))
-      break;
-
-  return p + 1;
-}
-
-
-static int
-internal_function
-EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
-     bool no_leading_period, int flags)
-{
-  const CHAR *startp;
-  size_t level;
-  struct patternlist
-  {
-    struct patternlist *next;
-    CHAR str[1];
-  } *list = NULL;
-  struct patternlist **lastp = &list;
-  size_t pattern_len = STRLEN (pattern);
-  const CHAR *p;
-  const CHAR *rs;
-  enum { ALLOCA_LIMIT = 8000 };
-
-  /* Parse the pattern.  Store the individual parts in the list.  */
-  level = 0;
-  for (startp = p = pattern + 1; ; ++p)
-    if (*p == L_('\0'))
-      /* This is an invalid pattern.  */
-      return -1;
-    else if (*p == L_('['))
-      {
-        /* Handle brackets special.  */
-        if (posixly_correct == 0)
-          posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1;
-
-        /* Skip the not sign.  We have to recognize it because of a possibly
-           following ']'.  */
-        if (*++p == L_('!') || (posixly_correct < 0 && *p == L_('^')))
-          ++p;
-        /* A leading ']' is recognized as such.  */
-        if (*p == L_(']'))
-          ++p;
-        /* Skip over all characters of the list.  */
-        while (*p != L_(']'))
-          if (*p++ == L_('\0'))
-            /* This is no valid pattern.  */
-            return -1;
-      }
-    else if ((*p == L_('?') || *p == L_('*') || *p == L_('+') || *p == L_('@')
-              || *p == L_('!')) && p[1] == L_('('))
-      /* Remember the nesting level.  */
-      ++level;
-    else if (*p == L_(')'))
-      {
-        if (level-- == 0)
-          {
-            /* This means we found the end of the pattern.  */
-#define NEW_PATTERN \
-            struct patternlist *newp;                                         \
-            size_t plen;                                                      \
-            size_t plensize;                                                  \
-            size_t newpsize;                                                  \
-                                                                              \
-            plen = (opt == L_('?') || opt == L_('@')                          \
-                    ? pattern_len                                             \
-                    : p - startp + 1UL);                                      \
-            plensize = plen * sizeof (CHAR);                                  \
-            newpsize = offsetof (struct patternlist, str) + plensize;         \
-            if ((size_t) -1 / sizeof (CHAR) < plen                            \
-                || newpsize < offsetof (struct patternlist, str)              \
-                || ALLOCA_LIMIT <= newpsize)                                  \
-              return -1;                                                      \
-            newp = (struct patternlist *) alloca (newpsize);                  \
-            *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L_('\0');    
\
-            newp->next = NULL;                                                \
-            *lastp = newp;                                                    \
-            lastp = &newp->next
-            NEW_PATTERN;
-            break;
-          }
-      }
-    else if (*p == L_('|'))
-      {
-        if (level == 0)
-          {
-            NEW_PATTERN;
-            startp = p + 1;
-          }
-      }
-  assert (list != NULL);
-  assert (p[-1] == L_(')'));
-#undef NEW_PATTERN
-
-  switch (opt)
-    {
-    case L_('*'):
-      if (FCT (p, string, string_end, no_leading_period, flags) == 0)
-        return 0;
-      /* FALLTHROUGH */
-
-    case L_('+'):
-      do
-        {
-          for (rs = string; rs <= string_end; ++rs)
-            /* First match the prefix with the current pattern with the
-               current pattern.  */
-            if (FCT (list->str, string, rs, no_leading_period,
-                     flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD) == 0
-                /* This was successful.  Now match the rest with the rest
-                   of the pattern.  */
-                && (FCT (p, rs, string_end,
-                         rs == string
-                         ? no_leading_period
-                         : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
-                         flags & FNM_FILE_NAME
-                         ? flags : flags & ~FNM_PERIOD) == 0
-                    /* This didn't work.  Try the whole pattern.  */
-                    || (rs != string
-                        && FCT (pattern - 1, rs, string_end,
-                                rs == string
-                                ? no_leading_period
-                                : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
-                                flags & FNM_FILE_NAME
-                                ? flags : flags & ~FNM_PERIOD) == 0)))
-              /* It worked.  Signal success.  */
-              return 0;
-        }
-      while ((list = list->next) != NULL);
-
-      /* None of the patterns lead to a match.  */
-      return FNM_NOMATCH;
-
-    case L_('?'):
-      if (FCT (p, string, string_end, no_leading_period, flags) == 0)
-        return 0;
-      /* FALLTHROUGH */
-
-    case L_('@'):
-      do
-        /* 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.  */
-        if (FCT (STRCAT (list->str, p), string, string_end,
-                 no_leading_period,
-                 flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD) == 0)
-          /* It worked.  Signal success.  */
-          return 0;
-      while ((list = list->next) != NULL);
-
-      /* None of the patterns lead to a match.  */
-      return FNM_NOMATCH;
-
-    case L_('!'):
-      for (rs = string; rs <= string_end; ++rs)
-        {
-          struct patternlist *runp;
-
-          for (runp = list; runp != NULL; runp = runp->next)
-            if (FCT (runp->str, string, rs,  no_leading_period,
-                     flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD) == 0)
-              break;
-
-          /* If none of the patterns matched see whether the rest does.  */
-          if (runp == NULL
-              && (FCT (p, rs, string_end,
-                       rs == string
-                       ? no_leading_period
-                       : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
-                       flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD)
-                  == 0))
-            /* This is successful.  */
-            return 0;
-        }
-
-      /* None of the patterns together with the rest of the pattern
-         lead to a match.  */
-      return FNM_NOMATCH;
-
-    default:
-      assert (! "Invalid extended matching operator");
-      break;
-    }
-
-  return -1;
-}
-
-
-#undef FOLD
-#undef CHAR
-#undef UCHAR
-#undef INT
-#undef FCT
-#undef EXT
-#undef END
-#undef MEMPCPY
-#undef MEMCHR
-#undef STRLEN
-#undef STRCAT
-#undef L_
-#undef BTOWC
diff --git a/grub-core/gnulib/getdelim.c b/grub-core/gnulib/getdelim.c
deleted file mode 100644
index fdbcde2a2..000000000
--- a/grub-core/gnulib/getdelim.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/* getdelim.c --- Implementation of replacement getdelim function.
-   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
-   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/>.  */
-
-/* Ported from glibc by Simon Josefsson. */
-
-/* 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>
-#include <stdint.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#ifndef SSIZE_MAX
-# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
-#endif
-
-#if USE_UNLOCKED_IO
-# include "unlocked-io.h"
-# define getc_maybe_unlocked(fp)        getc(fp)
-#elif !HAVE_FLOCKFILE || !HAVE_FUNLOCKFILE || !HAVE_DECL_GETC_UNLOCKED
-# undef flockfile
-# undef funlockfile
-# define flockfile(x) ((void) 0)
-# define funlockfile(x) ((void) 0)
-# define getc_maybe_unlocked(fp)        getc(fp)
-#else
-# define getc_maybe_unlocked(fp)        getc_unlocked(fp)
-#endif
-
-/* Read up to (and including) a DELIMITER from FP into *LINEPTR (and
-   NUL-terminate it).  *LINEPTR is a pointer returned from malloc (or
-   NULL), pointing to *N characters of space.  It is realloc'ed as
-   necessary.  Returns the number of characters read (not including
-   the null terminator), or -1 on error or EOF.  */
-
-ssize_t
-getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
-{
-  ssize_t result;
-  size_t cur_len = 0;
-
-  if (lineptr == NULL || n == NULL || fp == NULL)
-    {
-      errno = EINVAL;
-      return -1;
-    }
-
-  flockfile (fp);
-
-  if (*lineptr == NULL || *n == 0)
-    {
-      char *new_lineptr;
-      *n = 120;
-      new_lineptr = (char *) realloc (*lineptr, *n);
-      if (new_lineptr == NULL)
-        {
-          result = -1;
-          goto unlock_return;
-        }
-      *lineptr = new_lineptr;
-    }
-
-  for (;;)
-    {
-      int i;
-
-      i = getc_maybe_unlocked (fp);
-      if (i == EOF)
-        {
-          result = -1;
-          break;
-        }
-
-      /* Make enough space for len+1 (for final NUL) bytes.  */
-      if (cur_len + 1 >= *n)
-        {
-          size_t needed_max =
-            SSIZE_MAX < SIZE_MAX ? (size_t) SSIZE_MAX + 1 : SIZE_MAX;
-          size_t needed = 2 * *n + 1;   /* Be generous. */
-          char *new_lineptr;
-
-          if (needed_max < needed)
-            needed = needed_max;
-          if (cur_len + 1 >= needed)
-            {
-              result = -1;
-              errno = EOVERFLOW;
-              goto unlock_return;
-            }
-
-          new_lineptr = (char *) realloc (*lineptr, needed);
-          if (new_lineptr == NULL)
-            {
-              result = -1;
-              goto unlock_return;
-            }
-
-          *lineptr = new_lineptr;
-          *n = needed;
-        }
-
-      (*lineptr)[cur_len] = i;
-      cur_len++;
-
-      if (i == delimiter)
-        break;
-    }
-  (*lineptr)[cur_len] = '\0';
-  result = cur_len ? cur_len : result;
-
- unlock_return:
-  funlockfile (fp); /* doesn't set errno */
-
-  return result;
-}
diff --git a/grub-core/gnulib/getline.c b/grub-core/gnulib/getline.c
deleted file mode 100644
index 1aa07b9c7..000000000
--- a/grub-core/gnulib/getline.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* getline.c --- Implementation of replacement getline function.
-   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
-   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 Simon Josefsson. */
-
-#include <config.h>
-
-#include <stdio.h>
-
-ssize_t
-getline (char **lineptr, size_t *n, FILE *stream)
-{
-  return getdelim (lineptr, n, '\n', stream);
-}
diff --git a/grub-core/gnulib/getopt.c b/grub-core/gnulib/getopt.c
deleted file mode 100644
index ef0f4ceec..000000000
--- a/grub-core/gnulib/getopt.c
+++ /dev/null
@@ -1,1245 +0,0 @@
-/* Getopt for GNU.
-   NOTE: getopt is part of the C library, so if you don't know what
-   "Keep this file name-space clean" means, talk to address@hidden
-   before changing it!
-   Copyright (C) 1987-1996, 1998-2004, 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
-   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 _LIBC
-# include <config.h>
-#endif
-
-#include "getopt.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "gettext.h"
-# define _(msgid) gettext (msgid)
-#endif
-
-#if defined _LIBC && defined USE_IN_LIBIO
-# include <wchar.h>
-#endif
-
-/* 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,
-   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
-   disables permutation.
-   Then the behavior is completely standard.
-
-   GNU application programs can use a third alternative mode in which
-   they can distinguish the relative order of options and other arguments.  */
-
-#include "getopt_int.h"
-
-/* 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,
-   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'.
-
-   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
-   non-option elements that the caller should itself scan.
-
-   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.  */
-int optind = 1;
-
-/* Callers store zero here to inhibit the error message
-   for unrecognized options.  */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
-   This must be initialized on some systems to avoid linking in the
-   system's own getopt implementation.  */
-
-int optopt = '?';
-
-/* Keep a global copy of all internal members of getopt_data.  */
-
-static struct _getopt_data getopt_data;
-
-
-#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV
-extern char *getenv ();
-#endif
-
-#ifdef _LIBC
-/* Stored original parameters.
-   XXX This is no good solution.  We should rather copy the args so
-   that we can compare them later.  But we must not use malloc(3).  */
-extern int __libc_argc;
-extern char **__libc_argv;
-
-/* Bash 2.0 gives us an environment variable containing flags
-   indicating ARGV elements that should not be considered arguments.  */
-
-# ifdef USE_NONOPTION_FLAGS
-/* Defined in getopt_init.c  */
-extern char *__getopt_nonoption_flags;
-# endif
-
-# ifdef USE_NONOPTION_FLAGS
-#  define SWAP_FLAGS(ch1, ch2) \
-  if (d->__nonoption_flags_len > 0)                                           \
-    {                                                                         \
-      char __tmp = __getopt_nonoption_flags[ch1];                             \
-      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];          \
-      __getopt_nonoption_flags[ch2] = __tmp;                                  \
-    }
-# else
-#  define SWAP_FLAGS(ch1, ch2)
-# endif
-#else   /* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif  /* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
-   One subsequence is elements [first_nonopt,last_nonopt)
-   which contains all the non-options that have been skipped so far.
-   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
-   the new indices of the non-options in ARGV after they are moved.  */
-
-static void
-exchange (char **argv, struct _getopt_data *d)
-{
-  int bottom = d->__first_nonopt;
-  int middle = d->__last_nonopt;
-  int top = d->optind;
-  char *tem;
-
-  /* Exchange the shorter segment with the far end of the longer segment.
-     That puts the shorter segment into the right place.
-     It leaves the longer segment in the right place overall,
-     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'
-     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)
-    {
-      /* We must extend the array.  The user plays games with us and
-         presents new arguments.  */
-      char *new_str = malloc (top + 1);
-      if (new_str == NULL)
-        d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
-      else
-        {
-          memset (__mempcpy (new_str, __getopt_nonoption_flags,
-                             d->__nonoption_flags_max_len),
-                  '\0', top + 1 - d->__nonoption_flags_max_len);
-          d->__nonoption_flags_max_len = top + 1;
-          __getopt_nonoption_flags = new_str;
-        }
-    }
-#endif
-
-  while (top > middle && middle > bottom)
-    {
-      if (top - middle > middle - bottom)
-        {
-          /* Bottom segment is the short one.  */
-          int len = middle - bottom;
-          register int i;
-
-          /* Swap it with the top part of the top segment.  */
-          for (i = 0; i < len; i++)
-            {
-              tem = argv[bottom + i];
-              argv[bottom + i] = argv[top - (middle - bottom) + i];
-              argv[top - (middle - bottom) + i] = tem;
-              SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
-            }
-          /* Exclude the moved bottom segment from further swapping.  */
-          top -= len;
-        }
-      else
-        {
-          /* Top segment is the short one.  */
-          int len = top - middle;
-          register int i;
-
-          /* Swap it with the bottom part of the bottom segment.  */
-          for (i = 0; i < len; i++)
-            {
-              tem = argv[bottom + i];
-              argv[bottom + i] = argv[middle + i];
-              argv[middle + i] = tem;
-              SWAP_FLAGS (bottom + i, middle + i);
-            }
-          /* Exclude the moved top segment from further swapping.  */
-          bottom += len;
-        }
-    }
-
-  /* Update records for the slots the non-options now occupy.  */
-
-  d->__first_nonopt += (d->optind - d->__last_nonopt);
-  d->__last_nonopt = d->optind;
-}
-
-/* Initialize the internal data when the first call is made.  */
-
-static const char *
-_getopt_initialize (int argc _GL_UNUSED,
-                    char **argv _GL_UNUSED, const char *optstring,
-                    struct _getopt_data *d, int posixly_correct)
-{
-  /* Start processing options with ARGV-element 1 (since ARGV-element 0
-     is the program name); the sequence of previously skipped
-     non-option ARGV-elements is empty.  */
-
-  d->__first_nonopt = d->__last_nonopt = d->optind;
-
-  d->__nextchar = NULL;
-
-  d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT");
-
-  /* Determine how to handle the ordering of options and nonoptions.  */
-
-  if (optstring[0] == '-')
-    {
-      d->__ordering = RETURN_IN_ORDER;
-      ++optstring;
-    }
-  else if (optstring[0] == '+')
-    {
-      d->__ordering = REQUIRE_ORDER;
-      ++optstring;
-    }
-  else if (d->__posixly_correct)
-    d->__ordering = REQUIRE_ORDER;
-  else
-    d->__ordering = PERMUTE;
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-  if (!d->__posixly_correct
-      && argc == __libc_argc && argv == __libc_argv)
-    {
-      if (d->__nonoption_flags_max_len == 0)
-        {
-          if (__getopt_nonoption_flags == NULL
-              || __getopt_nonoption_flags[0] == '\0')
-            d->__nonoption_flags_max_len = -1;
-          else
-            {
-              const char *orig_str = __getopt_nonoption_flags;
-              int len = d->__nonoption_flags_max_len = strlen (orig_str);
-              if (d->__nonoption_flags_max_len < argc)
-                d->__nonoption_flags_max_len = argc;
-              __getopt_nonoption_flags =
-                (char *) malloc (d->__nonoption_flags_max_len);
-              if (__getopt_nonoption_flags == NULL)
-                d->__nonoption_flags_max_len = -1;
-              else
-                memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
-                        '\0', d->__nonoption_flags_max_len - len);
-            }
-        }
-      d->__nonoption_flags_len = d->__nonoption_flags_max_len;
-    }
-  else
-    d->__nonoption_flags_len = 0;
-#endif
-
-  return optstring;
-}
-
-/* Scan elements of ARGV (whose length is ARGC) for option characters
-   given in OPTSTRING.
-
-   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'
-   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
-   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
-   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
-   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
-   wants an optional arg; if there is text in the current ARGV-element,
-   it is returned in 'optarg', otherwise 'optarg' is set to zero.
-
-   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 '-'.
-   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.
-
-   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
-   element containing a name which is zero.
-
-   LONGIND returns the index in LONGOPT of the long-named option found.
-   It is only valid when a long-named option has been found by the most
-   recent call.
-
-   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
-   long-named options.  */
-
-int
-_getopt_internal_r (int argc, char **argv, const char *optstring,
-                    const struct option *longopts, int *longind,
-                    int long_only, struct _getopt_data *d, int posixly_correct)
-{
-  int print_errors = d->opterr;
-
-  if (argc < 1)
-    return -1;
-
-  d->optarg = NULL;
-
-  if (d->optind == 0 || !d->__initialized)
-    {
-      if (d->optind == 0)
-        d->optind = 1;  /* Don't scan ARGV[0], the program name.  */
-      optstring = _getopt_initialize (argc, argv, optstring, d,
-                                      posixly_correct);
-      d->__initialized = 1;
-    }
-  else if (optstring[0] == '-' || optstring[0] == '+')
-    optstring++;
-  if (optstring[0] == ':')
-    print_errors = 0;
-
-  /* Test whether ARGV[optind] points to a non-option argument.
-     Either it does not have option syntax, or there is an environment flag
-     from the shell indicating it is not an option.  The later information
-     is only used when the used in the GNU libc.  */
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
-                      || (d->optind < d->__nonoption_flags_len                \
-                          && __getopt_nonoption_flags[d->optind] == '1'))
-#else
-# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
-#endif
-
-  if (d->__nextchar == NULL || *d->__nextchar == '\0')
-    {
-      /* Advance to the next ARGV-element.  */
-
-      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
-         moved back by the user (who may also have changed the arguments).  */
-      if (d->__last_nonopt > d->optind)
-        d->__last_nonopt = d->optind;
-      if (d->__first_nonopt > d->optind)
-        d->__first_nonopt = d->optind;
-
-      if (d->__ordering == PERMUTE)
-        {
-          /* If we have just processed some options following some non-options,
-             exchange them so that the options come first.  */
-
-          if (d->__first_nonopt != d->__last_nonopt
-              && d->__last_nonopt != d->optind)
-            exchange ((char **) argv, d);
-          else if (d->__last_nonopt != d->optind)
-            d->__first_nonopt = d->optind;
-
-          /* Skip any additional non-options
-             and extend the range of non-options previously skipped.  */
-
-          while (d->optind < argc && NONOPTION_P)
-            d->optind++;
-          d->__last_nonopt = d->optind;
-        }
-
-      /* 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.  */
-
-      if (d->optind != argc && !strcmp (argv[d->optind], "--"))
-        {
-          d->optind++;
-
-          if (d->__first_nonopt != d->__last_nonopt
-              && d->__last_nonopt != d->optind)
-            exchange ((char **) argv, d);
-          else if (d->__first_nonopt == d->__last_nonopt)
-            d->__first_nonopt = d->optind;
-          d->__last_nonopt = argc;
-
-          d->optind = argc;
-        }
-
-      /* If we have done all the ARGV-elements, stop the scan
-         and back over any non-options that we skipped and permuted.  */
-
-      if (d->optind == argc)
-        {
-          /* Set the next-arg-index to point at the non-options
-             that we previously skipped, so the caller will digest them.  */
-          if (d->__first_nonopt != d->__last_nonopt)
-            d->optind = d->__first_nonopt;
-          return -1;
-        }
-
-      /* If we have come to a non-option and did not permute it,
-         either stop the scan or describe it to the caller and pass it by.  */
-
-      if (NONOPTION_P)
-        {
-          if (d->__ordering == REQUIRE_ORDER)
-            return -1;
-          d->optarg = argv[d->optind++];
-          return 1;
-        }
-
-      /* We have found another option-ARGV-element.
-         Skip the initial punctuation.  */
-
-      d->__nextchar = (argv[d->optind] + 1
-                  + (longopts != NULL && argv[d->optind][1] == '-'));
-    }
-
-  /* Decode the current option-ARGV-element.  */
-
-  /* Check whether the ARGV-element is a long option.
-
-     If long_only and the ARGV-element has the form "-f", where f is
-     a valid short option, don't consider it an abbreviated form of
-     a long option that starts with f.  Otherwise there would be no
-     way to give the -f short option.
-
-     On the other hand, if there's a long option "fubar" and
-     the ARGV-element is "-fu", do consider that an abbreviation of
-     the long option, just like "--fu", and not "-f" with arg "u".
-
-     This distinction seems to be the most useful approach.  */
-
-  if (longopts != NULL
-      && (argv[d->optind][1] == '-'
-          || (long_only && (argv[d->optind][2]
-                            || !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 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, namelen))
-          {
-            if (namelen == (unsigned int) strlen (p->name))
-              {
-                /* Exact match found.  */
-                pfound = p;
-                indfound = option_index;
-                exact = 1;
-                break;
-              }
-            else if (pfound == NULL)
-              {
-                /* First nonexact match found.  */
-                pfound = p;
-                indfound = option_index;
-              }
-            else if (long_only
-                     || pfound->has_arg != p->has_arg
-                     || pfound->flag != p->flag
-                     || pfound->val != p->val)
-              {
-                /* 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_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 = NULL;
-              size_t buflen = 0;
-
-              FILE *fp = open_memstream (&buf, &buflen);
-              if (fp != NULL)
-                {
-                  fprintf (fp,
-                           _("%s: option '%s' is ambiguous; possibilities:"),
-                           argv[0], argv[d->optind]);
-
-                  do
-                    {
-                      fprintf (fp, " '--%s'", ambig_list->p->name);
-                      ambig_list = ambig_list->next;
-                    }
-                  while (ambig_list != NULL);
-
-                  fputc_unlocked ('\n', fp);
-
-                  if (__builtin_expect (fclose (fp) != EOF, 1))
-                    {
-                      _IO_flockfile (stderr);
-
-                      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; 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);
-          d->optind++;
-          d->optopt = 0;
-          return '?';
-        }
-
-      while (ambig_list != NULL)
-        {
-          struct option_list *pn = ambig_list->next;
-          free (ambig_list);
-          ambig_list = pn;
-        }
-
-      if (pfound != NULL)
-        {
-          option_index = indfound;
-          d->optind++;
-          if (*nameend)
-            {
-              /* Don't test has_arg with >, because some C compilers don't
-                 allow it to be used on enums.  */
-              if (pfound->has_arg)
-                d->optarg = nameend + 1;
-              else
-                {
-                  if (print_errors)
-                    {
-#if defined _LIBC && defined USE_IN_LIBIO
-                      char *buf;
-                      int n;
-#endif
-
-                      if (argv[d->optind - 1][1] == '-')
-                        {
-                          /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
-                          n = __asprintf (&buf, _("\
-%s: option '--%s' doesn't allow an argument\n"),
-                                          argv[0], pfound->name);
-#else
-                          fprintf (stderr, _("\
-%s: option '--%s' doesn't allow an argument\n"),
-                                   argv[0], pfound->name);
-#endif
-                        }
-                      else
-                        {
-                          /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
-                          n = __asprintf (&buf, _("\
-%s: option '%c%s' doesn't allow an argument\n"),
-                                          argv[0], argv[d->optind - 1][0],
-                                          pfound->name);
-#else
-                          fprintf (stderr, _("\
-%s: option '%c%s' doesn't allow an argument\n"),
-                                   argv[0], argv[d->optind - 1][0],
-                                   pfound->name);
-#endif
-                        }
-
-#if defined _LIBC && defined USE_IN_LIBIO
-                      if (n >= 0)
-                        {
-                          _IO_flockfile (stderr);
-
-                          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);
-                        }
-#endif
-                    }
-
-                  d->__nextchar += strlen (d->__nextchar);
-
-                  d->optopt = pfound->val;
-                  return '?';
-                }
-            }
-          else if (pfound->has_arg == 1)
-            {
-              if (d->optind < argc)
-                d->optarg = argv[d->optind++];
-              else
-                {
-                  if (print_errors)
-                    {
-#if defined _LIBC && defined USE_IN_LIBIO
-                      char *buf;
-
-                      if (__asprintf (&buf, _("\
-%s: option '--%s' requires an argument\n"),
-                                      argv[0], pfound->name) >= 0)
-                        {
-                          _IO_flockfile (stderr);
-
-                          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' requires an argument\n"),
-                               argv[0], pfound->name);
-#endif
-                    }
-                  d->__nextchar += strlen (d->__nextchar);
-                  d->optopt = pfound->val;
-                  return optstring[0] == ':' ? ':' : '?';
-                }
-            }
-          d->__nextchar += strlen (d->__nextchar);
-          if (longind != NULL)
-            *longind = option_index;
-          if (pfound->flag)
-            {
-              *(pfound->flag) = pfound->val;
-              return 0;
-            }
-          return pfound->val;
-        }
-
-      /* Can't find it as a long option.  If this is not getopt_long_only,
-         or the option starts with '--' or is not a valid short
-         option, then it's an error.
-         Otherwise interpret it as a short option.  */
-      if (!long_only || argv[d->optind][1] == '-'
-          || strchr (optstring, *d->__nextchar) == NULL)
-        {
-          if (print_errors)
-            {
-#if defined _LIBC && defined USE_IN_LIBIO
-              char *buf;
-              int n;
-#endif
-
-              if (argv[d->optind][1] == '-')
-                {
-                  /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
-                  n = __asprintf (&buf, _("%s: unrecognized option '--%s'\n"),
-                                  argv[0], d->__nextchar);
-#else
-                  fprintf (stderr, _("%s: unrecognized option '--%s'\n"),
-                           argv[0], d->__nextchar);
-#endif
-                }
-              else
-                {
-                  /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
-                  n = __asprintf (&buf, _("%s: unrecognized option '%c%s'\n"),
-                                  argv[0], argv[d->optind][0], d->__nextchar);
-#else
-                  fprintf (stderr, _("%s: unrecognized option '%c%s'\n"),
-                           argv[0], argv[d->optind][0], d->__nextchar);
-#endif
-                }
-
-#if defined _LIBC && defined USE_IN_LIBIO
-              if (n >= 0)
-                {
-                  _IO_flockfile (stderr);
-
-                  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);
-                }
-#endif
-            }
-          d->__nextchar = (char *) "";
-          d->optind++;
-          d->optopt = 0;
-          return '?';
-        }
-    }
-
-  /* Look at and handle the next short option-character.  */
-
-  {
-    char c = *d->__nextchar++;
-    const char *temp = strchr (optstring, c);
-
-    /* Increment 'optind' when we start to process its last character.  */
-    if (*d->__nextchar == '\0')
-      ++d->optind;
-
-    if (temp == NULL || c == ':' || c == ';')
-      {
-        if (print_errors)
-          {
-#if defined _LIBC && defined USE_IN_LIBIO
-              char *buf;
-              int n;
-#endif
-
-#if defined _LIBC && defined USE_IN_LIBIO
-              n = __asprintf (&buf, _("%s: invalid option -- '%c'\n"),
-                              argv[0], c);
-#else
-              fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c);
-#endif
-
-#if defined _LIBC && defined USE_IN_LIBIO
-            if (n >= 0)
-              {
-                _IO_flockfile (stderr);
-
-                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);
-              }
-#endif
-          }
-        d->optopt = c;
-        return '?';
-      }
-    /* Convenience. Treat POSIX -W foo same as long option --foo */
-    if (temp[0] == 'W' && temp[1] == ';')
-      {
-        char *nameend;
-        const struct option *p;
-        const struct option *pfound = NULL;
-        int exact = 0;
-        int ambig = 0;
-        int indfound = 0;
-        int option_index;
-
-        if (longopts == NULL)
-          goto no_longs;
-
-        /* This is an option that requires an argument.  */
-        if (*d->__nextchar != '\0')
-          {
-            d->optarg = d->__nextchar;
-            /* If we end this ARGV-element by taking the rest as an arg,
-               we must advance to the next element now.  */
-            d->optind++;
-          }
-        else if (d->optind == argc)
-          {
-            if (print_errors)
-              {
-#if defined _LIBC && defined USE_IN_LIBIO
-                char *buf;
-
-                if (__asprintf (&buf,
-                                _("%s: option requires an argument -- '%c'\n"),
-                                argv[0], c) >= 0)
-                  {
-                    _IO_flockfile (stderr);
-
-                    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 requires an argument -- '%c'\n"),
-                         argv[0], c);
-#endif
-              }
-            d->optopt = c;
-            if (optstring[0] == ':')
-              c = ':';
-            else
-              c = '?';
-            return c;
-          }
-        else
-          /* We already incremented 'd->optind' once;
-             increment it again when taking next ARGV-elt as argument.  */
-          d->optarg = argv[d->optind++];
-
-        /* optarg is now the argument, see if it's in the
-           table of longopts.  */
-
-        for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
-             nameend++)
-          /* Do nothing.  */ ;
-
-        /* 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 ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
-                {
-                  /* Exact match found.  */
-                  pfound = p;
-                  indfound = option_index;
-                  exact = 1;
-                  break;
-                }
-              else if (pfound == NULL)
-                {
-                  /* First nonexact match found.  */
-                  pfound = p;
-                  indfound = option_index;
-                }
-              else if (long_only
-                       || pfound->has_arg != p->has_arg
-                       || pfound->flag != p->flag
-                       || pfound->val != p->val)
-                /* Second or later nonexact match found.  */
-                ambig = 1;
-            }
-        if (ambig && !exact)
-          {
-            if (print_errors)
-              {
-#if defined _LIBC && defined USE_IN_LIBIO
-                char *buf;
-
-                if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"),
-                                argv[0], d->optarg) >= 0)
-                  {
-                    _IO_flockfile (stderr);
-
-                    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 '-W %s' is ambiguous\n"),
-                         argv[0], d->optarg);
-#endif
-              }
-            d->__nextchar += strlen (d->__nextchar);
-            d->optind++;
-            return '?';
-          }
-        if (pfound != NULL)
-          {
-            option_index = indfound;
-            if (*nameend)
-              {
-                /* Don't test has_arg with >, because some C compilers don't
-                   allow it to be used on enums.  */
-                if (pfound->has_arg)
-                  d->optarg = nameend + 1;
-                else
-                  {
-                    if (print_errors)
-                      {
-#if defined _LIBC && defined USE_IN_LIBIO
-                        char *buf;
-
-                        if (__asprintf (&buf, _("\
-%s: option '-W %s' doesn't allow an argument\n"),
-                                        argv[0], pfound->name) >= 0)
-                          {
-                            _IO_flockfile (stderr);
-
-                            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 '-W %s' doesn't allow an argument\n"),
-                                 argv[0], pfound->name);
-#endif
-                      }
-
-                    d->__nextchar += strlen (d->__nextchar);
-                    return '?';
-                  }
-              }
-            else if (pfound->has_arg == 1)
-              {
-                if (d->optind < argc)
-                  d->optarg = argv[d->optind++];
-                else
-                  {
-                    if (print_errors)
-                      {
-#if defined _LIBC && defined USE_IN_LIBIO
-                        char *buf;
-
-                        if (__asprintf (&buf, _("\
-%s: option '-W %s' requires an argument\n"),
-                                        argv[0], pfound->name) >= 0)
-                          {
-                            _IO_flockfile (stderr);
-
-                            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 '-W %s' requires an argument\n"),
-                                 argv[0], pfound->name);
-#endif
-                      }
-                    d->__nextchar += strlen (d->__nextchar);
-                    return optstring[0] == ':' ? ':' : '?';
-                  }
-              }
-            else
-              d->optarg = NULL;
-            d->__nextchar += strlen (d->__nextchar);
-            if (longind != NULL)
-              *longind = option_index;
-            if (pfound->flag)
-              {
-                *(pfound->flag) = pfound->val;
-                return 0;
-              }
-            return pfound->val;
-          }
-
-      no_longs:
-        d->__nextchar = NULL;
-        return 'W';   /* Let the application handle it.   */
-      }
-    if (temp[1] == ':')
-      {
-        if (temp[2] == ':')
-          {
-            /* This is an option that accepts an argument optionally.  */
-            if (*d->__nextchar != '\0')
-              {
-                d->optarg = d->__nextchar;
-                d->optind++;
-              }
-            else
-              d->optarg = NULL;
-            d->__nextchar = NULL;
-          }
-        else
-          {
-            /* This is an option that requires an argument.  */
-            if (*d->__nextchar != '\0')
-              {
-                d->optarg = d->__nextchar;
-                /* If we end this ARGV-element by taking the rest as an arg,
-                   we must advance to the next element now.  */
-                d->optind++;
-              }
-            else if (d->optind == argc)
-              {
-                if (print_errors)
-                  {
-#if defined _LIBC && defined USE_IN_LIBIO
-                    char *buf;
-
-                    if (__asprintf (&buf, _("\
-%s: option requires an argument -- '%c'\n"),
-                                    argv[0], c) >= 0)
-                      {
-                        _IO_flockfile (stderr);
-
-                        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 requires an argument -- '%c'\n"),
-                             argv[0], c);
-#endif
-                  }
-                d->optopt = c;
-                if (optstring[0] == ':')
-                  c = ':';
-                else
-                  c = '?';
-              }
-            else
-              /* We already incremented 'optind' once;
-                 increment it again when taking next ARGV-elt as argument.  */
-              d->optarg = argv[d->optind++];
-            d->__nextchar = NULL;
-          }
-      }
-    return c;
-  }
-}
-
-int
-_getopt_internal (int argc, char **argv, const char *optstring,
-                  const struct option *longopts, int *longind, int long_only,
-                  int posixly_correct)
-{
-  int result;
-
-  getopt_data.optind = optind;
-  getopt_data.opterr = opterr;
-
-  result = _getopt_internal_r (argc, argv, optstring, longopts,
-                               longind, long_only, &getopt_data,
-                               posixly_correct);
-
-  optind = getopt_data.optind;
-  optarg = getopt_data.optarg;
-  optopt = getopt_data.optopt;
-
-  return result;
-}
-
-/* glibc gets a LSB-compliant getopt.
-   Standalone applications get a POSIX-compliant getopt.  */
-#if _LIBC
-enum { POSIXLY_CORRECT = 0 };
-#else
-enum { POSIXLY_CORRECT = 1 };
-#endif
-
-int
-getopt (int argc, char *const *argv, const char *optstring)
-{
-  return _getopt_internal (argc, (char **) argv, optstring,
-                           (const struct option *) 0,
-                           (int *) 0,
-                           0, POSIXLY_CORRECT);
-}
-
-#ifdef _LIBC
-int
-__posix_getopt (int argc, char *const *argv, const char *optstring)
-{
-  return _getopt_internal (argc, argv, optstring,
-                           (const struct option *) 0,
-                           (int *) 0,
-                           0, 1);
-}
-#endif
-
-
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
-   the above definition of 'getopt'.  */
-
-int
-main (int argc, char **argv)
-{
-  int c;
-  int digit_optind = 0;
-
-  while (1)
-    {
-      int this_option_optind = optind ? optind : 1;
-
-      c = getopt (argc, argv, "abc:d:0123456789");
-      if (c == -1)
-        break;
-
-      switch (c)
-        {
-        case '0':
-        case '1':
-        case '2':
-        case '3':
-        case '4':
-        case '5':
-        case '6':
-        case '7':
-        case '8':
-        case '9':
-          if (digit_optind != 0 && digit_optind != this_option_optind)
-            printf ("digits occur in two different argv-elements.\n");
-          digit_optind = this_option_optind;
-          printf ("option %c\n", c);
-          break;
-
-        case 'a':
-          printf ("option a\n");
-          break;
-
-        case 'b':
-          printf ("option b\n");
-          break;
-
-        case 'c':
-          printf ("option c with value '%s'\n", optarg);
-          break;
-
-        case '?':
-          break;
-
-        default:
-          printf ("?? getopt returned character code 0%o ??\n", c);
-        }
-    }
-
-  if (optind < argc)
-    {
-      printf ("non-option ARGV-elements: ");
-      while (optind < argc)
-        printf ("%s ", argv[optind++]);
-      printf ("\n");
-    }
-
-  exit (0);
-}
-
-#endif /* TEST */
diff --git a/grub-core/gnulib/getopt.in.h b/grub-core/gnulib/getopt.in.h
deleted file mode 100644
index d9c7d8144..000000000
--- a/grub-core/gnulib/getopt.in.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/* Declarations for getopt.
-   Copyright (C) 1989-1994, 1996-1999, 2001, 2003-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
-   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 address@hidden@_GETOPT_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-/* The include_next requires a split double-inclusion guard.  We must
-   also inform the replacement unistd.h to not recursively use
-   <getopt.h>; our definitions will be present soon enough.  */
-#if @HAVE_GETOPT_H@
-# define _GL_SYSTEM_GETOPT
-# @INCLUDE_NEXT@ @NEXT_GETOPT_H@
-# undef _GL_SYSTEM_GETOPT
-#endif
-
-#ifndef address@hidden@_GETOPT_H
-
-#ifndef __need_getopt
-# define address@hidden@_GETOPT_H 1
-#endif
-
-/* Standalone applications should #define __GETOPT_PREFIX to an
-   identifier that prefixes the external functions and variables
-   defined in this header.  When this happens, include the
-   headers that might declare getopt so that they will not cause
-   confusion if included after this file (if the system had <getopt.h>,
-   we have already included it).  Then systematically rename
-   identifiers so that they do not collide with the system functions
-   and variables.  Renaming avoids problems with some compilers and
-   linkers.  */
-#if defined __GETOPT_PREFIX && !defined __need_getopt
-# if address@hidden@
-#  define __need_system_stdlib_h
-#  include <stdlib.h>
-#  undef __need_system_stdlib_h
-#  include <stdio.h>
-#  include <unistd.h>
-# endif
-# undef __need_getopt
-# undef getopt
-# undef getopt_long
-# undef getopt_long_only
-# undef optarg
-# undef opterr
-# undef optind
-# undef optopt
-# undef option
-# define __GETOPT_CONCAT(x, y) x ## y
-# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
-# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
-# define getopt __GETOPT_ID (getopt)
-# define getopt_long __GETOPT_ID (getopt_long)
-# define getopt_long_only __GETOPT_ID (getopt_long_only)
-# define optarg __GETOPT_ID (optarg)
-# define opterr __GETOPT_ID (opterr)
-# define optind __GETOPT_ID (optind)
-# define optopt __GETOPT_ID (optopt)
-# define option __GETOPT_ID (option)
-# define _getopt_internal __GETOPT_ID (getopt_internal)
-#endif
-
-/* Standalone applications get correct prototypes for getopt_long and
-   getopt_long_only; they declare "char **argv".  libc uses prototypes
-   with "char *const *argv" that are incorrect because getopt_long and
-   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',
-   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.
-
-   The only place where __getopt_argv_const is used is in definitions
-   of getopt_long and getopt_long_only below, but these are visible
-   only if __need_getopt is not defined, so it is quite safe to rewrite
-   the conditional as follows:
-*/
-#if !defined __need_getopt
-# if defined __GETOPT_PREFIX
-#  define __getopt_argv_const /* empty */
-# else
-#  define __getopt_argv_const const
-# endif
-#endif
-
-/* If __GNU_LIBRARY__ is not already defined, either we are being used
-   standalone, or this is the first header included in the source file.
-   If we are being used with glibc, we need to include <features.h>, but
-   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
-   not defined, include <ctype.h>, which will pull in <features.h> for us
-   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
-   doesn't flood the namespace with stuff the way some other headers do.)  */
-#if !defined __GNU_LIBRARY__
-# include <ctype.h>
-#endif
-
-#ifndef __THROW
-# ifndef __GNUC_PREREQ
-#  define __GNUC_PREREQ(maj, min) (0)
-# endif
-# if defined __cplusplus && __GNUC_PREREQ (2,8)
-#  define __THROW       throw ()
-# else
-#  define __THROW
-# endif
-#endif
-
-/* The definition of _GL_ARG_NONNULL is copied here.  */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* 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,
-   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'.
-
-   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
-   non-option elements that the caller should itself scan.
-
-   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
-   for unrecognized options.  */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized.  */
-
-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
-   zero.
-
-   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
-   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
-   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.  */
-
-# if !GNULIB_defined_struct_option
-struct option
-{
-  const char *name;
-  /* has_arg can't be an enum because some compilers complain about
-     type mismatches in all the code that assumes it is an int.  */
-  int has_arg;
-  int *flag;
-  int val;
-};
-#  define GNULIB_defined_struct_option 1
-# endif
-
-/* Names for the values of the 'has_arg' field of 'struct option'.  */
-
-# define no_argument            0
-# define required_argument      1
-# define optional_argument      2
-#endif  /* need getopt */
-
-
-/* Get definitions and prototypes for functions to process the
-   arguments in ARGV (ARGC of them, minus the program name) for
-   options given in OPTS.
-
-   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
-   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'.
-
-   If a letter in OPTS is followed by two colons, its argument is
-   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
-   options.
-
-   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
-   the environment, then do not permute arguments.  */
-
-extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
-       __THROW _GL_ARG_NONNULL ((2, 3));
-
-#ifndef __need_getopt
-extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
-                        const char *__shortopts,
-                        const struct option *__longopts, int *__longind)
-       __THROW _GL_ARG_NONNULL ((2, 3));
-extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
-                             const char *__shortopts,
-                             const struct option *__longopts, int *__longind)
-       __THROW _GL_ARG_NONNULL ((2, 3));
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-/* Make sure we later can get all the definitions and declarations.  */
-#undef __need_getopt
-
-#endif /* address@hidden@_GETOPT_H */
-#endif /* address@hidden@_GETOPT_H */
diff --git a/grub-core/gnulib/getopt1.c b/grub-core/gnulib/getopt1.c
deleted file mode 100644
index 55a6b4eae..000000000
--- a/grub-core/gnulib/getopt1.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* getopt_long and getopt_long_only entry points for GNU getopt.
-   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
-   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/>.  */
-
-#ifdef _LIBC
-# include <getopt.h>
-#else
-# include <config.h>
-# include "getopt.h"
-#endif
-#include "getopt_int.h"
-
-#include <stdio.h>
-
-/* This needs to come after some library #include
-   to get __GNU_LIBRARY__ defined.  */
-#ifdef __GNU_LIBRARY__
-#include <stdlib.h>
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int
-getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
-             const struct option *long_options, int *opt_index)
-{
-  return _getopt_internal (argc, (char **) argv, options, long_options,
-                           opt_index, 0, 0);
-}
-
-int
-_getopt_long_r (int argc, char **argv, const char *options,
-                const struct option *long_options, int *opt_index,
-                struct _getopt_data *d)
-{
-  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
-                             0, d, 0);
-}
-
-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
-   If an option that starts with '-' (not '--') doesn't match a long option,
-   but does match a short option, it is parsed as a short option
-   instead.  */
-
-int
-getopt_long_only (int argc, char *__getopt_argv_const *argv,
-                  const char *options,
-                  const struct option *long_options, int *opt_index)
-{
-  return _getopt_internal (argc, (char **) argv, options, long_options,
-                           opt_index, 1, 0);
-}
-
-int
-_getopt_long_only_r (int argc, char **argv, const char *options,
-                     const struct option *long_options, int *opt_index,
-                     struct _getopt_data *d)
-{
-  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
-                             1, d, 0);
-}
-
-
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main (int argc, char **argv)
-{
-  int c;
-  int digit_optind = 0;
-
-  while (1)
-    {
-      int this_option_optind = optind ? optind : 1;
-      int option_index = 0;
-      static const struct option long_options[] =
-      {
-        {"add", 1, 0, 0},
-        {"append", 0, 0, 0},
-        {"delete", 1, 0, 0},
-        {"verbose", 0, 0, 0},
-        {"create", 0, 0, 0},
-        {"file", 1, 0, 0},
-        {0, 0, 0, 0}
-      };
-
-      c = getopt_long (argc, argv, "abc:d:0123456789",
-                       long_options, &option_index);
-      if (c == -1)
-        break;
-
-      switch (c)
-        {
-        case 0:
-          printf ("option %s", long_options[option_index].name);
-          if (optarg)
-            printf (" with arg %s", optarg);
-          printf ("\n");
-          break;
-
-        case '0':
-        case '1':
-        case '2':
-        case '3':
-        case '4':
-        case '5':
-        case '6':
-        case '7':
-        case '8':
-        case '9':
-          if (digit_optind != 0 && digit_optind != this_option_optind)
-            printf ("digits occur in two different argv-elements.\n");
-          digit_optind = this_option_optind;
-          printf ("option %c\n", c);
-          break;
-
-        case 'a':
-          printf ("option a\n");
-          break;
-
-        case 'b':
-          printf ("option b\n");
-          break;
-
-        case 'c':
-          printf ("option c with value '%s'\n", optarg);
-          break;
-
-        case 'd':
-          printf ("option d with value '%s'\n", optarg);
-          break;
-
-        case '?':
-          break;
-
-        default:
-          printf ("?? getopt returned character code 0%o ??\n", c);
-        }
-    }
-
-  if (optind < argc)
-    {
-      printf ("non-option ARGV-elements: ");
-      while (optind < argc)
-        printf ("%s ", argv[optind++]);
-      printf ("\n");
-    }
-
-  exit (0);
-}
-
-#endif /* TEST */
diff --git a/grub-core/gnulib/getopt_int.h b/grub-core/gnulib/getopt_int.h
deleted file mode 100644
index a6e4b9ea7..000000000
--- a/grub-core/gnulib/getopt_int.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Internal declarations for getopt.
-   Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 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
-   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 _GETOPT_INT_H
-#define _GETOPT_INT_H   1
-
-#include <getopt.h>
-
-extern int _getopt_internal (int ___argc, char **___argv,
-                             const char *__shortopts,
-                             const struct option *__longopts, int *__longind,
-                             int __long_only, int __posixly_correct);
-
-
-/* Reentrant versions which can handle parsing multiple argument
-   vectors at the same time.  */
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
-   If the caller did not specify anything,
-   the default is REQUIRE_ORDER if the environment variable
-   POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
-   REQUIRE_ORDER means don't recognize them as options;
-   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
-   of the list of option characters, or by calling getopt.
-
-   PERMUTE is the default.  We permute the contents of ARGV as we
-   scan, so that eventually all the non-options are at the end.
-   This allows options to be given in any order, even with programs
-   that were not written to expect this.
-
-   RETURN_IN_ORDER is an option available to programs that were
-   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
-   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.  */
-
-enum __ord
-  {
-    REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-  };
-
-/* Data type for reentrant functions.  */
-struct _getopt_data
-{
-  /* These have exactly the same meaning as the corresponding global
-     variables, except that they are used for the reentrant
-     versions of getopt.  */
-  int optind;
-  int opterr;
-  int optopt;
-  char *optarg;
-
-  /* Internal members.  */
-
-  /* True if the internal members have been initialized.  */
-  int __initialized;
-
-  /* The next char to be scanned in the option-element
-     in which the last option character we returned was found.
-     This allows us to pick up the scan where we left off.
-
-     If this is zero, or a null string, it means resume the scan
-     by advancing to the next ARGV-element.  */
-  char *__nextchar;
-
-  /* See __ord above.  */
-  enum __ord __ordering;
-
-  /* If the POSIXLY_CORRECT environment variable is set
-     or getopt was called.  */
-  int __posixly_correct;
-
-
-  /* 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.  */
-
-  int __first_nonopt;
-  int __last_nonopt;
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-  int __nonoption_flags_max_len;
-  int __nonoption_flags_len;
-#endif
-};
-
-/* The initializer is necessary to set OPTIND and OPTERR to their
-   default values and to clear the initialization flag.  */
-#define _GETOPT_DATA_INITIALIZER        { 1, 1 }
-
-extern int _getopt_internal_r (int ___argc, char **___argv,
-                               const char *__shortopts,
-                               const struct option *__longopts, int *__longind,
-                               int __long_only, struct _getopt_data *__data,
-                               int __posixly_correct);
-
-extern int _getopt_long_r (int ___argc, char **___argv,
-                           const char *__shortopts,
-                           const struct option *__longopts, int *__longind,
-                           struct _getopt_data *__data);
-
-extern int _getopt_long_only_r (int ___argc, char **___argv,
-                                const char *__shortopts,
-                                const struct option *__longopts,
-                                int *__longind,
-                                struct _getopt_data *__data);
-
-#endif /* getopt_int.h */
diff --git a/grub-core/gnulib/gettext.h b/grub-core/gnulib/gettext.h
deleted file mode 100644
index d0215715a..000000000
--- a/grub-core/gnulib/gettext.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/* Convenience header for conditional use of GNU <libintl.h>.
-   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
-   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 _LIBGETTEXT_H
-#define _LIBGETTEXT_H 1
-
-/* NLS can be disabled through the configure --disable-nls option.  */
-#if ENABLE_NLS
-
-/* Get declarations of GNU message catalog functions.  */
-# include <libintl.h>
-
-/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
-   the gettext() and ngettext() macros.  This is an alternative to calling
-   textdomain(), and is useful for libraries.  */
-# ifdef DEFAULT_TEXT_DOMAIN
-#  undef gettext
-#  define gettext(Msgid) \
-     dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
-#  undef ngettext
-#  define ngettext(Msgid1, Msgid2, N) \
-     dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
-# endif
-
-#else
-
-/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
-   chokes if dcgettext is defined as a macro.  So include it now, to make
-   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
-   as well because people using "gettext.h" will not include <libintl.h>,
-   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
-   is OK.  */
-#if defined(__sun)
-# include <locale.h>
-#endif
-
-/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
-   <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
-   it now, to make later inclusions of <libintl.h> a NOP.  */
-#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
-# include <cstdlib>
-# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
-#  include <libintl.h>
-# endif
-#endif
-
-/* Disabled NLS.
-   The casts to 'const char *' serve the purpose of producing warnings
-   for invalid uses of the value returned from these functions.
-   On pre-ANSI systems without 'const', the config.h file is supposed to
-   contain "#define const".  */
-# undef gettext
-# define gettext(Msgid) ((const char *) (Msgid))
-# undef dgettext
-# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
-# undef dcgettext
-# define dcgettext(Domainname, Msgid, Category) \
-    ((void) (Category), dgettext (Domainname, Msgid))
-# undef ngettext
-# define ngettext(Msgid1, Msgid2, N) \
-    ((N) == 1 \
-     ? ((void) (Msgid2), (const char *) (Msgid1)) \
-     : ((void) (Msgid1), (const char *) (Msgid2)))
-# undef dngettext
-# define dngettext(Domainname, Msgid1, Msgid2, N) \
-    ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
-# undef dcngettext
-# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
-    ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N))
-# undef textdomain
-# define textdomain(Domainname) ((const char *) (Domainname))
-# undef bindtextdomain
-# define bindtextdomain(Domainname, Dirname) \
-    ((void) (Domainname), (const char *) (Dirname))
-# undef bind_textdomain_codeset
-# define bind_textdomain_codeset(Domainname, Codeset) \
-    ((void) (Domainname), (const char *) (Codeset))
-
-#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.
-   The argument, String, should be a literal string.  Concatenated strings
-   and other string expressions won't work.
-   The macro's expansion is not parenthesized, so that it is suitable as
-   initializer for static 'char[]' or 'const char[]' variables.  */
-#define gettext_noop(String) String
-
-/* The separator between msgctxt and msgid in a .mo file.  */
-#define GETTEXT_CONTEXT_GLUE "\004"
-
-/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
-   MSGID.  MSGCTXT and MSGID must be string literals.  MSGCTXT should be
-   short and rarely need to change.
-   The letter 'p' stands for 'particular' or 'special'.  */
-#ifdef DEFAULT_TEXT_DOMAIN
-# define pgettext(Msgctxt, Msgid) \
-   pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, 
Msgid, LC_MESSAGES)
-#else
-# define pgettext(Msgctxt, Msgid) \
-   pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
-#endif
-#define dpgettext(Domainname, Msgctxt, Msgid) \
-  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, 
LC_MESSAGES)
-#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
-  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, 
Category)
-#ifdef DEFAULT_TEXT_DOMAIN
-# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
-   npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, 
Msgid, MsgidPlural, N, LC_MESSAGES)
-#else
-# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
-   npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, 
MsgidPlural, N, LC_MESSAGES)
-#endif
-#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
-  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, 
MsgidPlural, N, LC_MESSAGES)
-#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
-  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, 
MsgidPlural, N, Category)
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static const char *
-pgettext_aux (const char *domain,
-              const char *msg_ctxt_id, const char *msgid,
-              int category)
-{
-  const char *translation = dcgettext (domain, msg_ctxt_id, category);
-  if (translation == msg_ctxt_id)
-    return msgid;
-  else
-    return translation;
-}
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static const char *
-npgettext_aux (const char *domain,
-               const char *msg_ctxt_id, const char *msgid,
-               const char *msgid_plural, unsigned long int n,
-               int category)
-{
-  const char *translation =
-    dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
-  if (translation == msg_ctxt_id || translation == msgid_plural)
-    return (n == 1 ? msgid : msgid_plural);
-  else
-    return translation;
-}
-
-/* The same thing extended for non-constant arguments.  Here MSGCTXT and MSGID
-   can be arbitrary expressions.  But for string literals these macros are
-   less efficient than those above.  */
-
-#include <string.h>
-
-#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>
-#endif
-
-#define pgettext_expr(Msgctxt, Msgid) \
-  dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
-#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
-  dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static const char *
-dcpgettext_expr (const char *domain,
-                 const char *msgctxt, const char *msgid,
-                 int category)
-{
-  size_t msgctxt_len = strlen (msgctxt) + 1;
-  size_t msgid_len = strlen (msgid) + 1;
-  const char *translation;
-#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-  char msg_ctxt_id[msgctxt_len + msgid_len];
-#else
-  char buf[1024];
-  char *msg_ctxt_id =
-    (msgctxt_len + msgid_len <= sizeof (buf)
-     ? buf
-     : (char *) malloc (msgctxt_len + msgid_len));
-  if (msg_ctxt_id != NULL)
-#endif
-    {
-      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
-      msg_ctxt_id[msgctxt_len - 1] = '\004';
-      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
-      translation = dcgettext (domain, msg_ctxt_id, category);
-#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-      if (msg_ctxt_id != buf)
-        free (msg_ctxt_id);
-#endif
-      if (translation != msg_ctxt_id)
-        return translation;
-    }
-  return msgid;
-}
-
-#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
-  dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
-#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
-  dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static const char *
-dcnpgettext_expr (const char *domain,
-                  const char *msgctxt, const char *msgid,
-                  const char *msgid_plural, unsigned long int n,
-                  int category)
-{
-  size_t msgctxt_len = strlen (msgctxt) + 1;
-  size_t msgid_len = strlen (msgid) + 1;
-  const char *translation;
-#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-  char msg_ctxt_id[msgctxt_len + msgid_len];
-#else
-  char buf[1024];
-  char *msg_ctxt_id =
-    (msgctxt_len + msgid_len <= sizeof (buf)
-     ? buf
-     : (char *) malloc (msgctxt_len + msgid_len));
-  if (msg_ctxt_id != NULL)
-#endif
-    {
-      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
-      msg_ctxt_id[msgctxt_len - 1] = '\004';
-      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
-      translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, 
category);
-#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-      if (msg_ctxt_id != buf)
-        free (msg_ctxt_id);
-#endif
-      if (!(translation == msg_ctxt_id || translation == msgid_plural))
-        return translation;
-    }
-  return (n == 1 ? msgid : msgid_plural);
-}
-
-#endif /* _LIBGETTEXT_H */
diff --git a/grub-core/gnulib/intprops.h b/grub-core/gnulib/intprops.h
deleted file mode 100644
index b473052d1..000000000
--- a/grub-core/gnulib/intprops.h
+++ /dev/null
@@ -1,319 +0,0 @@
-/* intprops.h -- properties of integer types
-
-   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
-   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 Paul Eggert.  */
-
-#ifndef _GL_INTPROPS_H
-#define _GL_INTPROPS_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)
-
-/* 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)
-
-/* 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))
-
-/* 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.  */
-
-/* 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, 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)
-
-
-/* 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 */
diff --git a/grub-core/gnulib/itold.c b/grub-core/gnulib/itold.c
deleted file mode 100644
index 9aabc7e46..000000000
--- a/grub-core/gnulib/itold.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Replacement for 'int' to 'long double' conversion routine.
-   Copyright (C) 2011-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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
deleted file mode 100644
index 5388ce624..000000000
--- a/grub-core/gnulib/langinfo.in.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Substitute for and wrapper around <langinfo.h>.
-   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
-   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/>.  */
-
-/*
- * POSIX <langinfo.h> for platforms that lack it or have an incomplete one.
- * <http://www.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html>
- */
-
-#ifndef address@hidden@_LANGINFO_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-/* The include_next requires a split double-inclusion guard.  */
-#if @HAVE_LANGINFO_H@
-# @INCLUDE_NEXT@ @NEXT_LANGINFO_H@
-#endif
-
-#ifndef address@hidden@_LANGINFO_H
-#define address@hidden@_LANGINFO_H
-
-
-#if address@hidden@
-
-/* 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
-/* nl_langinfo items of the LC_NUMERIC category */
-# define RADIXCHAR   10001
-# define THOUSEP     10002
-/* nl_langinfo items of the LC_TIME category */
-# define D_T_FMT     10003
-# define D_FMT       10004
-# define T_FMT       10005
-# define T_FMT_AMPM  10006
-# define AM_STR      10007
-# define PM_STR      10008
-# define DAY_1       10009
-# define DAY_2       (DAY_1 + 1)
-# define DAY_3       (DAY_1 + 2)
-# define DAY_4       (DAY_1 + 3)
-# define DAY_5       (DAY_1 + 4)
-# define DAY_6       (DAY_1 + 5)
-# define DAY_7       (DAY_1 + 6)
-# define ABDAY_1     10016
-# define ABDAY_2     (ABDAY_1 + 1)
-# define ABDAY_3     (ABDAY_1 + 2)
-# define ABDAY_4     (ABDAY_1 + 3)
-# define ABDAY_5     (ABDAY_1 + 4)
-# define ABDAY_6     (ABDAY_1 + 5)
-# define ABDAY_7     (ABDAY_1 + 6)
-# define MON_1       10023
-# define MON_2       (MON_1 + 1)
-# define MON_3       (MON_1 + 2)
-# define MON_4       (MON_1 + 3)
-# define MON_5       (MON_1 + 4)
-# define MON_6       (MON_1 + 5)
-# define MON_7       (MON_1 + 6)
-# define MON_8       (MON_1 + 7)
-# define MON_9       (MON_1 + 8)
-# define MON_10      (MON_1 + 9)
-# define MON_11      (MON_1 + 10)
-# define MON_12      (MON_1 + 11)
-# define ABMON_1     10035
-# define ABMON_2     (ABMON_1 + 1)
-# define ABMON_3     (ABMON_1 + 2)
-# define ABMON_4     (ABMON_1 + 3)
-# define ABMON_5     (ABMON_1 + 4)
-# define ABMON_6     (ABMON_1 + 5)
-# define ABMON_7     (ABMON_1 + 6)
-# define ABMON_8     (ABMON_1 + 7)
-# define ABMON_9     (ABMON_1 + 8)
-# define ABMON_10    (ABMON_1 + 9)
-# define ABMON_11    (ABMON_1 + 10)
-# define ABMON_12    (ABMON_1 + 11)
-# define ERA         10047
-# define ERA_D_FMT   10048
-# define ERA_D_T_FMT 10049
-# define ERA_T_FMT   10050
-# define ALT_DIGITS  10051
-/* nl_langinfo items of the LC_MONETARY category */
-# define CRNCYSTR    10052
-/* nl_langinfo items of the LC_MESSAGES category */
-# define YESEXPR     10053
-# define NOEXPR      10054
-
-#else
-
-/* A platform that has <langinfo.h>.  */
-
-# if address@hidden@
-#  define CODESET     10000
-#  define GNULIB_defined_CODESET 1
-# endif
-
-# if address@hidden@
-#  define T_FMT_AMPM  10006
-#  define GNULIB_defined_T_FMT_AMPM 1
-# endif
-
-# if address@hidden@
-#  define ERA         10047
-#  define ERA_D_FMT   10048
-#  define ERA_D_T_FMT 10049
-#  define ERA_T_FMT   10050
-#  define ALT_DIGITS  10051
-#  define GNULIB_defined_ERA 1
-# endif
-
-# if address@hidden@
-#  define YESEXPR     10053
-#  define NOEXPR      10054
-#  define GNULIB_defined_YESEXPR 1
-# endif
-
-#endif
-
-/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
-
-/* The definition of _GL_WARN_ON_USE is copied here.  */
-
-/* Declare overridden functions.  */
-
-
-/* Return a piece of locale dependent information.
-   Note: The difference between nl_langinfo (CODESET) and locale_charset ()
-   is that the latter normalizes the encoding names to GNU conventions.  */
-
-#if @GNULIB_NL_LANGINFO@
-# if @REPLACE_NL_LANGINFO@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef nl_langinfo
-#   define nl_langinfo rpl_nl_langinfo
-#  endif
-_GL_FUNCDECL_RPL (nl_langinfo, char *, (nl_item item));
-_GL_CXXALIAS_RPL (nl_langinfo, char *, (nl_item item));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (nl_langinfo, char *, (nl_item item));
-#  endif
-_GL_CXXALIAS_SYS (nl_langinfo, char *, (nl_item item));
-# endif
-_GL_CXXALIASWARN (nl_langinfo);
-#elif defined GNULIB_POSIXCHECK
-# undef nl_langinfo
-# if HAVE_RAW_DECL_NL_LANGINFO
-_GL_WARN_ON_USE (nl_langinfo, "nl_langinfo is not portable - "
-                 "use gnulib module nl_langinfo for portability");
-# endif
-#endif
-
-
-#endif /* address@hidden@_LANGINFO_H */
-#endif /* address@hidden@_LANGINFO_H */
diff --git a/grub-core/gnulib/localcharset.c b/grub-core/gnulib/localcharset.c
deleted file mode 100644
index 953cc1e70..000000000
--- a/grub-core/gnulib/localcharset.c
+++ /dev/null
@@ -1,553 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
-
-   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
-   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 Bruno Haible <address@hidden>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "localcharset.h"
-
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
-# define DARWIN7 /* Darwin 7 or newer, i.e. Mac OS X 10.3 or newer */
-#endif
-
-#if defined _WIN32 || defined __WIN32__
-# define WINDOWS_NATIVE
-#endif
-
-#if defined __EMX__
-/* Assume EMX program runs on OS/2, even if compiled under DOS.  */
-# ifndef OS2
-#  define OS2
-# endif
-#endif
-
-#if !defined WINDOWS_NATIVE
-# include <unistd.h>
-# if HAVE_LANGINFO_CODESET
-#  include <langinfo.h>
-# else
-#  if 0 /* see comment below */
-#   include <locale.h>
-#  endif
-# endif
-# ifdef __CYGWIN__
-#  define WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# endif
-#elif defined WINDOWS_NATIVE
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-#endif
-#if defined OS2
-# define INCL_DOS
-# include <os2.h>
-#endif
-
-#if ENABLE_RELOCATABLE
-# include "relocatable.h"
-#else
-# define relocate(pathname) (pathname)
-#endif
-
-/* Get LIBDIR.  */
-#ifndef LIBDIR
-# include "configmake.h"
-#endif
-
-/* Define O_NOFOLLOW to 0 on platforms where it does not exist.  */
-#ifndef O_NOFOLLOW
-# define O_NOFOLLOW 0
-#endif
-
-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined 
__EMX__ || defined __DJGPP__
-  /* Native Windows, Cygwin, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-#endif
-
-#ifndef DIRECTORY_SEPARATOR
-# define DIRECTORY_SEPARATOR '/'
-#endif
-
-#ifndef ISSLASH
-# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
-#endif
-
-#if HAVE_DECL_GETC_UNLOCKED
-# undef getc
-# define getc getc_unlocked
-#endif
-
-/* The following static variable is declared 'volatile' to avoid a
-   possible multithread problem in the function get_charset_aliases. If we
-   are running in a threaded environment, and if two threads initialize
-   'charset_aliases' simultaneously, both will produce the same value,
-   and everything will be ok if the two assignments to 'charset_aliases'
-   are atomic. But I don't know what will happen if the two assignments mix.  
*/
-#if __STDC__ != 1
-# define volatile /* empty */
-#endif
-/* Pointer to the contents of the charset.alias file, if it has already been
-   read, else NULL.  Its format is:
-   ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0'  */
-static const char * volatile charset_aliases;
-
-/* Return a pointer to the contents of the charset.alias file.  */
-static const char *
-get_charset_aliases (void)
-{
-  const char *cp;
-
-  cp = charset_aliases;
-  if (cp == NULL)
-    {
-#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined 
__CYGWIN__)
-      const char *dir;
-      const char *base = "charset.alias";
-      char *file_name;
-
-      /* Make it possible to override the charset.alias location.  This is
-         necessary for running the testsuite before "make install".  */
-      dir = getenv ("CHARSETALIASDIR");
-      if (dir == NULL || dir[0] == '\0')
-        dir = relocate (LIBDIR);
-
-      /* Concatenate dir and base into freshly allocated file_name.  */
-      {
-        size_t dir_len = strlen (dir);
-        size_t base_len = strlen (base);
-        int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
-        file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
-        if (file_name != NULL)
-          {
-            memcpy (file_name, dir, dir_len);
-            if (add_slash)
-              file_name[dir_len] = DIRECTORY_SEPARATOR;
-            memcpy (file_name + dir_len + add_slash, base, base_len + 1);
-          }
-      }
-
-      if (file_name == NULL)
-        /* Out of memory.  Treat the file as empty.  */
-        cp = "";
-      else
-        {
-          int fd;
-
-          /* Open the file.  Reject symbolic links on platforms that support
-             O_NOFOLLOW.  This is a security feature.  Without it, an attacker
-             could retrieve parts of the contents (namely, the tail of the
-             first line that starts with "* ") of an arbitrary file by placing
-             a symbolic link to that file under the name "charset.alias" in
-             some writable directory and defining the environment variable
-             CHARSETALIASDIR to point to that directory.  */
-          fd = open (file_name,
-                     O_RDONLY | (HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0));
-          if (fd < 0)
-            /* File not found.  Treat it as empty.  */
-            cp = "";
-          else
-            {
-              FILE *fp;
-
-              fp = fdopen (fd, "r");
-              if (fp == NULL)
-                {
-                  /* Out of memory.  Treat the file as empty.  */
-                  close (fd);
-                  cp = "";
-                }
-              else
-                {
-                  /* Parse the file's contents.  */
-                  char *res_ptr = NULL;
-                  size_t res_size = 0;
-
-                  for (;;)
-                    {
-                      int c;
-                      char buf1[50+1];
-                      char buf2[50+1];
-                      size_t l1, l2;
-                      char *old_res_ptr;
-
-                      c = getc (fp);
-                      if (c == EOF)
-                        break;
-                      if (c == '\n' || c == ' ' || c == '\t')
-                        continue;
-                      if (c == '#')
-                        {
-                          /* Skip comment, to end of line.  */
-                          do
-                            c = getc (fp);
-                          while (!(c == EOF || c == '\n'));
-                          if (c == EOF)
-                            break;
-                          continue;
-                        }
-                      ungetc (c, fp);
-                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
-                        break;
-                      l1 = strlen (buf1);
-                      l2 = strlen (buf2);
-                      old_res_ptr = res_ptr;
-                      if (res_size == 0)
-                        {
-                          res_size = l1 + 1 + l2 + 1;
-                          res_ptr = (char *) malloc (res_size + 1);
-                        }
-                      else
-                        {
-                          res_size += l1 + 1 + l2 + 1;
-                          res_ptr = (char *) realloc (res_ptr, res_size + 1);
-                        }
-                      if (res_ptr == NULL)
-                        {
-                          /* Out of memory. */
-                          res_size = 0;
-                          free (old_res_ptr);
-                          break;
-                        }
-                      strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
-                      strcpy (res_ptr + res_size - (l2 + 1), buf2);
-                    }
-                  fclose (fp);
-                  if (res_size == 0)
-                    cp = "";
-                  else
-                    {
-                      *(res_ptr + res_size) = '\0';
-                      cp = res_ptr;
-                    }
-                }
-            }
-
-          free (file_name);
-        }
-
-#else
-
-# if defined DARWIN7
-      /* To avoid the trouble of installing a file that is shared by many
-         GNU packages -- many packaging systems have problems with this --,
-         simply inline the aliases here.  */
-      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
-           "ISO8859-2" "\0" "ISO-8859-2" "\0"
-           "ISO8859-4" "\0" "ISO-8859-4" "\0"
-           "ISO8859-5" "\0" "ISO-8859-5" "\0"
-           "ISO8859-7" "\0" "ISO-8859-7" "\0"
-           "ISO8859-9" "\0" "ISO-8859-9" "\0"
-           "ISO8859-13" "\0" "ISO-8859-13" "\0"
-           "ISO8859-15" "\0" "ISO-8859-15" "\0"
-           "KOI8-R" "\0" "KOI8-R" "\0"
-           "KOI8-U" "\0" "KOI8-U" "\0"
-           "CP866" "\0" "CP866" "\0"
-           "CP949" "\0" "CP949" "\0"
-           "CP1131" "\0" "CP1131" "\0"
-           "CP1251" "\0" "CP1251" "\0"
-           "eucCN" "\0" "GB2312" "\0"
-           "GB2312" "\0" "GB2312" "\0"
-           "eucJP" "\0" "EUC-JP" "\0"
-           "eucKR" "\0" "EUC-KR" "\0"
-           "Big5" "\0" "BIG5" "\0"
-           "Big5HKSCS" "\0" "BIG5-HKSCS" "\0"
-           "GBK" "\0" "GBK" "\0"
-           "GB18030" "\0" "GB18030" "\0"
-           "SJIS" "\0" "SHIFT_JIS" "\0"
-           "ARMSCII-8" "\0" "ARMSCII-8" "\0"
-           "PT154" "\0" "PT154" "\0"
-         /*"ISCII-DEV" "\0" "?" "\0"*/
-           "*" "\0" "UTF-8" "\0";
-# endif
-
-# if defined VMS
-      /* To avoid the troubles of an extra file charset.alias_vms in the
-         sources of many GNU packages, simply inline the aliases here.  */
-      /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
-         "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
-         section 10.7 "Handling Different Character Sets".  */
-      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
-           "ISO8859-2" "\0" "ISO-8859-2" "\0"
-           "ISO8859-5" "\0" "ISO-8859-5" "\0"
-           "ISO8859-7" "\0" "ISO-8859-7" "\0"
-           "ISO8859-8" "\0" "ISO-8859-8" "\0"
-           "ISO8859-9" "\0" "ISO-8859-9" "\0"
-           /* Japanese */
-           "eucJP" "\0" "EUC-JP" "\0"
-           "SJIS" "\0" "SHIFT_JIS" "\0"
-           "DECKANJI" "\0" "DEC-KANJI" "\0"
-           "SDECKANJI" "\0" "EUC-JP" "\0"
-           /* Chinese */
-           "eucTW" "\0" "EUC-TW" "\0"
-           "DECHANYU" "\0" "DEC-HANYU" "\0"
-           "DECHANZI" "\0" "GB2312" "\0"
-           /* Korean */
-           "DECKOREAN" "\0" "EUC-KR" "\0";
-# endif
-
-# 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.  */
-
-      cp = "CP936" "\0" "GBK" "\0"
-           "CP1361" "\0" "JOHAB" "\0"
-           "CP20127" "\0" "ASCII" "\0"
-           "CP20866" "\0" "KOI8-R" "\0"
-           "CP20936" "\0" "GB2312" "\0"
-           "CP21866" "\0" "KOI8-RU" "\0"
-           "CP28591" "\0" "ISO-8859-1" "\0"
-           "CP28592" "\0" "ISO-8859-2" "\0"
-           "CP28593" "\0" "ISO-8859-3" "\0"
-           "CP28594" "\0" "ISO-8859-4" "\0"
-           "CP28595" "\0" "ISO-8859-5" "\0"
-           "CP28596" "\0" "ISO-8859-6" "\0"
-           "CP28597" "\0" "ISO-8859-7" "\0"
-           "CP28598" "\0" "ISO-8859-8" "\0"
-           "CP28599" "\0" "ISO-8859-9" "\0"
-           "CP28605" "\0" "ISO-8859-15" "\0"
-           "CP38598" "\0" "ISO-8859-8" "\0"
-           "CP51932" "\0" "EUC-JP" "\0"
-           "CP51936" "\0" "GB2312" "\0"
-           "CP51949" "\0" "EUC-KR" "\0"
-           "CP51950" "\0" "EUC-TW" "\0"
-           "CP54936" "\0" "GB18030" "\0"
-           "CP65001" "\0" "UTF-8" "\0";
-# endif
-#endif
-
-      charset_aliases = cp;
-    }
-
-  return cp;
-}
-
-/* Determine the current locale's character encoding, and canonicalize it
-   into one of the canonical names listed in config.charset.
-   The result must not be freed; it is statically allocated.
-   If the canonical name cannot be determined, the result is a non-canonical
-   name.  */
-
-#ifdef STATIC
-STATIC
-#endif
-const char *
-locale_charset (void)
-{
-  const char *codeset;
-  const char *aliases;
-
-#if !(defined WINDOWS_NATIVE || defined OS2)
-
-# if HAVE_LANGINFO_CODESET
-
-  /* Most systems support nl_langinfo (CODESET) nowadays.  */
-  codeset = nl_langinfo (CODESET);
-
-#  ifdef __CYGWIN__
-  /* Cygwin < 1.7 does not have locales.  nl_langinfo (CODESET) always
-     returns "US-ASCII".  Return the suffix of the locale name from the
-     environment variables (if present) or the codepage as a number.  */
-  if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
-    {
-      const char *locale;
-      static char buf[2 + 10 + 1];
-
-      locale = getenv ("LC_ALL");
-      if (locale == NULL || locale[0] == '\0')
-        {
-          locale = getenv ("LC_CTYPE");
-          if (locale == NULL || locale[0] == '\0')
-            locale = getenv ("LANG");
-        }
-      if (locale != NULL && locale[0] != '\0')
-        {
-          /* If the locale name contains an encoding after the dot, return
-             it.  */
-          const char *dot = strchr (locale, '.');
-
-          if (dot != NULL)
-            {
-              const char *modifier;
-
-              dot++;
-              /* Look for the possible @... trailer and remove it, if any.  */
-              modifier = strchr (dot, '@');
-              if (modifier == NULL)
-                return dot;
-              if (modifier - dot < sizeof (buf))
-                {
-                  memcpy (buf, dot, modifier - dot);
-                  buf [modifier - dot] = '\0';
-                  return buf;
-                }
-            }
-        }
-
-      /* 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
-         this conversion transparently (see winsup/cygwin/fhandler_console.cc),
-         converting to GetConsoleOutputCP().  This leads to correct results,
-         except when SetConsoleOutputCP has been called and a raster font is
-         in use.  */
-      sprintf (buf, "CP%u", GetACP ());
-      codeset = buf;
-    }
-#  endif
-
-# else
-
-  /* On old systems which lack it, use setlocale or getenv.  */
-  const char *locale = NULL;
-
-  /* But most old systems don't have a complete set of locales.  Some
-     (like SunOS 4 or DJGPP) have only the C locale.  Therefore we don't
-     use setlocale here; it would return "C" when it doesn't support the
-     locale name the user has set.  */
-#  if 0
-  locale = setlocale (LC_CTYPE, NULL);
-#  endif
-  if (locale == NULL || locale[0] == '\0')
-    {
-      locale = getenv ("LC_ALL");
-      if (locale == NULL || locale[0] == '\0')
-        {
-          locale = getenv ("LC_CTYPE");
-          if (locale == NULL || locale[0] == '\0')
-            locale = getenv ("LANG");
-        }
-    }
-
-  /* On some old systems, one used to set locale = "iso8859_1". On others,
-     you set it to "language_COUNTRY.charset". In any case, we resolve it
-     through the charset.alias file.  */
-  codeset = locale;
-
-# endif
-
-#elif defined WINDOWS_NATIVE
-
-  static char buf[2 + 10 + 1];
-
-  /* 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.
-     But in GUI programs and for output sent to files and pipes, GetACP()
-     encoding is the best bet.  */
-  sprintf (buf, "CP%u", GetACP ());
-  codeset = buf;
-
-#elif defined OS2
-
-  const char *locale;
-  static char buf[2 + 10 + 1];
-  ULONG cp[3];
-  ULONG cplen;
-
-  /* Allow user to override the codeset, as set in the operating system,
-     with standard language environment variables.  */
-  locale = getenv ("LC_ALL");
-  if (locale == NULL || locale[0] == '\0')
-    {
-      locale = getenv ("LC_CTYPE");
-      if (locale == NULL || locale[0] == '\0')
-        locale = getenv ("LANG");
-    }
-  if (locale != NULL && locale[0] != '\0')
-    {
-      /* If the locale name contains an encoding after the dot, return it.  */
-      const char *dot = strchr (locale, '.');
-
-      if (dot != NULL)
-        {
-          const char *modifier;
-
-          dot++;
-          /* Look for the possible @... trailer and remove it, if any.  */
-          modifier = strchr (dot, '@');
-          if (modifier == NULL)
-            return dot;
-          if (modifier - dot < sizeof (buf))
-            {
-              memcpy (buf, dot, modifier - dot);
-              buf [modifier - dot] = '\0';
-              return buf;
-            }
-        }
-
-      /* Resolve through the charset.alias file.  */
-      codeset = locale;
-    }
-  else
-    {
-      /* OS/2 has a function returning the locale's codepage as a number.  */
-      if (DosQueryCp (sizeof (cp), cp, &cplen))
-        codeset = "";
-      else
-        {
-          sprintf (buf, "CP%u", cp[0]);
-          codeset = buf;
-        }
-    }
-
-#endif
-
-  if (codeset == NULL)
-    /* The canonical name cannot be determined.  */
-    codeset = "";
-
-  /* Resolve alias. */
-  for (aliases = get_charset_aliases ();
-       *aliases != '\0';
-       aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
-    if (strcmp (codeset, aliases) == 0
-        || (aliases[0] == '*' && aliases[1] == '\0'))
-      {
-        codeset = aliases + strlen (aliases) + 1;
-        break;
-      }
-
-  /* Don't return an empty string.  GNU libc and GNU libiconv interpret
-     the empty string as denoting "the locale's character encoding",
-     thus GNU libiconv would call this function a second time.  */
-  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
deleted file mode 100644
index c20982986..000000000
--- a/grub-core/gnulib/localcharset.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
-   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
-   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 _LOCALCHARSET_H
-#define _LOCALCHARSET_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Determine the current locale's character encoding, and canonicalize it
-   into one of the canonical names listed in config.charset.
-   The result must not be freed; it is statically allocated.
-   If the canonical name cannot be determined, the result is a non-canonical
-   name.  */
-extern const char * locale_charset (void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _LOCALCHARSET_H */
diff --git a/grub-core/gnulib/locale.in.h b/grub-core/gnulib/locale.in.h
deleted file mode 100644
index 264161a6c..000000000
--- a/grub-core/gnulib/locale.in.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/* 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
address@hidden@
-#endif
address@hidden@
-
-#ifdef _GL_ALREADY_INCLUDING_LOCALE_H
-
-/* Special invocation conventions to handle Solaris header files
-   (through Solaris 10) when combined with gettext's libintl.h.  */
-
address@hidden@ @NEXT_LOCALE_H@
-
-#else
-/* Normal invocation convention.  */
-
-#ifndef address@hidden@_LOCALE_H
-
-#define _GL_ALREADY_INCLUDING_LOCALE_H
-
-/* The include_next requires a split double-inclusion guard.  */
address@hidden@ @NEXT_LOCALE_H@
-
-#undef _GL_ALREADY_INCLUDING_LOCALE_H
-
-#ifndef address@hidden@_LOCALE_H
-#define address@hidden@_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 /* address@hidden@_LOCALE_H */
-#endif /* ! _GL_ALREADY_INCLUDING_LOCALE_H */
-#endif /* address@hidden@_LOCALE_H */
diff --git a/grub-core/gnulib/localeconv.c b/grub-core/gnulib/localeconv.c
deleted file mode 100644
index 7c7c77cfd..000000000
--- a/grub-core/gnulib/localeconv.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* 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
deleted file mode 100644
index 908735d27..000000000
--- a/grub-core/gnulib/malloc.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* malloc() function that is glibc compatible.
-
-   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
-   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 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
-# define NEED_MALLOC_GNU 1
-# undef malloc
-/* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU.  */
-#elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU
-# define NEED_MALLOC_GNU 1
-#endif
-
-#include <stdlib.h>
-
-#include <errno.h>
-
-/* Allocate an N-byte block of memory from the heap.
-   If N is zero, allocate a 1-byte block.  */
-
-void *
-rpl_malloc (size_t n)
-{
-  void *result;
-
-#if NEED_MALLOC_GNU
-  if (n == 0)
-    n = 1;
-#endif
-
-  result = malloc (n);
-
-#if !HAVE_MALLOC_POSIX
-  if (result == NULL)
-    errno = ENOMEM;
-#endif
-
-  return result;
-}
diff --git a/grub-core/gnulib/mbrtowc.c b/grub-core/gnulib/mbrtowc.c
deleted file mode 100644
index 5ee44aea4..000000000
--- a/grub-core/gnulib/mbrtowc.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/* Convert multibyte character to wide character.
-   Copyright (C) 1999-2002, 2005-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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 <wchar.h>
-
-#if GNULIB_defined_mbstate_t
-/* Implement mbrtowc() on top of mbtowc().  */
-
-# include <errno.h>
-# include <stdlib.h>
-
-# include "localcharset.h"
-# include "streq.h"
-# include "verify.h"
-
-
-verify (sizeof (mbstate_t) >= 4);
-
-static char internal_state[4];
-
-size_t
-mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
-{
-  char *pstate = (char *)ps;
-
-  if (s == NULL)
-    {
-      pwc = NULL;
-      s = "";
-      n = 1;
-    }
-
-  if (n == 0)
-    return (size_t)(-2);
-
-  /* Here n > 0.  */
-
-  if (pstate == NULL)
-    pstate = internal_state;
-
-  {
-    size_t nstate = pstate[0];
-    char buf[4];
-    const char *p;
-    size_t m;
-
-    switch (nstate)
-      {
-      case 0:
-        p = s;
-        m = n;
-        break;
-      case 3:
-        buf[2] = pstate[3];
-        /*FALLTHROUGH*/
-      case 2:
-        buf[1] = pstate[2];
-        /*FALLTHROUGH*/
-      case 1:
-        buf[0] = pstate[1];
-        p = buf;
-        m = nstate;
-        buf[m++] = s[0];
-        if (n >= 2 && m < 4)
-          {
-            buf[m++] = s[1];
-            if (n >= 3 && m < 4)
-              buf[m++] = s[2];
-          }
-        break;
-      default:
-        errno = EINVAL;
-        return (size_t)(-1);
-      }
-
-    /* Here m > 0.  */
-
-# if __GLIBC__ || defined __UCLIBC__
-    /* Work around bug <http://sourceware.org/bugzilla/show_bug.cgi?id=9674> */
-    mbtowc (NULL, NULL, 0);
-# endif
-    {
-      int res = mbtowc (pwc, p, m);
-
-      if (res >= 0)
-        {
-          if (pwc != NULL && ((*pwc == 0) != (res == 0)))
-            abort ();
-          if (nstate >= (res > 0 ? res : 1))
-            abort ();
-          res -= nstate;
-          pstate[0] = 0;
-          return res;
-        }
-
-      /* mbtowc does not distinguish between invalid and incomplete multibyte
-         sequences.  But mbrtowc needs to make this distinction.
-         There are two possible approaches:
-           - Use iconv() and its return value.
-           - Use built-in knowledge about the possible encodings.
-         Given the low quality of implementation of iconv() on the systems that
-         lack mbrtowc(), we use the second approach.
-         The possible encodings are:
-           - 8-bit encodings,
-           - EUC-JP, EUC-KR, GB2312, EUC-TW, BIG5, GB18030, SJIS,
-           - UTF-8.
-         Use specialized code for each.  */
-      if (m >= 4 || m >= MB_CUR_MAX)
-        goto invalid;
-      /* Here MB_CUR_MAX > 1 and 0 < m < 4.  */
-      {
-        const char *encoding = locale_charset ();
-
-        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];
-
-            if (c >= 0xc2)
-              {
-                if (c < 0xe0)
-                  {
-                    if (m == 1)
-                      goto incomplete;
-                  }
-                else if (c < 0xf0)
-                  {
-                    if (m == 1)
-                      goto incomplete;
-                    if (m == 2)
-                      {
-                        unsigned char c2 = (unsigned char) p[1];
-
-                        if ((c2 ^ 0x80) < 0x40
-                            && (c >= 0xe1 || c2 >= 0xa0)
-                            && (c != 0xed || c2 < 0xa0))
-                          goto incomplete;
-                      }
-                  }
-                else if (c <= 0xf4)
-                  {
-                    if (m == 1)
-                      goto incomplete;
-                    else /* m == 2 || m == 3 */
-                      {
-                        unsigned char c2 = (unsigned char) p[1];
-
-                        if ((c2 ^ 0x80) < 0x40
-                            && (c >= 0xf1 || c2 >= 0x90)
-                            && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
-                          {
-                            if (m == 2)
-                              goto incomplete;
-                            else /* m == 3 */
-                              {
-                                unsigned char c3 = (unsigned char) p[2];
-
-                                if ((c3 ^ 0x80) < 0x40)
-                                  goto incomplete;
-                              }
-                          }
-                      }
-                  }
-              }
-            goto invalid;
-          }
-
-        /* As a reference for this code, you can use the GNU libiconv
-           implementation.  Look for uses of the RET_TOOFEW macro.  */
-
-        if (STREQ_OPT (encoding,
-                       "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
-          {
-            if (m == 1)
-              {
-                unsigned char c = (unsigned char) p[0];
-
-                if ((c >= 0xa1 && c < 0xff) || c == 0x8e || c == 0x8f)
-                  goto incomplete;
-              }
-            if (m == 2)
-              {
-                unsigned char c = (unsigned char) p[0];
-
-                if (c == 0x8f)
-                  {
-                    unsigned char c2 = (unsigned char) p[1];
-
-                    if (c2 >= 0xa1 && c2 < 0xff)
-                      goto incomplete;
-                  }
-              }
-            goto invalid;
-          }
-        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)
-              {
-                unsigned char c = (unsigned char) p[0];
-
-                if (c >= 0xa1 && c < 0xff)
-                  goto incomplete;
-              }
-            goto invalid;
-          }
-        if (STREQ_OPT (encoding,
-                       "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
-          {
-            if (m == 1)
-              {
-                unsigned char c = (unsigned char) p[0];
-
-                if ((c >= 0xa1 && c < 0xff) || c == 0x8e)
-                  goto incomplete;
-              }
-            else /* m == 2 || m == 3 */
-              {
-                unsigned char c = (unsigned char) p[0];
-
-                if (c == 0x8e)
-                  goto incomplete;
-              }
-            goto invalid;
-          }
-        if (STREQ_OPT (encoding,
-                       "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
-          {
-            if (m == 1)
-              {
-                unsigned char c = (unsigned char) p[0];
-
-                if ((c >= 0x90 && c <= 0xe3) || (c >= 0xf8 && c <= 0xfe))
-                  goto incomplete;
-              }
-            else /* m == 2 || m == 3 */
-              {
-                unsigned char c = (unsigned char) p[0];
-
-                if (c >= 0x90 && c <= 0xe3)
-                  {
-                    unsigned char c2 = (unsigned char) p[1];
-
-                    if (c2 >= 0x30 && c2 <= 0x39)
-                      {
-                        if (m == 2)
-                          goto incomplete;
-                        else /* m == 3 */
-                          {
-                            unsigned char c3 = (unsigned char) p[2];
-
-                            if (c3 >= 0x81 && c3 <= 0xfe)
-                              goto incomplete;
-                          }
-                      }
-                  }
-              }
-            goto invalid;
-          }
-        if (STREQ_OPT (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
-          {
-            if (m == 1)
-              {
-                unsigned char c = (unsigned char) p[0];
-
-                if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)
-                    || (c >= 0xf0 && c <= 0xf9))
-                  goto incomplete;
-              }
-            goto invalid;
-          }
-
-        /* An unknown multibyte encoding.  */
-        goto incomplete;
-      }
-
-     incomplete:
-      {
-        size_t k = nstate;
-        /* Here 0 <= k < m < 4.  */
-        pstate[++k] = s[0];
-        if (k < m)
-          {
-            pstate[++k] = s[1];
-            if (k < m)
-              pstate[++k] = s[2];
-          }
-        if (k != m)
-          abort ();
-      }
-      pstate[0] = m;
-      return (size_t)(-2);
-
-     invalid:
-      errno = EILSEQ;
-      /* The conversion state is undefined, says POSIX.  */
-      return (size_t)(-1);
-    }
-  }
-}
-
-#else
-/* Override the system's mbrtowc() function.  */
-
-# undef mbrtowc
-
-size_t
-rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
-{
-# if MBRTOWC_NULL_ARG2_BUG || MBRTOWC_RETVAL_BUG
-  if (s == NULL)
-    {
-      pwc = NULL;
-      s = "";
-      n = 1;
-    }
-# endif
-
-# if MBRTOWC_RETVAL_BUG
-  {
-    static mbstate_t internal_state;
-
-    /* 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;
-
-    if (!mbsinit (ps))
-      {
-        /* Parse the rest of the multibyte character byte for byte.  */
-        size_t count = 0;
-        for (; n > 0; s++, n--)
-          {
-            wchar_t wc;
-            size_t ret = mbrtowc (&wc, s, 1, ps);
-
-            if (ret == (size_t)(-1))
-              return (size_t)(-1);
-            count++;
-            if (ret != (size_t)(-2))
-              {
-                /* The multibyte character has been completed.  */
-                if (pwc != NULL)
-                  *pwc = wc;
-                return (wc == 0 ? 0 : count);
-              }
-          }
-        return (size_t)(-2);
-      }
-  }
-# endif
-
-# if MBRTOWC_NUL_RETVAL_BUG
-  {
-    wchar_t wc;
-    size_t ret = mbrtowc (&wc, s, n, ps);
-
-    if (ret != (size_t)(-1) && ret != (size_t)(-2))
-      {
-        if (pwc != NULL)
-          *pwc = wc;
-        if (wc == 0)
-          ret = 0;
-      }
-    return ret;
-  }
-# else
-  {
-#   if MBRTOWC_NULL_ARG1_BUG
-    wchar_t dummy;
-
-    if (pwc == NULL)
-      pwc = &dummy;
-#   endif
-
-    return mbrtowc (pwc, s, n, ps);
-  }
-# endif
-}
-
-#endif
diff --git a/grub-core/gnulib/mbsinit.c b/grub-core/gnulib/mbsinit.c
deleted file mode 100644
index 26fbb7fa2..000000000
--- a/grub-core/gnulib/mbsinit.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Test for initial conversion state.
-   Copyright (C) 2008-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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 <wchar.h>
-
-#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
-     - sizeof (mbstate_t) >= 4,
-     - only stateless encodings are supported (such as UTF-8 and EUC-JP, but
-       not ISO-2022 variants),
-     - for each encoding, the number of bytes for a wide character is <= 4.
-       (This maximum is attained for UTF-8, GB18030, EUC-TW.)
-   We define the meaning of mbstate_t as follows:
-     - In mb -> wc direction, mbstate_t's first byte contains the number of
-       buffered bytes (in the range 0..3), followed by up to 3 buffered bytes.
-     - In wc -> mb direction, mbstate_t contains no information. In other
-       words, it is always in the initial state.  */
-
-verify (sizeof (mbstate_t) >= 4);
-
-int
-mbsinit (const mbstate_t *ps)
-{
-  const char *pstate = (const char *)ps;
-
-  return pstate == NULL || pstate[0] == 0;
-}
-
-#endif
diff --git a/grub-core/gnulib/mbsrtowcs-impl.h 
b/grub-core/gnulib/mbsrtowcs-impl.h
deleted file mode 100644
index b50e9739b..000000000
--- a/grub-core/gnulib/mbsrtowcs-impl.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Convert string to wide string.
-   Copyright (C) 2008-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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
deleted file mode 100644
index 5a0b8882b..000000000
--- a/grub-core/gnulib/mbsrtowcs-state.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Convert string to wide string.
-   Copyright (C) 2008-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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>
-
-#include <wchar.h>
-
-/* 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 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
-   AIX, IRIX, mingw). {0} works as an initializer in all cases: for a struct
-   or union type, but also for a scalar type (ISO C 99, 6.7.8.(11)).  */
-#if defined __ELF__
-  /* On ELF systems, variables in BSS behave well.  */
-#else
-  /* Use braces, to be on the safe side.  */
-  = { 0 }
-#endif
-  ;
diff --git a/grub-core/gnulib/mbsrtowcs.c b/grub-core/gnulib/mbsrtowcs.c
deleted file mode 100644
index 116ff493b..000000000
--- a/grub-core/gnulib/mbsrtowcs.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Convert string to wide string.
-   Copyright (C) 2008-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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 <wchar.h>
-
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-
-#include "strnlen1.h"
-
-
-extern mbstate_t _gl_mbsrtowcs_state;
-
-#include "mbsrtowcs-impl.h"
diff --git a/grub-core/gnulib/mbswidth.c b/grub-core/gnulib/mbswidth.c
deleted file mode 100644
index baa4f2757..000000000
--- a/grub-core/gnulib/mbswidth.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/* 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 <address@hidden>.  */
-
-#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
deleted file mode 100644
index d7207c58f..000000000
--- a/grub-core/gnulib/mbswidth.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* 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
deleted file mode 100644
index 767ab397c..000000000
--- a/grub-core/gnulib/mbtowc-impl.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Convert multibyte character to wide character.
-   Copyright (C) 2011-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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
deleted file mode 100644
index 632f2e1db..000000000
--- a/grub-core/gnulib/mbtowc.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Convert multibyte character to wide character.
-   Copyright (C) 2011-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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
deleted file mode 100644
index 3db38a94c..000000000
--- a/grub-core/gnulib/memchr.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2013
-   Free Software Foundation, Inc.
-
-   Based on strlen implementation by Torbjorn Granlund (address@hidden),
-   with help from Dan Sahlin (address@hidden) and
-   commentary by Jim Blandy (address@hidden);
-   adaptation to memchr suggested by Dick Karpinski (address@hidden),
-   and implemented by Roland McGrath (address@hidden).
-
-NOTE: The canonical source of this file is maintained with the GNU C Library.
-Bugs can be reported to address@hidden
-
-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 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 _LIBC
-# include <config.h>
-#endif
-
-#include <string.h>
-
-#include <stddef.h>
-
-#if defined _LIBC
-# include <memcopy.h>
-#else
-# define reg_char char
-#endif
-
-#include <limits.h>
-
-#if HAVE_BP_SYM_H || defined _LIBC
-# include <bp-sym.h>
-#else
-# define BP_SYM(sym) sym
-#endif
-
-#undef __memchr
-#ifdef _LIBC
-# undef memchr
-#endif
-
-#ifndef weak_alias
-# define __memchr memchr
-#endif
-
-/* Search no more than N bytes of S for C.  */
-void *
-__memchr (void const *s, int c_in, size_t n)
-{
-  /* On 32-bit hardware, choosing longword to be a 32-bit unsigned
-     long instead of a 64-bit uintmax_t tends to give better
-     performance.  On 64-bit hardware, unsigned long is generally 64
-     bits already.  Change this typedef to experiment with
-     performance.  */
-  typedef unsigned long int longword;
-
-  const unsigned char *char_ptr;
-  const longword *longword_ptr;
-  longword repeated_one;
-  longword repeated_c;
-  unsigned reg_char c;
-
-  c = (unsigned char) c_in;
-
-  /* Handle the first few bytes by reading one byte at a time.
-     Do this until CHAR_PTR is aligned on a longword boundary.  */
-  for (char_ptr = (const unsigned char *) s;
-       n > 0 && (size_t) char_ptr % sizeof (longword) != 0;
-       --n, ++char_ptr)
-    if (*char_ptr == c)
-      return (void *) char_ptr;
-
-  longword_ptr = (const longword *) char_ptr;
-
-  /* All these elucidatory comments refer to 4-byte longwords,
-     but the theory applies equally well to any size longwords.  */
-
-  /* Compute auxiliary longword values:
-     repeated_one is a value which has a 1 in every byte.
-     repeated_c has c in every byte.  */
-  repeated_one = 0x01010101;
-  repeated_c = c | (c << 8);
-  repeated_c |= repeated_c << 16;
-  if (0xffffffffU < (longword) -1)
-    {
-      repeated_one |= repeated_one << 31 << 1;
-      repeated_c |= repeated_c << 31 << 1;
-      if (8 < sizeof (longword))
-        {
-          size_t i;
-
-          for (i = 64; i < sizeof (longword) * 8; i *= 2)
-            {
-              repeated_one |= repeated_one << i;
-              repeated_c |= repeated_c << i;
-            }
-        }
-    }
-
-  /* Instead of the traditional loop which tests each byte, we will test a
-     longword at a time.  The tricky part is testing if *any of the four*
-     bytes in the longword in question are equal to c.  We first use an xor
-     with repeated_c.  This reduces the task to testing whether *any of the
-     four* bytes in longword1 is zero.
-
-     We compute tmp =
-       ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7).
-     That is, we perform the following operations:
-       1. Subtract repeated_one.
-       2. & ~longword1.
-       3. & a mask consisting of 0x80 in every byte.
-     Consider what happens in each byte:
-       - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff,
-         and step 3 transforms it into 0x80.  A carry can also be propagated
-         to more significant bytes.
-       - If a byte of longword1 is nonzero, let its lowest 1 bit be at
-         position k (0 <= k <= 7); so the lowest k bits are 0.  After step 1,
-         the byte ends in a single bit of value 0 and k bits of value 1.
-         After step 2, the result is just k bits of value 1: 2^k - 1.  After
-         step 3, the result is 0.  And no carry is produced.
-     So, if longword1 has only non-zero bytes, tmp is zero.
-     Whereas if longword1 has a zero byte, call j the position of the least
-     significant zero byte.  Then the result has a zero at positions 0, ...,
-     j-1 and a 0x80 at position j.  We cannot predict the result at the more
-     significant bytes (positions j+1..3), but it does not matter since we
-     already have a non-zero bit at position 8*j+7.
-
-     So, the test whether any byte in longword1 is zero is equivalent to
-     testing whether tmp is nonzero.  */
-
-  while (n >= sizeof (longword))
-    {
-      longword longword1 = *longword_ptr ^ repeated_c;
-
-      if ((((longword1 - repeated_one) & ~longword1)
-           & (repeated_one << 7)) != 0)
-        break;
-      longword_ptr++;
-      n -= sizeof (longword);
-    }
-
-  char_ptr = (const unsigned char *) longword_ptr;
-
-  /* At this point, we know that either n < sizeof (longword), or one of the
-     sizeof (longword) bytes starting at char_ptr is == c.  On little-endian
-     machines, we could determine the first such byte without any further
-     memory accesses, just by looking at the tmp result from the last loop
-     iteration.  But this does not work on big-endian machines.  Choose code
-     that works in both cases.  */
-
-  for (; n > 0; --n, ++char_ptr)
-    {
-      if (*char_ptr == c)
-        return (void *) char_ptr;
-    }
-
-  return NULL;
-}
-#ifdef weak_alias
-weak_alias (__memchr, BP_SYM (memchr))
-#endif
diff --git a/grub-core/gnulib/memchr.valgrind b/grub-core/gnulib/memchr.valgrind
deleted file mode 100644
index 60f247e10..000000000
--- a/grub-core/gnulib/memchr.valgrind
+++ /dev/null
@@ -1,14 +0,0 @@
-# Suppress a valgrind message about use of uninitialized memory in memchr().
-# POSIX states that when the character is found, memchr must not read extra
-# bytes in an overestimated length (for example, where memchr is used to
-# implement strnlen).  However, we use a safe word read to provide a speedup.
-{
-    memchr-value4
-    Memcheck:Value4
-    fun:rpl_memchr
-}
-{
-    memchr-value8
-    Memcheck:Value8
-    fun:rpl_memchr
-}
diff --git a/grub-core/gnulib/mempcpy.c b/grub-core/gnulib/mempcpy.c
deleted file mode 100644
index 5582368ed..000000000
--- a/grub-core/gnulib/mempcpy.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copy memory area and return pointer after last written byte.
-   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
-   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 <string.h>
-
-/* Copy N bytes of SRC to DEST, return pointer to bytes after the
-   last written byte.  */
-void *
-mempcpy (void *dest, const void *src, size_t n)
-{
-  return (char *) memcpy (dest, src, n) + n;
-}
diff --git a/grub-core/gnulib/msvc-inval.c b/grub-core/gnulib/msvc-inval.c
deleted file mode 100644
index 7e57731eb..000000000
--- a/grub-core/gnulib/msvc-inval.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* 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 &not_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 = &not_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
deleted file mode 100644
index dcb0353dc..000000000
--- a/grub-core/gnulib/msvc-inval.h
+++ /dev/null
@@ -1,222 +0,0 @@
-/* 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
deleted file mode 100644
index 8d65472a8..000000000
--- a/grub-core/gnulib/msvc-nothrow.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* 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
deleted file mode 100644
index 5f521813d..000000000
--- a/grub-core/gnulib/msvc-nothrow.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* 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
deleted file mode 100644
index 771c9533a..000000000
--- a/grub-core/gnulib/nl_langinfo.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/* nl_langinfo() replacement: query locale dependent information.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <langinfo.h>
-
-#if REPLACE_NL_LANGINFO
-
-/* Override nl_langinfo with support for added nl_item values.  */
-
-# include <locale.h>
-# include <string.h>
-
-# undef nl_langinfo
-
-char *
-rpl_nl_langinfo (nl_item item)
-{
-  switch (item)
-    {
-# if GNULIB_defined_CODESET
-    case CODESET:
-      {
-        const char *locale;
-        static char buf[2 + 10 + 1];
-
-        locale = setlocale (LC_CTYPE, NULL);
-        if (locale != NULL && locale[0] != '\0')
-          {
-            /* If the locale name contains an encoding after the dot, return
-               it.  */
-            const char *dot = strchr (locale, '.');
-
-            if (dot != NULL)
-              {
-                const char *modifier;
-
-                dot++;
-                /* Look for the possible @... trailer and remove it, if any.  
*/
-                modifier = strchr (dot, '@');
-                if (modifier == NULL)
-                  return dot;
-                if (modifier - dot < sizeof (buf))
-                  {
-                    memcpy (buf, dot, modifier - dot);
-                    buf [modifier - dot] = '\0';
-                    return buf;
-                  }
-              }
-          }
-        return "";
-      }
-# endif
-# if GNULIB_defined_T_FMT_AMPM
-    case T_FMT_AMPM:
-      return "%I:%M:%S %p";
-# endif
-# if GNULIB_defined_ERA
-    case ERA:
-      /* The format is not standardized.  In glibc it is a sequence of strings
-         of the form "direction:offset:start_date:end_date:era_name:era_format"
-         with an empty string at the end.  */
-      return "";
-    case ERA_D_FMT:
-      /* The %Ex conversion in strftime behaves like %x if the locale does not
-         have an alternative time format.  */
-      item = D_FMT;
-      break;
-    case ERA_D_T_FMT:
-      /* The %Ec conversion in strftime behaves like %c if the locale does not
-         have an alternative time format.  */
-      item = D_T_FMT;
-      break;
-    case ERA_T_FMT:
-      /* The %EX conversion in strftime behaves like %X if the locale does not
-         have an alternative time format.  */
-      item = T_FMT;
-      break;
-    case ALT_DIGITS:
-      /* The format is not standardized.  In glibc it is a sequence of 10
-         strings, appended in memory.  */
-      return "\0\0\0\0\0\0\0\0\0\0";
-# endif
-# if GNULIB_defined_YESEXPR || !FUNC_NL_LANGINFO_YESEXPR_WORKS
-    case YESEXPR:
-      return "^[yY]";
-    case NOEXPR:
-      return "^[nN]";
-# endif
-    default:
-      break;
-    }
-  return nl_langinfo (item);
-}
-
-#else
-
-/* Provide nl_langinfo from scratch.  */
-
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-
-/* Native Windows platforms.  */
-
-#  define WIN32_LEAN_AND_MEAN  /* avoid including junk */
-#  include <windows.h>
-
-#  include <stdio.h>
-
-# else
-
-/* An old Unix platform without locales, such as Linux libc5 or BeOS.  */
-
-# endif
-
-# include <locale.h>
-
-char *
-nl_langinfo (nl_item item)
-{
-  switch (item)
-    {
-    /* nl_langinfo items of the LC_CTYPE category */
-    case CODESET:
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-      {
-        static char buf[2 + 10 + 1];
-
-        /* The Windows API has a function returning the locale's codepage as
-           a number.  */
-        sprintf (buf, "CP%u", GetACP ());
-        return buf;
-      }
-# elif defined __BEOS__
-      return "UTF-8";
-# else
-      return "ISO-8859-1";
-# endif
-    /* nl_langinfo items of the LC_NUMERIC category */
-    case RADIXCHAR:
-      return localeconv () ->decimal_point;
-    case THOUSEP:
-      return localeconv () ->thousands_sep;
-    /* nl_langinfo items of the LC_TIME category.
-       TODO: Really use the locale.  */
-    case D_T_FMT:
-    case ERA_D_T_FMT:
-      return "%a %b %e %H:%M:%S %Y";
-    case D_FMT:
-    case ERA_D_FMT:
-      return "%m/%d/%y";
-    case T_FMT:
-    case ERA_T_FMT:
-      return "%H:%M:%S";
-    case T_FMT_AMPM:
-      return "%I:%M:%S %p";
-    case AM_STR:
-      return "AM";
-    case PM_STR:
-      return "PM";
-    case DAY_1:
-      return "Sunday";
-    case DAY_2:
-      return "Monday";
-    case DAY_3:
-      return "Tuesday";
-    case DAY_4:
-      return "Wednesday";
-    case DAY_5:
-      return "Thursday";
-    case DAY_6:
-      return "Friday";
-    case DAY_7:
-      return "Saturday";
-    case ABDAY_1:
-      return "Sun";
-    case ABDAY_2:
-      return "Mon";
-    case ABDAY_3:
-      return "Tue";
-    case ABDAY_4:
-      return "Wed";
-    case ABDAY_5:
-      return "Thu";
-    case ABDAY_6:
-      return "Fri";
-    case ABDAY_7:
-      return "Sat";
-    case MON_1:
-      return "January";
-    case MON_2:
-      return "February";
-    case MON_3:
-      return "March";
-    case MON_4:
-      return "April";
-    case MON_5:
-      return "May";
-    case MON_6:
-      return "June";
-    case MON_7:
-      return "July";
-    case MON_8:
-      return "August";
-    case MON_9:
-      return "September";
-    case MON_10:
-      return "October";
-    case MON_11:
-      return "November";
-    case MON_12:
-      return "December";
-    case ABMON_1:
-      return "Jan";
-    case ABMON_2:
-      return "Feb";
-    case ABMON_3:
-      return "Mar";
-    case ABMON_4:
-      return "Apr";
-    case ABMON_5:
-      return "May";
-    case ABMON_6:
-      return "Jun";
-    case ABMON_7:
-      return "Jul";
-    case ABMON_8:
-      return "Aug";
-    case ABMON_9:
-      return "Sep";
-    case ABMON_10:
-      return "Oct";
-    case ABMON_11:
-      return "Nov";
-    case ABMON_12:
-      return "Dec";
-    case ERA:
-      return "";
-    case ALT_DIGITS:
-      return "\0\0\0\0\0\0\0\0\0\0";
-    /* nl_langinfo items of the LC_MONETARY category
-       TODO: Really use the locale. */
-    case CRNCYSTR:
-      return "-";
-    /* nl_langinfo items of the LC_MESSAGES category
-       TODO: Really use the locale. */
-    case YESEXPR:
-      return "^[yY]";
-    case NOEXPR:
-      return "^[nN]";
-    default:
-      return "";
-    }
-}
-
-#endif
diff --git a/grub-core/gnulib/printf-args.c b/grub-core/gnulib/printf-args.c
deleted file mode 100644
index c27e6bc6b..000000000
--- a/grub-core/gnulib/printf-args.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* Decomposed printf argument list.
-   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
-   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/>.  */
-
-/* This file can be parametrized with the following macros:
-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
-     PRINTF_FETCHARGS   Name of the function to be defined.
-     STATIC             Set to 'static' to declare the function static.  */
-
-#ifndef PRINTF_FETCHARGS
-# include <config.h>
-#endif
-
-/* Specification.  */
-#ifndef PRINTF_FETCHARGS
-# include "printf-args.h"
-#endif
-
-#ifdef STATIC
-STATIC
-#endif
-int
-PRINTF_FETCHARGS (va_list args, arguments *a)
-{
-  size_t i;
-  argument *ap;
-
-  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
-    switch (ap->type)
-      {
-      case TYPE_SCHAR:
-        ap->a.a_schar = va_arg (args, /*signed char*/ int);
-        break;
-      case TYPE_UCHAR:
-        ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
-        break;
-      case TYPE_SHORT:
-        ap->a.a_short = va_arg (args, /*short*/ int);
-        break;
-      case TYPE_USHORT:
-        ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
-        break;
-      case TYPE_INT:
-        ap->a.a_int = va_arg (args, int);
-        break;
-      case TYPE_UINT:
-        ap->a.a_uint = va_arg (args, unsigned int);
-        break;
-      case TYPE_LONGINT:
-        ap->a.a_longint = va_arg (args, long int);
-        break;
-      case TYPE_ULONGINT:
-        ap->a.a_ulongint = va_arg (args, unsigned long int);
-        break;
-#if HAVE_LONG_LONG_INT
-      case TYPE_LONGLONGINT:
-        ap->a.a_longlongint = va_arg (args, long long int);
-        break;
-      case TYPE_ULONGLONGINT:
-        ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
-        break;
-#endif
-      case TYPE_DOUBLE:
-        ap->a.a_double = va_arg (args, double);
-        break;
-      case TYPE_LONGDOUBLE:
-        ap->a.a_longdouble = va_arg (args, long double);
-        break;
-      case TYPE_CHAR:
-        ap->a.a_char = va_arg (args, int);
-        break;
-#if HAVE_WINT_T
-      case TYPE_WIDE_CHAR:
-        /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by
-           default argument promotions", this is not the case in mingw32,
-           where wint_t is 'unsigned short'.  */
-        ap->a.a_wide_char =
-          (sizeof (wint_t) < sizeof (int)
-           ? (wint_t) va_arg (args, int)
-           : va_arg (args, wint_t));
-        break;
-#endif
-      case TYPE_STRING:
-        ap->a.a_string = va_arg (args, const char *);
-        /* A null pointer is an invalid argument for "%s", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_string == NULL)
-          ap->a.a_string = "(NULL)";
-        break;
-#if HAVE_WCHAR_T
-      case TYPE_WIDE_STRING:
-        ap->a.a_wide_string = va_arg (args, const wchar_t *);
-        /* A null pointer is an invalid argument for "%ls", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_wide_string == NULL)
-          {
-            static const wchar_t wide_null_string[] =
-              {
-                (wchar_t)'(',
-                (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
-                (wchar_t)')',
-                (wchar_t)0
-              };
-            ap->a.a_wide_string = wide_null_string;
-          }
-        break;
-#endif
-      case TYPE_POINTER:
-        ap->a.a_pointer = va_arg (args, void *);
-        break;
-      case TYPE_COUNT_SCHAR_POINTER:
-        ap->a.a_count_schar_pointer = va_arg (args, signed char *);
-        break;
-      case TYPE_COUNT_SHORT_POINTER:
-        ap->a.a_count_short_pointer = va_arg (args, short *);
-        break;
-      case TYPE_COUNT_INT_POINTER:
-        ap->a.a_count_int_pointer = va_arg (args, int *);
-        break;
-      case TYPE_COUNT_LONGINT_POINTER:
-        ap->a.a_count_longint_pointer = va_arg (args, long int *);
-        break;
-#if HAVE_LONG_LONG_INT
-      case TYPE_COUNT_LONGLONGINT_POINTER:
-        ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
-        break;
-#endif
-#if ENABLE_UNISTDIO
-      /* The unistdio extensions.  */
-      case TYPE_U8_STRING:
-        ap->a.a_u8_string = va_arg (args, const uint8_t *);
-        /* A null pointer is an invalid argument for "%U", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_u8_string == NULL)
-          {
-            static const uint8_t u8_null_string[] =
-              { '(', 'N', 'U', 'L', 'L', ')', 0 };
-            ap->a.a_u8_string = u8_null_string;
-          }
-        break;
-      case TYPE_U16_STRING:
-        ap->a.a_u16_string = va_arg (args, const uint16_t *);
-        /* A null pointer is an invalid argument for "%lU", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_u16_string == NULL)
-          {
-            static const uint16_t u16_null_string[] =
-              { '(', 'N', 'U', 'L', 'L', ')', 0 };
-            ap->a.a_u16_string = u16_null_string;
-          }
-        break;
-      case TYPE_U32_STRING:
-        ap->a.a_u32_string = va_arg (args, const uint32_t *);
-        /* A null pointer is an invalid argument for "%llU", but in practice
-           it occurs quite frequently in printf statements that produce
-           debug output.  Use a fallback in this case.  */
-        if (ap->a.a_u32_string == NULL)
-          {
-            static const uint32_t u32_null_string[] =
-              { '(', 'N', 'U', 'L', 'L', ')', 0 };
-            ap->a.a_u32_string = u32_null_string;
-          }
-        break;
-#endif
-      default:
-        /* Unknown type.  */
-        return -1;
-      }
-  return 0;
-}
diff --git a/grub-core/gnulib/printf-args.h b/grub-core/gnulib/printf-args.h
deleted file mode 100644
index 2a9c2a3f8..000000000
--- a/grub-core/gnulib/printf-args.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/* Decomposed printf argument list.
-   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
-   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 _PRINTF_ARGS_H
-#define _PRINTF_ARGS_H
-
-/* This file can be parametrized with the following macros:
-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
-     PRINTF_FETCHARGS   Name of the function to be declared.
-     STATIC             Set to 'static' to declare the function static.  */
-
-/* Default parameters.  */
-#ifndef PRINTF_FETCHARGS
-# define PRINTF_FETCHARGS printf_fetchargs
-#endif
-
-/* Get size_t.  */
-#include <stddef.h>
-
-/* Get wchar_t.  */
-#if HAVE_WCHAR_T
-# include <stddef.h>
-#endif
-
-/* Get wint_t.  */
-#if HAVE_WINT_T
-# include <wchar.h>
-#endif
-
-/* Get va_list.  */
-#include <stdarg.h>
-
-
-/* Argument types */
-typedef enum
-{
-  TYPE_NONE,
-  TYPE_SCHAR,
-  TYPE_UCHAR,
-  TYPE_SHORT,
-  TYPE_USHORT,
-  TYPE_INT,
-  TYPE_UINT,
-  TYPE_LONGINT,
-  TYPE_ULONGINT,
-#if HAVE_LONG_LONG_INT
-  TYPE_LONGLONGINT,
-  TYPE_ULONGLONGINT,
-#endif
-  TYPE_DOUBLE,
-  TYPE_LONGDOUBLE,
-  TYPE_CHAR,
-#if HAVE_WINT_T
-  TYPE_WIDE_CHAR,
-#endif
-  TYPE_STRING,
-#if HAVE_WCHAR_T
-  TYPE_WIDE_STRING,
-#endif
-  TYPE_POINTER,
-  TYPE_COUNT_SCHAR_POINTER,
-  TYPE_COUNT_SHORT_POINTER,
-  TYPE_COUNT_INT_POINTER,
-  TYPE_COUNT_LONGINT_POINTER
-#if HAVE_LONG_LONG_INT
-, TYPE_COUNT_LONGLONGINT_POINTER
-#endif
-#if ENABLE_UNISTDIO
-  /* The unistdio extensions.  */
-, TYPE_U8_STRING
-, TYPE_U16_STRING
-, TYPE_U32_STRING
-#endif
-} arg_type;
-
-/* Polymorphic argument */
-typedef struct
-{
-  arg_type type;
-  union
-  {
-    signed char                 a_schar;
-    unsigned char               a_uchar;
-    short                       a_short;
-    unsigned short              a_ushort;
-    int                         a_int;
-    unsigned int                a_uint;
-    long int                    a_longint;
-    unsigned long int           a_ulongint;
-#if HAVE_LONG_LONG_INT
-    long long int               a_longlongint;
-    unsigned long long int      a_ulonglongint;
-#endif
-    float                       a_float;
-    double                      a_double;
-    long double                 a_longdouble;
-    int                         a_char;
-#if HAVE_WINT_T
-    wint_t                      a_wide_char;
-#endif
-    const char*                 a_string;
-#if HAVE_WCHAR_T
-    const wchar_t*              a_wide_string;
-#endif
-    void*                       a_pointer;
-    signed char *               a_count_schar_pointer;
-    short *                     a_count_short_pointer;
-    int *                       a_count_int_pointer;
-    long int *                  a_count_longint_pointer;
-#if HAVE_LONG_LONG_INT
-    long long int *             a_count_longlongint_pointer;
-#endif
-#if ENABLE_UNISTDIO
-    /* The unistdio extensions.  */
-    const uint8_t *             a_u8_string;
-    const uint16_t *            a_u16_string;
-    const uint32_t *            a_u32_string;
-#endif
-  }
-  a;
-}
-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;
-
-
-/* Fetch the arguments, putting them into a. */
-#ifdef STATIC
-STATIC
-#else
-extern
-#endif
-int PRINTF_FETCHARGS (va_list args, arguments *a);
-
-#endif /* _PRINTF_ARGS_H */
diff --git a/grub-core/gnulib/printf-parse.c b/grub-core/gnulib/printf-parse.c
deleted file mode 100644
index 23cacc1da..000000000
--- a/grub-core/gnulib/printf-parse.c
+++ /dev/null
@@ -1,638 +0,0 @@
-/* Formatted output to strings.
-   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
-   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/>.  */
-
-/* This file can be parametrized with the following macros:
-     CHAR_T             The element type of the format string.
-     CHAR_T_ONLY_ASCII  Set to 1 to enable verification that all characters
-                        in the format string are ASCII.
-     DIRECTIVE          Structure denoting a format directive.
-                        Depends on CHAR_T.
-     DIRECTIVES         Structure denoting the set of format directives of a
-                        format string.  Depends on CHAR_T.
-     PRINTF_PARSE       Function that parses a format string.
-                        Depends on CHAR_T.
-     STATIC             Set to 'static' to declare the function static.
-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.  */
-
-#ifndef PRINTF_PARSE
-# include <config.h>
-#endif
-
-/* Specification.  */
-#ifndef PRINTF_PARSE
-# include "printf-parse.h"
-#endif
-
-/* Default parameters.  */
-#ifndef PRINTF_PARSE
-# define PRINTF_PARSE printf_parse
-# define CHAR_T char
-# define DIRECTIVE char_directive
-# define DIRECTIVES char_directives
-#endif
-
-/* Get size_t, NULL.  */
-#include <stddef.h>
-
-/* Get intmax_t.  */
-#if defined IN_LIBINTL || defined IN_LIBASPRINTF
-# if HAVE_STDINT_H_WITH_UINTMAX
-#  include <stdint.h>
-# endif
-# if HAVE_INTTYPES_H_WITH_UINTMAX
-#  include <inttypes.h>
-# endif
-#else
-# include <stdint.h>
-#endif
-
-/* malloc(), realloc(), free().  */
-#include <stdlib.h>
-
-/* memcpy().  */
-#include <string.h>
-
-/* errno.  */
-#include <errno.h>
-
-/* Checked size_t computations.  */
-#include "xsize.h"
-
-#if CHAR_T_ONLY_ASCII
-/* c_isascii().  */
-# include "c-ctype.h"
-#endif
-
-#ifdef STATIC
-STATIC
-#endif
-int
-PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
-{
-  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 max_width_length = 0;
-  size_t max_precision_length = 0;
-
-  d->count = 0;
-  d_allocated = N_DIRECT_ALLOC_DIRECTIVES;
-  d->dir = d->direct_alloc_dir;
-
-  a->count = 0;
-  a_allocated = N_DIRECT_ALLOC_ARGUMENTS;
-  a->arg = a->direct_alloc_arg;
-
-#define REGISTER_ARG(_index_,_type_) \
-  {                                                                     \
-    size_t n = (_index_);                                               \
-    if (n >= a_allocated)                                               \
-      {                                                                 \
-        size_t memory_size;                                             \
-        argument *memory;                                               \
-                                                                        \
-        a_allocated = xtimes (a_allocated, 2);                          \
-        if (a_allocated <= n)                                           \
-          a_allocated = xsum (n, 1);                                    \
-        memory_size = xtimes (a_allocated, sizeof (argument));          \
-        if (size_overflow_p (memory_size))                              \
-          /* Overflow, would lead to out of memory.  */                 \
-          goto out_of_memory;                                           \
-        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)                                               \
-      a->arg[a->count++].type = TYPE_NONE;                              \
-    if (a->arg[n].type == TYPE_NONE)                                    \
-      a->arg[n].type = (_type_);                                        \
-    else if (a->arg[n].type != (_type_))                                \
-      /* Ambiguous type for positional argument.  */                    \
-      goto error;                                                       \
-  }
-
-  while (*cp != '\0')
-    {
-      CHAR_T c = *cp++;
-      if (c == '%')
-        {
-          size_t arg_index = ARG_NONE;
-          DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */
-
-          /* Initialize the next directive.  */
-          dp->dir_start = cp - 1;
-          dp->flags = 0;
-          dp->width_start = NULL;
-          dp->width_end = NULL;
-          dp->width_arg_index = ARG_NONE;
-          dp->precision_start = NULL;
-          dp->precision_end = NULL;
-          dp->precision_arg_index = ARG_NONE;
-          dp->arg_index = ARG_NONE;
-
-          /* Test for positional argument.  */
-          if (*cp >= '0' && *cp <= '9')
-            {
-              const CHAR_T *np;
-
-              for (np = cp; *np >= '0' && *np <= '9'; np++)
-                ;
-              if (*np == '$')
-                {
-                  size_t n = 0;
-
-                  for (np = cp; *np >= '0' && *np <= '9'; np++)
-                    n = xsum (xtimes (n, 10), *np - '0');
-                  if (n == 0)
-                    /* Positional argument 0.  */
-                    goto error;
-                  if (size_overflow_p (n))
-                    /* n too large, would lead to out of memory later.  */
-                    goto error;
-                  arg_index = n - 1;
-                  cp = np + 1;
-                }
-            }
-
-          /* Read the flags.  */
-          for (;;)
-            {
-              if (*cp == '\'')
-                {
-                  dp->flags |= FLAG_GROUP;
-                  cp++;
-                }
-              else if (*cp == '-')
-                {
-                  dp->flags |= FLAG_LEFT;
-                  cp++;
-                }
-              else if (*cp == '+')
-                {
-                  dp->flags |= FLAG_SHOWSIGN;
-                  cp++;
-                }
-              else if (*cp == ' ')
-                {
-                  dp->flags |= FLAG_SPACE;
-                  cp++;
-                }
-              else if (*cp == '#')
-                {
-                  dp->flags |= FLAG_ALT;
-                  cp++;
-                }
-              else if (*cp == '0')
-                {
-                  dp->flags |= FLAG_ZERO;
-                  cp++;
-                }
-#if __GLIBC__ >= 2 && !defined __UCLIBC__
-              else if (*cp == 'I')
-                {
-                  dp->flags |= FLAG_LOCALIZED;
-                  cp++;
-                }
-#endif
-              else
-                break;
-            }
-
-          /* Parse the field width.  */
-          if (*cp == '*')
-            {
-              dp->width_start = cp;
-              cp++;
-              dp->width_end = cp;
-              if (max_width_length < 1)
-                max_width_length = 1;
-
-              /* Test for positional argument.  */
-              if (*cp >= '0' && *cp <= '9')
-                {
-                  const CHAR_T *np;
-
-                  for (np = cp; *np >= '0' && *np <= '9'; np++)
-                    ;
-                  if (*np == '$')
-                    {
-                      size_t n = 0;
-
-                      for (np = cp; *np >= '0' && *np <= '9'; np++)
-                        n = xsum (xtimes (n, 10), *np - '0');
-                      if (n == 0)
-                        /* Positional argument 0.  */
-                        goto error;
-                      if (size_overflow_p (n))
-                        /* n too large, would lead to out of memory later.  */
-                        goto error;
-                      dp->width_arg_index = n - 1;
-                      cp = np + 1;
-                    }
-                }
-              if (dp->width_arg_index == ARG_NONE)
-                {
-                  dp->width_arg_index = arg_posn++;
-                  if (dp->width_arg_index == ARG_NONE)
-                    /* arg_posn wrapped around.  */
-                    goto error;
-                }
-              REGISTER_ARG (dp->width_arg_index, TYPE_INT);
-            }
-          else if (*cp >= '0' && *cp <= '9')
-            {
-              size_t width_length;
-
-              dp->width_start = cp;
-              for (; *cp >= '0' && *cp <= '9'; cp++)
-                ;
-              dp->width_end = cp;
-              width_length = dp->width_end - dp->width_start;
-              if (max_width_length < width_length)
-                max_width_length = width_length;
-            }
-
-          /* Parse the precision.  */
-          if (*cp == '.')
-            {
-              cp++;
-              if (*cp == '*')
-                {
-                  dp->precision_start = cp - 1;
-                  cp++;
-                  dp->precision_end = cp;
-                  if (max_precision_length < 2)
-                    max_precision_length = 2;
-
-                  /* Test for positional argument.  */
-                  if (*cp >= '0' && *cp <= '9')
-                    {
-                      const CHAR_T *np;
-
-                      for (np = cp; *np >= '0' && *np <= '9'; np++)
-                        ;
-                      if (*np == '$')
-                        {
-                          size_t n = 0;
-
-                          for (np = cp; *np >= '0' && *np <= '9'; np++)
-                            n = xsum (xtimes (n, 10), *np - '0');
-                          if (n == 0)
-                            /* Positional argument 0.  */
-                            goto error;
-                          if (size_overflow_p (n))
-                            /* n too large, would lead to out of memory
-                               later.  */
-                            goto error;
-                          dp->precision_arg_index = n - 1;
-                          cp = np + 1;
-                        }
-                    }
-                  if (dp->precision_arg_index == ARG_NONE)
-                    {
-                      dp->precision_arg_index = arg_posn++;
-                      if (dp->precision_arg_index == ARG_NONE)
-                        /* arg_posn wrapped around.  */
-                        goto error;
-                    }
-                  REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
-                }
-              else
-                {
-                  size_t precision_length;
-
-                  dp->precision_start = cp - 1;
-                  for (; *cp >= '0' && *cp <= '9'; cp++)
-                    ;
-                  dp->precision_end = cp;
-                  precision_length = dp->precision_end - dp->precision_start;
-                  if (max_precision_length < precision_length)
-                    max_precision_length = precision_length;
-                }
-            }
-
-          {
-            arg_type type;
-
-            /* Parse argument type/size specifiers.  */
-            {
-              int flags = 0;
-
-              for (;;)
-                {
-                  if (*cp == 'h')
-                    {
-                      flags |= (1 << (flags & 1));
-                      cp++;
-                    }
-                  else if (*cp == 'L')
-                    {
-                      flags |= 4;
-                      cp++;
-                    }
-                  else if (*cp == 'l')
-                    {
-                      flags += 8;
-                      cp++;
-                    }
-                  else if (*cp == 'j')
-                    {
-                      if (sizeof (intmax_t) > sizeof (long))
-                        {
-                          /* intmax_t = long long */
-                          flags += 16;
-                        }
-                      else if (sizeof (intmax_t) > sizeof (int))
-                        {
-                          /* intmax_t = long */
-                          flags += 8;
-                        }
-                      cp++;
-                    }
-                  else if (*cp == 'z' || *cp == 'Z')
-                    {
-                      /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
-                         because the warning facility in gcc-2.95.2 understands
-                         only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784).  */
-                      if (sizeof (size_t) > sizeof (long))
-                        {
-                          /* size_t = long long */
-                          flags += 16;
-                        }
-                      else if (sizeof (size_t) > sizeof (int))
-                        {
-                          /* size_t = long */
-                          flags += 8;
-                        }
-                      cp++;
-                    }
-                  else if (*cp == 't')
-                    {
-                      if (sizeof (ptrdiff_t) > sizeof (long))
-                        {
-                          /* ptrdiff_t = long long */
-                          flags += 16;
-                        }
-                      else if (sizeof (ptrdiff_t) > sizeof (int))
-                        {
-                          /* ptrdiff_t = long */
-                          flags += 8;
-                        }
-                      cp++;
-                    }
-#if defined __APPLE__ && defined __MACH__
-                  /* 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')
-                    {
-                      if (64 / 8 > sizeof (long))
-                        {
-                          /* int64_t = long long */
-                          flags += 16;
-                        }
-                      else
-                        {
-                          /* int64_t = long */
-                          flags += 8;
-                        }
-                      cp++;
-                    }
-#endif
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-                  /* 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')
-                    {
-                      if (64 / 8 > sizeof (long))
-                        {
-                          /* __int64 = long long */
-                          flags += 16;
-                        }
-                      else
-                        {
-                          /* __int64 = long */
-                          flags += 8;
-                        }
-                      cp += 3;
-                    }
-#endif
-                  else
-                    break;
-                }
-
-              /* Read the conversion character.  */
-              c = *cp++;
-              switch (c)
-                {
-                case 'd': case 'i':
-#if HAVE_LONG_LONG_INT
-                  /* If 'long long' exists and is larger than 'long':  */
-                  if (flags >= 16 || (flags & 4))
-                    type = TYPE_LONGLONGINT;
-                  else
-#endif
-                  /* If 'long long' exists and is the same as 'long', we parse
-                     "lld" into TYPE_LONGINT.  */
-                  if (flags >= 8)
-                    type = TYPE_LONGINT;
-                  else if (flags & 2)
-                    type = TYPE_SCHAR;
-                  else if (flags & 1)
-                    type = TYPE_SHORT;
-                  else
-                    type = TYPE_INT;
-                  break;
-                case 'o': case 'u': case 'x': case 'X':
-#if HAVE_LONG_LONG_INT
-                  /* If 'long long' exists and is larger than 'long':  */
-                  if (flags >= 16 || (flags & 4))
-                    type = TYPE_ULONGLONGINT;
-                  else
-#endif
-                  /* If 'unsigned long long' exists and is the same as
-                     'unsigned long', we parse "llu" into TYPE_ULONGINT.  */
-                  if (flags >= 8)
-                    type = TYPE_ULONGINT;
-                  else if (flags & 2)
-                    type = TYPE_UCHAR;
-                  else if (flags & 1)
-                    type = TYPE_USHORT;
-                  else
-                    type = TYPE_UINT;
-                  break;
-                case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
-                case 'a': case 'A':
-                  if (flags >= 16 || (flags & 4))
-                    type = TYPE_LONGDOUBLE;
-                  else
-                    type = TYPE_DOUBLE;
-                  break;
-                case 'c':
-                  if (flags >= 8)
-#if HAVE_WINT_T
-                    type = TYPE_WIDE_CHAR;
-#else
-                    goto error;
-#endif
-                  else
-                    type = TYPE_CHAR;
-                  break;
-#if HAVE_WINT_T
-                case 'C':
-                  type = TYPE_WIDE_CHAR;
-                  c = 'c';
-                  break;
-#endif
-                case 's':
-                  if (flags >= 8)
-#if HAVE_WCHAR_T
-                    type = TYPE_WIDE_STRING;
-#else
-                    goto error;
-#endif
-                  else
-                    type = TYPE_STRING;
-                  break;
-#if HAVE_WCHAR_T
-                case 'S':
-                  type = TYPE_WIDE_STRING;
-                  c = 's';
-                  break;
-#endif
-                case 'p':
-                  type = TYPE_POINTER;
-                  break;
-                case 'n':
-#if HAVE_LONG_LONG_INT
-                  /* If 'long long' exists and is larger than 'long':  */
-                  if (flags >= 16 || (flags & 4))
-                    type = TYPE_COUNT_LONGLONGINT_POINTER;
-                  else
-#endif
-                  /* If 'long long' exists and is the same as 'long', we parse
-                     "lln" into TYPE_COUNT_LONGINT_POINTER.  */
-                  if (flags >= 8)
-                    type = TYPE_COUNT_LONGINT_POINTER;
-                  else if (flags & 2)
-                    type = TYPE_COUNT_SCHAR_POINTER;
-                  else if (flags & 1)
-                    type = TYPE_COUNT_SHORT_POINTER;
-                  else
-                    type = TYPE_COUNT_INT_POINTER;
-                  break;
-#if ENABLE_UNISTDIO
-                /* The unistdio extensions.  */
-                case 'U':
-                  if (flags >= 16)
-                    type = TYPE_U32_STRING;
-                  else if (flags >= 8)
-                    type = TYPE_U16_STRING;
-                  else
-                    type = TYPE_U8_STRING;
-                  break;
-#endif
-                case '%':
-                  type = TYPE_NONE;
-                  break;
-                default:
-                  /* Unknown conversion character.  */
-                  goto error;
-                }
-            }
-
-            if (type != TYPE_NONE)
-              {
-                dp->arg_index = arg_index;
-                if (dp->arg_index == ARG_NONE)
-                  {
-                    dp->arg_index = arg_posn++;
-                    if (dp->arg_index == ARG_NONE)
-                      /* arg_posn wrapped around.  */
-                      goto error;
-                  }
-                REGISTER_ARG (dp->arg_index, type);
-              }
-            dp->conversion = c;
-            dp->dir_end = cp;
-          }
-
-          d->count++;
-          if (d->count >= d_allocated)
-            {
-              size_t memory_size;
-              DIRECTIVE *memory;
-
-              d_allocated = xtimes (d_allocated, 2);
-              memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
-              if (size_overflow_p (memory_size))
-                /* Overflow, would lead to out of memory.  */
-                goto out_of_memory;
-              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;
-            }
-        }
-#if CHAR_T_ONLY_ASCII
-      else if (!c_isascii (c))
-        {
-          /* Non-ASCII character.  Not supported.  */
-          goto error;
-        }
-#endif
-    }
-  d->dir[d->count].dir_start = cp;
-
-  d->max_width_length = max_width_length;
-  d->max_precision_length = max_precision_length;
-  return 0;
-
-error:
-  if (a->arg != a->direct_alloc_arg)
-    free (a->arg);
-  if (d->dir != d->direct_alloc_dir)
-    free (d->dir);
-  errno = EINVAL;
-  return -1;
-
-out_of_memory:
-  if (a->arg != a->direct_alloc_arg)
-    free (a->arg);
-  if (d->dir != d->direct_alloc_dir)
-    free (d->dir);
-  errno = ENOMEM;
-  return -1;
-}
-
-#undef PRINTF_PARSE
-#undef DIRECTIVES
-#undef DIRECTIVE
-#undef CHAR_T_ONLY_ASCII
-#undef CHAR_T
diff --git a/grub-core/gnulib/printf-parse.h b/grub-core/gnulib/printf-parse.h
deleted file mode 100644
index d8474bee1..000000000
--- a/grub-core/gnulib/printf-parse.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/* Parse printf format string.
-   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
-   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 _PRINTF_PARSE_H
-#define _PRINTF_PARSE_H
-
-/* This file can be parametrized with the following macros:
-     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"
-
-
-/* Flags */
-#define FLAG_GROUP       1      /* ' flag */
-#define FLAG_LEFT        2      /* - flag */
-#define FLAG_SHOWSIGN    4      /* + flag */
-#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)
-
-/* 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
-{
-  const char* dir_start;
-  const char* dir_end;
-  int flags;
-  const char* width_start;
-  const char* width_end;
-  size_t width_arg_index;
-  const char* precision_start;
-  const char* precision_end;
-  size_t precision_arg_index;
-  char conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
-  size_t arg_index;
-}
-char_directive;
-
-/* A parsed format string.  */
-typedef struct
-{
-  size_t count;
-  char_directive *dir;
-  size_t max_width_length;
-  size_t max_precision_length;
-  char_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
-}
-char_directives;
-
-#if ENABLE_UNISTDIO
-
-/* A parsed directive.  */
-typedef struct
-{
-  const uint8_t* dir_start;
-  const uint8_t* dir_end;
-  int flags;
-  const uint8_t* width_start;
-  const uint8_t* width_end;
-  size_t width_arg_index;
-  const uint8_t* precision_start;
-  const uint8_t* precision_end;
-  size_t precision_arg_index;
-  uint8_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
-  size_t arg_index;
-}
-u8_directive;
-
-/* A parsed format string.  */
-typedef struct
-{
-  size_t count;
-  u8_directive *dir;
-  size_t max_width_length;
-  size_t max_precision_length;
-  u8_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
-}
-u8_directives;
-
-/* A parsed directive.  */
-typedef struct
-{
-  const uint16_t* dir_start;
-  const uint16_t* dir_end;
-  int flags;
-  const uint16_t* width_start;
-  const uint16_t* width_end;
-  size_t width_arg_index;
-  const uint16_t* precision_start;
-  const uint16_t* precision_end;
-  size_t precision_arg_index;
-  uint16_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S 
*/
-  size_t arg_index;
-}
-u16_directive;
-
-/* A parsed format string.  */
-typedef struct
-{
-  size_t count;
-  u16_directive *dir;
-  size_t max_width_length;
-  size_t max_precision_length;
-  u16_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
-}
-u16_directives;
-
-/* A parsed directive.  */
-typedef struct
-{
-  const uint32_t* dir_start;
-  const uint32_t* dir_end;
-  int flags;
-  const uint32_t* width_start;
-  const uint32_t* width_end;
-  size_t width_arg_index;
-  const uint32_t* precision_start;
-  const uint32_t* precision_end;
-  size_t precision_arg_index;
-  uint32_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S 
*/
-  size_t arg_index;
-}
-u32_directive;
-
-/* A parsed format string.  */
-typedef struct
-{
-  size_t count;
-  u32_directive *dir;
-  size_t max_width_length;
-  size_t max_precision_length;
-  u32_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
-}
-u32_directives;
-
-#endif
-
-
-/* Parses the format string.  Fills in the number N of directives, and fills
-   in directives[0], ..., directives[N-1], and sets directives[N].dir_start
-   to the end of the format string.  Also fills in the arg_type fields of the
-   arguments and the needed count of arguments.  */
-#if ENABLE_UNISTDIO
-extern int
-       ulc_printf_parse (const char *format, char_directives *d, arguments *a);
-extern int
-       u8_printf_parse (const uint8_t *format, u8_directives *d, arguments *a);
-extern int
-       u16_printf_parse (const uint16_t *format, u16_directives *d,
-                         arguments *a);
-extern int
-       u32_printf_parse (const uint32_t *format, u32_directives *d,
-                         arguments *a);
-#else
-# ifdef STATIC
-STATIC
-# else
-extern
-# endif
-int printf_parse (const char *format, char_directives *d, arguments *a);
-#endif
-
-#endif /* _PRINTF_PARSE_H */
diff --git a/grub-core/gnulib/progname.c b/grub-core/gnulib/progname.c
deleted file mode 100644
index 0c195e521..000000000
--- a/grub-core/gnulib/progname.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Program name management.
-   Copyright (C) 2001-2003, 2005-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 2001.
-
-   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.  */
-#undef ENABLE_RELOCATABLE /* avoid defining set_program_name as a macro */
-#include "progname.h"
-
-#include <errno.h> /* get program_invocation_name declaration */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-/* String containing name the program is called with.
-   To be initialized by main().  */
-const char *program_name = NULL;
-
-/* Set program_name, based on argv[0].
-   argv0 must be a string allocated with indefinite extent, and must not be
-   modified after this call.  */
-void
-set_program_name (const char *argv0)
-{
-  /* libtool creates a temporary executable whose name is sometimes prefixed
-     with "lt-" (depends on the platform).  It also makes argv[0] absolute.
-     But the name of the temporary executable is a detail that should not be
-     visible to the end user and to the test suite.
-     Remove this "<dirname>/.libs/" or "<dirname>/.libs/lt-" prefix here.  */
-  const char *slash;
-  const char *base;
-
-  /* Sanity check.  POSIX requires the invoking process to pass a non-NULL
-     argv[0].  */
-  if (argv0 == NULL)
-    {
-      /* It's a bug in the invoking program.  Help diagnosing it.  */
-      fputs ("A NULL argv[0] was passed through an exec system call.\n",
-             stderr);
-      abort ();
-    }
-
-  slash = strrchr (argv0, '/');
-  base = (slash != NULL ? slash + 1 : argv0);
-  if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0)
-    {
-      argv0 = base;
-      if (strncmp (base, "lt-", 3) == 0)
-        {
-          argv0 = base + 3;
-          /* On glibc systems, remove the "lt-" prefix from the variable
-             program_invocation_short_name.  */
-#if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
-          program_invocation_short_name = (char *) argv0;
-#endif
-        }
-    }
-
-  /* But don't strip off a leading <dirname>/ in general, because when the user
-     runs
-         /some/hidden/place/bin/cp foo foo
-     he should get the error message
-         /some/hidden/place/bin/cp: `foo' and `foo' are the same file
-     not
-         cp: `foo' and `foo' are the same file
-   */
-
-  program_name = argv0;
-
-  /* On glibc systems, the error() function comes from libc and uses the
-     variable program_invocation_name, not program_name.  So set this variable
-     as well.  */
-#if HAVE_DECL_PROGRAM_INVOCATION_NAME
-  program_invocation_name = (char *) argv0;
-#endif
-}
diff --git a/grub-core/gnulib/progname.h b/grub-core/gnulib/progname.h
deleted file mode 100644
index b4f3c2778..000000000
--- a/grub-core/gnulib/progname.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Program name management.
-   Copyright (C) 2001-2004, 2006, 2009-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 2001.
-
-   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 _PROGNAME_H
-#define _PROGNAME_H
-
-/* Programs using this file should do the following in main():
-     set_program_name (argv[0]);
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* String containing name the program is called with.  */
-extern const char *program_name;
-
-/* Set program_name, based on argv[0].
-   argv0 must be a string allocated with indefinite extent, and must not be
-   modified after this call.  */
-extern void set_program_name (const char *argv0);
-
-#if ENABLE_RELOCATABLE
-
-/* Set program_name, based on argv[0], and original installation prefix and
-   directory, for relocatability.  */
-extern void set_program_name_and_installdir (const char *argv0,
-                                             const char *orig_installprefix,
-                                             const char *orig_installdir);
-#undef set_program_name
-#define set_program_name(ARG0) \
-  set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR)
-
-/* Return the full pathname of the current executable, based on the earlier
-   call to set_program_name_and_installdir.  Return NULL if unknown.  */
-extern char *get_full_program_name (void);
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _PROGNAME_H */
diff --git a/grub-core/gnulib/rawmemchr.c b/grub-core/gnulib/rawmemchr.c
deleted file mode 100644
index a0298ce64..000000000
--- a/grub-core/gnulib/rawmemchr.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Searching in a string.
-   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
-   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 <string.h>
-
-/* Find the first occurrence of C in S.  */
-void *
-rawmemchr (const void *s, int c_in)
-{
-  /* On 32-bit hardware, choosing longword to be a 32-bit unsigned
-     long instead of a 64-bit uintmax_t tends to give better
-     performance.  On 64-bit hardware, unsigned long is generally 64
-     bits already.  Change this typedef to experiment with
-     performance.  */
-  typedef unsigned long int longword;
-
-  const unsigned char *char_ptr;
-  const longword *longword_ptr;
-  longword repeated_one;
-  longword repeated_c;
-  unsigned char c;
-
-  c = (unsigned char) c_in;
-
-  /* Handle the first few bytes by reading one byte at a time.
-     Do this until CHAR_PTR is aligned on a longword boundary.  */
-  for (char_ptr = (const unsigned char *) s;
-       (size_t) char_ptr % sizeof (longword) != 0;
-       ++char_ptr)
-    if (*char_ptr == c)
-      return (void *) char_ptr;
-
-  longword_ptr = (const longword *) char_ptr;
-
-  /* All these elucidatory comments refer to 4-byte longwords,
-     but the theory applies equally well to any size longwords.  */
-
-  /* Compute auxiliary longword values:
-     repeated_one is a value which has a 1 in every byte.
-     repeated_c has c in every byte.  */
-  repeated_one = 0x01010101;
-  repeated_c = c | (c << 8);
-  repeated_c |= repeated_c << 16;
-  if (0xffffffffU < (longword) -1)
-    {
-      repeated_one |= repeated_one << 31 << 1;
-      repeated_c |= repeated_c << 31 << 1;
-      if (8 < sizeof (longword))
-        {
-          size_t i;
-
-          for (i = 64; i < sizeof (longword) * 8; i *= 2)
-            {
-              repeated_one |= repeated_one << i;
-              repeated_c |= repeated_c << i;
-            }
-        }
-    }
-
-  /* Instead of the traditional loop which tests each byte, we will
-     test a longword at a time.  The tricky part is testing if *any of
-     the four* bytes in the longword in question are equal to NUL or
-     c.  We first use an xor with repeated_c.  This reduces the task
-     to testing whether *any of the four* bytes in longword1 is zero.
-
-     We compute tmp =
-       ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7).
-     That is, we perform the following operations:
-       1. Subtract repeated_one.
-       2. & ~longword1.
-       3. & a mask consisting of 0x80 in every byte.
-     Consider what happens in each byte:
-       - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff,
-         and step 3 transforms it into 0x80.  A carry can also be propagated
-         to more significant bytes.
-       - If a byte of longword1 is nonzero, let its lowest 1 bit be at
-         position k (0 <= k <= 7); so the lowest k bits are 0.  After step 1,
-         the byte ends in a single bit of value 0 and k bits of value 1.
-         After step 2, the result is just k bits of value 1: 2^k - 1.  After
-         step 3, the result is 0.  And no carry is produced.
-     So, if longword1 has only non-zero bytes, tmp is zero.
-     Whereas if longword1 has a zero byte, call j the position of the least
-     significant zero byte.  Then the result has a zero at positions 0, ...,
-     j-1 and a 0x80 at position j.  We cannot predict the result at the more
-     significant bytes (positions j+1..3), but it does not matter since we
-     already have a non-zero bit at position 8*j+7.
-
-     The test whether any byte in longword1 is zero is equivalent
-     to testing whether tmp is nonzero.
-
-     This test can read beyond the end of a string, depending on where
-     C_IN is encountered.  However, this is considered safe since the
-     initialization phase ensured that the read will be aligned,
-     therefore, the read will not cross page boundaries and will not
-     cause a fault.  */
-
-  while (1)
-    {
-      longword longword1 = *longword_ptr ^ repeated_c;
-
-      if ((((longword1 - repeated_one) & ~longword1)
-           & (repeated_one << 7)) != 0)
-        break;
-      longword_ptr++;
-    }
-
-  char_ptr = (const unsigned char *) longword_ptr;
-
-  /* At this point, we know that one of the sizeof (longword) bytes
-     starting at char_ptr is == c.  On little-endian machines, we
-     could determine the first such byte without any further memory
-     accesses, just by looking at the tmp result from the last loop
-     iteration.  But this does not work on big-endian machines.
-     Choose code that works in both cases.  */
-
-  char_ptr = (unsigned char *) longword_ptr;
-  while (*char_ptr != c)
-    char_ptr++;
-  return (void *) char_ptr;
-}
diff --git a/grub-core/gnulib/rawmemchr.valgrind 
b/grub-core/gnulib/rawmemchr.valgrind
deleted file mode 100644
index 636392368..000000000
--- a/grub-core/gnulib/rawmemchr.valgrind
+++ /dev/null
@@ -1,12 +0,0 @@
-# Suppress a valgrind message about use of uninitialized memory in rawmemchr().
-# This use is OK because it provides only a speedup.
-{
-    rawmemchr-value4
-    Memcheck:Value4
-    fun:rawmemchr
-}
-{
-    rawmemchr-value8
-    Memcheck:Value8
-    fun:rawmemchr
-}
diff --git a/grub-core/gnulib/realloc.c b/grub-core/gnulib/realloc.c
deleted file mode 100644
index b51010a62..000000000
--- a/grub-core/gnulib/realloc.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* realloc() function that is glibc compatible.
-
-   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
-   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 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.  */
-#ifdef realloc
-# define NEED_REALLOC_GNU 1
-/* Whereas the gnulib module 'realloc-gnu' defines HAVE_REALLOC_GNU.  */
-#elif GNULIB_REALLOC_GNU && !HAVE_REALLOC_GNU
-# define NEED_REALLOC_GNU 1
-#endif
-
-/* Infer the properties of the system's malloc function.
-   The gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU.  */
-#if GNULIB_MALLOC_GNU && HAVE_MALLOC_GNU
-# define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1
-#endif
-
-#include <stdlib.h>
-
-#include <errno.h>
-
-/* 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.  */
-
-void *
-rpl_realloc (void *p, size_t n)
-{
-  void *result;
-
-#if NEED_REALLOC_GNU
-  if (n == 0)
-    {
-      n = 1;
-
-      /* In theory realloc might fail, so don't rely on it to free.  */
-      free (p);
-      p = NULL;
-    }
-#endif
-
-  if (p == NULL)
-    {
-#if GNULIB_REALLOC_GNU && !NEED_REALLOC_GNU && !SYSTEM_MALLOC_GLIBC_COMPATIBLE
-      if (n == 0)
-        n = 1;
-#endif
-      result = malloc (n);
-    }
-  else
-    result = realloc (p, n);
-
-#if !HAVE_REALLOC_POSIX
-  if (result == NULL)
-    errno = ENOMEM;
-#endif
-
-  return result;
-}
diff --git a/grub-core/gnulib/ref-add.sin b/grub-core/gnulib/ref-add.sin
deleted file mode 100644
index 112bcdc64..000000000
--- a/grub-core/gnulib/ref-add.sin
+++ /dev/null
@@ -1,29 +0,0 @@
-# Add this package to a list of references stored in a text file.
-#
-#   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
-#   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 Bruno Haible <address@hidden>.
-#
-/^# Packages using this file: / {
-  s/# Packages using this file://
-  ta
-  :a
-  s/ @PACKAGE@ / @PACKAGE@ /
-  tb
-  s/ $/ @PACKAGE@ /
-  :b
-  s/^/# Packages using this file:/
-}
diff --git a/grub-core/gnulib/ref-del.sin b/grub-core/gnulib/ref-del.sin
deleted file mode 100644
index 6f7386847..000000000
--- a/grub-core/gnulib/ref-del.sin
+++ /dev/null
@@ -1,24 +0,0 @@
-# Remove this package from a list of references stored in a text file.
-#
-#   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
-#   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 Bruno Haible <address@hidden>.
-#
-/^# Packages using this file: / {
-  s/# Packages using this file://
-  s/ @PACKAGE@ / /
-  s/^/# Packages using this file:/
-}
diff --git a/grub-core/gnulib/regcomp.c b/grub-core/gnulib/regcomp.c
deleted file mode 100644
index 596e0cf3e..000000000
--- a/grub-core/gnulib/regcomp.c
+++ /dev/null
@@ -1,3913 +0,0 @@
-/* Extended regular expression matching and search library.
-   Copyright (C) 2002-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Isamu Hasegawa <address@hidden>.
-
-   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.
-
-   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.
-
-   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);
-static void re_compile_fastmap_iter (regex_t *bufp,
-                                    const re_dfastate_t *init_state,
-                                    char *fastmap);
-static reg_errcode_t init_dfa (re_dfa_t *dfa, size_t pat_len);
-#ifdef RE_ENABLE_I18N
-static void free_charset (re_charset_t *cset);
-#endif /* RE_ENABLE_I18N */
-static void free_workarea_compile (regex_t *preg);
-static reg_errcode_t create_initial_state (re_dfa_t *dfa);
-#ifdef RE_ENABLE_I18N
-static void optimize_utf8 (re_dfa_t *dfa);
-#endif
-static reg_errcode_t analyze (regex_t *preg);
-static reg_errcode_t preorder (bin_tree_t *root,
-                              reg_errcode_t (fn (void *, bin_tree_t *)),
-                              void *extra);
-static reg_errcode_t postorder (bin_tree_t *root,
-                               reg_errcode_t (fn (void *, bin_tree_t *)),
-                               void *extra);
-static reg_errcode_t optimize_subexps (void *extra, bin_tree_t *node);
-static reg_errcode_t 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);
-static reg_errcode_t calc_first (void *extra, bin_tree_t *node);
-static reg_errcode_t calc_next (void *extra, bin_tree_t *node);
-static reg_errcode_t link_nfa_nodes (void *extra, bin_tree_t *node);
-static Idx duplicate_node (re_dfa_t *dfa, Idx org_idx, unsigned int 
constraint);
-static Idx search_duplicated_node (const re_dfa_t *dfa, Idx org_node,
-                                  unsigned int constraint);
-static reg_errcode_t calc_eclosure (re_dfa_t *dfa);
-static reg_errcode_t calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa,
-                                        Idx node, bool root);
-static reg_errcode_t calc_inveclosure (re_dfa_t *dfa);
-static Idx fetch_number (re_string_t *input, re_token_t *token,
-                        reg_syntax_t syntax);
-static int peek_token (re_token_t *token, re_string_t *input,
-                       reg_syntax_t syntax) internal_function;
-static bin_tree_t *parse (re_string_t *regexp, regex_t *preg,
-                         reg_syntax_t syntax, reg_errcode_t *err);
-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);
-static bin_tree_t *parse_branch (re_string_t *regexp, regex_t *preg,
-                                re_token_t *token, reg_syntax_t syntax,
-                                Idx nest, reg_errcode_t *err);
-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);
-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);
-static bin_tree_t *parse_dup_op (bin_tree_t *dup_elem, re_string_t *regexp,
-                                re_dfa_t *dfa, re_token_t *token,
-                                reg_syntax_t syntax, reg_errcode_t *err);
-static bin_tree_t *parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa,
-                                     re_token_t *token, reg_syntax_t syntax,
-                                     reg_errcode_t *err);
-static reg_errcode_t parse_bracket_element (bracket_elem_t *elem,
-                                           re_string_t *regexp,
-                                           re_token_t *token, int token_len,
-                                           re_dfa_t *dfa,
-                                           reg_syntax_t syntax,
-                                           bool accept_hyphen);
-static reg_errcode_t parse_bracket_symbol (bracket_elem_t *elem,
-                                         re_string_t *regexp,
-                                         re_token_t *token);
-#ifdef RE_ENABLE_I18N
-static reg_errcode_t build_equiv_class (bitset_t sbcset,
-                                       re_charset_t *mbcset,
-                                       Idx *equiv_class_alloc,
-                                       const unsigned char *name);
-static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
-                                     bitset_t sbcset,
-                                     re_charset_t *mbcset,
-                                     Idx *char_class_alloc,
-                                     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 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 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,
-                               re_token_type_t type);
-static bin_tree_t *create_token_tree (re_dfa_t *dfa,
-                                     bin_tree_t *left, bin_tree_t *right,
-                                     const re_token_t *token);
-static bin_tree_t *duplicate_tree (const bin_tree_t *src, re_dfa_t *dfa);
-static void free_token (re_token_t *node);
-static reg_errcode_t free_tree (void *extra, bin_tree_t *node);
-static reg_errcode_t mark_opt_subexp (void *extra, bin_tree_t *node);
-
-/* This table gives an error message for each of the error codes listed
-   in regex.h.  Obviously the order here has to be same as there.
-   POSIX doesn't require that we do anything for REG_NOERROR,
-   but why not be nice?  */
-
-static const char __re_error_msgid[] =
-  {
-#define REG_NOERROR_IDX        0
-    gettext_noop ("Success")   /* REG_NOERROR */
-    "\0"
-#define REG_NOMATCH_IDX (REG_NOERROR_IDX + sizeof "Success")
-    gettext_noop ("No match")  /* REG_NOMATCH */
-    "\0"
-#define REG_BADPAT_IDX (REG_NOMATCH_IDX + sizeof "No match")
-    gettext_noop ("Invalid regular expression") /* REG_BADPAT */
-    "\0"
-#define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression")
-    gettext_noop ("Invalid collation character") /* REG_ECOLLATE */
-    "\0"
-#define REG_ECTYPE_IDX (REG_ECOLLATE_IDX + sizeof "Invalid collation 
character")
-    gettext_noop ("Invalid character class name") /* REG_ECTYPE */
-    "\0"
-#define REG_EESCAPE_IDX        (REG_ECTYPE_IDX + sizeof "Invalid character 
class name")
-    gettext_noop ("Trailing backslash") /* REG_EESCAPE */
-    "\0"
-#define REG_ESUBREG_IDX        (REG_EESCAPE_IDX + sizeof "Trailing backslash")
-    gettext_noop ("Invalid back reference") /* REG_ESUBREG */
-    "\0"
-#define REG_EBRACK_IDX (REG_ESUBREG_IDX + sizeof "Invalid back reference")
-    gettext_noop ("Unmatched [ or [^") /* REG_EBRACK */
-    "\0"
-#define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [ or [^")
-    gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */
-    "\0"
-#define REG_EBRACE_IDX (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(")
-    gettext_noop ("Unmatched \\{") /* REG_EBRACE */
-    "\0"
-#define REG_BADBR_IDX  (REG_EBRACE_IDX + sizeof "Unmatched \\{")
-    gettext_noop ("Invalid content of \\{\\}") /* REG_BADBR */
-    "\0"
-#define REG_ERANGE_IDX (REG_BADBR_IDX + sizeof "Invalid content of \\{\\}")
-    gettext_noop ("Invalid range end") /* REG_ERANGE */
-    "\0"
-#define REG_ESPACE_IDX (REG_ERANGE_IDX + sizeof "Invalid range end")
-    gettext_noop ("Memory exhausted") /* REG_ESPACE */
-    "\0"
-#define REG_BADRPT_IDX (REG_ESPACE_IDX + sizeof "Memory exhausted")
-    gettext_noop ("Invalid preceding regular expression") /* REG_BADRPT */
-    "\0"
-#define REG_EEND_IDX   (REG_BADRPT_IDX + sizeof "Invalid preceding regular 
expression")
-    gettext_noop ("Premature end of regular expression") /* REG_EEND */
-    "\0"
-#define REG_ESIZE_IDX  (REG_EEND_IDX + sizeof "Premature end of regular 
expression")
-    gettext_noop ("Regular expression too big") /* REG_ESIZE */
-    "\0"
-#define REG_ERPAREN_IDX        (REG_ESIZE_IDX + sizeof "Regular expression too 
big")
-    gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */
-  };
-
-static const size_t __re_error_msgid_idx[] =
-  {
-    REG_NOERROR_IDX,
-    REG_NOMATCH_IDX,
-    REG_BADPAT_IDX,
-    REG_ECOLLATE_IDX,
-    REG_ECTYPE_IDX,
-    REG_EESCAPE_IDX,
-    REG_ESUBREG_IDX,
-    REG_EBRACK_IDX,
-    REG_EPAREN_IDX,
-    REG_EBRACE_IDX,
-    REG_BADBR_IDX,
-    REG_ERANGE_IDX,
-    REG_ESPACE_IDX,
-    REG_BADRPT_IDX,
-    REG_EEND_IDX,
-    REG_ESIZE_IDX,
-    REG_ERPAREN_IDX
-  };
-
-/* Entry points for GNU code.  */
-
-/* re_compile_pattern is the GNU regular expression compiler: it
-   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
-   are set in BUFP on entry.  */
-
-#ifdef _LIBC
-const char *
-re_compile_pattern (pattern, length, bufp)
-    const char *pattern;
-    size_t length;
-    struct re_pattern_buffer *bufp;
-#else /* size_t might promote */
-const char *
-re_compile_pattern (const char *pattern, size_t length,
-                   struct re_pattern_buffer *bufp)
-#endif
-{
-  reg_errcode_t ret;
-
-  /* And GNU code determines whether or not to get register information
-     by passing null for the REGS argument to re_match, etc., not by
-     setting no_sub, unless RE_NO_SUB is set.  */
-  bufp->no_sub = !!(re_syntax_options & RE_NO_SUB);
-
-  /* Match anchors at newline.  */
-  bufp->newline_anchor = 1;
-
-  ret = re_compile_internal (bufp, pattern, length, re_syntax_options);
-
-  if (!ret)
-    return NULL;
-  return gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
-}
-#ifdef _LIBC
-weak_alias (__re_compile_pattern, re_compile_pattern)
-#endif
-
-/* 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
-   become read-only after dumping.  */
-reg_syntax_t re_syntax_options;
-
-
-/* Specify the precise syntax of regexps for compilation.  This provides
-   for compatibility for various utilities which historically have
-   different, incompatible syntaxes.
-
-   The argument SYNTAX is a bit mask comprised of the various bits
-   defined in regex.h.  We return the old syntax.  */
-
-reg_syntax_t
-re_set_syntax (syntax)
-    reg_syntax_t syntax;
-{
-  reg_syntax_t ret = re_syntax_options;
-
-  re_syntax_options = syntax;
-  return ret;
-}
-#ifdef _LIBC
-weak_alias (__re_set_syntax, re_set_syntax)
-#endif
-
-int
-re_compile_fastmap (bufp)
-    struct re_pattern_buffer *bufp;
-{
-  re_dfa_t *dfa = bufp->buffer;
-  char *fastmap = bufp->fastmap;
-
-  memset (fastmap, '\0', sizeof (char) * SBC_MAX);
-  re_compile_fastmap_iter (bufp, dfa->init_state, fastmap);
-  if (dfa->init_state != dfa->init_state_word)
-    re_compile_fastmap_iter (bufp, dfa->init_state_word, fastmap);
-  if (dfa->init_state != dfa->init_state_nl)
-    re_compile_fastmap_iter (bufp, dfa->init_state_nl, fastmap);
-  if (dfa->init_state != dfa->init_state_begbuf)
-    re_compile_fastmap_iter (bufp, dfa->init_state_begbuf, fastmap);
-  bufp->fastmap_accurate = 1;
-  return 0;
-}
-#ifdef _LIBC
-weak_alias (__re_compile_fastmap, re_compile_fastmap)
-#endif
-
-static inline void
-__attribute__ ((always_inline))
-re_set_fastmap (char *fastmap, bool icase, int ch)
-{
-  fastmap[ch] = 1;
-  if (icase)
-    fastmap[tolower (ch)] = 1;
-}
-
-/* Helper function for re_compile_fastmap.
-   Compile fastmap for the initial_state INIT_STATE.  */
-
-static void
-re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
-                        char *fastmap)
-{
-  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)
-    {
-      Idx node = init_state->nodes.elems[node_cnt];
-      re_token_type_t type = dfa->nodes[node].type;
-
-      if (type == CHARACTER)
-       {
-         re_set_fastmap (fastmap, icase, dfa->nodes[node].opr.c);
-#ifdef RE_ENABLE_I18N
-         if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
-           {
-             unsigned char buf[MB_LEN_MAX];
-             unsigned char *p;
-             wchar_t wc;
-             mbstate_t state;
-
-             p = buf;
-             *p++ = dfa->nodes[node].opr.c;
-             while (++node < dfa->nodes_len
-                    && dfa->nodes[node].type == CHARACTER
-                    && dfa->nodes[node].mb_partial)
-               *p++ = dfa->nodes[node].opr.c;
-             memset (&state, '\0', sizeof (state));
-             if (__mbrtowc (&wc, (const char *) buf, p - buf,
-                            &state) == p - buf
-                 && (__wcrtomb ((char *) buf, towlower (wc), &state)
-                     != (size_t) -1))
-               re_set_fastmap (fastmap, false, buf[0]);
-           }
-#endif
-       }
-      else if (type == SIMPLE_BRACKET)
-       {
-         int i, ch;
-         for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
-           {
-             int j;
-             bitset_word_t w = dfa->nodes[node].opr.sbcset[i];
-             for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
-               if (w & ((bitset_word_t) 1 << j))
-                 re_set_fastmap (fastmap, icase, ch);
-           }
-       }
-#ifdef RE_ENABLE_I18N
-      else if (type == COMPLEX_BRACKET)
-       {
-         re_charset_t *cset = dfa->nodes[node].opr.mbcset;
-         Idx i;
-
-# ifdef _LIBC
-         /* See if we have to try all bytes which start multiple collation
-            elements.
-            e.g. In da_DK, we want to catch 'a' since "aa" is a valid
-                 collation element, and don't catch 'b' since 'b' is
-                 the only collation element which starts from 'b' (and
-                 it is caught by SIMPLE_BRACKET).  */
-             if (_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES) != 0
-                 && (cset->ncoll_syms || cset->nranges))
-               {
-                 const int32_t *table = (const int32_t *)
-                   _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
-                 for (i = 0; i < SBC_MAX; ++i)
-                   if (table[i] < 0)
-                     re_set_fastmap (fastmap, icase, i);
-               }
-# endif /* _LIBC */
-
-         /* See if we have to start the match at all multibyte characters,
-            i.e. where we would not find an invalid sequence.  This only
-            applies to multibyte character sets; for single byte character
-            sets, the SIMPLE_BRACKET again suffices.  */
-         if (dfa->mb_cur_max > 1
-             && (cset->nchar_classes || cset->non_match || cset->nranges
-# ifdef _LIBC
-                 || cset->nequiv_classes
-# endif /* _LIBC */
-                ))
-           {
-             unsigned char c = 0;
-             do
-               {
-                 mbstate_t mbs;
-                 memset (&mbs, 0, sizeof (mbs));
-                 if (__mbrtowc (NULL, (char *) &c, 1, &mbs) == (size_t) -2)
-                   re_set_fastmap (fastmap, false, (int) c);
-               }
-             while (++c != 0);
-           }
-
-         else
-           {
-             /* ... Else catch all bytes which can start the mbchars.  */
-             for (i = 0; i < cset->nmbchars; ++i)
-               {
-                 char buf[256];
-                 mbstate_t state;
-                 memset (&state, '\0', sizeof (state));
-                 if (__wcrtomb (buf, cset->mbchars[i], &state) != (size_t) -1)
-                   re_set_fastmap (fastmap, icase, *(unsigned char *) buf);
-                 if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
-                   {
-                     if (__wcrtomb (buf, towlower (cset->mbchars[i]), &state)
-                         != (size_t) -1)
-                       re_set_fastmap (fastmap, false, *(unsigned char *) buf);
-                   }
-               }
-           }
-       }
-#endif /* RE_ENABLE_I18N */
-      else if (type == OP_PERIOD
-#ifdef RE_ENABLE_I18N
-              || type == OP_UTF8_PERIOD
-#endif /* RE_ENABLE_I18N */
-              || type == END_OF_RE)
-       {
-         memset (fastmap, '\1', sizeof (char) * SBC_MAX);
-         if (type == END_OF_RE)
-           bufp->can_be_null = 1;
-         return;
-       }
-    }
-}
-
-/* Entry point for POSIX code.  */
-/* regcomp takes a regular expression as a string and compiles it.
-
-   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
-       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.
-
-   PATTERN is the address of the pattern string.
-
-   CFLAGS is a series of bits which affect compilation.
-
-     If REG_EXTENDED is set, we use POSIX extended syntax; otherwise, we
-     use POSIX basic syntax.
-
-     If REG_NEWLINE is set, then . and [^...] don't match newline.
-     Also, regexec will try a match beginning after every newline.
-
-     If REG_ICASE is set, then we considers upper- and lowercase
-     versions of letters to be equivalent when matching.
-
-     If REG_NOSUB is set, then when PREG is passed to regexec, that
-     routine will report only success or failure, and nothing about the
-     registers.
-
-   It returns 0 if it succeeds, nonzero if it doesn't.  (See regex.h for
-   the return codes and their meanings.)  */
-
-int
-regcomp (preg, pattern, cflags)
-    regex_t *_Restrict_ preg;
-    const char *_Restrict_ pattern;
-    int cflags;
-{
-  reg_errcode_t ret;
-  reg_syntax_t syntax = ((cflags & REG_EXTENDED) ? RE_SYNTAX_POSIX_EXTENDED
-                        : RE_SYNTAX_POSIX_BASIC);
-
-  preg->buffer = NULL;
-  preg->allocated = 0;
-  preg->used = 0;
-
-  /* Try to allocate space for the fastmap.  */
-  preg->fastmap = re_malloc (char, SBC_MAX);
-  if (BE (preg->fastmap == NULL, 0))
-    return REG_ESPACE;
-
-  syntax |= (cflags & REG_ICASE) ? RE_ICASE : 0;
-
-  /* If REG_NEWLINE is set, newlines are treated differently.  */
-  if (cflags & REG_NEWLINE)
-    { /* REG_NEWLINE implies neither . nor [^...] match newline.  */
-      syntax &= ~RE_DOT_NEWLINE;
-      syntax |= RE_HAT_LISTS_NOT_NEWLINE;
-      /* It also changes the matching behavior.  */
-      preg->newline_anchor = 1;
-    }
-  else
-    preg->newline_anchor = 0;
-  preg->no_sub = !!(cflags & REG_NOSUB);
-  preg->translate = NULL;
-
-  ret = re_compile_internal (preg, pattern, strlen (pattern), syntax);
-
-  /* POSIX doesn't distinguish between an unmatched open-group and an
-     unmatched close-group: both are REG_EPAREN.  */
-  if (ret == REG_ERPAREN)
-    ret = REG_EPAREN;
-
-  /* We have already checked preg->fastmap != NULL.  */
-  if (BE (ret == REG_NOERROR, 1))
-    /* Compute the fastmap now, since regexec cannot modify the pattern
-       buffer.  This function never fails in this implementation.  */
-    (void) re_compile_fastmap (preg);
-  else
-    {
-      /* Some error occurred while compiling the expression.  */
-      re_free (preg->fastmap);
-      preg->fastmap = NULL;
-    }
-
-  return (int) ret;
-}
-#ifdef _LIBC
-weak_alias (__regcomp, regcomp)
-#endif
-
-/* Returns a message corresponding to an error code, ERRCODE, returned
-   from either regcomp or regexec.   We don't use PREG here.  */
-
-#ifdef _LIBC
-size_t
-regerror (errcode, preg, errbuf, errbuf_size)
-    int errcode;
-    const regex_t *_Restrict_ preg;
-    char *_Restrict_ errbuf;
-    size_t errbuf_size;
-#else /* size_t might promote */
-size_t
-regerror (int errcode, const regex_t *_Restrict_ preg,
-         char *_Restrict_ errbuf, size_t errbuf_size)
-#endif
-{
-  const char *msg;
-  size_t msg_size;
-
-  if (BE (errcode < 0
-         || errcode >= (int) (sizeof (__re_error_msgid_idx)
-                              / sizeof (__re_error_msgid_idx[0])), 0))
-    msg = gettext ("unknown regexp error");
-  else
-    msg = gettext (__re_error_msgid + __re_error_msgid_idx[errcode]);
-
-  msg_size = strlen (msg) + 1; /* Includes the null.  */
-
-  if (BE (errbuf_size != 0, 1))
-    {
-      size_t cpy_size = msg_size;
-      if (BE (msg_size > errbuf_size, 0))
-       {
-         cpy_size = errbuf_size - 1;
-         errbuf[cpy_size] = '\0';
-       }
-      memcpy (errbuf, msg, cpy_size);
-    }
-
-  return msg_size;
-}
-#ifdef _LIBC
-weak_alias (__regerror, regerror)
-#endif
-
-
-#ifdef RE_ENABLE_I18N
-/* This static array is used for the map to single-byte characters when
-   UTF-8 is used.  Otherwise we would allocate memory just to initialize
-   it the same all the time.  UTF-8 is the preferred encoding so this is
-   a worthwhile optimization.  */
-static const bitset_t utf8_sb_map =
-{
-  /* Set the first 128 bits.  */
-# 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
-  BITSET_WORD_MAX, BITSET_WORD_MAX,
-#  elif 1 * BITSET_WORD_BITS < ASCII_CHARS
-  BITSET_WORD_MAX,
-#  endif
-  (BITSET_WORD_MAX
-   >> (SBC_MAX % BITSET_WORD_BITS == 0
-       ? 0
-       : BITSET_WORD_BITS - SBC_MAX % BITSET_WORD_BITS))
-# endif
-};
-#endif
-
-
-static void
-free_dfa_content (re_dfa_t *dfa)
-{
-  Idx i, j;
-
-  if (dfa->nodes)
-    for (i = 0; i < dfa->nodes_len; ++i)
-      free_token (dfa->nodes + i);
-  re_free (dfa->nexts);
-  for (i = 0; i < dfa->nodes_len; ++i)
-    {
-      if (dfa->eclosures != NULL)
-       re_node_set_free (dfa->eclosures + i);
-      if (dfa->inveclosures != NULL)
-       re_node_set_free (dfa->inveclosures + i);
-      if (dfa->edests != NULL)
-       re_node_set_free (dfa->edests + i);
-    }
-  re_free (dfa->edests);
-  re_free (dfa->eclosures);
-  re_free (dfa->inveclosures);
-  re_free (dfa->nodes);
-
-  if (dfa->state_table)
-    for (i = 0; i <= dfa->state_hash_mask; ++i)
-      {
-       struct re_state_table_entry *entry = dfa->state_table + i;
-       for (j = 0; j < entry->num; ++j)
-         {
-           re_dfastate_t *state = entry->array[j];
-           free_state (state);
-         }
-       re_free (entry->array);
-      }
-  re_free (dfa->state_table);
-#ifdef RE_ENABLE_I18N
-  if (dfa->sb_char != utf8_sb_map)
-    re_free (dfa->sb_char);
-#endif
-  re_free (dfa->subexp_map);
-#ifdef DEBUG
-  re_free (dfa->re_str);
-#endif
-
-  re_free (dfa);
-}
-
-
-/* Free dynamically allocated space used by PREG.  */
-
-void
-regfree (preg)
-    regex_t *preg;
-{
-  re_dfa_t *dfa = preg->buffer;
-  if (BE (dfa != NULL, 1))
-    free_dfa_content (dfa);
-  preg->buffer = NULL;
-  preg->allocated = 0;
-
-  re_free (preg->fastmap);
-  preg->fastmap = NULL;
-
-  re_free (preg->translate);
-  preg->translate = NULL;
-}
-#ifdef _LIBC
-weak_alias (__regfree, regfree)
-#endif
-
-/* Entry points compatible with 4.2 BSD regex library.  We don't define
-   them unless specifically requested.  */
-
-#if defined _REGEX_RE_COMP || defined _LIBC
-
-/* BSD has one and only one pattern buffer.  */
-static struct re_pattern_buffer re_comp_buf;
-
-char *
-# ifdef _LIBC
-/* Make these definitions weak in libc, so POSIX programs can redefine
-   these names if they don't use our functions, and still use
-   regcomp/regexec above without link errors.  */
-weak_function
-# endif
-re_comp (s)
-     const char *s;
-{
-  reg_errcode_t ret;
-  char *fastmap;
-
-  if (!s)
-    {
-      if (!re_comp_buf.buffer)
-       return gettext ("No previous regular expression");
-      return 0;
-    }
-
-  if (re_comp_buf.buffer)
-    {
-      fastmap = re_comp_buf.fastmap;
-      re_comp_buf.fastmap = NULL;
-      __regfree (&re_comp_buf);
-      memset (&re_comp_buf, '\0', sizeof (re_comp_buf));
-      re_comp_buf.fastmap = fastmap;
-    }
-
-  if (re_comp_buf.fastmap == NULL)
-    {
-      re_comp_buf.fastmap = (char *) malloc (SBC_MAX);
-      if (re_comp_buf.fastmap == NULL)
-       return (char *) gettext (__re_error_msgid
-                                + __re_error_msgid_idx[(int) REG_ESPACE]);
-    }
-
-  /* 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.  */
-  re_comp_buf.newline_anchor = 1;
-
-  ret = re_compile_internal (&re_comp_buf, s, strlen (s), re_syntax_options);
-
-  if (!ret)
-    return NULL;
-
-  /* Yes, we're discarding 'const' here if !HAVE_LIBINTL.  */
-  return (char *) gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
-}
-
-#ifdef _LIBC
-libc_freeres_fn (free_mem)
-{
-  __regfree (&re_comp_buf);
-}
-#endif
-
-#endif /* _REGEX_RE_COMP */
-
-/* Internal entry point.
-   Compile the regular expression PATTERN, whose length is LENGTH.
-   SYNTAX indicate regular expression's syntax.  */
-
-static reg_errcode_t
-re_compile_internal (regex_t *preg, const char * pattern, size_t length,
-                    reg_syntax_t syntax)
-{
-  reg_errcode_t err = REG_NOERROR;
-  re_dfa_t *dfa;
-  re_string_t regexp;
-
-  /* Initialize the pattern buffer.  */
-  preg->fastmap_accurate = 0;
-  preg->syntax = syntax;
-  preg->not_bol = preg->not_eol = 0;
-  preg->used = 0;
-  preg->re_nsub = 0;
-  preg->can_be_null = 0;
-  preg->regs_allocated = REGS_UNALLOCATED;
-
-  /* Initialize the dfa.  */
-  dfa = preg->buffer;
-  if (BE (preg->allocated < sizeof (re_dfa_t), 0))
-    {
-      /* If zero allocated, but buffer is non-null, try to realloc
-        enough space.  This loses if buffer's address is bogus, but
-        that is the user's responsibility.  If ->buffer is NULL this
-        is a simple allocation.  */
-      dfa = re_realloc (preg->buffer, re_dfa_t, 1);
-      if (dfa == NULL)
-       return REG_ESPACE;
-      preg->allocated = sizeof (re_dfa_t);
-      preg->buffer = dfa;
-    }
-  preg->used = sizeof (re_dfa_t);
-
-  err = init_dfa (dfa, length);
-  if (BE (err != REG_NOERROR, 0))
-    {
-      free_dfa_content (dfa);
-      preg->buffer = NULL;
-      preg->allocated = 0;
-      return err;
-    }
-#ifdef DEBUG
-  /* Note: length+1 will not overflow since it is checked in init_dfa.  */
-  dfa->re_str = re_malloc (char, length + 1);
-  strncpy (dfa->re_str, pattern, length + 1);
-#endif
-
-  __libc_lock_init (dfa->lock);
-
-  err = re_string_construct (&regexp, pattern, length, preg->translate,
-                            (syntax & RE_ICASE) != 0, dfa);
-  if (BE (err != REG_NOERROR, 0))
-    {
-    re_compile_internal_free_return:
-      free_workarea_compile (preg);
-      re_string_destruct (&regexp);
-      free_dfa_content (dfa);
-      preg->buffer = NULL;
-      preg->allocated = 0;
-      return err;
-    }
-
-  /* Parse the regular expression, and build a structure tree.  */
-  preg->re_nsub = 0;
-  dfa->str_tree = parse (&regexp, preg, syntax, &err);
-  if (BE (dfa->str_tree == NULL, 0))
-    goto re_compile_internal_free_return;
-
-  /* Analyze the tree and create the nfa.  */
-  err = analyze (preg);
-  if (BE (err != REG_NOERROR, 0))
-    goto re_compile_internal_free_return;
-
-#ifdef RE_ENABLE_I18N
-  /* If possible, do searching in single byte encoding to speed things up.  */
-  if (dfa->is_utf8 && !(syntax & RE_ICASE) && preg->translate == NULL)
-    optimize_utf8 (dfa);
-#endif
-
-  /* Then create the initial state of the dfa.  */
-  err = create_initial_state (dfa);
-
-  /* Release work areas.  */
-  free_workarea_compile (preg);
-  re_string_destruct (&regexp);
-
-  if (BE (err != REG_NOERROR, 0))
-    {
-      free_dfa_content (dfa);
-      preg->buffer = NULL;
-      preg->allocated = 0;
-    }
-
-  return err;
-}
-
-/* Initialize DFA.  We use the length of the regular expression PAT_LEN
-   as the initial length of some arrays.  */
-
-static reg_errcode_t
-init_dfa (re_dfa_t *dfa, size_t pat_len)
-{
-  __re_size_t table_size;
-#ifndef _LIBC
-  const char *codeset_name;
-#endif
-#ifdef RE_ENABLE_I18N
-  size_t max_i18n_object_size = MAX (sizeof (wchar_t), sizeof (wctype_t));
-#else
-  size_t max_i18n_object_size = 0;
-#endif
-  size_t max_object_size =
-    MAX (sizeof (struct re_state_table_entry),
-        MAX (sizeof (re_token_t),
-             MAX (sizeof (re_node_set),
-                  MAX (sizeof (regmatch_t),
-                       max_i18n_object_size))));
-
-  memset (dfa, '\0', sizeof (re_dfa_t));
-
-  /* Force allocation of str_tree_storage the first time.  */
-  dfa->str_tree_storage_idx = BIN_TREE_STORAGE_SIZE;
-
-  /* Avoid overflows.  The extra "/ 2" is for the table_size doubling
-     calculation below, and for similar doubling calculations
-     elsewhere.  And it's <= rather than <, because some of the
-     doubling calculations add 1 afterwards.  */
-  if (BE (MIN (IDX_MAX, SIZE_MAX / max_object_size) / 2 <= pat_len, 0))
-    return REG_ESPACE;
-
-  dfa->nodes_alloc = pat_len + 1;
-  dfa->nodes = re_malloc (re_token_t, dfa->nodes_alloc);
-
-  /*  table_size = 2 ^ ceil(log pat_len) */
-  for (table_size = 1; ; table_size <<= 1)
-    if (table_size > pat_len)
-      break;
-
-  dfa->state_table = calloc (sizeof (struct re_state_table_entry), table_size);
-  dfa->state_hash_mask = table_size - 1;
-
-  dfa->mb_cur_max = MB_CUR_MAX;
-#ifdef _LIBC
-  if (dfa->mb_cur_max == 6
-      && strcmp (_NL_CURRENT (LC_CTYPE, _NL_CTYPE_CODESET_NAME), "UTF-8") == 0)
-    dfa->is_utf8 = 1;
-  dfa->map_notascii = (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MAP_TO_NONASCII)
-                      != 0);
-#else
-  codeset_name = nl_langinfo (CODESET);
-  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
-     superset of ASCII.  */
-  dfa->map_notascii = 0;
-#endif
-
-#ifdef RE_ENABLE_I18N
-  if (dfa->mb_cur_max > 1)
-    {
-      if (dfa->is_utf8)
-       dfa->sb_char = (re_bitset_ptr_t) utf8_sb_map;
-      else
-       {
-         int i, j, ch;
-
-         dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
-         if (BE (dfa->sb_char == NULL, 0))
-           return REG_ESPACE;
-
-         /* Set the bits corresponding to single byte chars.  */
-         for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
-           for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
-             {
-               wint_t wch = __btowc (ch);
-               if (wch != WEOF)
-                 dfa->sb_char[i] |= (bitset_word_t) 1 << j;
-# ifndef _LIBC
-               if (isascii (ch) && wch != ch)
-                 dfa->map_notascii = 1;
-# endif
-             }
-       }
-    }
-#endif
-
-  if (BE (dfa->nodes == NULL || dfa->state_table == NULL, 0))
-    return REG_ESPACE;
-  return REG_NOERROR;
-}
-
-/* Initialize WORD_CHAR table, which indicate which character is
-   "word".  In this case "word" means that it is the word construction
-   character used by some operators like "\<", "\>", etc.  */
-
-static void
-internal_function
-init_word_char (re_dfa_t *dfa)
-{
-  int i = 0;
-  int j;
-  int ch = 0;
-  dfa->word_ops_used = 1;
-  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;
-}
-
-/* Free the work area which are only used while compiling.  */
-
-static void
-free_workarea_compile (regex_t *preg)
-{
-  re_dfa_t *dfa = preg->buffer;
-  bin_tree_storage_t *storage, *next;
-  for (storage = dfa->str_tree_storage; storage; storage = next)
-    {
-      next = storage->next;
-      re_free (storage);
-    }
-  dfa->str_tree_storage = NULL;
-  dfa->str_tree_storage_idx = BIN_TREE_STORAGE_SIZE;
-  dfa->str_tree = NULL;
-  re_free (dfa->org_indices);
-  dfa->org_indices = NULL;
-}
-
-/* Create initial states for all contexts.  */
-
-static reg_errcode_t
-create_initial_state (re_dfa_t *dfa)
-{
-  Idx first, i;
-  reg_errcode_t err;
-  re_node_set init_nodes;
-
-  /* Initial states have the epsilon closure of the node which is
-     the first node of the regular expression.  */
-  first = dfa->str_tree->first->node_idx;
-  dfa->init_node = first;
-  err = re_node_set_init_copy (&init_nodes, dfa->eclosures + first);
-  if (BE (err != REG_NOERROR, 0))
-    return err;
-
-  /* The back-references which are in initial states can epsilon transit,
-     since in this case all of the subexpressions can be null.
-     Then we add epsilon closures of the nodes which are the next nodes of
-     the back-references.  */
-  if (dfa->nbackref > 0)
-    for (i = 0; i < init_nodes.nelem; ++i)
-      {
-       Idx node_idx = init_nodes.elems[i];
-       re_token_type_t type = dfa->nodes[node_idx].type;
-
-       Idx clexp_idx;
-       if (type != OP_BACK_REF)
-         continue;
-       for (clexp_idx = 0; clexp_idx < init_nodes.nelem; ++clexp_idx)
-         {
-           re_token_t *clexp_node;
-           clexp_node = dfa->nodes + init_nodes.elems[clexp_idx];
-           if (clexp_node->type == OP_CLOSE_SUBEXP
-               && clexp_node->opr.idx == dfa->nodes[node_idx].opr.idx)
-             break;
-         }
-       if (clexp_idx == init_nodes.nelem)
-         continue;
-
-       if (type == OP_BACK_REF)
-         {
-           Idx dest_idx = dfa->edests[node_idx].elems[0];
-           if (!re_node_set_contains (&init_nodes, dest_idx))
-             {
-               reg_errcode_t merge_err
-                  = re_node_set_merge (&init_nodes, dfa->eclosures + dest_idx);
-               if (merge_err != REG_NOERROR)
-                 return merge_err;
-               i = 0;
-             }
-         }
-      }
-
-  /* It must be the first time to invoke acquire_state.  */
-  dfa->init_state = re_acquire_state_context (&err, dfa, &init_nodes, 0);
-  /* We don't check ERR here, since the initial state must not be NULL.  */
-  if (BE (dfa->init_state == NULL, 0))
-    return err;
-  if (dfa->init_state->has_constraint)
-    {
-      dfa->init_state_word = re_acquire_state_context (&err, dfa, &init_nodes,
-                                                      CONTEXT_WORD);
-      dfa->init_state_nl = re_acquire_state_context (&err, dfa, &init_nodes,
-                                                    CONTEXT_NEWLINE);
-      dfa->init_state_begbuf = re_acquire_state_context (&err, dfa,
-                                                        &init_nodes,
-                                                        CONTEXT_NEWLINE
-                                                        | CONTEXT_BEGBUF);
-      if (BE (dfa->init_state_word == NULL || dfa->init_state_nl == NULL
-             || dfa->init_state_begbuf == NULL, 0))
-       return err;
-    }
-  else
-    dfa->init_state_word = dfa->init_state_nl
-      = dfa->init_state_begbuf = dfa->init_state;
-
-  re_node_set_free (&init_nodes);
-  return REG_NOERROR;
-}
-
-#ifdef RE_ENABLE_I18N
-/* If it is possible to do searching in single byte encoding instead of UTF-8
-   to speed things up, set dfa->mb_cur_max to 1, clear is_utf8 and change
-   DFA nodes where needed.  */
-
-static void
-optimize_utf8 (re_dfa_t *dfa)
-{
-  Idx node;
-  int i;
-  bool mb_chars = false;
-  bool has_period = false;
-
-  for (node = 0; node < dfa->nodes_len; ++node)
-    switch (dfa->nodes[node].type)
-      {
-      case CHARACTER:
-       if (dfa->nodes[node].opr.c >= ASCII_CHARS)
-         mb_chars = true;
-       break;
-      case ANCHOR:
-       switch (dfa->nodes[node].opr.ctx_type)
-         {
-         case LINE_FIRST:
-         case LINE_LAST:
-         case BUF_FIRST:
-         case BUF_LAST:
-           break;
-         default:
-           /* Word anchors etc. cannot be handled.  It's okay to test
-              opr.ctx_type since constraints (for all DFA nodes) are
-              created by ORing one or more opr.ctx_type values.  */
-           return;
-         }
-       break;
-      case OP_PERIOD:
-       has_period = true;
-       break;
-      case OP_BACK_REF:
-      case OP_ALT:
-      case END_OF_RE:
-      case OP_DUP_ASTERISK:
-      case OP_OPEN_SUBEXP:
-      case OP_CLOSE_SUBEXP:
-       break;
-      case COMPLEX_BRACKET:
-       return;
-      case SIMPLE_BRACKET:
-       /* Just double check.  */
-       {
-         int rshift = (ASCII_CHARS % BITSET_WORD_BITS == 0
-                       ? 0
-                       : BITSET_WORD_BITS - ASCII_CHARS % BITSET_WORD_BITS);
-         for (i = ASCII_CHARS / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
-           {
-             if (dfa->nodes[node].opr.sbcset[i] >> rshift != 0)
-               return;
-             rshift = 0;
-           }
-       }
-       break;
-      default:
-       break;
-      }
-
-  if (mb_chars || has_period)
-    for (node = 0; node < dfa->nodes_len; ++node)
-      {
-       if (dfa->nodes[node].type == CHARACTER
-           && dfa->nodes[node].opr.c >= ASCII_CHARS)
-         dfa->nodes[node].mb_partial = 0;
-       else if (dfa->nodes[node].type == OP_PERIOD)
-         dfa->nodes[node].type = OP_UTF8_PERIOD;
-      }
-
-  /* The search can be in single byte locale.  */
-  dfa->mb_cur_max = 1;
-  dfa->is_utf8 = 0;
-  dfa->has_mb_node = dfa->nbackref > 0 || has_period;
-}
-#endif
-
-/* Analyze the structure tree, and calculate "first", "next", "edest",
-   "eclosure", and "inveclosure".  */
-
-static reg_errcode_t
-analyze (regex_t *preg)
-{
-  re_dfa_t *dfa = preg->buffer;
-  reg_errcode_t ret;
-
-  /* Allocate arrays.  */
-  dfa->nexts = re_malloc (Idx, dfa->nodes_alloc);
-  dfa->org_indices = re_malloc (Idx, dfa->nodes_alloc);
-  dfa->edests = re_malloc (re_node_set, dfa->nodes_alloc);
-  dfa->eclosures = re_malloc (re_node_set, dfa->nodes_alloc);
-  if (BE (dfa->nexts == NULL || dfa->org_indices == NULL || dfa->edests == NULL
-         || dfa->eclosures == NULL, 0))
-    return REG_ESPACE;
-
-  dfa->subexp_map = re_malloc (Idx, preg->re_nsub);
-  if (dfa->subexp_map != NULL)
-    {
-      Idx i;
-      for (i = 0; i < preg->re_nsub; i++)
-       dfa->subexp_map[i] = i;
-      preorder (dfa->str_tree, optimize_subexps, dfa);
-      for (i = 0; i < preg->re_nsub; i++)
-       if (dfa->subexp_map[i] != i)
-         break;
-      if (i == preg->re_nsub)
-       {
-         free (dfa->subexp_map);
-         dfa->subexp_map = NULL;
-       }
-    }
-
-  ret = postorder (dfa->str_tree, lower_subexps, preg);
-  if (BE (ret != REG_NOERROR, 0))
-    return ret;
-  ret = postorder (dfa->str_tree, calc_first, dfa);
-  if (BE (ret != REG_NOERROR, 0))
-    return ret;
-  preorder (dfa->str_tree, calc_next, dfa);
-  ret = preorder (dfa->str_tree, link_nfa_nodes, dfa);
-  if (BE (ret != REG_NOERROR, 0))
-    return ret;
-  ret = calc_eclosure (dfa);
-  if (BE (ret != REG_NOERROR, 0))
-    return ret;
-
-  /* We only need this during the prune_impossible_nodes pass in regexec.c;
-     skip it if p_i_n will not run, as calc_inveclosure can be quadratic.  */
-  if ((!preg->no_sub && preg->re_nsub > 0 && dfa->has_plural_match)
-      || dfa->nbackref)
-    {
-      dfa->inveclosures = re_malloc (re_node_set, dfa->nodes_len);
-      if (BE (dfa->inveclosures == NULL, 0))
-       return REG_ESPACE;
-      ret = calc_inveclosure (dfa);
-    }
-
-  return ret;
-}
-
-/* Our parse trees are very unbalanced, so we cannot use a stack to
-   implement parse tree visits.  Instead, we use parent pointers and
-   some hairy code in these two functions.  */
-static reg_errcode_t
-postorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
-          void *extra)
-{
-  bin_tree_t *node, *prev;
-
-  for (node = root; ; )
-    {
-      /* Descend down the tree, preferably to the left (or to the right
-        if that's the only child).  */
-      while (node->left || node->right)
-       if (node->left)
-         node = node->left;
-       else
-         node = node->right;
-
-      do
-       {
-         reg_errcode_t err = fn (extra, node);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-         if (node->parent == NULL)
-           return REG_NOERROR;
-         prev = node;
-         node = node->parent;
-       }
-      /* Go up while we have a node that is reached from the right.  */
-      while (node->right == prev || node->right == NULL);
-      node = node->right;
-    }
-}
-
-static reg_errcode_t
-preorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
-         void *extra)
-{
-  bin_tree_t *node;
-
-  for (node = root; ; )
-    {
-      reg_errcode_t err = fn (extra, node);
-      if (BE (err != REG_NOERROR, 0))
-       return err;
-
-      /* Go to the left node, or up and to the right.  */
-      if (node->left)
-       node = node->left;
-      else
-       {
-         bin_tree_t *prev = NULL;
-         while (node->right == prev || node->right == NULL)
-           {
-             prev = node;
-             node = node->parent;
-             if (!node)
-               return REG_NOERROR;
-           }
-         node = node->right;
-       }
-    }
-}
-
-/* Optimization pass: if a SUBEXP is entirely contained, strip it and tell
-   re_search_internal to map the inner one's opr.idx to this one's.  Adjust
-   backreferences as well.  Requires a preorder visit.  */
-static reg_errcode_t
-optimize_subexps (void *extra, bin_tree_t *node)
-{
-  re_dfa_t *dfa = (re_dfa_t *) extra;
-
-  if (node->token.type == OP_BACK_REF && dfa->subexp_map)
-    {
-      int idx = node->token.opr.idx;
-      node->token.opr.idx = dfa->subexp_map[idx];
-      dfa->used_bkref_map |= 1 << node->token.opr.idx;
-    }
-
-  else if (node->token.type == SUBEXP
-          && node->left && node->left->token.type == SUBEXP)
-    {
-      Idx other_idx = node->left->token.opr.idx;
-
-      node->left = node->left->left;
-      if (node->left)
-       node->left->parent = node;
-
-      dfa->subexp_map[other_idx] = dfa->subexp_map[node->token.opr.idx];
-      if (other_idx < BITSET_WORD_BITS)
-       dfa->used_bkref_map &= ~((bitset_word_t) 1 << other_idx);
-    }
-
-  return REG_NOERROR;
-}
-
-/* Lowering pass: Turn each SUBEXP node into the appropriate concatenation
-   of OP_OPEN_SUBEXP, the body of the SUBEXP (if any) and OP_CLOSE_SUBEXP.  */
-static reg_errcode_t
-lower_subexps (void *extra, bin_tree_t *node)
-{
-  regex_t *preg = (regex_t *) extra;
-  reg_errcode_t err = REG_NOERROR;
-
-  if (node->left && node->left->token.type == SUBEXP)
-    {
-      node->left = lower_subexp (&err, preg, node->left);
-      if (node->left)
-       node->left->parent = node;
-    }
-  if (node->right && node->right->token.type == SUBEXP)
-    {
-      node->right = lower_subexp (&err, preg, node->right);
-      if (node->right)
-       node->right->parent = node;
-    }
-
-  return err;
-}
-
-static bin_tree_t *
-lower_subexp (reg_errcode_t *err, regex_t *preg, bin_tree_t *node)
-{
-  re_dfa_t *dfa = preg->buffer;
-  bin_tree_t *body = node->left;
-  bin_tree_t *op, *cls, *tree1, *tree;
-
-  if (preg->no_sub
-      /* We do not optimize empty subexpressions, because otherwise we may
-        have bad CONCAT nodes with NULL children.  This is obviously not
-        very common, so we do not lose much.  An example that triggers
-        this case is the sed "script" /\(\)/x.  */
-      && node->left != NULL
-      && (node->token.opr.idx >= BITSET_WORD_BITS
-         || !(dfa->used_bkref_map
-              & ((bitset_word_t) 1 << node->token.opr.idx))))
-    return node->left;
-
-  /* Convert the SUBEXP node to the concatenation of an
-     OP_OPEN_SUBEXP, the contents, and an OP_CLOSE_SUBEXP.  */
-  op = create_tree (dfa, NULL, NULL, OP_OPEN_SUBEXP);
-  cls = create_tree (dfa, NULL, NULL, OP_CLOSE_SUBEXP);
-  tree1 = body ? create_tree (dfa, body, cls, CONCAT) : cls;
-  tree = create_tree (dfa, op, tree1, CONCAT);
-  if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
-    {
-      *err = REG_ESPACE;
-      return NULL;
-    }
-
-  op->token.opr.idx = cls->token.opr.idx = node->token.opr.idx;
-  op->token.opt_subexp = cls->token.opt_subexp = node->token.opt_subexp;
-  return tree;
-}
-
-/* Pass 1 in building the NFA: compute FIRST and create unlinked automaton
-   nodes.  Requires a postorder visit.  */
-static reg_errcode_t
-calc_first (void *extra, bin_tree_t *node)
-{
-  re_dfa_t *dfa = (re_dfa_t *) extra;
-  if (node->token.type == CONCAT)
-    {
-      node->first = node->left->first;
-      node->node_idx = node->left->node_idx;
-    }
-  else
-    {
-      node->first = node;
-      node->node_idx = re_dfa_add_node (dfa, node->token);
-      if (BE (node->node_idx == REG_MISSING, 0))
-       return REG_ESPACE;
-      if (node->token.type == ANCHOR)
-       dfa->nodes[node->node_idx].constraint = node->token.opr.ctx_type;
-    }
-  return REG_NOERROR;
-}
-
-/* Pass 2: compute NEXT on the tree.  Preorder visit.  */
-static reg_errcode_t
-calc_next (void *extra, bin_tree_t *node)
-{
-  switch (node->token.type)
-    {
-    case OP_DUP_ASTERISK:
-      node->left->next = node;
-      break;
-    case CONCAT:
-      node->left->next = node->right->first;
-      node->right->next = node->next;
-      break;
-    default:
-      if (node->left)
-       node->left->next = node->next;
-      if (node->right)
-       node->right->next = node->next;
-      break;
-    }
-  return REG_NOERROR;
-}
-
-/* Pass 3: link all DFA nodes to their NEXT node (any order will do).  */
-static reg_errcode_t
-link_nfa_nodes (void *extra, bin_tree_t *node)
-{
-  re_dfa_t *dfa = (re_dfa_t *) extra;
-  Idx idx = node->node_idx;
-  reg_errcode_t err = REG_NOERROR;
-
-  switch (node->token.type)
-    {
-    case CONCAT:
-      break;
-
-    case END_OF_RE:
-      assert (node->next == NULL);
-      break;
-
-    case OP_DUP_ASTERISK:
-    case OP_ALT:
-      {
-       Idx left, right;
-       dfa->has_plural_match = 1;
-       if (node->left != NULL)
-         left = node->left->first->node_idx;
-       else
-         left = node->next->node_idx;
-       if (node->right != NULL)
-         right = node->right->first->node_idx;
-       else
-         right = node->next->node_idx;
-       assert (REG_VALID_INDEX (left));
-       assert (REG_VALID_INDEX (right));
-       err = re_node_set_init_2 (dfa->edests + idx, left, right);
-      }
-      break;
-
-    case ANCHOR:
-    case OP_OPEN_SUBEXP:
-    case OP_CLOSE_SUBEXP:
-      err = re_node_set_init_1 (dfa->edests + idx, node->next->node_idx);
-      break;
-
-    case OP_BACK_REF:
-      dfa->nexts[idx] = node->next->node_idx;
-      if (node->token.type == OP_BACK_REF)
-       err = re_node_set_init_1 (dfa->edests + idx, dfa->nexts[idx]);
-      break;
-
-    default:
-      assert (!IS_EPSILON_NODE (node->token.type));
-      dfa->nexts[idx] = node->next->node_idx;
-      break;
-    }
-
-  return err;
-}
-
-/* Duplicate the epsilon closure of the node ROOT_NODE.
-   Note that duplicated nodes have constraint INIT_CONSTRAINT in addition
-   to their own constraint.  */
-
-static reg_errcode_t
-internal_function
-duplicate_node_closure (re_dfa_t *dfa, Idx top_org_node, Idx top_clone_node,
-                       Idx root_node, unsigned int init_constraint)
-{
-  Idx org_node, clone_node;
-  bool ok;
-  unsigned int constraint = init_constraint;
-  for (org_node = top_org_node, clone_node = top_clone_node;;)
-    {
-      Idx org_dest, clone_dest;
-      if (dfa->nodes[org_node].type == OP_BACK_REF)
-       {
-         /* If the back reference epsilon-transit, its destination must
-            also have the constraint.  Then duplicate the epsilon closure
-            of the destination of the back reference, and store it in
-            edests of the back reference.  */
-         org_dest = dfa->nexts[org_node];
-         re_node_set_empty (dfa->edests + clone_node);
-         clone_dest = duplicate_node (dfa, org_dest, constraint);
-         if (BE (clone_dest == REG_MISSING, 0))
-           return REG_ESPACE;
-         dfa->nexts[clone_node] = dfa->nexts[org_node];
-         ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
-         if (BE (! ok, 0))
-           return REG_ESPACE;
-       }
-      else if (dfa->edests[org_node].nelem == 0)
-       {
-         /* In case of the node can't epsilon-transit, don't duplicate the
-            destination and store the original destination as the
-            destination of the node.  */
-         dfa->nexts[clone_node] = dfa->nexts[org_node];
-         break;
-       }
-      else if (dfa->edests[org_node].nelem == 1)
-       {
-         /* In case of the node can epsilon-transit, and it has only one
-            destination.  */
-         org_dest = dfa->edests[org_node].elems[0];
-         re_node_set_empty (dfa->edests + clone_node);
-         /* If the node is root_node itself, it means the epsilon closure
-            has a loop.  Then tie it to the destination of the root_node.  */
-         if (org_node == root_node && clone_node != org_node)
-           {
-             ok = re_node_set_insert (dfa->edests + clone_node, org_dest);
-             if (BE (! ok, 0))
-               return REG_ESPACE;
-             break;
-           }
-         /* In case the node has another constraint, append it.  */
-         constraint |= dfa->nodes[org_node].constraint;
-         clone_dest = duplicate_node (dfa, org_dest, constraint);
-         if (BE (clone_dest == REG_MISSING, 0))
-           return REG_ESPACE;
-         ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
-         if (BE (! ok, 0))
-           return REG_ESPACE;
-       }
-      else /* dfa->edests[org_node].nelem == 2 */
-       {
-         /* In case of the node can epsilon-transit, and it has two
-            destinations. In the bin_tree_t and DFA, that's '|' and '*'.   */
-         org_dest = dfa->edests[org_node].elems[0];
-         re_node_set_empty (dfa->edests + clone_node);
-         /* Search for a duplicated node which satisfies the constraint.  */
-         clone_dest = search_duplicated_node (dfa, org_dest, constraint);
-         if (clone_dest == REG_MISSING)
-           {
-             /* There is no such duplicated node, create a new one.  */
-             reg_errcode_t err;
-             clone_dest = duplicate_node (dfa, org_dest, constraint);
-             if (BE (clone_dest == REG_MISSING, 0))
-               return REG_ESPACE;
-             ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
-             if (BE (! ok, 0))
-               return REG_ESPACE;
-             err = duplicate_node_closure (dfa, org_dest, clone_dest,
-                                           root_node, constraint);
-             if (BE (err != REG_NOERROR, 0))
-               return err;
-           }
-         else
-           {
-             /* There is a duplicated node which satisfies the constraint,
-                use it to avoid infinite loop.  */
-             ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
-             if (BE (! ok, 0))
-               return REG_ESPACE;
-           }
-
-         org_dest = dfa->edests[org_node].elems[1];
-         clone_dest = duplicate_node (dfa, org_dest, constraint);
-         if (BE (clone_dest == REG_MISSING, 0))
-           return REG_ESPACE;
-         ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
-         if (BE (! ok, 0))
-           return REG_ESPACE;
-       }
-      org_node = org_dest;
-      clone_node = clone_dest;
-    }
-  return REG_NOERROR;
-}
-
-/* Search for a node which is duplicated from the node ORG_NODE, and
-   satisfies the constraint CONSTRAINT.  */
-
-static Idx
-search_duplicated_node (const re_dfa_t *dfa, Idx org_node,
-                       unsigned int constraint)
-{
-  Idx idx;
-  for (idx = dfa->nodes_len - 1; dfa->nodes[idx].duplicated && idx > 0; --idx)
-    {
-      if (org_node == dfa->org_indices[idx]
-         && constraint == dfa->nodes[idx].constraint)
-       return idx; /* Found.  */
-    }
-  return REG_MISSING; /* Not found.  */
-}
-
-/* Duplicate the node whose index is ORG_IDX and set the constraint CONSTRAINT.
-   Return the index of the new node, or REG_MISSING if insufficient storage is
-   available.  */
-
-static Idx
-duplicate_node (re_dfa_t *dfa, Idx org_idx, unsigned int constraint)
-{
-  Idx dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx]);
-  if (BE (dup_idx != REG_MISSING, 1))
-    {
-      dfa->nodes[dup_idx].constraint = constraint;
-      dfa->nodes[dup_idx].constraint |= dfa->nodes[org_idx].constraint;
-      dfa->nodes[dup_idx].duplicated = 1;
-
-      /* Store the index of the original node.  */
-      dfa->org_indices[dup_idx] = org_idx;
-    }
-  return dup_idx;
-}
-
-static reg_errcode_t
-calc_inveclosure (re_dfa_t *dfa)
-{
-  Idx src, idx;
-  bool ok;
-  for (idx = 0; idx < dfa->nodes_len; ++idx)
-    re_node_set_init_empty (dfa->inveclosures + idx);
-
-  for (src = 0; src < dfa->nodes_len; ++src)
-    {
-      Idx *elems = dfa->eclosures[src].elems;
-      for (idx = 0; idx < dfa->eclosures[src].nelem; ++idx)
-       {
-         ok = re_node_set_insert_last (dfa->inveclosures + elems[idx], src);
-         if (BE (! ok, 0))
-           return REG_ESPACE;
-       }
-    }
-
-  return REG_NOERROR;
-}
-
-/* Calculate "eclosure" for all the node in DFA.  */
-
-static reg_errcode_t
-calc_eclosure (re_dfa_t *dfa)
-{
-  Idx node_idx;
-  bool incomplete;
-#ifdef DEBUG
-  assert (dfa->nodes_len > 0);
-#endif
-  incomplete = false;
-  /* For each nodes, calculate epsilon closure.  */
-  for (node_idx = 0; ; ++node_idx)
-    {
-      reg_errcode_t err;
-      re_node_set eclosure_elem;
-      if (node_idx == dfa->nodes_len)
-       {
-         if (!incomplete)
-           break;
-         incomplete = false;
-         node_idx = 0;
-       }
-
-#ifdef DEBUG
-      assert (dfa->eclosures[node_idx].nelem != REG_MISSING);
-#endif
-
-      /* If we have already calculated, skip it.  */
-      if (dfa->eclosures[node_idx].nelem != 0)
-       continue;
-      /* Calculate epsilon closure of 'node_idx'.  */
-      err = calc_eclosure_iter (&eclosure_elem, dfa, node_idx, true);
-      if (BE (err != REG_NOERROR, 0))
-       return err;
-
-      if (dfa->eclosures[node_idx].nelem == 0)
-       {
-         incomplete = true;
-         re_node_set_free (&eclosure_elem);
-       }
-    }
-  return REG_NOERROR;
-}
-
-/* Calculate epsilon closure of NODE.  */
-
-static reg_errcode_t
-calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, Idx node, bool root)
-{
-  reg_errcode_t err;
-  Idx i;
-  re_node_set eclosure;
-  bool ok;
-  bool incomplete = false;
-  err = re_node_set_alloc (&eclosure, dfa->edests[node].nelem + 1);
-  if (BE (err != REG_NOERROR, 0))
-    return err;
-
-  /* This indicates that we are calculating this node now.
-     We reference this value to avoid infinite loop.  */
-  dfa->eclosures[node].nelem = REG_MISSING;
-
-  /* If the current node has constraints, duplicate all nodes
-     since they must inherit the constraints.  */
-  if (dfa->nodes[node].constraint
-      && dfa->edests[node].nelem
-      && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
-    {
-      err = duplicate_node_closure (dfa, node, node, node,
-                                   dfa->nodes[node].constraint);
-      if (BE (err != REG_NOERROR, 0))
-       return err;
-    }
-
-  /* Expand each epsilon destination nodes.  */
-  if (IS_EPSILON_NODE(dfa->nodes[node].type))
-    for (i = 0; i < dfa->edests[node].nelem; ++i)
-      {
-       re_node_set eclosure_elem;
-       Idx edest = dfa->edests[node].elems[i];
-       /* 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,
-          calculate now. Otherwise use calculated epsilon closure.  */
-       if (dfa->eclosures[edest].nelem == 0)
-         {
-           err = calc_eclosure_iter (&eclosure_elem, dfa, edest, false);
-           if (BE (err != REG_NOERROR, 0))
-             return err;
-         }
-       else
-         eclosure_elem = dfa->eclosures[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,
-          the epsilon closure of this node is also incomplete.  */
-       if (dfa->eclosures[edest].nelem == 0)
-         {
-           incomplete = true;
-           re_node_set_free (&eclosure_elem);
-         }
-      }
-
-  /* An epsilon closure includes itself.  */
-  ok = re_node_set_insert (&eclosure, node);
-  if (BE (! ok, 0))
-    return REG_ESPACE;
-  if (incomplete && !root)
-    dfa->eclosures[node].nelem = 0;
-  else
-    dfa->eclosures[node] = eclosure;
-  *new_set = eclosure;
-  return REG_NOERROR;
-}
-
-/* Functions for token which are used in the parser.  */
-
-/* Fetch a token from INPUT.
-   We must not use this function inside bracket expressions.  */
-
-static void
-internal_function
-fetch_token (re_token_t *result, re_string_t *input, reg_syntax_t syntax)
-{
-  re_string_skip_bytes (input, peek_token (result, input, syntax));
-}
-
-/* Peek a token from INPUT, and return the length of the token.
-   We must not use this function inside bracket expressions.  */
-
-static int
-internal_function
-peek_token (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
-{
-  unsigned char c;
-
-  if (re_string_eoi (input))
-    {
-      token->type = END_OF_RE;
-      return 0;
-    }
-
-  c = re_string_peek_byte (input, 0);
-  token->opr.c = c;
-
-  token->word_char = 0;
-#ifdef RE_ENABLE_I18N
-  token->mb_partial = 0;
-  if (input->mb_cur_max > 1 &&
-      !re_string_first_byte (input, re_string_cur_idx (input)))
-    {
-      token->type = CHARACTER;
-      token->mb_partial = 1;
-      return 1;
-    }
-#endif
-  if (c == '\\')
-    {
-      unsigned char c2;
-      if (re_string_cur_idx (input) + 1 >= re_string_length (input))
-       {
-         token->type = BACK_SLASH;
-         return 1;
-       }
-
-      c2 = re_string_peek_byte_case (input, 1);
-      token->opr.c = c2;
-      token->type = CHARACTER;
-#ifdef RE_ENABLE_I18N
-      if (input->mb_cur_max > 1)
-       {
-         wint_t wc = re_string_wchar_at (input,
-                                         re_string_cur_idx (input) + 1);
-         token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
-       }
-      else
-#endif
-       token->word_char = IS_WORD_CHAR (c2) != 0;
-
-      switch (c2)
-       {
-       case '|':
-         if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_NO_BK_VBAR))
-           token->type = OP_ALT;
-         break;
-       case '1': case '2': case '3': case '4': case '5':
-       case '6': case '7': case '8': case '9':
-         if (!(syntax & RE_NO_BK_REFS))
-           {
-             token->type = OP_BACK_REF;
-             token->opr.idx = c2 - '1';
-           }
-         break;
-       case '<':
-         if (!(syntax & RE_NO_GNU_OPS))
-           {
-             token->type = ANCHOR;
-             token->opr.ctx_type = WORD_FIRST;
-           }
-         break;
-       case '>':
-         if (!(syntax & RE_NO_GNU_OPS))
-           {
-             token->type = ANCHOR;
-             token->opr.ctx_type = WORD_LAST;
-           }
-         break;
-       case 'b':
-         if (!(syntax & RE_NO_GNU_OPS))
-           {
-             token->type = ANCHOR;
-             token->opr.ctx_type = WORD_DELIM;
-           }
-         break;
-       case 'B':
-         if (!(syntax & RE_NO_GNU_OPS))
-           {
-             token->type = ANCHOR;
-             token->opr.ctx_type = NOT_WORD_DELIM;
-           }
-         break;
-       case 'w':
-         if (!(syntax & RE_NO_GNU_OPS))
-           token->type = OP_WORD;
-         break;
-       case 'W':
-         if (!(syntax & RE_NO_GNU_OPS))
-           token->type = OP_NOTWORD;
-         break;
-       case 's':
-         if (!(syntax & RE_NO_GNU_OPS))
-           token->type = OP_SPACE;
-         break;
-       case 'S':
-         if (!(syntax & RE_NO_GNU_OPS))
-           token->type = OP_NOTSPACE;
-         break;
-       case '`':
-         if (!(syntax & RE_NO_GNU_OPS))
-           {
-             token->type = ANCHOR;
-             token->opr.ctx_type = BUF_FIRST;
-           }
-         break;
-       case '\'':
-         if (!(syntax & RE_NO_GNU_OPS))
-           {
-             token->type = ANCHOR;
-             token->opr.ctx_type = BUF_LAST;
-           }
-         break;
-       case '(':
-         if (!(syntax & RE_NO_BK_PARENS))
-           token->type = OP_OPEN_SUBEXP;
-         break;
-       case ')':
-         if (!(syntax & RE_NO_BK_PARENS))
-           token->type = OP_CLOSE_SUBEXP;
-         break;
-       case '+':
-         if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
-           token->type = OP_DUP_PLUS;
-         break;
-       case '?':
-         if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
-           token->type = OP_DUP_QUESTION;
-         break;
-       case '{':
-         if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
-           token->type = OP_OPEN_DUP_NUM;
-         break;
-       case '}':
-         if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
-           token->type = OP_CLOSE_DUP_NUM;
-         break;
-       default:
-         break;
-       }
-      return 2;
-    }
-
-  token->type = CHARACTER;
-#ifdef RE_ENABLE_I18N
-  if (input->mb_cur_max > 1)
-    {
-      wint_t wc = re_string_wchar_at (input, re_string_cur_idx (input));
-      token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
-    }
-  else
-#endif
-    token->word_char = IS_WORD_CHAR (token->opr.c);
-
-  switch (c)
-    {
-    case '\n':
-      if (syntax & RE_NEWLINE_ALT)
-       token->type = OP_ALT;
-      break;
-    case '|':
-      if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_NO_BK_VBAR))
-       token->type = OP_ALT;
-      break;
-    case '*':
-      token->type = OP_DUP_ASTERISK;
-      break;
-    case '+':
-      if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
-       token->type = OP_DUP_PLUS;
-      break;
-    case '?':
-      if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
-       token->type = OP_DUP_QUESTION;
-      break;
-    case '{':
-      if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
-       token->type = OP_OPEN_DUP_NUM;
-      break;
-    case '}':
-      if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
-       token->type = OP_CLOSE_DUP_NUM;
-      break;
-    case '(':
-      if (syntax & RE_NO_BK_PARENS)
-       token->type = OP_OPEN_SUBEXP;
-      break;
-    case ')':
-      if (syntax & RE_NO_BK_PARENS)
-       token->type = OP_CLOSE_SUBEXP;
-      break;
-    case '[':
-      token->type = OP_OPEN_BRACKET;
-      break;
-    case '.':
-      token->type = OP_PERIOD;
-      break;
-    case '^':
-      if (!(syntax & (RE_CONTEXT_INDEP_ANCHORS | RE_CARET_ANCHORS_HERE)) &&
-         re_string_cur_idx (input) != 0)
-       {
-         char prev = re_string_peek_byte (input, -1);
-         if (!(syntax & RE_NEWLINE_ALT) || prev != '\n')
-           break;
-       }
-      token->type = ANCHOR;
-      token->opr.ctx_type = LINE_FIRST;
-      break;
-    case '$':
-      if (!(syntax & RE_CONTEXT_INDEP_ANCHORS) &&
-         re_string_cur_idx (input) + 1 != re_string_length (input))
-       {
-         re_token_t next;
-         re_string_skip_bytes (input, 1);
-         peek_token (&next, input, syntax);
-         re_string_skip_bytes (input, -1);
-         if (next.type != OP_ALT && next.type != OP_CLOSE_SUBEXP)
-           break;
-       }
-      token->type = ANCHOR;
-      token->opr.ctx_type = LINE_LAST;
-      break;
-    default:
-      break;
-    }
-  return 1;
-}
-
-/* Peek a token from INPUT, and return the length of the token.
-   We must not use this function out of bracket expressions.  */
-
-static int
-internal_function
-peek_token_bracket (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
-{
-  unsigned char c;
-  if (re_string_eoi (input))
-    {
-      token->type = END_OF_RE;
-      return 0;
-    }
-  c = re_string_peek_byte (input, 0);
-  token->opr.c = c;
-
-#ifdef RE_ENABLE_I18N
-  if (input->mb_cur_max > 1 &&
-      !re_string_first_byte (input, re_string_cur_idx (input)))
-    {
-      token->type = CHARACTER;
-      return 1;
-    }
-#endif /* RE_ENABLE_I18N */
-
-  if (c == '\\' && (syntax & RE_BACKSLASH_ESCAPE_IN_LISTS)
-      && re_string_cur_idx (input) + 1 < re_string_length (input))
-    {
-      /* In this case, '\' escape a character.  */
-      unsigned char c2;
-      re_string_skip_bytes (input, 1);
-      c2 = re_string_peek_byte (input, 0);
-      token->opr.c = c2;
-      token->type = CHARACTER;
-      return 1;
-    }
-  if (c == '[') /* '[' is a special char in a bracket exps.  */
-    {
-      unsigned char c2;
-      int token_len;
-      if (re_string_cur_idx (input) + 1 < re_string_length (input))
-       c2 = re_string_peek_byte (input, 1);
-      else
-       c2 = 0;
-      token->opr.c = c2;
-      token_len = 2;
-      switch (c2)
-       {
-       case '.':
-         token->type = OP_OPEN_COLL_ELEM;
-         break;
-       case '=':
-         token->type = OP_OPEN_EQUIV_CLASS;
-         break;
-       case ':':
-         if (syntax & RE_CHAR_CLASSES)
-           {
-             token->type = OP_OPEN_CHAR_CLASS;
-             break;
-           }
-         /* else fall through.  */
-       default:
-         token->type = CHARACTER;
-         token->opr.c = c;
-         token_len = 1;
-         break;
-       }
-      return token_len;
-    }
-  switch (c)
-    {
-    case '-':
-      token->type = OP_CHARSET_RANGE;
-      break;
-    case ']':
-      token->type = OP_CLOSE_BRACKET;
-      break;
-    case '^':
-      token->type = OP_NON_MATCH_LIST;
-      break;
-    default:
-      token->type = CHARACTER;
-    }
-  return 1;
-}
-
-/* Functions for parser.  */
-
-/* Entry point of the parser.
-   Parse the regular expression REGEXP and return the structure tree.
-   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
-          / \
-         /   \
-   <reg_exp>  EOR
-
-   CAT means concatenation.
-   EOR means end of regular expression.  */
-
-static bin_tree_t *
-parse (re_string_t *regexp, regex_t *preg, reg_syntax_t syntax,
-       reg_errcode_t *err)
-{
-  re_dfa_t *dfa = preg->buffer;
-  bin_tree_t *tree, *eor, *root;
-  re_token_t current_token;
-  dfa->syntax = syntax;
-  fetch_token (&current_token, regexp, syntax | RE_CARET_ANCHORS_HERE);
-  tree = parse_reg_exp (regexp, preg, &current_token, syntax, 0, err);
-  if (BE (*err != REG_NOERROR && tree == NULL, 0))
-    return NULL;
-  eor = create_tree (dfa, NULL, NULL, END_OF_RE);
-  if (tree != NULL)
-    root = create_tree (dfa, tree, eor, CONCAT);
-  else
-    root = eor;
-  if (BE (eor == NULL || root == NULL, 0))
-    {
-      *err = REG_ESPACE;
-      return NULL;
-    }
-  return root;
-}
-
-/* This function build the following tree, from regular expression
-   <branch1>|<branch2>:
-          ALT
-          / \
-         /   \
-   <branch1> <branch2>
-
-   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 = 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))
-    return NULL;
-
-  while (token->type == OP_ALT)
-    {
-      fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
-      if (token->type != OP_ALT && token->type != END_OF_RE
-         && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
-       {
-         branch = parse_branch (regexp, preg, token, syntax, nest, err);
-         if (BE (*err != REG_NOERROR && branch == NULL, 0))
-           return NULL;
-       }
-      else
-       branch = NULL;
-      tree = create_tree (dfa, tree, branch, OP_ALT);
-      if (BE (tree == NULL, 0))
-       {
-         *err = REG_ESPACE;
-         return NULL;
-       }
-    }
-  return tree;
-}
-
-/* This function build the following tree, from regular expression
-   <exp1><exp2>:
-       CAT
-       / \
-       /   \
-   <exp1> <exp2>
-
-   CAT means concatenation.  */
-
-static bin_tree_t *
-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 = preg->buffer;
-  tree = parse_expression (regexp, preg, token, syntax, nest, err);
-  if (BE (*err != REG_NOERROR && tree == NULL, 0))
-    return NULL;
-
-  while (token->type != OP_ALT && token->type != END_OF_RE
-        && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
-    {
-      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)
-       {
-         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;
-      /* Otherwise expr == NULL, we don't need to create new tree.  */
-    }
-  return tree;
-}
-
-/* This function build the following tree, from regular expression a*:
-        *
-        |
-        a
-*/
-
-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 = preg->buffer;
-  bin_tree_t *tree;
-  switch (token->type)
-    {
-    case CHARACTER:
-      tree = create_token_tree (dfa, NULL, NULL, token);
-      if (BE (tree == NULL, 0))
-       {
-         *err = REG_ESPACE;
-         return NULL;
-       }
-#ifdef RE_ENABLE_I18N
-      if (dfa->mb_cur_max > 1)
-       {
-         while (!re_string_eoi (regexp)
-                && !re_string_first_byte (regexp, re_string_cur_idx (regexp)))
-           {
-             bin_tree_t *mbc_remain;
-             fetch_token (token, regexp, syntax);
-             mbc_remain = create_token_tree (dfa, NULL, NULL, token);
-             tree = create_tree (dfa, tree, mbc_remain, CONCAT);
-             if (BE (mbc_remain == NULL || tree == NULL, 0))
-               {
-                 *err = REG_ESPACE;
-                 return NULL;
-               }
-           }
-       }
-#endif
-      break;
-    case OP_OPEN_SUBEXP:
-      tree = parse_sub_exp (regexp, preg, token, syntax, nest + 1, err);
-      if (BE (*err != REG_NOERROR && tree == NULL, 0))
-       return NULL;
-      break;
-    case OP_OPEN_BRACKET:
-      tree = parse_bracket_exp (regexp, dfa, token, syntax, err);
-      if (BE (*err != REG_NOERROR && tree == NULL, 0))
-       return NULL;
-      break;
-    case OP_BACK_REF:
-      if (!BE (dfa->completed_bkref_map & (1 << token->opr.idx), 1))
-       {
-         *err = REG_ESUBREG;
-         return NULL;
-       }
-      dfa->used_bkref_map |= 1 << token->opr.idx;
-      tree = create_token_tree (dfa, NULL, NULL, token);
-      if (BE (tree == NULL, 0))
-       {
-         *err = REG_ESPACE;
-         return NULL;
-       }
-      ++dfa->nbackref;
-      dfa->has_mb_node = 1;
-      break;
-    case OP_OPEN_DUP_NUM:
-      if (syntax & RE_CONTEXT_INVALID_DUP)
-       {
-         *err = REG_BADRPT;
-         return NULL;
-       }
-      /* FALLTHROUGH */
-    case OP_DUP_ASTERISK:
-    case OP_DUP_PLUS:
-    case OP_DUP_QUESTION:
-      if (syntax & RE_CONTEXT_INVALID_OPS)
-       {
-         *err = REG_BADRPT;
-         return NULL;
-       }
-      else if (syntax & RE_CONTEXT_INDEP_OPS)
-       {
-         fetch_token (token, regexp, syntax);
-         return parse_expression (regexp, preg, token, syntax, nest, err);
-       }
-      /* else fall through  */
-    case OP_CLOSE_SUBEXP:
-      if ((token->type == OP_CLOSE_SUBEXP) &&
-         !(syntax & RE_UNMATCHED_RIGHT_PAREN_ORD))
-       {
-         *err = REG_ERPAREN;
-         return NULL;
-       }
-      /* else fall through  */
-    case OP_CLOSE_DUP_NUM:
-      /* We treat it as a normal character.  */
-
-      /* Then we can these characters as normal characters.  */
-      token->type = CHARACTER;
-      /* mb_partial and word_char bits should be initialized already
-        by peek_token.  */
-      tree = create_token_tree (dfa, NULL, NULL, token);
-      if (BE (tree == NULL, 0))
-       {
-         *err = REG_ESPACE;
-         return NULL;
-       }
-      break;
-    case ANCHOR:
-      if ((token->opr.ctx_type
-          & (WORD_DELIM | NOT_WORD_DELIM | WORD_FIRST | WORD_LAST))
-         && dfa->word_ops_used == 0)
-       init_word_char (dfa);
-      if (token->opr.ctx_type == WORD_DELIM
-         || token->opr.ctx_type == NOT_WORD_DELIM)
-       {
-         bin_tree_t *tree_first, *tree_last;
-         if (token->opr.ctx_type == WORD_DELIM)
-           {
-             token->opr.ctx_type = WORD_FIRST;
-             tree_first = create_token_tree (dfa, NULL, NULL, token);
-             token->opr.ctx_type = WORD_LAST;
-           }
-         else
-           {
-             token->opr.ctx_type = INSIDE_WORD;
-             tree_first = create_token_tree (dfa, NULL, NULL, token);
-             token->opr.ctx_type = INSIDE_NOTWORD;
-           }
-         tree_last = create_token_tree (dfa, NULL, NULL, token);
-         tree = create_tree (dfa, tree_first, tree_last, OP_ALT);
-         if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
-           {
-             *err = REG_ESPACE;
-             return NULL;
-           }
-       }
-      else
-       {
-         tree = create_token_tree (dfa, NULL, NULL, token);
-         if (BE (tree == NULL, 0))
-           {
-             *err = REG_ESPACE;
-             return NULL;
-           }
-       }
-      /* We must return here, since ANCHORs can't be followed
-        by repetition operators.
-        eg. RE"^*" is invalid or "<ANCHOR(^)><CHAR(*)>",
-            it must not be "<ANCHOR(^)><REPEAT(*)>".  */
-      fetch_token (token, regexp, syntax);
-      return tree;
-    case OP_PERIOD:
-      tree = create_token_tree (dfa, NULL, NULL, token);
-      if (BE (tree == NULL, 0))
-       {
-         *err = REG_ESPACE;
-         return NULL;
-       }
-      if (dfa->mb_cur_max > 1)
-       dfa->has_mb_node = 1;
-      break;
-    case OP_WORD:
-    case OP_NOTWORD:
-      tree = build_charclass_op (dfa, regexp->trans,
-                                "alnum",
-                                "_",
-                                token->type == OP_NOTWORD, err);
-      if (BE (*err != REG_NOERROR && tree == NULL, 0))
-       return NULL;
-      break;
-    case OP_SPACE:
-    case OP_NOTSPACE:
-      tree = build_charclass_op (dfa, regexp->trans,
-                                "space",
-                                "",
-                                token->type == OP_NOTSPACE, err);
-      if (BE (*err != REG_NOERROR && tree == NULL, 0))
-       return NULL;
-      break;
-    case OP_ALT:
-    case END_OF_RE:
-      return NULL;
-    case BACK_SLASH:
-      *err = REG_EESCAPE;
-      return NULL;
-    default:
-      /* Must not happen?  */
-#ifdef DEBUG
-      assert (0);
-#endif
-      return NULL;
-    }
-  fetch_token (token, regexp, syntax);
-
-  while (token->type == OP_DUP_ASTERISK || token->type == OP_DUP_PLUS
-        || token->type == OP_DUP_QUESTION || token->type == OP_OPEN_DUP_NUM)
-    {
-      tree = parse_dup_op (tree, regexp, dfa, token, syntax, err);
-      if (BE (*err != REG_NOERROR && tree == NULL, 0))
-       return NULL;
-      /* In BRE consecutive duplications are not allowed.  */
-      if ((syntax & RE_CONTEXT_INVALID_DUP)
-         && (token->type == OP_DUP_ASTERISK
-             || token->type == OP_OPEN_DUP_NUM))
-       {
-         *err = REG_BADRPT;
-         return NULL;
-       }
-    }
-
-  return tree;
-}
-
-/* This function build the following tree, from regular expression
-   (<reg_exp>):
-        SUBEXP
-           |
-       <reg_exp>
-*/
-
-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 = preg->buffer;
-  bin_tree_t *tree;
-  size_t cur_nsub;
-  cur_nsub = preg->re_nsub++;
-
-  fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
-
-  /* The subexpression may be a null string.  */
-  if (token->type == OP_CLOSE_SUBEXP)
-    tree = NULL;
-  else
-    {
-      tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
-      if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
-       {
-         if (tree != NULL)
-           postorder (tree, free_tree, NULL);
-         *err = REG_EPAREN;
-       }
-      if (BE (*err != REG_NOERROR, 0))
-       return NULL;
-    }
-
-  if (cur_nsub <= '9' - '1')
-    dfa->completed_bkref_map |= 1 << cur_nsub;
-
-  tree = create_tree (dfa, tree, NULL, SUBEXP);
-  if (BE (tree == NULL, 0))
-    {
-      *err = REG_ESPACE;
-      return NULL;
-    }
-  tree->token.opr.idx = cur_nsub;
-  return tree;
-}
-
-/* This function parse repetition operators like "*", "+", "{1,3}" etc.  */
-
-static bin_tree_t *
-parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
-             re_token_t *token, reg_syntax_t syntax, reg_errcode_t *err)
-{
-  bin_tree_t *tree = NULL, *old_tree = NULL;
-  Idx i, start, end, start_idx = re_string_cur_idx (regexp);
-  re_token_t start_token = *token;
-
-  if (token->type == OP_OPEN_DUP_NUM)
-    {
-      end = 0;
-      start = fetch_number (regexp, token, syntax);
-      if (start == REG_MISSING)
-       {
-         if (token->type == CHARACTER && token->opr.c == ',')
-           start = 0; /* We treat "{,m}" as "{0,m}".  */
-         else
-           {
-             *err = REG_BADBR; /* <re>{} is invalid.  */
-             return NULL;
-           }
-       }
-      if (BE (start != REG_ERROR, 1))
-       {
-         /* We treat "{n}" as "{n,n}".  */
-         end = ((token->type == OP_CLOSE_DUP_NUM) ? start
-                : ((token->type == CHARACTER && token->opr.c == ',')
-                   ? fetch_number (regexp, token, syntax) : REG_ERROR));
-       }
-      if (BE (start == REG_ERROR || end == REG_ERROR, 0))
-       {
-         /* Invalid sequence.  */
-         if (BE (!(syntax & RE_INVALID_INTERVAL_ORD), 0))
-           {
-             if (token->type == END_OF_RE)
-               *err = REG_EBRACE;
-             else
-               *err = REG_BADBR;
-
-             return NULL;
-           }
-
-         /* If the syntax bit is set, rollback.  */
-         re_string_set_index (regexp, start_idx);
-         *token = start_token;
-         token->type = CHARACTER;
-         /* mb_partial and word_char bits should be already initialized by
-            peek_token.  */
-         return elem;
-       }
-
-      if (BE ((end != REG_MISSING && start > end)
-             || token->type != OP_CLOSE_DUP_NUM, 0))
-       {
-         /* First number greater than second.  */
-         *err = REG_BADBR;
-         return NULL;
-       }
-
-      if (BE (RE_DUP_MAX < (end == REG_MISSING ? start : end), 0))
-       {
-         *err = REG_ESIZE;
-         return NULL;
-       }
-    }
-  else
-    {
-      start = (token->type == OP_DUP_PLUS) ? 1 : 0;
-      end = (token->type == OP_DUP_QUESTION) ? 1 : REG_MISSING;
-    }
-
-  fetch_token (token, regexp, syntax);
-
-  if (BE (elem == NULL, 0))
-    return NULL;
-  if (BE (start == 0 && end == 0, 0))
-    {
-      postorder (elem, free_tree, NULL);
-      return NULL;
-    }
-
-  /* Extract "<re>{n,m}" to "<re><re>...<re><re>{0,<m-n>}".  */
-  if (BE (start > 0, 0))
-    {
-      tree = elem;
-      for (i = 2; i <= start; ++i)
-       {
-         elem = duplicate_tree (elem, dfa);
-         tree = create_tree (dfa, tree, elem, CONCAT);
-         if (BE (elem == NULL || tree == NULL, 0))
-           goto parse_dup_op_espace;
-       }
-
-      if (start == end)
-       return tree;
-
-      /* Duplicate ELEM before it is marked optional.  */
-      elem = duplicate_tree (elem, dfa);
-      old_tree = tree;
-    }
-  else
-    old_tree = NULL;
-
-  if (elem->token.type == SUBEXP)
-    {
-      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));
-  if (BE (tree == NULL, 0))
-    goto parse_dup_op_espace;
-
-/* From gnulib's "intprops.h":
-   True if the arithmetic type T is signed.  */
-#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
-
-  /* This loop is actually executed only when end != REG_MISSING,
-     to rewrite <re>{0,n} as (<re>(<re>...<re>?)?)?...  We have
-     already created the start+1-th copy.  */
-  if (TYPE_SIGNED (Idx) || end != REG_MISSING)
-    for (i = start + 2; i <= end; ++i)
-      {
-       elem = duplicate_tree (elem, dfa);
-       tree = create_tree (dfa, tree, elem, CONCAT);
-       if (BE (elem == NULL || tree == NULL, 0))
-         goto parse_dup_op_espace;
-
-       tree = create_tree (dfa, tree, NULL, OP_ALT);
-       if (BE (tree == NULL, 0))
-         goto parse_dup_op_espace;
-      }
-
-  if (old_tree)
-    tree = create_tree (dfa, old_tree, tree, CONCAT);
-
-  return tree;
-
- parse_dup_op_espace:
-  *err = REG_ESPACE;
-  return NULL;
-}
-
-/* Size of the names for collating symbol/equivalence_class/character_class.
-   I'm not sure, but maybe enough.  */
-#define BRACKET_NAME_BUF_SIZE 32
-
-#ifndef _LIBC
-  /* Local function for parse_bracket_exp only used in case of NOT _LIBC.
-     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 since we may
-     update it.  */
-
-static reg_errcode_t
-internal_function
-# ifdef RE_ENABLE_I18N
-build_range_exp (const reg_syntax_t syntax,
-                 bitset_t sbcset,
-                 re_charset_t *mbcset,
-                 Idx *range_alloc,
-                 const bracket_elem_t *start_elem,
-                 const bracket_elem_t *end_elem)
-# else /* not RE_ENABLE_I18N */
-build_range_exp (const reg_syntax_t syntax,
-                 bitset_t sbcset,
-                 const bracket_elem_t *start_elem,
-                 const bracket_elem_t *end_elem)
-# endif /* not RE_ENABLE_I18N */
-{
-  unsigned int start_ch, end_ch;
-  /* Equivalence Classes and Character Classes can't be a range start/end.  */
-  if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
-         || end_elem->type == EQUIV_CLASS || end_elem->type == CHAR_CLASS,
-         0))
-    return REG_ERANGE;
-
-  /* We can handle no multi character collating elements without libc
-     support.  */
-  if (BE ((start_elem->type == COLL_SYM
-          && strlen ((char *) start_elem->opr.name) > 1)
-         || (end_elem->type == COLL_SYM
-             && strlen ((char *) end_elem->opr.name) > 1), 0))
-    return REG_ECOLLATE;
-
-# ifdef RE_ENABLE_I18N
-  {
-    wchar_t wc;
-    wint_t start_wc;
-    wint_t end_wc;
-
-    start_ch = ((start_elem->type == SB_CHAR) ? start_elem->opr.ch
-               : ((start_elem->type == COLL_SYM) ? start_elem->opr.name[0]
-                  : 0));
-    end_ch = ((end_elem->type == SB_CHAR) ? end_elem->opr.ch
-             : ((end_elem->type == COLL_SYM) ? end_elem->opr.name[0]
-                : 0));
-    start_wc = ((start_elem->type == SB_CHAR || start_elem->type == COLL_SYM)
-               ? __btowc (start_ch) : start_elem->opr.wch);
-    end_wc = ((end_elem->type == SB_CHAR || end_elem->type == COLL_SYM)
-             ? __btowc (end_ch) : end_elem->opr.wch);
-    if (start_wc == WEOF || end_wc == WEOF)
-      return REG_ECOLLATE;
-    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.
-       However, for !_LIBC we have no collation elements: if the
-       character set is single byte, the single byte character set
-       that we build below suffices.  parse_bracket_exp passes
-       no MBCSET if dfa->mb_cur_max == 1.  */
-    if (mbcset)
-      {
-       /* Check the space of the arrays.  */
-       if (BE (*range_alloc == mbcset->nranges, 0))
-         {
-           /* There is not enough space, need realloc.  */
-           wchar_t *new_array_start, *new_array_end;
-           Idx new_nranges;
-
-           /* +1 in case of mbcset->nranges is 0.  */
-           new_nranges = 2 * mbcset->nranges + 1;
-           /* Use realloc since mbcset->range_starts and mbcset->range_ends
-              are NULL if *range_alloc == 0.  */
-           new_array_start = re_realloc (mbcset->range_starts, wchar_t,
-                                         new_nranges);
-           new_array_end = re_realloc (mbcset->range_ends, wchar_t,
-                                       new_nranges);
-
-           if (BE (new_array_start == NULL || new_array_end == NULL, 0))
-             return REG_ESPACE;
-
-           mbcset->range_starts = new_array_start;
-           mbcset->range_ends = new_array_end;
-           *range_alloc = new_nranges;
-         }
-
-       mbcset->range_starts[mbcset->nranges] = start_wc;
-       mbcset->range_ends[mbcset->nranges++] = end_wc;
-      }
-
-    /* Build the table for single byte characters.  */
-    for (wc = 0; wc < SBC_MAX; ++wc)
-      {
-       if (start_wc <= wc && wc <= end_wc)
-         bitset_set (sbcset, wc);
-      }
-  }
-# else /* not RE_ENABLE_I18N */
-  {
-    unsigned int ch;
-    start_ch = ((start_elem->type == SB_CHAR ) ? start_elem->opr.ch
-               : ((start_elem->type == COLL_SYM) ? start_elem->opr.name[0]
-                  : 0));
-    end_ch = ((end_elem->type == SB_CHAR ) ? end_elem->opr.ch
-             : ((end_elem->type == COLL_SYM) ? end_elem->opr.name[0]
-                : 0));
-    if (start_ch > end_ch)
-      return REG_ERANGE;
-    /* Build the table for single byte characters.  */
-    for (ch = 0; ch < SBC_MAX; ++ch)
-      if (start_ch <= ch  && ch <= end_ch)
-       bitset_set (sbcset, ch);
-  }
-# endif /* not RE_ENABLE_I18N */
-  return REG_NOERROR;
-}
-#endif /* not _LIBC */
-
-#ifndef _LIBC
-/* Helper function for parse_bracket_exp only used in case of NOT _LIBC..
-   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 since we may update it.  */
-
-static reg_errcode_t
-internal_function
-# ifdef RE_ENABLE_I18N
-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))
-    return REG_ECOLLATE;
-  else
-    {
-      bitset_set (sbcset, name[0]);
-      return REG_NOERROR;
-    }
-}
-#endif /* not _LIBC */
-
-/* This function parse bracket expression like "[abc]", "[a-c]",
-   "[[.a-a.]]" etc.  */
-
-static bin_tree_t *
-parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
-                  reg_syntax_t syntax, reg_errcode_t *err)
-{
-#ifdef _LIBC
-  const unsigned char *collseqmb;
-  const char *collseqwc;
-  uint32_t nrules;
-  int32_t table_size;
-  const int32_t *symb_table;
-  const unsigned char *extra;
-
-  /* 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 (const unsigned char *name, size_t name_len)
-    {
-      int32_t 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.
-     Look up the collation sequence value of BR_ELEM.
-     Return the value if succeeded, UINT_MAX otherwise.  */
-
-  auto inline unsigned int
-  __attribute__ ((always_inline))
-  lookup_collation_sequence_value (bracket_elem_t *br_elem)
-    {
-      if (br_elem->type == SB_CHAR)
-       {
-         /*
-         if (MB_CUR_MAX == 1)
-         */
-         if (nrules == 0)
-           return collseqmb[br_elem->opr.ch];
-         else
-           {
-             wint_t wc = __btowc (br_elem->opr.ch);
-             return __collseq_table_lookup (collseqwc, wc);
-           }
-       }
-      else if (br_elem->type == MB_CHAR)
-       {
-         if (nrules != 0)
-           return __collseq_table_lookup (collseqwc, br_elem->opr.wch);
-       }
-      else if (br_elem->type == COLL_SYM)
-       {
-         size_t sym_name_len = strlen ((char *) br_elem->opr.name);
-         if (nrules != 0)
-           {
-             int32_t elem, idx;
-             elem = seek_collating_symbol_entry (br_elem->opr.name,
-                                                 sym_name_len);
-             if (elem != -1)
-               {
-                 /* We found the entry.  */
-                 idx = symb_table[2 * elem + 1];
-                 /* Skip the name of collating element name.  */
-                 idx += 1 + extra[idx];
-                 /* Skip the byte sequence of the collating element.  */
-                 idx += 1 + extra[idx];
-                 /* Adjust for the alignment.  */
-                 idx = (idx + 3) & ~3;
-                 /* Skip the multibyte collation sequence value.  */
-                 idx += sizeof (unsigned int);
-                 /* Skip the wide char sequence of the collating element.  */
-                 idx += sizeof (unsigned int) *
-                   (1 + *(unsigned int *) (extra + idx));
-                 /* Return the collation sequence value.  */
-                 return *(unsigned int *) (extra + idx);
-               }
-             else if (sym_name_len == 1)
-               {
-                 /* No valid character.  Match it as a single byte
-                    character.  */
-                 return collseqmb[br_elem->opr.name[0]];
-               }
-           }
-         else if (sym_name_len == 1)
-           return collseqmb[br_elem->opr.name[0]];
-       }
-      return UINT_MAX;
-    }
-
-  /* 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 since we may
-     update it.  */
-
-  auto inline reg_errcode_t
-  __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;
-      uint32_t end_collseq;
-
-      /* Equivalence Classes and Character Classes can't be a range
-        start/end.  */
-      if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
-             || end_elem->type == EQUIV_CLASS || end_elem->type == CHAR_CLASS,
-             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.  */
-      if (BE (start_collseq == UINT_MAX || end_collseq == UINT_MAX, 0))
-       return REG_ECOLLATE;
-      if (BE ((syntax & RE_NO_EMPTY_RANGES) && start_collseq > end_collseq, 0))
-       return REG_ERANGE;
-
-      /* Got valid collation sequence values, add them as a new entry.
-        However, if we have no collation elements, and the character set
-        is single byte, the single byte character set that we
-        build below suffices. */
-      if (nrules > 0 || dfa->mb_cur_max > 1)
-       {
-         /* Check the space of the arrays.  */
-         if (BE (*range_alloc == mbcset->nranges, 0))
-           {
-             /* There is not enough space, need realloc.  */
-             uint32_t *new_array_start;
-             uint32_t *new_array_end;
-             Idx new_nranges;
-
-             /* +1 in case of mbcset->nranges is 0.  */
-             new_nranges = 2 * mbcset->nranges + 1;
-             new_array_start = re_realloc (mbcset->range_starts, uint32_t,
-                                           new_nranges);
-             new_array_end = re_realloc (mbcset->range_ends, uint32_t,
-                                         new_nranges);
-
-             if (BE (new_array_start == NULL || new_array_end == NULL, 0))
-               return REG_ESPACE;
-
-             mbcset->range_starts = new_array_start;
-             mbcset->range_ends = new_array_end;
-             *range_alloc = new_nranges;
-           }
-
-         mbcset->range_starts[mbcset->nranges] = start_collseq;
-         mbcset->range_ends[mbcset->nranges++] = end_collseq;
-       }
-
-      /* Build the table for single byte characters.  */
-      for (ch = 0; ch < SBC_MAX; ch++)
-       {
-         uint32_t ch_collseq;
-         /*
-         if (MB_CUR_MAX == 1)
-         */
-         if (nrules == 0)
-           ch_collseq = collseqmb[ch];
-         else
-           ch_collseq = __collseq_table_lookup (collseqwc, __btowc (ch));
-         if (start_collseq <= ch_collseq && ch_collseq <= end_collseq)
-           bitset_set (sbcset, ch);
-       }
-      return REG_NOERROR;
-    }
-
-  /* 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 since we may update it.  */
-
-  auto inline reg_errcode_t
-  __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 (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 (name_len == 1)
-           {
-             /* No valid character, treat it as a normal
-                character.  */
-             bitset_set (sbcset, name[0]);
-             return REG_NOERROR;
-           }
-         else
-           return REG_ECOLLATE;
-
-         /* Got valid collation sequence, add it as a new entry.  */
-         /* Check the space of the arrays.  */
-         if (BE (*coll_sym_alloc == mbcset->ncoll_syms, 0))
-           {
-             /* Not enough, realloc it.  */
-             /* +1 in case of mbcset->ncoll_syms is 0.  */
-             Idx new_coll_sym_alloc = 2 * mbcset->ncoll_syms + 1;
-             /* Use realloc since mbcset->coll_syms is NULL
-                if *alloc == 0.  */
-             int32_t *new_coll_syms = re_realloc (mbcset->coll_syms, int32_t,
-                                                  new_coll_sym_alloc);
-             if (BE (new_coll_syms == NULL, 0))
-               return REG_ESPACE;
-             mbcset->coll_syms = new_coll_syms;
-             *coll_sym_alloc = new_coll_sym_alloc;
-           }
-         mbcset->coll_syms[mbcset->ncoll_syms++] = idx;
-         return REG_NOERROR;
-       }
-      else
-       {
-         if (BE (name_len != 1, 0))
-           return REG_ECOLLATE;
-         else
-           {
-             bitset_set (sbcset, name[0]);
-             return REG_NOERROR;
-           }
-       }
-    }
-#endif
-
-  re_token_t br_token;
-  re_bitset_ptr_t sbcset;
-#ifdef RE_ENABLE_I18N
-  re_charset_t *mbcset;
-  Idx coll_sym_alloc = 0, range_alloc = 0, mbchar_alloc = 0;
-  Idx equiv_class_alloc = 0, char_class_alloc = 0;
-#endif /* not RE_ENABLE_I18N */
-  bool non_match = false;
-  bin_tree_t *work_tree;
-  int token_len;
-  bool first_round = true;
-#ifdef _LIBC
-  collseqmb = (const unsigned char *)
-    _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQMB);
-  nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
-  if (nrules)
-    {
-      /*
-      if (MB_CUR_MAX > 1)
-      */
-      collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
-      table_size = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_SYMB_HASH_SIZEMB);
-      symb_table = (const int32_t *) _NL_CURRENT (LC_COLLATE,
-                                                 _NL_COLLATE_SYMB_TABLEMB);
-      extra = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
-                                                  _NL_COLLATE_SYMB_EXTRAMB);
-    }
-#endif
-  sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
-#ifdef RE_ENABLE_I18N
-  mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
-#endif /* RE_ENABLE_I18N */
-#ifdef RE_ENABLE_I18N
-  if (BE (sbcset == NULL || mbcset == NULL, 0))
-#else
-  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;
-    }
-
-  token_len = peek_token_bracket (token, regexp, syntax);
-  if (BE (token->type == END_OF_RE, 0))
-    {
-      *err = REG_BADPAT;
-      goto parse_bracket_exp_free_return;
-    }
-  if (token->type == OP_NON_MATCH_LIST)
-    {
-#ifdef RE_ENABLE_I18N
-      mbcset->non_match = 1;
-#endif /* not RE_ENABLE_I18N */
-      non_match = true;
-      if (syntax & RE_HAT_LISTS_NOT_NEWLINE)
-       bitset_set (sbcset, '\n');
-      re_string_skip_bytes (regexp, token_len); /* Skip a token.  */
-      token_len = peek_token_bracket (token, regexp, syntax);
-      if (BE (token->type == END_OF_RE, 0))
-       {
-         *err = REG_BADPAT;
-         goto parse_bracket_exp_free_return;
-       }
-    }
-
-  /* We treat the first ']' as a normal character.  */
-  if (token->type == OP_CLOSE_BRACKET)
-    token->type = CHARACTER;
-
-  while (1)
-    {
-      bracket_elem_t start_elem, end_elem;
-      unsigned char start_name_buf[BRACKET_NAME_BUF_SIZE];
-      unsigned char end_name_buf[BRACKET_NAME_BUF_SIZE];
-      reg_errcode_t ret;
-      int token_len2 = 0;
-      bool is_range_exp = false;
-      re_token_t token2;
-
-      start_elem.opr.name = start_name_buf;
-      ret = parse_bracket_element (&start_elem, regexp, token, token_len, dfa,
-                                  syntax, first_round);
-      if (BE (ret != REG_NOERROR, 0))
-       {
-         *err = ret;
-         goto parse_bracket_exp_free_return;
-       }
-      first_round = false;
-
-      /* Get information about the next token.  We need it in any case.  */
-      token_len = peek_token_bracket (token, regexp, syntax);
-
-      /* Do not check for ranges if we know they are not allowed.  */
-      if (start_elem.type != CHAR_CLASS && start_elem.type != EQUIV_CLASS)
-       {
-         if (BE (token->type == END_OF_RE, 0))
-           {
-             *err = REG_EBRACK;
-             goto parse_bracket_exp_free_return;
-           }
-         if (token->type == OP_CHARSET_RANGE)
-           {
-             re_string_skip_bytes (regexp, token_len); /* Skip '-'.  */
-             token_len2 = peek_token_bracket (&token2, regexp, syntax);
-             if (BE (token2.type == END_OF_RE, 0))
-               {
-                 *err = REG_EBRACK;
-                 goto parse_bracket_exp_free_return;
-               }
-             if (token2.type == OP_CLOSE_BRACKET)
-               {
-                 /* We treat the last '-' as a normal character.  */
-                 re_string_skip_bytes (regexp, -token_len);
-                 token->type = CHARACTER;
-               }
-             else
-               is_range_exp = true;
-           }
-       }
-
-      if (is_range_exp == true)
-       {
-         end_elem.opr.name = end_name_buf;
-         ret = parse_bracket_element (&end_elem, regexp, &token2, token_len2,
-                                      dfa, syntax, true);
-         if (BE (ret != REG_NOERROR, 0))
-           {
-             *err = ret;
-             goto parse_bracket_exp_free_return;
-           }
-
-         token_len = peek_token_bracket (token, regexp, syntax);
-
-#ifdef _LIBC
-         *err = build_range_exp (sbcset, mbcset, &range_alloc,
-                                 &start_elem, &end_elem);
-#else
-# ifdef RE_ENABLE_I18N
-         *err = build_range_exp (syntax, sbcset,
-                                 dfa->mb_cur_max > 1 ? mbcset : NULL,
-                                 &range_alloc, &start_elem, &end_elem);
-# else
-         *err = build_range_exp (syntax, sbcset, &start_elem, &end_elem);
-# endif
-#endif /* RE_ENABLE_I18N */
-         if (BE (*err != REG_NOERROR, 0))
-           goto parse_bracket_exp_free_return;
-       }
-      else
-       {
-         switch (start_elem.type)
-           {
-           case SB_CHAR:
-             bitset_set (sbcset, start_elem.opr.ch);
-             break;
-#ifdef RE_ENABLE_I18N
-           case MB_CHAR:
-             /* Check whether the array has enough space.  */
-             if (BE (mbchar_alloc == mbcset->nmbchars, 0))
-               {
-                 wchar_t *new_mbchars;
-                 /* Not enough, realloc it.  */
-                 /* +1 in case of mbcset->nmbchars is 0.  */
-                 mbchar_alloc = 2 * mbcset->nmbchars + 1;
-                 /* Use realloc since array is NULL if *alloc == 0.  */
-                 new_mbchars = re_realloc (mbcset->mbchars, wchar_t,
-                                           mbchar_alloc);
-                 if (BE (new_mbchars == NULL, 0))
-                   goto parse_bracket_exp_espace;
-                 mbcset->mbchars = new_mbchars;
-               }
-             mbcset->mbchars[mbcset->nmbchars++] = start_elem.opr.wch;
-             break;
-#endif /* RE_ENABLE_I18N */
-           case EQUIV_CLASS:
-             *err = build_equiv_class (sbcset,
-#ifdef RE_ENABLE_I18N
-                                       mbcset, &equiv_class_alloc,
-#endif /* RE_ENABLE_I18N */
-                                       start_elem.opr.name);
-             if (BE (*err != REG_NOERROR, 0))
-               goto parse_bracket_exp_free_return;
-             break;
-           case COLL_SYM:
-             *err = build_collating_symbol (sbcset,
-#ifdef RE_ENABLE_I18N
-                                            mbcset, &coll_sym_alloc,
-#endif /* RE_ENABLE_I18N */
-                                            start_elem.opr.name);
-             if (BE (*err != REG_NOERROR, 0))
-               goto parse_bracket_exp_free_return;
-             break;
-           case CHAR_CLASS:
-             *err = build_charclass (regexp->trans, sbcset,
-#ifdef RE_ENABLE_I18N
-                                     mbcset, &char_class_alloc,
-#endif /* RE_ENABLE_I18N */
-                                     (const char *) start_elem.opr.name,
-                                     syntax);
-             if (BE (*err != REG_NOERROR, 0))
-              goto parse_bracket_exp_free_return;
-             break;
-           default:
-             assert (0);
-             break;
-           }
-       }
-      if (BE (token->type == END_OF_RE, 0))
-       {
-         *err = REG_EBRACK;
-         goto parse_bracket_exp_free_return;
-       }
-      if (token->type == OP_CLOSE_BRACKET)
-       break;
-    }
-
-  re_string_skip_bytes (regexp, token_len); /* Skip a token.  */
-
-  /* If it is non-matching list.  */
-  if (non_match)
-    bitset_not (sbcset);
-
-#ifdef RE_ENABLE_I18N
-  /* Ensure only single byte characters are set.  */
-  if (dfa->mb_cur_max > 1)
-    bitset_mask (sbcset, dfa->sb_char);
-
-  if (mbcset->nmbchars || mbcset->ncoll_syms || mbcset->nequiv_classes
-      || mbcset->nranges || (dfa->mb_cur_max > 1 && (mbcset->nchar_classes
-                                                    || mbcset->non_match)))
-    {
-      bin_tree_t *mbc_tree;
-      int sbc_idx;
-      /* Build a tree for complex bracket.  */
-      dfa->has_mb_node = 1;
-      br_token.type = COMPLEX_BRACKET;
-      br_token.opr.mbcset = mbcset;
-      mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
-      if (BE (mbc_tree == NULL, 0))
-       goto parse_bracket_exp_espace;
-      for (sbc_idx = 0; sbc_idx < BITSET_WORDS; ++sbc_idx)
-       if (sbcset[sbc_idx])
-         break;
-      /* If there are no bits set in sbcset, there is no point
-        of having both SIMPLE_BRACKET and COMPLEX_BRACKET.  */
-      if (sbc_idx < BITSET_WORDS)
-       {
-         /* Build a tree for simple bracket.  */
-         br_token.type = SIMPLE_BRACKET;
-         br_token.opr.sbcset = sbcset;
-         work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
-         if (BE (work_tree == NULL, 0))
-           goto parse_bracket_exp_espace;
-
-         /* Then join them by ALT node.  */
-         work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
-         if (BE (work_tree == NULL, 0))
-           goto parse_bracket_exp_espace;
-       }
-      else
-       {
-         re_free (sbcset);
-         work_tree = mbc_tree;
-       }
-    }
-  else
-#endif /* not RE_ENABLE_I18N */
-    {
-#ifdef RE_ENABLE_I18N
-      free_charset (mbcset);
-#endif
-      /* Build a tree for simple bracket.  */
-      br_token.type = SIMPLE_BRACKET;
-      br_token.opr.sbcset = sbcset;
-      work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
-      if (BE (work_tree == NULL, 0))
-       goto parse_bracket_exp_espace;
-    }
-  return work_tree;
-
- parse_bracket_exp_espace:
-  *err = REG_ESPACE;
- parse_bracket_exp_free_return:
-  re_free (sbcset);
-#ifdef RE_ENABLE_I18N
-  free_charset (mbcset);
-#endif /* RE_ENABLE_I18N */
-  return NULL;
-}
-
-/* Parse an element in the bracket expression.  */
-
-static reg_errcode_t
-parse_bracket_element (bracket_elem_t *elem, re_string_t *regexp,
-                      re_token_t *token, int token_len, re_dfa_t *dfa,
-                      reg_syntax_t syntax, bool accept_hyphen)
-{
-#ifdef RE_ENABLE_I18N
-  int cur_char_size;
-  cur_char_size = re_string_char_size_at (regexp, re_string_cur_idx (regexp));
-  if (cur_char_size > 1)
-    {
-      elem->type = MB_CHAR;
-      elem->opr.wch = re_string_wchar_at (regexp, re_string_cur_idx (regexp));
-      re_string_skip_bytes (regexp, cur_char_size);
-      return REG_NOERROR;
-    }
-#endif /* RE_ENABLE_I18N */
-  re_string_skip_bytes (regexp, token_len); /* Skip a token.  */
-  if (token->type == OP_OPEN_COLL_ELEM || token->type == OP_OPEN_CHAR_CLASS
-      || token->type == OP_OPEN_EQUIV_CLASS)
-    return parse_bracket_symbol (elem, regexp, token);
-  if (BE (token->type == OP_CHARSET_RANGE, 0) && !accept_hyphen)
-    {
-      /* A '-' must only appear as anything but a range indicator before
-        the closing bracket.  Everything else is an error.  */
-      re_token_t token2;
-      (void) peek_token_bracket (&token2, regexp, syntax);
-      if (token2.type != OP_CLOSE_BRACKET)
-       /* The actual error value is not standardized since this whole
-          case is undefined.  But ERANGE makes good sense.  */
-       return REG_ERANGE;
-    }
-  elem->type = SB_CHAR;
-  elem->opr.ch = token->opr.c;
-  return REG_NOERROR;
-}
-
-/* Parse a bracket symbol in the bracket expression.  Bracket symbols are
-   such as [:<character_class>:], [.<collating_element>.], and
-   [=<equivalent_class>=].  */
-
-static reg_errcode_t
-parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp,
-                     re_token_t *token)
-{
-  unsigned char ch, delim = token->opr.c;
-  int i = 0;
-  if (re_string_eoi(regexp))
-    return REG_EBRACK;
-  for (;; ++i)
-    {
-      if (i >= BRACKET_NAME_BUF_SIZE)
-       return REG_EBRACK;
-      if (token->type == OP_OPEN_CHAR_CLASS)
-       ch = re_string_fetch_byte_case (regexp);
-      else
-       ch = re_string_fetch_byte (regexp);
-      if (re_string_eoi(regexp))
-       return REG_EBRACK;
-      if (ch == delim && re_string_peek_byte (regexp, 0) == ']')
-       break;
-      elem->opr.name[i] = ch;
-    }
-  re_string_skip_bytes (regexp, 1);
-  elem->opr.name[i] = '\0';
-  switch (token->type)
-    {
-    case OP_OPEN_COLL_ELEM:
-      elem->type = COLL_SYM;
-      break;
-    case OP_OPEN_EQUIV_CLASS:
-      elem->type = EQUIV_CLASS;
-      break;
-    case OP_OPEN_CHAR_CLASS:
-      elem->type = CHAR_CLASS;
-      break;
-    default:
-      break;
-    }
-  return REG_NOERROR;
-}
-
-  /* Helper function for parse_bracket_exp.
-     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 since we may update it.  */
-
-static reg_errcode_t
-#ifdef RE_ENABLE_I18N
-build_equiv_class (bitset_t sbcset, re_charset_t *mbcset,
-                  Idx *equiv_class_alloc, const unsigned char *name)
-#else /* not RE_ENABLE_I18N */
-build_equiv_class (bitset_t sbcset, const unsigned char *name)
-#endif /* not RE_ENABLE_I18N */
-{
-#ifdef _LIBC
-  uint32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
-  if (nrules != 0)
-    {
-      const int32_t *table, *indirect;
-      const unsigned char *weights, *extra, *cp;
-      unsigned char char_buf[2];
-      int32_t idx1, idx2;
-      unsigned int ch;
-      size_t len;
-      /* This #include defines a local function!  */
-# include <locale/weight.h>
-      /* Calculate the index for equivalence class.  */
-      cp = name;
-      table = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
-      weights = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
-                                              _NL_COLLATE_WEIGHTMB);
-      extra = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
-                                                  _NL_COLLATE_EXTRAMB);
-      indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
-                                               _NL_COLLATE_INDIRECTMB);
-      idx1 = findidx (&cp, -1);
-      if (BE (idx1 == 0 || *cp != '\0', 0))
-       /* This isn't a valid character.  */
-       return REG_ECOLLATE;
-
-      /* 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, 1);
-/*
-         idx2 = table[ch];
-*/
-         if (idx2 == 0)
-           /* This isn't a valid character.  */
-           continue;
-         /* Compare only if the length matches and the collation rule
-            index is the same.  */
-         if (len == weights[idx2 & 0xffffff] && (idx1 >> 24) == (idx2 >> 24))
-           {
-             int cnt = 0;
-
-             while (cnt <= len &&
-                    weights[(idx1 & 0xffffff) + 1 + cnt]
-                    == weights[(idx2 & 0xffffff) + 1 + cnt])
-               ++cnt;
-
-             if (cnt > len)
-               bitset_set (sbcset, ch);
-           }
-       }
-      /* Check whether the array has enough space.  */
-      if (BE (*equiv_class_alloc == mbcset->nequiv_classes, 0))
-       {
-         /* Not enough, realloc it.  */
-         /* +1 in case of mbcset->nequiv_classes is 0.  */
-         Idx new_equiv_class_alloc = 2 * mbcset->nequiv_classes + 1;
-         /* Use realloc since the array is NULL if *alloc == 0.  */
-         int32_t *new_equiv_classes = re_realloc (mbcset->equiv_classes,
-                                                  int32_t,
-                                                  new_equiv_class_alloc);
-         if (BE (new_equiv_classes == NULL, 0))
-           return REG_ESPACE;
-         mbcset->equiv_classes = new_equiv_classes;
-         *equiv_class_alloc = new_equiv_class_alloc;
-       }
-      mbcset->equiv_classes[mbcset->nequiv_classes++] = idx1;
-    }
-  else
-#endif /* _LIBC */
-    {
-      if (BE (strlen ((const char *) name) != 1, 0))
-       return REG_ECOLLATE;
-      bitset_set (sbcset, *name);
-    }
-  return REG_NOERROR;
-}
-
-  /* Helper function for parse_bracket_exp.
-     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 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 char *class_name, reg_syntax_t syntax)
-#else /* not RE_ENABLE_I18N */
-build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
-                const char *class_name, reg_syntax_t syntax)
-#endif /* not RE_ENABLE_I18N */
-{
-  int i;
-  const char *name = class_name;
-
-  /* In case of REG_ICASE "upper" and "lower" match the both of
-     upper and lower cases.  */
-  if ((syntax & RE_ICASE)
-      && (strcmp (name, "upper") == 0 || strcmp (name, "lower") == 0))
-    name = "alpha";
-
-#ifdef RE_ENABLE_I18N
-  /* Check the space of the arrays.  */
-  if (BE (*char_class_alloc == mbcset->nchar_classes, 0))
-    {
-      /* Not enough, realloc it.  */
-      /* +1 in case of mbcset->nchar_classes is 0.  */
-      Idx new_char_class_alloc = 2 * mbcset->nchar_classes + 1;
-      /* Use realloc since array is NULL if *alloc == 0.  */
-      wctype_t *new_char_classes = re_realloc (mbcset->char_classes, wctype_t,
-                                              new_char_class_alloc);
-      if (BE (new_char_classes == NULL, 0))
-       return REG_ESPACE;
-      mbcset->char_classes = new_char_classes;
-      *char_class_alloc = new_char_class_alloc;
-    }
-  mbcset->char_classes[mbcset->nchar_classes++] = __wctype (name);
-#endif /* RE_ENABLE_I18N */
-
-#define BUILD_CHARCLASS_LOOP(ctype_func)       \
-  do {                                         \
-    if (BE (trans != NULL, 0))                 \
-      {                                                \
-       for (i = 0; i < SBC_MAX; ++i)           \
-         if (ctype_func (i))                   \
-           bitset_set (sbcset, trans[i]);      \
-      }                                                \
-    else                                       \
-      {                                                \
-       for (i = 0; i < SBC_MAX; ++i)           \
-         if (ctype_func (i))                   \
-           bitset_set (sbcset, i);             \
-      }                                                \
-  } while (0)
-
-  if (strcmp (name, "alnum") == 0)
-    BUILD_CHARCLASS_LOOP (isalnum);
-  else if (strcmp (name, "cntrl") == 0)
-    BUILD_CHARCLASS_LOOP (iscntrl);
-  else if (strcmp (name, "lower") == 0)
-    BUILD_CHARCLASS_LOOP (islower);
-  else if (strcmp (name, "space") == 0)
-    BUILD_CHARCLASS_LOOP (isspace);
-  else if (strcmp (name, "alpha") == 0)
-    BUILD_CHARCLASS_LOOP (isalpha);
-  else if (strcmp (name, "digit") == 0)
-    BUILD_CHARCLASS_LOOP (isdigit);
-  else if (strcmp (name, "print") == 0)
-    BUILD_CHARCLASS_LOOP (isprint);
-  else if (strcmp (name, "upper") == 0)
-    BUILD_CHARCLASS_LOOP (isupper);
-  else if (strcmp (name, "blank") == 0)
-    BUILD_CHARCLASS_LOOP (isblank);
-  else if (strcmp (name, "graph") == 0)
-    BUILD_CHARCLASS_LOOP (isgraph);
-  else if (strcmp (name, "punct") == 0)
-    BUILD_CHARCLASS_LOOP (ispunct);
-  else if (strcmp (name, "xdigit") == 0)
-    BUILD_CHARCLASS_LOOP (isxdigit);
-  else
-    return REG_ECTYPE;
-
-  return REG_NOERROR;
-}
-
-static bin_tree_t *
-build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
-                   const char *class_name,
-                   const char *extra, bool non_match,
-                   reg_errcode_t *err)
-{
-  re_bitset_ptr_t sbcset;
-#ifdef RE_ENABLE_I18N
-  re_charset_t *mbcset;
-  Idx alloc = 0;
-#endif /* not RE_ENABLE_I18N */
-  reg_errcode_t ret;
-  re_token_t br_token;
-  bin_tree_t *tree;
-
-  sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
-#ifdef RE_ENABLE_I18N
-  mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
-#endif /* RE_ENABLE_I18N */
-
-#ifdef RE_ENABLE_I18N
-  if (BE (sbcset == NULL || mbcset == NULL, 0))
-#else /* not RE_ENABLE_I18N */
-  if (BE (sbcset == NULL, 0))
-#endif /* not RE_ENABLE_I18N */
-    {
-      *err = REG_ESPACE;
-      return NULL;
-    }
-
-  if (non_match)
-    {
-#ifdef RE_ENABLE_I18N
-      mbcset->non_match = 1;
-#endif /* not RE_ENABLE_I18N */
-    }
-
-  /* We don't care the syntax in this case.  */
-  ret = build_charclass (trans, sbcset,
-#ifdef RE_ENABLE_I18N
-                        mbcset, &alloc,
-#endif /* RE_ENABLE_I18N */
-                        class_name, 0);
-
-  if (BE (ret != REG_NOERROR, 0))
-    {
-      re_free (sbcset);
-#ifdef RE_ENABLE_I18N
-      free_charset (mbcset);
-#endif /* RE_ENABLE_I18N */
-      *err = ret;
-      return NULL;
-    }
-  /* \w match '_' also.  */
-  for (; *extra; extra++)
-    bitset_set (sbcset, *extra);
-
-  /* If it is non-matching list.  */
-  if (non_match)
-    bitset_not (sbcset);
-
-#ifdef RE_ENABLE_I18N
-  /* Ensure only single byte characters are set.  */
-  if (dfa->mb_cur_max > 1)
-    bitset_mask (sbcset, dfa->sb_char);
-#endif
-
-  /* Build a tree for simple bracket.  */
-  br_token.type = SIMPLE_BRACKET;
-  br_token.opr.sbcset = sbcset;
-  tree = create_token_tree (dfa, NULL, NULL, &br_token);
-  if (BE (tree == NULL, 0))
-    goto build_word_op_espace;
-
-#ifdef RE_ENABLE_I18N
-  if (dfa->mb_cur_max > 1)
-    {
-      bin_tree_t *mbc_tree;
-      /* Build a tree for complex bracket.  */
-      br_token.type = COMPLEX_BRACKET;
-      br_token.opr.mbcset = mbcset;
-      dfa->has_mb_node = 1;
-      mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
-      if (BE (mbc_tree == NULL, 0))
-       goto build_word_op_espace;
-      /* Then join them by ALT node.  */
-      tree = create_tree (dfa, tree, mbc_tree, OP_ALT);
-      if (BE (mbc_tree != NULL, 1))
-       return tree;
-    }
-  else
-    {
-      free_charset (mbcset);
-      return tree;
-    }
-#else /* not RE_ENABLE_I18N */
-  return tree;
-#endif /* not RE_ENABLE_I18N */
-
- build_word_op_espace:
-  re_free (sbcset);
-#ifdef RE_ENABLE_I18N
-  free_charset (mbcset);
-#endif /* RE_ENABLE_I18N */
-  *err = REG_ESPACE;
-  return NULL;
-}
-
-/* This is intended for the expressions like "a{1,3}".
-   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
-fetch_number (re_string_t *input, re_token_t *token, reg_syntax_t syntax)
-{
-  Idx num = REG_MISSING;
-  unsigned char c;
-  while (1)
-    {
-      fetch_token (token, input, syntax);
-      c = token->opr.c;
-      if (BE (token->type == END_OF_RE, 0))
-       return REG_ERROR;
-      if (token->type == OP_CLOSE_DUP_NUM || c == ',')
-       break;
-      num = ((token->type != CHARACTER || c < '0' || '9' < c
-             || num == REG_ERROR)
-            ? REG_ERROR
-            : num == REG_MISSING
-            ? c - '0'
-            : MIN (RE_DUP_MAX + 1, num * 10 + c - '0'));
-    }
-  return num;
-}
-
-#ifdef RE_ENABLE_I18N
-static void
-free_charset (re_charset_t *cset)
-{
-  re_free (cset->mbchars);
-# ifdef _LIBC
-  re_free (cset->coll_syms);
-  re_free (cset->equiv_classes);
-  re_free (cset->range_starts);
-  re_free (cset->range_ends);
-# endif
-  re_free (cset->char_classes);
-  re_free (cset);
-}
-#endif /* RE_ENABLE_I18N */
-
-/* Functions for binary tree operation.  */
-
-/* Create a tree node.  */
-
-static bin_tree_t *
-create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
-            re_token_type_t type)
-{
-  re_token_t t;
-  t.type = type;
-  return create_token_tree (dfa, left, right, &t);
-}
-
-static bin_tree_t *
-create_token_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
-                  const re_token_t *token)
-{
-  bin_tree_t *tree;
-  if (BE (dfa->str_tree_storage_idx == BIN_TREE_STORAGE_SIZE, 0))
-    {
-      bin_tree_storage_t *storage = re_malloc (bin_tree_storage_t, 1);
-
-      if (storage == NULL)
-       return NULL;
-      storage->next = dfa->str_tree_storage;
-      dfa->str_tree_storage = storage;
-      dfa->str_tree_storage_idx = 0;
-    }
-  tree = &dfa->str_tree_storage->data[dfa->str_tree_storage_idx++];
-
-  tree->parent = NULL;
-  tree->left = left;
-  tree->right = right;
-  tree->token = *token;
-  tree->token.duplicated = 0;
-  tree->token.opt_subexp = 0;
-  tree->first = NULL;
-  tree->next = NULL;
-  tree->node_idx = REG_MISSING;
-
-  if (left != NULL)
-    left->parent = tree;
-  if (right != NULL)
-    right->parent = tree;
-  return tree;
-}
-
-/* Mark the tree SRC as an optional subexpression.
-   To be called from preorder or postorder.  */
-
-static reg_errcode_t
-mark_opt_subexp (void *extra, bin_tree_t *node)
-{
-  Idx idx = (uintptr_t) extra;
-  if (node->token.type == SUBEXP && node->token.opr.idx == idx)
-    node->token.opt_subexp = 1;
-
-  return REG_NOERROR;
-}
-
-/* Free the allocated memory inside NODE. */
-
-static void
-free_token (re_token_t *node)
-{
-#ifdef RE_ENABLE_I18N
-  if (node->type == COMPLEX_BRACKET && node->duplicated == 0)
-    free_charset (node->opr.mbcset);
-  else
-#endif /* RE_ENABLE_I18N */
-    if (node->type == SIMPLE_BRACKET && node->duplicated == 0)
-      re_free (node->opr.sbcset);
-}
-
-/* Worker function for tree walking.  Free the allocated memory inside NODE
-   and its children. */
-
-static reg_errcode_t
-free_tree (void *extra, bin_tree_t *node)
-{
-  free_token (&node->token);
-  return REG_NOERROR;
-}
-
-
-/* Duplicate the node SRC, and return new node.  This is a preorder
-   visit similar to the one implemented by the generic visitor, but
-   we need more infrastructure to maintain two parallel trees --- so,
-   it's easier to duplicate.  */
-
-static bin_tree_t *
-duplicate_tree (const bin_tree_t *root, re_dfa_t *dfa)
-{
-  const bin_tree_t *node;
-  bin_tree_t *dup_root;
-  bin_tree_t **p_new = &dup_root, *dup_node = root->parent;
-
-  for (node = root; ; )
-    {
-      /* Create a new tree and link it back to the current parent.  */
-      *p_new = create_token_tree (dfa, NULL, NULL, &node->token);
-      if (*p_new == NULL)
-       return NULL;
-      (*p_new)->parent = dup_node;
-      (*p_new)->token.duplicated = 1;
-      dup_node = *p_new;
-
-      /* Go to the left node, or up and to the right.  */
-      if (node->left)
-       {
-         node = node->left;
-         p_new = &dup_node->left;
-       }
-      else
-       {
-         const bin_tree_t *prev = NULL;
-         while (node->right == prev || node->right == NULL)
-           {
-             prev = node;
-             node = node->parent;
-             dup_node = dup_node->parent;
-             if (!node)
-               return dup_root;
-           }
-         node = node->right;
-         p_new = &dup_node->right;
-       }
-    }
-}
diff --git a/grub-core/gnulib/regex.c b/grub-core/gnulib/regex.c
deleted file mode 100644
index 5a0332e00..000000000
--- a/grub-core/gnulib/regex.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Extended regular expression matching and search library.
-   Copyright (C) 2002-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Isamu Hasegawa <address@hidden>.
-
-   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.
-
-   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.
-
-   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 _LIBC
-# include <config.h>
-
-# 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
-
-#ifdef _LIBC
-/* We have to keep the namespace clean.  */
-# define regfree(preg) __regfree (preg)
-# define regexec(pr, st, nm, pm, ef) __regexec (pr, st, nm, pm, ef)
-# define regcomp(preg, pattern, cflags) __regcomp (preg, pattern, cflags)
-# define regerror(errcode, preg, errbuf, errbuf_size) \
-       __regerror(errcode, preg, errbuf, errbuf_size)
-# define re_set_registers(bu, re, nu, st, en) \
-       __re_set_registers (bu, re, nu, st, en)
-# define re_match_2(bufp, string1, size1, string2, size2, pos, regs, stop) \
-       __re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
-# define re_match(bufp, string, size, pos, regs) \
-       __re_match (bufp, string, size, pos, regs)
-# define re_search(bufp, string, size, startpos, range, regs) \
-       __re_search (bufp, string, size, startpos, range, regs)
-# define re_compile_pattern(pattern, length, bufp) \
-       __re_compile_pattern (pattern, length, bufp)
-# define re_set_syntax(syntax) __re_set_syntax (syntax)
-# define re_search_2(bufp, st1, s1, st2, s2, startpos, range, regs, stop) \
-       __re_search_2 (bufp, st1, s1, st2, s2, startpos, range, regs, stop)
-# define re_compile_fastmap(bufp) __re_compile_fastmap (bufp)
-
-# include "../locale/localeinfo.h"
-#endif
-
-/* On some systems, limits.h sets RE_DUP_MAX to a lower value than
-   GNU regex allows.  Include it before <regex.h>, which correctly
-   #undefs RE_DUP_MAX and sets it to the right value.  */
-#include <limits.h>
-
-#include <regex.h>
-#include "regex_internal.h"
-
-#include "regex_internal.c"
-#include "regcomp.c"
-#include "regexec.c"
-
-/* Binary backward compatibility.  */
-#if _LIBC
-# include <shlib-compat.h>
-# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3)
-link_warning (re_max_failures, "the 're_max_failures' variable is obsolete and 
will go away.")
-int re_max_failures = 2000;
-# endif
-#endif
diff --git a/grub-core/gnulib/regex.h b/grub-core/gnulib/regex.h
deleted file mode 100644
index 854c6edaf..000000000
--- a/grub-core/gnulib/regex.h
+++ /dev/null
@@ -1,667 +0,0 @@
-/* Definitions for data structures and routines for the regular
-   expression library.
-   Copyright (C) 1985, 1989-1993, 1995-1998, 2000-2003, 2005-2013 Free Software
-   Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   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.
-
-   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.
-
-   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
-
-#include <sys/types.h>
-
-/* Allow the use in C++ code.  */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Define __USE_GNU to declare GNU extensions that violate the
-   POSIX name space rules.  */
-#ifdef _GNU_SOURCE
-# define __USE_GNU 1
-#endif
-
-#ifdef _REGEX_LARGE_OFFSETS
-
-/* Use types and values that are wide enough to represent signed and
-   unsigned byte offsets in memory.  This currently works only when
-   the regex code is used outside of the GNU C library; it is not yet
-   supported within glibc itself, and glibc users should not define
-   _REGEX_LARGE_OFFSETS.  */
-
-/* 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.  */
-typedef size_t __re_idx_t;
-
-/* The type of object sizes.  */
-typedef size_t __re_size_t;
-
-/* The type of object sizes, in places where the traditional code
-   uses unsigned long int.  */
-typedef size_t __re_long_size_t;
-
-#else
-
-/* 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;
-
-#endif
-
-/* The following two types have to be signed and unsigned integer type
-   wide enough to hold a value of a pointer.  For most ANSI compilers
-   ptrdiff_t and size_t should be likely OK.  Still size of these two
-   types is 2 for Microsoft C.  Ugh... */
-typedef long int s_reg_t;
-typedef unsigned long int active_reg_t;
-
-/* The following bits are used to determine the regexp syntax we
-   recognize.  The set/not-set meanings are chosen so that Emacs syntax
-   remains the value 0.  The bits are given in alphabetical order, and
-   the definitions shifted by one from the previous bit; thus, when we
-   add or remove a bit, only one other definition need change.  */
-typedef unsigned long int reg_syntax_t;
-
-#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)
-
-/* If this bit is not set, then + and ? are operators, and \+ and \? are
-     literals.
-   If set, then \+ and \? are operators and + and ? are literals.  */
-# define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
-
-/* If this bit is set, then character classes are supported.  They are:
-     [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
-     [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
-   If not set, then character classes are not supported.  */
-# define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
-
-/* If this bit is set, then ^ and $ are always anchors (outside bracket
-     expressions, of course).
-   If this bit is not set, then it depends:
-       ^  is an anchor if it is at the beginning of a regular
-          expression or after an open-group or an alternation operator;
-       $  is an anchor if it is at the end of a regular expression, or
-          before a close-group or an alternation operator.
-
-   This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
-   POSIX draft 11.2 says that * etc. in leading positions is undefined.
-   We already implemented a previous draft which made those constructs
-   invalid, though, so we haven't changed the code back.  */
-# define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
-
-/* If this bit is set, then special characters are always special
-     regardless of where they are in the pattern.
-   If this bit is not set, then special characters are special only in
-     some contexts; otherwise they are ordinary.  Specifically,
-     * + ? and intervals are only special when not after the beginning,
-     open-group, or alternation operator.  */
-# define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
-
-/* If this bit is set, then *, +, ?, and { cannot be first in an re or
-     immediately after an alternation or begin-group operator.  */
-# define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
-
-/* If this bit is set, then . matches newline.
-   If not set, then it doesn't.  */
-# define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
-
-/* If this bit is set, then . doesn't match NUL.
-   If not set, then it does.  */
-# define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
-
-/* If this bit is set, nonmatching lists [^...] do not match newline.
-   If not set, they do.  */
-# define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
-
-/* If this bit is set, either \{...\} or {...} defines an
-     interval, depending on RE_NO_BK_BRACES.
-   If not set, \{, \}, {, and } are literals.  */
-# define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
-
-/* If this bit is set, +, ? and | aren't recognized as operators.
-   If not set, they are.  */
-# define RE_LIMITED_OPS (RE_INTERVALS << 1)
-
-/* If this bit is set, newline is an alternation operator.
-   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 \}
-     are literals.
-  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.
-   If not set, \(...\) defines a group, and ( and ) are literals.  */
-# define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
-
-/* If this bit is set, then \<digit> matches <digit>.
-   If not set, then \<digit> is a back-reference.  */
-# define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
-
-/* If this bit is set, then | is an alternation operator, and \| is literal.
-   If not set, then \| is an alternation operator, and | is literal.  */
-# define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
-
-/* If this bit is set, then an ending range point collating higher
-     than the starting range point, as in [z-a], is invalid.
-   If not set, then when ending range point collates higher than the
-     starting range point, the range is ignored.  */
-# define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
-
-/* If this bit is set, then an unmatched ) is ordinary.
-   If not set, then an unmatched ) is invalid.  */
-# define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
-
-/* If this bit is set, succeed as soon as we match the whole pattern,
-   without further backtracking.  */
-# define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
-
-/* If this bit is set, do not process the GNU regex operators.
-   If not set, then the GNU regex operators are recognized. */
-# define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
-
-/* If this bit is set, turn on internal regex debugging.
-   If not set, and debugging was on, turn it off.
-   This only works if regex.c is compiled -DDEBUG.
-   We define this bit always, so that all that's needed to turn on
-   debugging is to recompile regex.c; the calling code can always have
-   this bit set, and it won't affect anything in the normal case. */
-# define RE_DEBUG (RE_NO_GNU_OPS << 1)
-
-/* If this bit is set, a syntactically invalid interval is treated as
-   a string of ordinary characters.  For example, the ERE 'a{1' is
-   treated as 'a\{1'.  */
-# define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
-
-/* If this bit is set, then ignore case when matching.
-   If not set, then case is significant.  */
-# define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
-
-/* This bit is used internally like RE_CONTEXT_INDEP_ANCHORS but only
-   for ^, because it is difficult to scan the regex backwards to find
-   whether ^ should be special.  */
-# define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
-
-/* If this bit is set, then \{ cannot be first in a regex or
-   immediately after an alternation, open-group or \} operator.  */
-# define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
-
-/* 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
-
-/* This global variable defines the particular regexp syntax to use (for
-   some interfaces).  When a regexp is compiled, the syntax used is
-   stored in the pattern buffer, so changing this does not affect
-   already-compiled regexps.  */
-extern reg_syntax_t re_syntax_options;
-
-#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!)  */
-/* [[[begin syntaxes]]] */
-# define RE_SYNTAX_EMACS 0
-
-# define RE_SYNTAX_AWK                                                 \
-  (RE_BACKSLASH_ESCAPE_IN_LISTS   | RE_DOT_NOT_NULL                    \
-   | 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_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_INVALID_INTERVAL_ORD)
-
-# define RE_SYNTAX_GREP                                                        
\
-  (RE_BK_PLUS_QM              | RE_CHAR_CLASSES                                
\
-   | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS                           \
-   | RE_NEWLINE_ALT)
-
-# define RE_SYNTAX_EGREP                                               \
-  (RE_CHAR_CLASSES        | RE_CONTEXT_INDEP_ANCHORS                   \
-   | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE                   \
-   | RE_NEWLINE_ALT       | RE_NO_BK_PARENS                            \
-   | RE_NO_BK_VBAR)
-
-# define RE_SYNTAX_POSIX_EGREP                                         \
-  (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES                    \
-   | RE_INVALID_INTERVAL_ORD)
-
-/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff.  */
-# define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
-
-# define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
-
-/* Syntax bits common to both basic and extended POSIX regex syntax.  */
-# define _RE_SYNTAX_POSIX_COMMON                                       \
-  (RE_CHAR_CLASSES | RE_DOT_NEWLINE      | RE_DOT_NOT_NULL             \
-   | RE_INTERVALS  | RE_NO_EMPTY_RANGES)
-
-# define RE_SYNTAX_POSIX_BASIC                                         \
-  (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM | RE_CONTEXT_INVALID_DUP)
-
-/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
-   RE_LIMITED_OPS, i.e., \? \+ \| are not recognized.  Actually, this
-   isn't minimal, since other operators, such as \`, aren't disabled.  */
-# define RE_SYNTAX_POSIX_MINIMAL_BASIC                                 \
-  (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
-
-# define RE_SYNTAX_POSIX_EXTENDED                                      \
-  (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS                 \
-   | RE_CONTEXT_INDEP_OPS   | RE_NO_BK_BRACES                          \
-   | RE_NO_BK_PARENS        | RE_NO_BK_VBAR                            \
-   | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
-
-/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
-   removed and RE_NO_BK_REFS is added.  */
-# define RE_SYNTAX_POSIX_MINIMAL_EXTENDED                              \
-  (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS                 \
-   | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES                          \
-   | RE_NO_BK_PARENS        | RE_NO_BK_REFS                            \
-   | RE_NO_BK_VBAR         | RE_UNMATCHED_RIGHT_PAREN_ORD)
-/* [[[end syntaxes]]] */
-
-/* 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
-
-/* 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 - 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
-
-
-/* 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.  */
-#define REG_EXTENDED 1
-
-/* If this bit is set, then ignore case when matching.
-   If not set, then case is significant.  */
-#define REG_ICASE (1 << 1)
-
-/* If this bit is set, then anchors do not match at newline
-     characters in the string.
-   If not set, then anchors do match at newlines.  */
-#define REG_NEWLINE (1 << 2)
-
-/* If this bit is set, then report only success or fail in regexec.
-   If not set, then returns differ between not matching and errors.  */
-#define REG_NOSUB (1 << 3)
-
-
-/* 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
-     beginning of a line).
-   If not set, then the beginning-of-line operator does match the
-     beginning of the string.  */
-#define REG_NOTBOL 1
-
-/* Like REG_NOTBOL, except for the end-of-line.  */
-#define REG_NOTEOL (1 << 1)
-
-/* Use PMATCH[0] to delimit the start and end of the search in the
-   buffer.  */
-#define REG_STARTEND (1 << 2)
-
-
-/* If any error codes are removed, changed, or added, update the
-   '__re_error_msgid' table in regcomp.c.  */
-
-typedef enum
-{
-  _REG_ENOSYS = -1,    /* This will never happen for this implementation.  */
-  _REG_NOERROR = 0,    /* Success.  */
-  _REG_NOMATCH,                /* Didn't find a match (for regexec).  */
-
-  /* POSIX regcomp return error codes.  (In the order listed in the
-     standard.)  */
-  _REG_BADPAT,         /* Invalid pattern.  */
-  _REG_ECOLLATE,       /* Invalid collating element.  */
-  _REG_ECTYPE,         /* Invalid character class name.  */
-  _REG_EESCAPE,                /* Trailing backslash.  */
-  _REG_ESUBREG,                /* Invalid back reference.  */
-  _REG_EBRACK,         /* Unmatched left bracket.  */
-  _REG_EPAREN,         /* Parenthesis imbalance.  */
-  _REG_EBRACE,         /* Unmatched \{.  */
-  _REG_BADBR,          /* Invalid contents of \{\}.  */
-  _REG_ERANGE,         /* Invalid range end.  */
-  _REG_ESPACE,         /* Ran out of memory.  */
-  _REG_BADRPT,         /* No preceding re for repetition op.  */
-
-  /* Error codes we've added.  */
-  _REG_EEND,           /* Premature end.  */
-  _REG_ESIZE,          /* Too large (e.g., repeat count too large).  */
-  _REG_ERPAREN         /* Unmatched ) or \); not returned from regcomp.  */
-} reg_errcode_t;
-
-#if defined _XOPEN_SOURCE || defined __USE_XOPEN2K
-# define REG_ENOSYS    _REG_ENOSYS
-#endif
-#define REG_NOERROR    _REG_NOERROR
-#define REG_NOMATCH    _REG_NOMATCH
-#define REG_BADPAT     _REG_BADPAT
-#define REG_ECOLLATE   _REG_ECOLLATE
-#define REG_ECTYPE     _REG_ECTYPE
-#define REG_EESCAPE    _REG_EESCAPE
-#define REG_ESUBREG    _REG_ESUBREG
-#define REG_EBRACK     _REG_EBRACK
-#define REG_EPAREN     _REG_EPAREN
-#define REG_EBRACE     _REG_EBRACE
-#define REG_BADBR      _REG_BADBR
-#define REG_ERANGE     _REG_ERANGE
-#define REG_ESPACE     _REG_ESPACE
-#define REG_BADRPT     _REG_BADRPT
-#define REG_EEND       _REG_EEND
-#define REG_ESIZE      _REG_ESIZE
-#define REG_ERPAREN    _REG_ERPAREN
-
-/* 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
-
-#ifdef __USE_GNU
-# define __REPB_PREFIX(name) name
-#else
-# define __REPB_PREFIX(name) __##name
-#endif
-
-struct re_pattern_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 __REPB_PREFIX(allocated);
-
-  /* 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 __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 *__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.  */
-  __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
-     not we should use the fastmap, so we don't set this absolutely
-     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_REALLOCATE, reallocate space if necessary.
-     If REGS_FIXED, use what's there.  */
-#ifdef __USE_GNU
-# define REGS_UNALLOCATED 0
-# define REGS_REALLOCATE 1
-# define REGS_FIXED 2
-#endif
-  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 __REPB_PREFIX(fastmap_accurate) : 1;
-
-  /* If set, 're_match_2' does not return information about
-     subexpressions.  */
-  unsigned __REPB_PREFIX(no_sub) : 1;
-
-  /* If set, a beginning-of-line anchor doesn't match at the beginning
-     of the string.  */
-  unsigned __REPB_PREFIX(not_bol) : 1;
-
-  /* Similarly for an end-of-line anchor.  */
-  unsigned __REPB_PREFIX(not_eol) : 1;
-
-  /* If true, an anchor at a newline matches.  */
-  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 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.  */
-# 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
-   structure of arrays.  */
-typedef struct
-{
-  regoff_t rm_so;  /* Byte offset from string's start to substring's start.  */
-  regoff_t rm_eo;  /* Byte offset from string's start to substring's end.  */
-} regmatch_t;
-
-/* 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.  */
-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.
-
-   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);
-
-
-/* Compile a fastmap for the compiled pattern in BUFFER; used to
-   accelerate searches.  Return 0 if successful and -2 if was an
-   internal error.  */
-extern int re_compile_fastmap (struct re_pattern_buffer *__buffer);
-
-
-/* Search in the string STRING (with length LENGTH) for the pattern
-   compiled into BUFFER.  Start searching at position START, for RANGE
-   characters.  Return the starting position of the match, -1 for no
-   match, or -2 for an internal error.  Also return register
-   information in REGS (if REGS and BUFFER->no_sub are nonzero).  */
-extern regoff_t re_search (struct re_pattern_buffer *__buffer,
-                          const char *__string, __re_idx_t __length,
-                          __re_idx_t __start, regoff_t __range,
-                          struct re_registers *__regs);
-
-
-/* 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,
-                            const char *__string2, __re_idx_t __length2,
-                            __re_idx_t __start, regoff_t __range,
-                            struct re_registers *__regs,
-                            __re_idx_t __stop);
-
-
-/* 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'.  */
-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,
-                           __re_idx_t __start, struct re_registers *__regs,
-                           __re_idx_t __stop);
-
-
-/* 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
-   (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.  */
-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 && defined __USE_BSD)
-# ifndef _CRAY
-/* 4.2 bsd compatibility.  */
-extern char *re_comp (const char *);
-extern int re_exec (const char *);
-# endif
-#endif
-
-/* GCC 2.95 and later have "__restrict"; C99 compilers have
-   "restrict", and "configure" may have defined "restrict".
-   Other compilers use __restrict, __restrict__, and _Restrict, and
-   'configure' might #define 'restrict' to those words, so pick a
-   different name.  */
-#ifndef _Restrict_
-# if 199901L <= __STDC_VERSION__
-#  define _Restrict_ restrict
-# elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)
-#  define _Restrict_ __restrict
-# else
-#  define _Restrict_
-# endif
-#endif
-/* gcc 3.1 and up support the [restrict] syntax.  Don't trust
-   sys/cdefs.h's definition of __restrict_arr, though, as it
-   mishandles gcc -ansi -pedantic.  */
-#ifndef _Restrict_arr_
-# if ((199901L <= __STDC_VERSION__                                     \
-       || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__))    \
-          && !defined __STRICT_ANSI__))                                        
\
-      && !defined __GNUG__)
-#  define _Restrict_arr_ _Restrict_
-# else
-#  define _Restrict_arr_
-# endif
-#endif
-
-/* POSIX compatibility.  */
-extern int regcomp (regex_t *_Restrict_ __preg,
-                   const char *_Restrict_ __pattern,
-                   int __cflags);
-
-extern int regexec (const regex_t *_Restrict_ __preg,
-                   const char *_Restrict_ __string, size_t __nmatch,
-                   regmatch_t __pmatch[_Restrict_arr_],
-                   int __eflags);
-
-extern size_t regerror (int __errcode, const regex_t *_Restrict_ __preg,
-                       char *_Restrict_ __errbuf, size_t __errbuf_size);
-
-extern void regfree (regex_t *__preg);
-
-
-#ifdef __cplusplus
-}
-#endif /* C++ */
-
-#endif /* regex.h */
diff --git a/grub-core/gnulib/regex_internal.c 
b/grub-core/gnulib/regex_internal.c
deleted file mode 100644
index 899b0ae67..000000000
--- a/grub-core/gnulib/regex_internal.c
+++ /dev/null
@@ -1,1741 +0,0 @@
-/* Extended regular expression matching and search library.
-   Copyright (C) 2002-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Isamu Hasegawa <address@hidden>.
-
-   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.
-
-   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.
-
-   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,
-                                       RE_TRANSLATE_TYPE trans, bool icase,
-                                       const re_dfa_t *dfa) internal_function;
-static re_dfastate_t *create_ci_newstate (const re_dfa_t *dfa,
-                                         const re_node_set *nodes,
-                                         re_hashval_t hash) internal_function;
-static re_dfastate_t *create_cd_newstate (const re_dfa_t *dfa,
-                                         const re_node_set *nodes,
-                                         unsigned int context,
-                                         re_hashval_t hash) internal_function;
-
-/* Functions for string operation.  */
-
-/* This function allocate the buffers.  It is necessary to call
-   re_string_reconstruct before using the object.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_string_allocate (re_string_t *pstr, const char *str, Idx len, Idx init_len,
-                   RE_TRANSLATE_TYPE trans, bool icase, const re_dfa_t *dfa)
-{
-  reg_errcode_t ret;
-  Idx init_buf_len;
-
-  /* Ensure at least one character fits into the buffers.  */
-  if (init_len < dfa->mb_cur_max)
-    init_len = dfa->mb_cur_max;
-  init_buf_len = (len + 1 < init_len) ? len + 1: init_len;
-  re_string_construct_common (str, len, pstr, trans, icase, dfa);
-
-  ret = re_string_realloc_buffers (pstr, init_buf_len);
-  if (BE (ret != REG_NOERROR, 0))
-    return ret;
-
-  pstr->word_char = dfa->word_char;
-  pstr->word_ops_used = dfa->word_ops_used;
-  pstr->mbs = pstr->mbs_allocated ? pstr->mbs : (unsigned char *) str;
-  pstr->valid_len = (pstr->mbs_allocated || dfa->mb_cur_max > 1) ? 0 : len;
-  pstr->valid_raw_len = pstr->valid_len;
-  return REG_NOERROR;
-}
-
-/* This function allocate the buffers, and initialize them.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_string_construct (re_string_t *pstr, const char *str, Idx len,
-                    RE_TRANSLATE_TYPE trans, bool icase, const re_dfa_t *dfa)
-{
-  reg_errcode_t ret;
-  memset (pstr, '\0', sizeof (re_string_t));
-  re_string_construct_common (str, len, pstr, trans, icase, dfa);
-
-  if (len > 0)
-    {
-      ret = re_string_realloc_buffers (pstr, len + 1);
-      if (BE (ret != REG_NOERROR, 0))
-       return ret;
-    }
-  pstr->mbs = pstr->mbs_allocated ? pstr->mbs : (unsigned char *) str;
-
-  if (icase)
-    {
-#ifdef RE_ENABLE_I18N
-      if (dfa->mb_cur_max > 1)
-       {
-         while (1)
-           {
-             ret = build_wcs_upper_buffer (pstr);
-             if (BE (ret != REG_NOERROR, 0))
-               return ret;
-             if (pstr->valid_raw_len >= len)
-               break;
-             if (pstr->bufs_len > pstr->valid_len + dfa->mb_cur_max)
-               break;
-             ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
-             if (BE (ret != REG_NOERROR, 0))
-               return ret;
-           }
-       }
-      else
-#endif /* RE_ENABLE_I18N  */
-       build_upper_buffer (pstr);
-    }
-  else
-    {
-#ifdef RE_ENABLE_I18N
-      if (dfa->mb_cur_max > 1)
-       build_wcs_buffer (pstr);
-      else
-#endif /* RE_ENABLE_I18N  */
-       {
-         if (trans != NULL)
-           re_string_translate_buffer (pstr);
-         else
-           {
-             pstr->valid_len = pstr->bufs_len;
-             pstr->valid_raw_len = pstr->bufs_len;
-           }
-       }
-    }
-
-  return REG_NOERROR;
-}
-
-/* Helper functions for re_string_allocate, and re_string_construct.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_string_realloc_buffers (re_string_t *pstr, Idx new_buf_len)
-{
-#ifdef RE_ENABLE_I18N
-  if (pstr->mb_cur_max > 1)
-    {
-      wint_t *new_wcs;
-
-      /* 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);
-      if (BE (new_wcs == NULL, 0))
-       return REG_ESPACE;
-      pstr->wcs = new_wcs;
-      if (pstr->offsets != NULL)
-       {
-         Idx *new_offsets = re_realloc (pstr->offsets, Idx, new_buf_len);
-         if (BE (new_offsets == NULL, 0))
-           return REG_ESPACE;
-         pstr->offsets = new_offsets;
-       }
-    }
-#endif /* RE_ENABLE_I18N  */
-  if (pstr->mbs_allocated)
-    {
-      unsigned char *new_mbs = re_realloc (pstr->mbs, unsigned char,
-                                          new_buf_len);
-      if (BE (new_mbs == NULL, 0))
-       return REG_ESPACE;
-      pstr->mbs = new_mbs;
-    }
-  pstr->bufs_len = new_buf_len;
-  return REG_NOERROR;
-}
-
-
-static void
-internal_function
-re_string_construct_common (const char *str, Idx len, re_string_t *pstr,
-                           RE_TRANSLATE_TYPE trans, bool icase,
-                           const re_dfa_t *dfa)
-{
-  pstr->raw_mbs = (const unsigned char *) str;
-  pstr->len = len;
-  pstr->raw_len = len;
-  pstr->trans = trans;
-  pstr->icase = icase;
-  pstr->mbs_allocated = (trans != NULL || icase);
-  pstr->mb_cur_max = dfa->mb_cur_max;
-  pstr->is_utf8 = dfa->is_utf8;
-  pstr->map_notascii = dfa->map_notascii;
-  pstr->stop = pstr->len;
-  pstr->raw_stop = pstr->stop;
-}
-
-#ifdef RE_ENABLE_I18N
-
-/* Build wide character buffer PSTR->WCS.
-   If the byte sequence of the string are:
-     <mb1>(0), <mb1>(1), <mb2>(0), <mb2>(1), <sb3>
-   Then wide character buffer will be:
-     <wc1>   , WEOF    , <wc2>   , WEOF    , <wc3>
-   We use WEOF for padding, they indicate that the position isn't
-   a first byte of a multibyte character.
-
-   Note that this function assumes PSTR->VALID_LEN elements are already
-   built and starts from PSTR->VALID_LEN.  */
-
-static void
-internal_function
-build_wcs_buffer (re_string_t *pstr)
-{
-#ifdef _LIBC
-  unsigned char buf[MB_LEN_MAX];
-  assert (MB_LEN_MAX >= pstr->mb_cur_max);
-#else
-  unsigned char buf[64];
-#endif
-  mbstate_t prev_st;
-  Idx byte_idx, end_idx, remain_len;
-  size_t mbclen;
-
-  /* Build the buffers from pstr->valid_len to either pstr->len or
-     pstr->bufs_len.  */
-  end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
-  for (byte_idx = pstr->valid_len; byte_idx < end_idx;)
-    {
-      wchar_t wc;
-      const char *p;
-
-      remain_len = end_idx - byte_idx;
-      prev_st = pstr->cur_state;
-      /* Apply the translation if we need.  */
-      if (BE (pstr->trans != NULL, 0))
-       {
-         int i, ch;
-
-         for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
-           {
-             ch = pstr->raw_mbs [pstr->raw_mbs_idx + byte_idx + i];
-             buf[i] = pstr->mbs[byte_idx + i] = pstr->trans[ch];
-           }
-         p = (const char *) buf;
-       }
-      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) -1 || mbclen == 0
-             || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len), 0))
-       {
-         /* We treat these cases as a singlebyte character.  */
-         mbclen = 1;
-         wc = (wchar_t) pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
-         if (BE (pstr->trans != NULL, 0))
-           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;
-      /* Write paddings.  */
-      for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
-       pstr->wcs[byte_idx++] = WEOF;
-    }
-  pstr->valid_len = byte_idx;
-  pstr->valid_raw_len = byte_idx;
-}
-
-/* Build wide character buffer PSTR->WCS like build_wcs_buffer,
-   but for REG_ICASE.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-build_wcs_upper_buffer (re_string_t *pstr)
-{
-  mbstate_t prev_st;
-  Idx src_idx, byte_idx, end_idx, remain_len;
-  size_t mbclen;
-#ifdef _LIBC
-  char buf[MB_LEN_MAX];
-  assert (MB_LEN_MAX >= pstr->mb_cur_max);
-#else
-  char buf[64];
-#endif
-
-  byte_idx = pstr->valid_len;
-  end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
-
-  /* The following optimization assumes that ASCII characters can be
-     mapped to wide characters with a simple cast.  */
-  if (! pstr->map_notascii && pstr->trans == NULL && !pstr->offsets_needed)
-    {
-      while (byte_idx < end_idx)
-       {
-         wchar_t wc;
-
-         if (isascii (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx])
-             && mbsinit (&pstr->cur_state))
-           {
-             /* In case of a singlebyte character.  */
-             pstr->mbs[byte_idx]
-               = toupper (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]);
-             /* The next step uses the assumption that wchar_t is encoded
-                ASCII-safe: all ASCII values can be converted like this.  */
-             pstr->wcs[byte_idx] = (wchar_t) pstr->mbs[byte_idx];
-             ++byte_idx;
-             continue;
-           }
-
-         remain_len = end_idx - byte_idx;
-         prev_st = pstr->cur_state;
-         mbclen = __mbrtowc (&wc,
-                             ((const char *) pstr->raw_mbs + pstr->raw_mbs_idx
-                              + byte_idx), remain_len, &pstr->cur_state);
-         if (BE (mbclen < (size_t) -2, 1))
-           {
-             wchar_t wcu = wc;
-             if (iswlower (wc))
-               {
-                 size_t mbcdlen;
-
-                 wcu = towupper (wc);
-                 mbcdlen = wcrtomb (buf, wcu, &prev_st);
-                 if (BE (mbclen == mbcdlen, 1))
-                   memcpy (pstr->mbs + byte_idx, buf, mbclen);
-                 else
-                   {
-                     src_idx = byte_idx;
-                     goto offsets_needed;
-                   }
-               }
-             else
-               memcpy (pstr->mbs + byte_idx,
-                       pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx, mbclen);
-             pstr->wcs[byte_idx++] = wcu;
-             /* Write paddings.  */
-             for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
-               pstr->wcs[byte_idx++] = WEOF;
-           }
-         else if (mbclen == (size_t) -1 || mbclen == 0
-                  || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len))
-           {
-             /* 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.  */
-             pstr->wcs[byte_idx++] = (wchar_t) ch;
-             if (BE (mbclen == (size_t) -1, 0))
-               pstr->cur_state = prev_st;
-           }
-         else
-           {
-             /* The buffer doesn't have enough space, finish to build.  */
-             pstr->cur_state = prev_st;
-             break;
-           }
-       }
-      pstr->valid_len = byte_idx;
-      pstr->valid_raw_len = byte_idx;
-      return REG_NOERROR;
-    }
-  else
-    for (src_idx = pstr->valid_raw_len; byte_idx < end_idx;)
-      {
-       wchar_t wc;
-       const char *p;
-      offsets_needed:
-       remain_len = end_idx - byte_idx;
-       prev_st = pstr->cur_state;
-       if (BE (pstr->trans != NULL, 0))
-         {
-           int i, ch;
-
-           for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
-             {
-               ch = pstr->raw_mbs [pstr->raw_mbs_idx + src_idx + i];
-               buf[i] = pstr->trans[ch];
-             }
-           p = (const char *) buf;
-         }
-       else
-         p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + src_idx;
-       mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
-       if (BE (mbclen < (size_t) -2, 1))
-         {
-           wchar_t wcu = wc;
-           if (iswlower (wc))
-             {
-               size_t mbcdlen;
-
-               wcu = towupper (wc);
-               mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st);
-               if (BE (mbclen == mbcdlen, 1))
-                 memcpy (pstr->mbs + byte_idx, buf, mbclen);
-               else if (mbcdlen != (size_t) -1)
-                 {
-                   size_t i;
-
-                   if (byte_idx + mbcdlen > pstr->bufs_len)
-                     {
-                       pstr->cur_state = prev_st;
-                       break;
-                     }
-
-                   if (pstr->offsets == NULL)
-                     {
-                       pstr->offsets = re_malloc (Idx, pstr->bufs_len);
-
-                       if (pstr->offsets == NULL)
-                         return REG_ESPACE;
-                     }
-                   if (!pstr->offsets_needed)
-                     {
-                       for (i = 0; i < (size_t) byte_idx; ++i)
-                         pstr->offsets[i] = i;
-                       pstr->offsets_needed = 1;
-                     }
-
-                   memcpy (pstr->mbs + byte_idx, buf, mbcdlen);
-                   pstr->wcs[byte_idx] = wcu;
-                   pstr->offsets[byte_idx] = src_idx;
-                   for (i = 1; i < mbcdlen; ++i)
-                     {
-                       pstr->offsets[byte_idx + i]
-                         = src_idx + (i < mbclen ? i : mbclen - 1);
-                       pstr->wcs[byte_idx + i] = WEOF;
-                     }
-                   pstr->len += mbcdlen - mbclen;
-                   if (pstr->raw_stop > src_idx)
-                     pstr->stop += mbcdlen - mbclen;
-                   end_idx = (pstr->bufs_len > pstr->len)
-                             ? pstr->len : pstr->bufs_len;
-                   byte_idx += mbcdlen;
-                   src_idx += mbclen;
-                   continue;
-                 }
-               else
-                 memcpy (pstr->mbs + byte_idx, p, mbclen);
-             }
-           else
-             memcpy (pstr->mbs + byte_idx, p, mbclen);
-
-           if (BE (pstr->offsets_needed != 0, 0))
-             {
-               size_t i;
-               for (i = 0; i < mbclen; ++i)
-                 pstr->offsets[byte_idx + i] = src_idx + i;
-             }
-           src_idx += mbclen;
-
-           pstr->wcs[byte_idx++] = wcu;
-           /* Write paddings.  */
-           for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
-             pstr->wcs[byte_idx++] = WEOF;
-         }
-       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];
-
-           if (BE (pstr->trans != NULL, 0))
-             ch = pstr->trans [ch];
-           pstr->mbs[byte_idx] = ch;
-
-           if (BE (pstr->offsets_needed != 0, 0))
-             pstr->offsets[byte_idx] = src_idx;
-           ++src_idx;
-
-           /* And also cast it to wide char.  */
-           pstr->wcs[byte_idx++] = (wchar_t) ch;
-           if (BE (mbclen == (size_t) -1, 0))
-             pstr->cur_state = prev_st;
-         }
-       else
-         {
-           /* The buffer doesn't have enough space, finish to build.  */
-           pstr->cur_state = prev_st;
-           break;
-         }
-      }
-  pstr->valid_len = byte_idx;
-  pstr->valid_raw_len = src_idx;
-  return REG_NOERROR;
-}
-
-/* Skip characters until the index becomes greater than NEW_RAW_IDX.
-   Return the index.  */
-
-static Idx
-internal_function
-re_string_skip_chars (re_string_t *pstr, Idx new_raw_idx, wint_t *last_wc)
-{
-  mbstate_t prev_st;
-  Idx rawbuf_idx;
-  size_t mbclen;
-  wint_t wc = WEOF;
-
-  /* Skip the characters which are not necessary to check.  */
-  for (rawbuf_idx = pstr->raw_mbs_idx + pstr->valid_raw_len;
-       rawbuf_idx < new_raw_idx;)
-    {
-      wchar_t wc2;
-      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);
-      if (BE (mbclen == (size_t) -2 || mbclen == (size_t) -1 || mbclen == 0, 
0))
-       {
-         /* We treat these cases as a single byte character.  */
-         if (mbclen == 0 || remain_len == 0)
-           wc = L'\0';
-         else
-           wc = *(unsigned char *) (pstr->raw_mbs + rawbuf_idx);
-         mbclen = 1;
-         pstr->cur_state = prev_st;
-       }
-      else
-       wc = wc2;
-      /* Then proceed the next character.  */
-      rawbuf_idx += mbclen;
-    }
-  *last_wc = wc;
-  return rawbuf_idx;
-}
-#endif /* RE_ENABLE_I18N  */
-
-/* Build the buffer PSTR->MBS, and apply the translation if we need.
-   This function is used in case of REG_ICASE.  */
-
-static void
-internal_function
-build_upper_buffer (re_string_t *pstr)
-{
-  Idx char_idx, end_idx;
-  end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
-
-  for (char_idx = pstr->valid_len; char_idx < end_idx; ++char_idx)
-    {
-      int ch = pstr->raw_mbs[pstr->raw_mbs_idx + char_idx];
-      if (BE (pstr->trans != NULL, 0))
-       ch = pstr->trans[ch];
-      if (islower (ch))
-       pstr->mbs[char_idx] = toupper (ch);
-      else
-       pstr->mbs[char_idx] = ch;
-    }
-  pstr->valid_len = char_idx;
-  pstr->valid_raw_len = char_idx;
-}
-
-/* Apply TRANS to the buffer in PSTR.  */
-
-static void
-internal_function
-re_string_translate_buffer (re_string_t *pstr)
-{
-  Idx buf_idx, end_idx;
-  end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
-
-  for (buf_idx = pstr->valid_len; buf_idx < end_idx; ++buf_idx)
-    {
-      int ch = pstr->raw_mbs[pstr->raw_mbs_idx + buf_idx];
-      pstr->mbs[buf_idx] = pstr->trans[ch];
-    }
-
-  pstr->valid_len = buf_idx;
-  pstr->valid_raw_len = buf_idx;
-}
-
-/* This function re-construct the buffers.
-   Concretely, convert to wide character in case of pstr->mb_cur_max > 1,
-   convert to upper case in case of REG_ICASE, apply translation.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_string_reconstruct (re_string_t *pstr, Idx idx, int eflags)
-{
-  Idx offset;
-
-  if (BE (pstr->raw_mbs_idx <= idx, 0))
-    offset = idx - pstr->raw_mbs_idx;
-  else
-    {
-      /* Reset buffer.  */
-#ifdef RE_ENABLE_I18N
-      if (pstr->mb_cur_max > 1)
-       memset (&pstr->cur_state, '\0', sizeof (mbstate_t));
-#endif /* RE_ENABLE_I18N */
-      pstr->len = pstr->raw_len;
-      pstr->stop = pstr->raw_stop;
-      pstr->valid_len = 0;
-      pstr->raw_mbs_idx = 0;
-      pstr->valid_raw_len = 0;
-      pstr->offsets_needed = 0;
-      pstr->tip_context = ((eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
-                          : CONTEXT_NEWLINE | CONTEXT_BEGBUF);
-      if (!pstr->mbs_allocated)
-       pstr->mbs = (unsigned char *) pstr->raw_mbs;
-      offset = idx;
-    }
-
-  if (BE (offset != 0, 1))
-    {
-      /* Should the already checked characters be kept?  */
-      if (BE (offset < pstr->valid_raw_len, 1))
-       {
-         /* Yes, move them to the front of the buffer.  */
-#ifdef RE_ENABLE_I18N
-         if (BE (pstr->offsets_needed, 0))
-           {
-             Idx low = 0, high = pstr->valid_len, mid;
-             do
-               {
-                 mid = (high + low) / 2;
-                 if (pstr->offsets[mid] > offset)
-                   high = mid;
-                 else if (pstr->offsets[mid] < offset)
-                   low = mid + 1;
-                 else
-                   break;
-               }
-             while (low < high);
-             if (pstr->offsets[mid] < offset)
-               ++mid;
-             pstr->tip_context = re_string_context_at (pstr, mid - 1,
-                                                       eflags);
-             /* This can be quite complicated, so handle specially
-                only the common and easy case where the character with
-                different length representation of lower and upper
-                case is present at or after offset.  */
-             if (pstr->valid_len > offset
-                 && mid == offset && pstr->offsets[mid] == offset)
-               {
-                 memmove (pstr->wcs, pstr->wcs + offset,
-                          (pstr->valid_len - offset) * sizeof (wint_t));
-                 memmove (pstr->mbs, pstr->mbs + offset, pstr->valid_len - 
offset);
-                 pstr->valid_len -= offset;
-                 pstr->valid_raw_len -= offset;
-                 for (low = 0; low < pstr->valid_len; low++)
-                   pstr->offsets[low] = pstr->offsets[low + offset] - offset;
-               }
-             else
-               {
-                 /* Otherwise, just find out how long the partial multibyte
-                    character at offset is and fill it with WEOF/255.  */
-                 pstr->len = pstr->raw_len - idx + offset;
-                 pstr->stop = pstr->raw_stop - idx + offset;
-                 pstr->offsets_needed = 0;
-                 while (mid > 0 && pstr->offsets[mid - 1] == offset)
-                   --mid;
-                 while (mid < pstr->valid_len)
-                   if (pstr->wcs[mid] != WEOF)
-                     break;
-                   else
-                     ++mid;
-                 if (mid == pstr->valid_len)
-                   pstr->valid_len = 0;
-                 else
-                   {
-                     pstr->valid_len = pstr->offsets[mid] - offset;
-                     if (pstr->valid_len)
-                       {
-                         for (low = 0; low < pstr->valid_len; ++low)
-                           pstr->wcs[low] = WEOF;
-                         memset (pstr->mbs, 255, pstr->valid_len);
-                       }
-                   }
-                 pstr->valid_raw_len = pstr->valid_len;
-               }
-           }
-         else
-#endif
-           {
-             pstr->tip_context = re_string_context_at (pstr, offset - 1,
-                                                       eflags);
-#ifdef RE_ENABLE_I18N
-             if (pstr->mb_cur_max > 1)
-               memmove (pstr->wcs, pstr->wcs + offset,
-                        (pstr->valid_len - offset) * sizeof (wint_t));
-#endif /* RE_ENABLE_I18N */
-             if (BE (pstr->mbs_allocated, 0))
-               memmove (pstr->mbs, pstr->mbs + offset,
-                        pstr->valid_len - offset);
-             pstr->valid_len -= offset;
-             pstr->valid_raw_len -= offset;
-#if DEBUG
-             assert (pstr->valid_len > 0);
-#endif
-           }
-       }
-      else
-       {
-#ifdef RE_ENABLE_I18N
-         /* No, skip all characters until IDX.  */
-         Idx prev_valid_len = pstr->valid_len;
-
-         if (BE (pstr->offsets_needed, 0))
-           {
-             pstr->len = pstr->raw_len - idx + offset;
-             pstr->stop = pstr->raw_stop - idx + offset;
-             pstr->offsets_needed = 0;
-           }
-#endif
-         pstr->valid_len = 0;
-#ifdef RE_ENABLE_I18N
-         if (pstr->mb_cur_max > 1)
-           {
-             Idx wcs_idx;
-             wint_t wc = WEOF;
-
-             if (pstr->is_utf8)
-               {
-                 const unsigned char *raw, *p, *end;
-
-                 /* Special case UTF-8.  Multi-byte chars start with any
-                    byte other than 0x80 - 0xbf.  */
-                 raw = pstr->raw_mbs + pstr->raw_mbs_idx;
-                 end = raw + (offset - pstr->mb_cur_max);
-                 if (end < pstr->raw_mbs)
-                   end = pstr->raw_mbs;
-                 p = raw + offset - 1;
-#ifdef _LIBC
-                 /* We know the wchar_t encoding is UCS4, so for the simple
-                    case, ASCII characters, skip the conversion step.  */
-                 if (isascii (*p) && BE (pstr->trans == NULL, 1))
-                   {
-                     memset (&pstr->cur_state, '\0', sizeof (mbstate_t));
-                     /* pstr->valid_len = 0; */
-                     wc = (wchar_t) *p;
-                   }
-                 else
-#endif
-                   for (; p >= end; --p)
-                     if ((*p & 0xc0) != 0x80)
-                       {
-                         mbstate_t cur_state;
-                         wchar_t wc2;
-                         Idx mlen = raw + pstr->len - p;
-                         unsigned char buf[6];
-                         size_t mbclen;
-
-                         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;
-                           }
-                         /* 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 *) pp, mlen,
-                                             &cur_state);
-                         if (raw + offset - p <= mbclen
-                             && mbclen < (size_t) -2)
-                           {
-                             memset (&pstr->cur_state, '\0',
-                                     sizeof (mbstate_t));
-                             pstr->valid_len = mbclen - (raw + offset - p);
-                             wc = wc2;
-                           }
-                         break;
-                       }
-               }
-
-             if (wc == WEOF)
-               pstr->valid_len = re_string_skip_chars (pstr, idx, &wc) - idx;
-             if (wc == WEOF)
-               pstr->tip_context
-                 = re_string_context_at (pstr, prev_valid_len - 1, eflags);
-             else
-               pstr->tip_context = ((BE (pstr->word_ops_used != 0, 0)
-                                     && IS_WIDE_WORD_CHAR (wc))
-                                    ? CONTEXT_WORD
-                                    : ((IS_WIDE_NEWLINE (wc)
-                                        && pstr->newline_anchor)
-                                       ? CONTEXT_NEWLINE : 0));
-             if (BE (pstr->valid_len, 0))
-               {
-                 for (wcs_idx = 0; wcs_idx < pstr->valid_len; ++wcs_idx)
-                   pstr->wcs[wcs_idx] = WEOF;
-                 if (pstr->mbs_allocated)
-                   memset (pstr->mbs, 255, pstr->valid_len);
-               }
-             pstr->valid_raw_len = pstr->valid_len;
-           }
-         else
-#endif /* RE_ENABLE_I18N */
-           {
-             int c = pstr->raw_mbs[pstr->raw_mbs_idx + offset - 1];
-             pstr->valid_raw_len = 0;
-             if (pstr->trans)
-               c = pstr->trans[c];
-             pstr->tip_context = (bitset_contain (pstr->word_char, c)
-                                  ? CONTEXT_WORD
-                                  : ((IS_NEWLINE (c) && pstr->newline_anchor)
-                                     ? CONTEXT_NEWLINE : 0));
-           }
-       }
-      if (!BE (pstr->mbs_allocated, 0))
-       pstr->mbs += offset;
-    }
-  pstr->raw_mbs_idx = idx;
-  pstr->len -= offset;
-  pstr->stop -= offset;
-
-  /* Then build the buffers.  */
-#ifdef RE_ENABLE_I18N
-  if (pstr->mb_cur_max > 1)
-    {
-      if (pstr->icase)
-       {
-         reg_errcode_t ret = build_wcs_upper_buffer (pstr);
-         if (BE (ret != REG_NOERROR, 0))
-           return ret;
-       }
-      else
-       build_wcs_buffer (pstr);
-    }
-  else
-#endif /* RE_ENABLE_I18N */
-    if (BE (pstr->mbs_allocated, 0))
-      {
-       if (pstr->icase)
-         build_upper_buffer (pstr);
-       else if (pstr->trans != NULL)
-         re_string_translate_buffer (pstr);
-      }
-    else
-      pstr->valid_len = pstr->len;
-
-  pstr->cur_idx = 0;
-  return REG_NOERROR;
-}
-
-static unsigned char
-internal_function __attribute__ ((pure))
-re_string_peek_byte_case (const re_string_t *pstr, Idx idx)
-{
-  int ch;
-  Idx off;
-
-  /* Handle the common (easiest) cases first.  */
-  if (BE (!pstr->mbs_allocated, 1))
-    return re_string_peek_byte (pstr, idx);
-
-#ifdef RE_ENABLE_I18N
-  if (pstr->mb_cur_max > 1
-      && ! re_string_is_single_byte_char (pstr, pstr->cur_idx + idx))
-    return re_string_peek_byte (pstr, idx);
-#endif
-
-  off = pstr->cur_idx + idx;
-#ifdef RE_ENABLE_I18N
-  if (pstr->offsets_needed)
-    off = pstr->offsets[off];
-#endif
-
-  ch = pstr->raw_mbs[pstr->raw_mbs_idx + off];
-
-#ifdef RE_ENABLE_I18N
-  /* Ensure that e.g. for tr_TR.UTF-8 BACKSLASH DOTLESS SMALL LETTER I
-     this function returns CAPITAL LETTER I instead of first byte of
-     DOTLESS SMALL LETTER I.  The latter would confuse the parser,
-     since peek_byte_case doesn't advance cur_idx in any way.  */
-  if (pstr->offsets_needed && !isascii (ch))
-    return re_string_peek_byte (pstr, idx);
-#endif
-
-  return ch;
-}
-
-static unsigned char
-internal_function
-re_string_fetch_byte_case (re_string_t *pstr)
-{
-  if (BE (!pstr->mbs_allocated, 1))
-    return re_string_fetch_byte (pstr);
-
-#ifdef RE_ENABLE_I18N
-  if (pstr->offsets_needed)
-    {
-      Idx off;
-      int ch;
-
-      /* For tr_TR.UTF-8 [[:islower:]] there is
-        [[: CAPITAL LETTER I WITH DOT lower:]] in mbs.  Skip
-        in that case the whole multi-byte character and return
-        the original letter.  On the other side, with
-        [[: DOTLESS SMALL LETTER I return [[:I, as doing
-        anything else would complicate things too much.  */
-
-      if (!re_string_first_byte (pstr, pstr->cur_idx))
-       return re_string_fetch_byte (pstr);
-
-      off = pstr->offsets[pstr->cur_idx];
-      ch = pstr->raw_mbs[pstr->raw_mbs_idx + off];
-
-      if (! isascii (ch))
-       return re_string_fetch_byte (pstr);
-
-      re_string_skip_bytes (pstr,
-                           re_string_char_size_at (pstr, pstr->cur_idx));
-      return ch;
-    }
-#endif
-
-  return pstr->raw_mbs[pstr->raw_mbs_idx + pstr->cur_idx++];
-}
-
-static void
-internal_function
-re_string_destruct (re_string_t *pstr)
-{
-#ifdef RE_ENABLE_I18N
-  re_free (pstr->wcs);
-  re_free (pstr->offsets);
-#endif /* RE_ENABLE_I18N  */
-  if (pstr->mbs_allocated)
-    re_free (pstr->mbs);
-}
-
-/* Return the context at IDX in INPUT.  */
-
-static unsigned int
-internal_function
-re_string_context_at (const re_string_t *input, Idx idx, int eflags)
-{
-  int c;
-  if (BE (! REG_VALID_INDEX (idx), 0))
-    /* In this case, we use the value stored in input->tip_context,
-       since we can't know the character in input->mbs[-1] here.  */
-    return input->tip_context;
-  if (BE (idx == input->len, 0))
-    return ((eflags & REG_NOTEOL) ? CONTEXT_ENDBUF
-           : CONTEXT_NEWLINE | CONTEXT_ENDBUF);
-#ifdef RE_ENABLE_I18N
-  if (input->mb_cur_max > 1)
-    {
-      wint_t wc;
-      Idx wc_idx = idx;
-      while(input->wcs[wc_idx] == WEOF)
-       {
-#ifdef DEBUG
-         /* It must not happen.  */
-         assert (REG_VALID_INDEX (wc_idx));
-#endif
-         --wc_idx;
-         if (! REG_VALID_INDEX (wc_idx))
-           return input->tip_context;
-       }
-      wc = input->wcs[wc_idx];
-      if (BE (input->word_ops_used != 0, 0) && IS_WIDE_WORD_CHAR (wc))
-       return CONTEXT_WORD;
-      return (IS_WIDE_NEWLINE (wc) && input->newline_anchor
-             ? CONTEXT_NEWLINE : 0);
-    }
-  else
-#endif
-    {
-      c = re_string_byte_at (input, idx);
-      if (bitset_contain (input->word_char, c))
-       return CONTEXT_WORD;
-      return IS_NEWLINE (c) && input->newline_anchor ? CONTEXT_NEWLINE : 0;
-    }
-}
-
-/* Functions for set operation.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-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) && (MALLOC_0_IS_NONNULL || size != 0))
-    return REG_ESPACE;
-  return REG_NOERROR;
-}
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_node_set_init_1 (re_node_set *set, Idx elem)
-{
-  set->alloc = 1;
-  set->nelem = 1;
-  set->elems = re_malloc (Idx, 1);
-  if (BE (set->elems == NULL, 0))
-    {
-      set->alloc = set->nelem = 0;
-      return REG_ESPACE;
-    }
-  set->elems[0] = elem;
-  return REG_NOERROR;
-}
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_node_set_init_2 (re_node_set *set, Idx elem1, Idx elem2)
-{
-  set->alloc = 2;
-  set->elems = re_malloc (Idx, 2);
-  if (BE (set->elems == NULL, 0))
-    return REG_ESPACE;
-  if (elem1 == elem2)
-    {
-      set->nelem = 1;
-      set->elems[0] = elem1;
-    }
-  else
-    {
-      set->nelem = 2;
-      if (elem1 < elem2)
-       {
-         set->elems[0] = elem1;
-         set->elems[1] = elem2;
-       }
-      else
-       {
-         set->elems[0] = elem2;
-         set->elems[1] = elem1;
-       }
-    }
-  return REG_NOERROR;
-}
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_node_set_init_copy (re_node_set *dest, const re_node_set *src)
-{
-  dest->nelem = src->nelem;
-  if (src->nelem > 0)
-    {
-      dest->alloc = dest->nelem;
-      dest->elems = re_malloc (Idx, dest->alloc);
-      if (BE (dest->elems == NULL, 0))
-       {
-         dest->alloc = dest->nelem = 0;
-         return REG_ESPACE;
-       }
-      memcpy (dest->elems, src->elems, src->nelem * sizeof (Idx));
-    }
-  else
-    re_node_set_init_empty (dest);
-  return REG_NOERROR;
-}
-
-/* Calculate the intersection of the sets SRC1 and SRC2. And merge it to
-   DEST. Return value indicate the error code or REG_NOERROR if succeeded.
-   Note: We assume dest->elems is NULL, when dest->alloc is 0.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
-                          const re_node_set *src2)
-{
-  Idx i1, i2, is, id, delta, sbase;
-  if (src1->nelem == 0 || src2->nelem == 0)
-    return REG_NOERROR;
-
-  /* We need dest->nelem + 2 * elems_in_intersection; this is a
-     conservative estimate.  */
-  if (src1->nelem + src2->nelem + dest->nelem > dest->alloc)
-    {
-      Idx new_alloc = src1->nelem + src2->nelem + dest->alloc;
-      Idx *new_elems = re_realloc (dest->elems, Idx, new_alloc);
-      if (BE (new_elems == NULL, 0))
-       return REG_ESPACE;
-      dest->elems = new_elems;
-      dest->alloc = new_alloc;
-    }
-
-  /* Find the items in the intersection of SRC1 and SRC2, and copy
-     into the top of DEST those that are not already in DEST itself.  */
-  sbase = dest->nelem + src1->nelem + src2->nelem;
-  i1 = src1->nelem - 1;
-  i2 = src2->nelem - 1;
-  id = dest->nelem - 1;
-  for (;;)
-    {
-      if (src1->elems[i1] == src2->elems[i2])
-       {
-         /* Try to find the item in DEST.  Maybe we could binary search?  */
-         while (REG_VALID_INDEX (id) && dest->elems[id] > src1->elems[i1])
-           --id;
-
-          if (! REG_VALID_INDEX (id) || dest->elems[id] != src1->elems[i1])
-            dest->elems[--sbase] = src1->elems[i1];
-
-         if (! REG_VALID_INDEX (--i1) || ! REG_VALID_INDEX (--i2))
-           break;
-       }
-
-      /* Lower the highest of the two items.  */
-      else if (src1->elems[i1] < src2->elems[i2])
-       {
-         if (! REG_VALID_INDEX (--i2))
-           break;
-       }
-      else
-       {
-         if (! REG_VALID_INDEX (--i1))
-           break;
-       }
-    }
-
-  id = dest->nelem - 1;
-  is = dest->nelem + src1->nelem + src2->nelem - 1;
-  delta = is - sbase + 1;
-
-  /* Now copy.  When DELTA becomes zero, the remaining
-     DEST elements are already in place; this is more or
-     less the same loop that is in re_node_set_merge.  */
-  dest->nelem += delta;
-  if (delta > 0 && REG_VALID_INDEX (id))
-    for (;;)
-      {
-       if (dest->elems[is] > dest->elems[id])
-         {
-           /* Copy from the top.  */
-           dest->elems[id + delta--] = dest->elems[is--];
-           if (delta == 0)
-             break;
-         }
-       else
-         {
-           /* Slide from the bottom.  */
-           dest->elems[id + delta] = dest->elems[id];
-           if (! REG_VALID_INDEX (--id))
-             break;
-         }
-      }
-
-  /* Copy remaining SRC elements.  */
-  memcpy (dest->elems, dest->elems + sbase, delta * sizeof (Idx));
-
-  return REG_NOERROR;
-}
-
-/* Calculate the union set of the sets SRC1 and SRC2. And store it to
-   DEST. Return value indicate the error code or REG_NOERROR if succeeded.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_node_set_init_union (re_node_set *dest, const re_node_set *src1,
-                       const re_node_set *src2)
-{
-  Idx i1, i2, id;
-  if (src1 != NULL && src1->nelem > 0 && src2 != NULL && src2->nelem > 0)
-    {
-      dest->alloc = src1->nelem + src2->nelem;
-      dest->elems = re_malloc (Idx, dest->alloc);
-      if (BE (dest->elems == NULL, 0))
-       return REG_ESPACE;
-    }
-  else
-    {
-      if (src1 != NULL && src1->nelem > 0)
-       return re_node_set_init_copy (dest, src1);
-      else if (src2 != NULL && src2->nelem > 0)
-       return re_node_set_init_copy (dest, src2);
-      else
-       re_node_set_init_empty (dest);
-      return REG_NOERROR;
-    }
-  for (i1 = i2 = id = 0 ; i1 < src1->nelem && i2 < src2->nelem ;)
-    {
-      if (src1->elems[i1] > src2->elems[i2])
-       {
-         dest->elems[id++] = src2->elems[i2++];
-         continue;
-       }
-      if (src1->elems[i1] == src2->elems[i2])
-       ++i2;
-      dest->elems[id++] = src1->elems[i1++];
-    }
-  if (i1 < src1->nelem)
-    {
-      memcpy (dest->elems + id, src1->elems + i1,
-            (src1->nelem - i1) * sizeof (Idx));
-      id += src1->nelem - i1;
-    }
-  else if (i2 < src2->nelem)
-    {
-      memcpy (dest->elems + id, src2->elems + i2,
-            (src2->nelem - i2) * sizeof (Idx));
-      id += src2->nelem - i2;
-    }
-  dest->nelem = id;
-  return REG_NOERROR;
-}
-
-/* Calculate the union set of the sets DEST and SRC. And store it to
-   DEST. Return value indicate the error code or REG_NOERROR if succeeded.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-re_node_set_merge (re_node_set *dest, const re_node_set *src)
-{
-  Idx is, id, sbase, delta;
-  if (src == NULL || src->nelem == 0)
-    return REG_NOERROR;
-  if (dest->alloc < 2 * src->nelem + dest->nelem)
-    {
-      Idx new_alloc = 2 * (src->nelem + dest->alloc);
-      Idx *new_buffer = re_realloc (dest->elems, Idx, new_alloc);
-      if (BE (new_buffer == NULL, 0))
-       return REG_ESPACE;
-      dest->elems = new_buffer;
-      dest->alloc = new_alloc;
-    }
-
-  if (BE (dest->nelem == 0, 0))
-    {
-      dest->nelem = src->nelem;
-      memcpy (dest->elems, src->elems, src->nelem * sizeof (Idx));
-      return REG_NOERROR;
-    }
-
-  /* Copy into the top of DEST the items of SRC that are not
-     found in DEST.  Maybe we could binary search in DEST?  */
-  for (sbase = dest->nelem + 2 * src->nelem,
-       is = src->nelem - 1, id = dest->nelem - 1;
-       REG_VALID_INDEX (is) && REG_VALID_INDEX (id); )
-    {
-      if (dest->elems[id] == src->elems[is])
-       is--, id--;
-      else if (dest->elems[id] < src->elems[is])
-       dest->elems[--sbase] = src->elems[is--];
-      else /* if (dest->elems[id] > src->elems[is]) */
-       --id;
-    }
-
-  if (REG_VALID_INDEX (is))
-    {
-      /* If DEST is exhausted, the remaining items of SRC must be unique.  */
-      sbase -= is + 1;
-      memcpy (dest->elems + sbase, src->elems, (is + 1) * sizeof (Idx));
-    }
-
-  id = dest->nelem - 1;
-  is = dest->nelem + 2 * src->nelem - 1;
-  delta = is - sbase + 1;
-  if (delta == 0)
-    return REG_NOERROR;
-
-  /* Now copy.  When DELTA becomes zero, the remaining
-     DEST elements are already in place.  */
-  dest->nelem += delta;
-  for (;;)
-    {
-      if (dest->elems[is] > dest->elems[id])
-       {
-         /* Copy from the top.  */
-         dest->elems[id + delta--] = dest->elems[is--];
-         if (delta == 0)
-           break;
-       }
-      else
-       {
-         /* Slide from the bottom.  */
-         dest->elems[id + delta] = dest->elems[id];
-         if (! REG_VALID_INDEX (--id))
-           {
-             /* Copy remaining SRC elements.  */
-             memcpy (dest->elems, dest->elems + sbase,
-                     delta * sizeof (Idx));
-             break;
-           }
-       }
-    }
-
-  return REG_NOERROR;
-}
-
-/* Insert the new element ELEM to the re_node_set* SET.
-   SET should not already have ELEM.
-   Return true if successful.  */
-
-static bool
-internal_function __attribute_warn_unused_result__
-re_node_set_insert (re_node_set *set, Idx elem)
-{
-  Idx idx;
-  /* In case the set is empty.  */
-  if (set->alloc == 0)
-    return BE (re_node_set_init_1 (set, elem) == REG_NOERROR, 1);
-
-  if (BE (set->nelem, 0) == 0)
-    {
-      /* We already guaranteed above that set->alloc != 0.  */
-      set->elems[0] = elem;
-      ++set->nelem;
-      return true;
-    }
-
-  /* Realloc if we need.  */
-  if (set->alloc == set->nelem)
-    {
-      Idx *new_elems;
-      set->alloc = set->alloc * 2;
-      new_elems = re_realloc (set->elems, Idx, set->alloc);
-      if (BE (new_elems == NULL, 0))
-       return false;
-      set->elems = new_elems;
-    }
-
-  /* Move the elements which follows the new element.  Test the
-     first element separately to skip a check in the inner loop.  */
-  if (elem < set->elems[0])
-    {
-      idx = 0;
-      for (idx = set->nelem; idx > 0; idx--)
-       set->elems[idx] = set->elems[idx - 1];
-    }
-  else
-    {
-      for (idx = set->nelem; set->elems[idx - 1] > elem; idx--)
-       set->elems[idx] = set->elems[idx - 1];
-    }
-
-  /* Insert the new element.  */
-  set->elems[idx] = elem;
-  ++set->nelem;
-  return true;
-}
-
-/* Insert the new element ELEM to the re_node_set* SET.
-   SET should not already have any element greater than or equal to ELEM.
-   Return true if successful.  */
-
-static bool
-internal_function __attribute_warn_unused_result__
-re_node_set_insert_last (re_node_set *set, Idx elem)
-{
-  /* Realloc if we need.  */
-  if (set->alloc == set->nelem)
-    {
-      Idx *new_elems;
-      set->alloc = (set->alloc + 1) * 2;
-      new_elems = re_realloc (set->elems, Idx, set->alloc);
-      if (BE (new_elems == NULL, 0))
-       return false;
-      set->elems = new_elems;
-    }
-
-  /* Insert the new element.  */
-  set->elems[set->nelem++] = elem;
-  return true;
-}
-
-/* Compare two node sets SET1 and SET2.
-   Return true if SET1 and SET2 are equivalent.  */
-
-static bool
-internal_function __attribute__ ((pure))
-re_node_set_compare (const re_node_set *set1, const re_node_set *set2)
-{
-  Idx i;
-  if (set1 == NULL || set2 == NULL || set1->nelem != set2->nelem)
-    return false;
-  for (i = set1->nelem ; REG_VALID_INDEX (--i) ; )
-    if (set1->elems[i] != set2->elems[i])
-      return false;
-  return true;
-}
-
-/* Return (idx + 1) if SET contains the element ELEM, return 0 otherwise.  */
-
-static Idx
-internal_function __attribute__ ((pure))
-re_node_set_contains (const re_node_set *set, Idx elem)
-{
-  __re_size_t idx, right, mid;
-  if (! REG_VALID_NONZERO_INDEX (set->nelem))
-    return 0;
-
-  /* Binary search the element.  */
-  idx = 0;
-  right = set->nelem - 1;
-  while (idx < right)
-    {
-      mid = (idx + right) / 2;
-      if (set->elems[mid] < elem)
-       idx = mid + 1;
-      else
-       right = mid;
-    }
-  return set->elems[idx] == elem ? idx + 1 : 0;
-}
-
-static void
-internal_function
-re_node_set_remove_at (re_node_set *set, Idx idx)
-{
-  if (idx < 0 || idx >= set->nelem)
-    return;
-  --set->nelem;
-  for (; idx < set->nelem; idx++)
-    set->elems[idx] = set->elems[idx + 1];
-}
-
-
-/* Add the token TOKEN to dfa->nodes, and return the index of the token.
-   Or return REG_MISSING if an error occurred.  */
-
-static Idx
-internal_function
-re_dfa_add_node (re_dfa_t *dfa, re_token_t token)
-{
-  if (BE (dfa->nodes_len >= dfa->nodes_alloc, 0))
-    {
-      size_t new_nodes_alloc = dfa->nodes_alloc * 2;
-      Idx *new_nexts, *new_indices;
-      re_node_set *new_edests, *new_eclosures;
-      re_token_t *new_nodes;
-
-      /* 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);
-      if (BE (new_nodes == NULL, 0))
-       return REG_MISSING;
-      dfa->nodes = new_nodes;
-      new_nexts = re_realloc (dfa->nexts, Idx, new_nodes_alloc);
-      new_indices = re_realloc (dfa->org_indices, Idx, new_nodes_alloc);
-      new_edests = re_realloc (dfa->edests, re_node_set, new_nodes_alloc);
-      new_eclosures = re_realloc (dfa->eclosures, re_node_set, 
new_nodes_alloc);
-      if (BE (new_nexts == NULL || new_indices == NULL
-             || new_edests == NULL || new_eclosures == NULL, 0))
-       return REG_MISSING;
-      dfa->nexts = new_nexts;
-      dfa->org_indices = new_indices;
-      dfa->edests = new_edests;
-      dfa->eclosures = new_eclosures;
-      dfa->nodes_alloc = new_nodes_alloc;
-    }
-  dfa->nodes[dfa->nodes_len] = token;
-  dfa->nodes[dfa->nodes_len].constraint = 0;
-#ifdef RE_ENABLE_I18N
-  dfa->nodes[dfa->nodes_len].accept_mb =
-    ((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);
-  re_node_set_init_empty (dfa->eclosures + dfa->nodes_len);
-  return dfa->nodes_len++;
-}
-
-static re_hashval_t
-internal_function
-calc_state_hash (const re_node_set *nodes, unsigned int context)
-{
-  re_hashval_t hash = nodes->nelem + context;
-  Idx i;
-  for (i = 0 ; i < nodes->nelem ; i++)
-    hash += nodes->elems[i];
-  return hash;
-}
-
-/* Search for the state whose node_set is equivalent to NODES.
-   Return the pointer to the state, if we found it in the DFA.
-   Otherwise create the new one and return it.  In case of an error
-   return NULL and set the error code in ERR.
-   Note: - We assume NULL as the invalid state, then it is possible that
-          return value is NULL and ERR is REG_NOERROR.
-        - We never return non-NULL value in case of any errors, it is for
-          optimization.  */
-
-static re_dfastate_t *
-internal_function __attribute_warn_unused_result__
-re_acquire_state (reg_errcode_t *err, const re_dfa_t *dfa,
-                 const re_node_set *nodes)
-{
-  re_hashval_t hash;
-  re_dfastate_t *new_state;
-  struct re_state_table_entry *spot;
-  Idx i;
-#ifdef lint
-  /* Suppress bogus uninitialized-variable warnings.  */
-  *err = REG_NOERROR;
-#endif
-  if (BE (nodes->nelem == 0, 0))
-    {
-      *err = REG_NOERROR;
-      return NULL;
-    }
-  hash = calc_state_hash (nodes, 0);
-  spot = dfa->state_table + (hash & dfa->state_hash_mask);
-
-  for (i = 0 ; i < spot->num ; i++)
-    {
-      re_dfastate_t *state = spot->array[i];
-      if (hash != state->hash)
-       continue;
-      if (re_node_set_compare (&state->nodes, nodes))
-       return state;
-    }
-
-  /* There are no appropriate state in the dfa, create the new one.  */
-  new_state = create_ci_newstate (dfa, nodes, hash);
-  if (BE (new_state == NULL, 0))
-    *err = REG_ESPACE;
-
-  return new_state;
-}
-
-/* Search for the state whose node_set is equivalent to NODES and
-   whose context is equivalent to CONTEXT.
-   Return the pointer to the state, if we found it in the DFA.
-   Otherwise create the new one and return it.  In case of an error
-   return NULL and set the error code in ERR.
-   Note: - We assume NULL as the invalid state, then it is possible that
-          return value is NULL and ERR is REG_NOERROR.
-        - We never return non-NULL value in case of any errors, it is for
-          optimization.  */
-
-static re_dfastate_t *
-internal_function __attribute_warn_unused_result__
-re_acquire_state_context (reg_errcode_t *err, const re_dfa_t *dfa,
-                         const re_node_set *nodes, unsigned int context)
-{
-  re_hashval_t hash;
-  re_dfastate_t *new_state;
-  struct re_state_table_entry *spot;
-  Idx i;
-#ifdef lint
-  /* Suppress bogus uninitialized-variable warnings.  */
-  *err = REG_NOERROR;
-#endif
-  if (nodes->nelem == 0)
-    {
-      *err = REG_NOERROR;
-      return NULL;
-    }
-  hash = calc_state_hash (nodes, context);
-  spot = dfa->state_table + (hash & dfa->state_hash_mask);
-
-  for (i = 0 ; i < spot->num ; i++)
-    {
-      re_dfastate_t *state = spot->array[i];
-      if (state->hash == hash
-         && state->context == context
-         && re_node_set_compare (state->entrance_nodes, nodes))
-       return state;
-    }
-  /* 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;
-
-  return new_state;
-}
-
-/* Finish initialization of the new state NEWSTATE, and using its hash value
-   HASH put in the appropriate bucket of DFA's state table.  Return value
-   indicates the error code if failed.  */
-
-static reg_errcode_t
-__attribute_warn_unused_result__
-register_state (const re_dfa_t *dfa, re_dfastate_t *newstate,
-               re_hashval_t hash)
-{
-  struct re_state_table_entry *spot;
-  reg_errcode_t err;
-  Idx i;
-
-  newstate->hash = hash;
-  err = re_node_set_alloc (&newstate->non_eps_nodes, newstate->nodes.nelem);
-  if (BE (err != REG_NOERROR, 0))
-    return REG_ESPACE;
-  for (i = 0; i < newstate->nodes.nelem; i++)
-    {
-      Idx elem = newstate->nodes.elems[i];
-      if (!IS_EPSILON_NODE (dfa->nodes[elem].type))
-       if (! re_node_set_insert_last (&newstate->non_eps_nodes, elem))
-         return REG_ESPACE;
-    }
-
-  spot = dfa->state_table + (hash & dfa->state_hash_mask);
-  if (BE (spot->alloc <= spot->num, 0))
-    {
-      Idx new_alloc = 2 * spot->num + 2;
-      re_dfastate_t **new_array = re_realloc (spot->array, re_dfastate_t *,
-                                             new_alloc);
-      if (BE (new_array == NULL, 0))
-       return REG_ESPACE;
-      spot->array = new_array;
-      spot->alloc = new_alloc;
-    }
-  spot->array[spot->num++] = newstate;
-  return REG_NOERROR;
-}
-
-static void
-free_state (re_dfastate_t *state)
-{
-  re_node_set_free (&state->non_eps_nodes);
-  re_node_set_free (&state->inveclosure);
-  if (state->entrance_nodes != &state->nodes)
-    {
-      re_node_set_free (state->entrance_nodes);
-      re_free (state->entrance_nodes);
-    }
-  re_node_set_free (&state->nodes);
-  re_free (state->word_trtable);
-  re_free (state->trtable);
-  re_free (state);
-}
-
-/* Create the new state which is independent of contexts.
-   Return the new state if succeeded, otherwise return NULL.  */
-
-static re_dfastate_t *
-internal_function __attribute_warn_unused_result__
-create_ci_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
-                   re_hashval_t hash)
-{
-  Idx i;
-  reg_errcode_t err;
-  re_dfastate_t *newstate;
-
-  newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
-  if (BE (newstate == NULL, 0))
-    return NULL;
-  err = re_node_set_init_copy (&newstate->nodes, nodes);
-  if (BE (err != REG_NOERROR, 0))
-    {
-      re_free (newstate);
-      return NULL;
-    }
-
-  newstate->entrance_nodes = &newstate->nodes;
-  for (i = 0 ; i < nodes->nelem ; i++)
-    {
-      re_token_t *node = dfa->nodes + nodes->elems[i];
-      re_token_type_t type = node->type;
-      if (type == CHARACTER && !node->constraint)
-       continue;
-#ifdef RE_ENABLE_I18N
-      newstate->accept_mb |= node->accept_mb;
-#endif /* RE_ENABLE_I18N */
-
-      /* If the state has the halt node, the state is a halt state.  */
-      if (type == END_OF_RE)
-       newstate->halt = 1;
-      else if (type == OP_BACK_REF)
-       newstate->has_backref = 1;
-      else if (type == ANCHOR || node->constraint)
-       newstate->has_constraint = 1;
-    }
-  err = register_state (dfa, newstate, hash);
-  if (BE (err != REG_NOERROR, 0))
-    {
-      free_state (newstate);
-      newstate = NULL;
-    }
-  return newstate;
-}
-
-/* Create the new state which is depend on the context CONTEXT.
-   Return the new state if succeeded, otherwise return NULL.  */
-
-static re_dfastate_t *
-internal_function __attribute_warn_unused_result__
-create_cd_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
-                   unsigned int context, re_hashval_t hash)
-{
-  Idx i, nctx_nodes = 0;
-  reg_errcode_t err;
-  re_dfastate_t *newstate;
-
-  newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
-  if (BE (newstate == NULL, 0))
-    return NULL;
-  err = re_node_set_init_copy (&newstate->nodes, nodes);
-  if (BE (err != REG_NOERROR, 0))
-    {
-      re_free (newstate);
-      return NULL;
-    }
-
-  newstate->context = context;
-  newstate->entrance_nodes = &newstate->nodes;
-
-  for (i = 0 ; i < nodes->nelem ; i++)
-    {
-      re_token_t *node = dfa->nodes + nodes->elems[i];
-      re_token_type_t type = node->type;
-      unsigned int constraint = node->constraint;
-
-      if (type == CHARACTER && !constraint)
-       continue;
-#ifdef RE_ENABLE_I18N
-      newstate->accept_mb |= node->accept_mb;
-#endif /* RE_ENABLE_I18N */
-
-      /* If the state has the halt node, the state is a halt state.  */
-      if (type == END_OF_RE)
-       newstate->halt = 1;
-      else if (type == OP_BACK_REF)
-       newstate->has_backref = 1;
-
-      if (constraint)
-       {
-         if (newstate->entrance_nodes == &newstate->nodes)
-           {
-             newstate->entrance_nodes = re_malloc (re_node_set, 1);
-             if (BE (newstate->entrance_nodes == NULL, 0))
-               {
-                 free_state (newstate);
-                 return NULL;
-               }
-             if (re_node_set_init_copy (newstate->entrance_nodes, nodes)
-                 != REG_NOERROR)
-               return NULL;
-             nctx_nodes = 0;
-             newstate->has_constraint = 1;
-           }
-
-         if (NOT_SATISFY_PREV_CONSTRAINT (constraint,context))
-           {
-             re_node_set_remove_at (&newstate->nodes, i - nctx_nodes);
-             ++nctx_nodes;
-           }
-       }
-    }
-  err = register_state (dfa, newstate, hash);
-  if (BE (err != REG_NOERROR, 0))
-    {
-      free_state (newstate);
-      newstate = NULL;
-    }
-  return  newstate;
-}
diff --git a/grub-core/gnulib/regex_internal.h 
b/grub-core/gnulib/regex_internal.h
deleted file mode 100644
index c467b2907..000000000
--- a/grub-core/gnulib/regex_internal.h
+++ /dev/null
@@ -1,873 +0,0 @@
-/* Extended regular expression matching and search library.
-   Copyright (C) 2002-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Isamu Hasegawa <address@hidden>.
-
-   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.
-
-   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.
-
-   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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <langinfo.h>
-#include <locale.h>
-#include <wchar.h>
-#include <wctype.h>
-#include <stdbool.h>
-#include <stdint.h>
-#if defined _LIBC
-# include <bits/libc-lock.h>
-#else
-# define __libc_lock_init(NAME) do { } while (0)
-# define __libc_lock_lock(NAME) do { } while (0)
-# define __libc_lock_unlock(NAME) do { } while (0)
-#endif
-
-/* In case that the system doesn't have isblank().  */
-#if !defined _LIBC && ! (defined isblank || (HAVE_ISBLANK && 
HAVE_DECL_ISBLANK))
-# define isblank(ch) ((ch) == ' ' || (ch) == '\t')
-#endif
-
-#ifdef _LIBC
-# ifndef _RE_DEFINE_LOCALE_FUNCTIONS
-#  define _RE_DEFINE_LOCALE_FUNCTIONS 1
-#   include <locale/localeinfo.h>
-#   include <locale/elem-hash.h>
-#   include <locale/coll-lookup.h>
-# endif
-#endif
-
-/* This is for other GNU distributions with internationalized messages.  */
-#if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
-# include <libintl.h>
-# ifdef _LIBC
-#  undef gettext
-#  define gettext(msgid) \
-  __dcgettext (_libc_intl_domainname, msgid, LC_MESSAGES)
-# endif
-#else
-# define gettext(msgid) (msgid)
-#endif
-
-#ifndef gettext_noop
-/* This define is so xgettext can find the internationalizable
-   strings.  */
-# define gettext_noop(String) String
-#endif
-
-#if (defined MB_CUR_MAX && HAVE_WCTYPE_H && HAVE_ISWCTYPE && HAVE_WCSCOLL) || 
_LIBC
-# define RE_ENABLE_I18N
-#endif
-
-#if __GNUC__ >= 3
-# define BE(expr, val) __builtin_expect (expr, val)
-#else
-# define BE(expr, val) (expr)
-#endif
-
-/* Number of ASCII characters.  */
-#define ASCII_CHARS 0x80
-
-/* Number of single byte characters.  */
-#define SBC_MAX (UCHAR_MAX + 1)
-
-#define COLL_ELEM_LEN_MAX 8
-
-/* The character which represents newline.  */
-#define NEWLINE_CHAR '\n'
-#define WIDE_NEWLINE_CHAR L'\n'
-
-/* 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 __mbrtowc mbrtowc
-# define __wcrtomb wcrtomb
-# define __regfree regfree
-# define attribute_hidden
-#endif /* not _LIBC */
-
-#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)
-
-/* Special return value for internal error.  */
-#define REG_ERROR ((Idx) -2)
-
-/* Test whether N is a valid index, and is not one of the above.  */
-#ifdef _REGEX_LARGE_OFFSETS
-# define REG_VALID_INDEX(n) ((Idx) (n) < REG_ERROR)
-#else
-# define REG_VALID_INDEX(n) (0 <= (n))
-#endif
-
-/* Test whether N is a valid nonzero index.  */
-#ifdef _REGEX_LARGE_OFFSETS
-# define REG_VALID_NONZERO_INDEX(n) ((Idx) ((n) - 1) < (Idx) (REG_ERROR - 1))
-#else
-# define REG_VALID_NONZERO_INDEX(n) (0 < (n))
-#endif
-
-/* A hash value, suitable for computing hash tables.  */
-typedef __re_size_t re_hashval_t;
-
-/* An integer used to represent a set of bits.  It must be unsigned,
-   and must be at least as wide as unsigned int.  */
-typedef unsigned long int bitset_word_t;
-/* All bits set in a bitset_word_t.  */
-#define BITSET_WORD_MAX ULONG_MAX
-
-/* Number of bits in a bitset_word_t.  For portability to hosts with
-   padding bits, do not use '(sizeof (bitset_word_t) * CHAR_BIT)';
-   instead, deduce it directly from BITSET_WORD_MAX.  Avoid
-   greater-than-32-bit integers and unconditional shifts by more than
-   31 bits, as they're not portable.  */
-#if BITSET_WORD_MAX == 0xffffffffUL
-# define BITSET_WORD_BITS 32
-#elif BITSET_WORD_MAX >> 31 >> 4 == 1
-# define BITSET_WORD_BITS 36
-#elif BITSET_WORD_MAX >> 31 >> 16 == 1
-# define BITSET_WORD_BITS 48
-#elif BITSET_WORD_MAX >> 31 >> 28 == 1
-# define BITSET_WORD_BITS 60
-#elif BITSET_WORD_MAX >> 31 >> 31 >> 1 == 1
-# define BITSET_WORD_BITS 64
-#elif BITSET_WORD_MAX >> 31 >> 31 >> 9 == 1
-# define BITSET_WORD_BITS 72
-#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 3 == 1
-# define BITSET_WORD_BITS 128
-#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 7 == 1
-# define BITSET_WORD_BITS 256
-#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 7 > 1
-# define BITSET_WORD_BITS 257 /* any value > SBC_MAX will do here */
-# if BITSET_WORD_BITS <= SBC_MAX
-#  error "Invalid SBC_MAX"
-# endif
-#else
-# error "Add case for new bitset_word_t size"
-#endif
-
-/* Number of bitset_word_t values in a bitset_t.  */
-#define BITSET_WORDS ((SBC_MAX + BITSET_WORD_BITS - 1) / BITSET_WORD_BITS)
-
-typedef bitset_word_t bitset_t[BITSET_WORDS];
-typedef bitset_word_t *re_bitset_ptr_t;
-typedef const bitset_word_t *re_const_bitset_ptr_t;
-
-#define PREV_WORD_CONSTRAINT 0x0001
-#define PREV_NOTWORD_CONSTRAINT 0x0002
-#define NEXT_WORD_CONSTRAINT 0x0004
-#define NEXT_NOTWORD_CONSTRAINT 0x0008
-#define PREV_NEWLINE_CONSTRAINT 0x0010
-#define NEXT_NEWLINE_CONSTRAINT 0x0020
-#define PREV_BEGBUF_CONSTRAINT 0x0040
-#define NEXT_ENDBUF_CONSTRAINT 0x0080
-#define WORD_DELIM_CONSTRAINT 0x0100
-#define NOT_WORD_DELIM_CONSTRAINT 0x0200
-
-typedef enum
-{
-  INSIDE_WORD = PREV_WORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
-  WORD_FIRST = PREV_NOTWORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
-  WORD_LAST = PREV_WORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
-  INSIDE_NOTWORD = PREV_NOTWORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
-  LINE_FIRST = PREV_NEWLINE_CONSTRAINT,
-  LINE_LAST = NEXT_NEWLINE_CONSTRAINT,
-  BUF_FIRST = PREV_BEGBUF_CONSTRAINT,
-  BUF_LAST = NEXT_ENDBUF_CONSTRAINT,
-  WORD_DELIM = WORD_DELIM_CONSTRAINT,
-  NOT_WORD_DELIM = NOT_WORD_DELIM_CONSTRAINT
-} re_context_type;
-
-typedef struct
-{
-  Idx alloc;
-  Idx nelem;
-  Idx *elems;
-} re_node_set;
-
-typedef enum
-{
-  NON_TYPE = 0,
-
-  /* Node type, These are used by token, node, tree.  */
-  CHARACTER = 1,
-  END_OF_RE = 2,
-  SIMPLE_BRACKET = 3,
-  OP_BACK_REF = 4,
-  OP_PERIOD = 5,
-#ifdef RE_ENABLE_I18N
-  COMPLEX_BRACKET = 6,
-  OP_UTF8_PERIOD = 7,
-#endif /* RE_ENABLE_I18N */
-
-  /* We define EPSILON_BIT as a macro so that OP_OPEN_SUBEXP is used
-     when the debugger shows values of this enum type.  */
-#define EPSILON_BIT 8
-  OP_OPEN_SUBEXP = EPSILON_BIT | 0,
-  OP_CLOSE_SUBEXP = EPSILON_BIT | 1,
-  OP_ALT = EPSILON_BIT | 2,
-  OP_DUP_ASTERISK = EPSILON_BIT | 3,
-  ANCHOR = EPSILON_BIT | 4,
-
-  /* Tree type, these are used only by tree. */
-  CONCAT = 16,
-  SUBEXP = 17,
-
-  /* Token type, these are used only by token.  */
-  OP_DUP_PLUS = 18,
-  OP_DUP_QUESTION,
-  OP_OPEN_BRACKET,
-  OP_CLOSE_BRACKET,
-  OP_CHARSET_RANGE,
-  OP_OPEN_DUP_NUM,
-  OP_CLOSE_DUP_NUM,
-  OP_NON_MATCH_LIST,
-  OP_OPEN_COLL_ELEM,
-  OP_CLOSE_COLL_ELEM,
-  OP_OPEN_EQUIV_CLASS,
-  OP_CLOSE_EQUIV_CLASS,
-  OP_OPEN_CHAR_CLASS,
-  OP_CLOSE_CHAR_CLASS,
-  OP_WORD,
-  OP_NOTWORD,
-  OP_SPACE,
-  OP_NOTSPACE,
-  BACK_SLASH
-
-} re_token_type_t;
-
-#ifdef RE_ENABLE_I18N
-typedef struct
-{
-  /* Multibyte characters.  */
-  wchar_t *mbchars;
-
-  /* Collating symbols.  */
-# ifdef _LIBC
-  int32_t *coll_syms;
-# endif
-
-  /* Equivalence classes. */
-# ifdef _LIBC
-  int32_t *equiv_classes;
-# endif
-
-  /* Range expressions. */
-# ifdef _LIBC
-  uint32_t *range_starts;
-  uint32_t *range_ends;
-# else /* not _LIBC */
-  wchar_t *range_starts;
-  wchar_t *range_ends;
-# endif /* not _LIBC */
-
-  /* Character classes. */
-  wctype_t *char_classes;
-
-  /* If this character set is the non-matching list.  */
-  unsigned int non_match : 1;
-
-  /* # of multibyte characters.  */
-  Idx nmbchars;
-
-  /* # of collating symbols.  */
-  Idx ncoll_syms;
-
-  /* # of equivalence classes. */
-  Idx nequiv_classes;
-
-  /* # of range expressions. */
-  Idx nranges;
-
-  /* # of character classes. */
-  Idx nchar_classes;
-} re_charset_t;
-#endif /* RE_ENABLE_I18N */
-
-typedef struct
-{
-  union
-  {
-    unsigned char c;           /* for CHARACTER */
-    re_bitset_ptr_t sbcset;    /* for SIMPLE_BRACKET */
-#ifdef RE_ENABLE_I18N
-    re_charset_t *mbcset;      /* for COMPLEX_BRACKET */
-#endif /* RE_ENABLE_I18N */
-    Idx idx;                   /* for BACK_REF */
-    re_context_type ctx_type;  /* for ANCHOR */
-  } opr;
-#if __GNUC__ >= 2 && !defined __STRICT_ANSI__
-  re_token_type_t type : 8;
-#else
-  re_token_type_t type;
-#endif
-  unsigned int constraint : 10;        /* context constraint */
-  unsigned int duplicated : 1;
-  unsigned int opt_subexp : 1;
-#ifdef RE_ENABLE_I18N
-  unsigned int accept_mb : 1;
-  /* These 2 bits can be moved into the union if needed (e.g. if running out
-     of bits; move opr.c to opr.c.c and move the flags to opr.c.flags).  */
-  unsigned int mb_partial : 1;
-#endif
-  unsigned int word_char : 1;
-} re_token_t;
-
-#define IS_EPSILON_NODE(type) ((type) & EPSILON_BIT)
-
-struct re_string_t
-{
-  /* Indicate the raw buffer which is the original string passed as an
-     argument of regexec(), re_search(), etc..  */
-  const unsigned char *raw_mbs;
-  /* Store the multibyte string.  In case of "case insensitive mode" like
-     REG_ICASE, upper cases of the string are stored, otherwise MBS points
-     the same address that RAW_MBS points.  */
-  unsigned char *mbs;
-#ifdef RE_ENABLE_I18N
-  /* Store the wide character string which is corresponding to MBS.  */
-  wint_t *wcs;
-  Idx *offsets;
-  mbstate_t cur_state;
-#endif
-  /* Index in RAW_MBS.  Each character mbs[i] corresponds to
-     raw_mbs[raw_mbs_idx + i].  */
-  Idx raw_mbs_idx;
-  /* The length of the valid characters in the buffers.  */
-  Idx valid_len;
-  /* The corresponding number of bytes in raw_mbs array.  */
-  Idx valid_raw_len;
-  /* The length of the buffers MBS and WCS.  */
-  Idx bufs_len;
-  /* The index in MBS, which is updated by re_string_fetch_byte.  */
-  Idx cur_idx;
-  /* length of RAW_MBS array.  */
-  Idx raw_len;
-  /* This is RAW_LEN - RAW_MBS_IDX + VALID_LEN - VALID_RAW_LEN.  */
-  Idx len;
-  /* End of the buffer may be shorter than its length in the cases such
-     as re_match_2, re_search_2.  Then, we use STOP for end of the buffer
-     instead of LEN.  */
-  Idx raw_stop;
-  /* This is RAW_STOP - RAW_MBS_IDX adjusted through OFFSETS.  */
-  Idx stop;
-
-  /* The context of mbs[0].  We store the context independently, since
-     the context of mbs[0] may be different from raw_mbs[0], which is
-     the beginning of the input string.  */
-  unsigned int tip_context;
-  /* The translation passed as a part of an argument of re_compile_pattern.  */
-  RE_TRANSLATE_TYPE trans;
-  /* Copy of re_dfa_t's word_char.  */
-  re_const_bitset_ptr_t word_char;
-  /* true if REG_ICASE.  */
-  unsigned char icase;
-  unsigned char is_utf8;
-  unsigned char map_notascii;
-  unsigned char mbs_allocated;
-  unsigned char offsets_needed;
-  unsigned char newline_anchor;
-  unsigned char word_ops_used;
-  int mb_cur_max;
-};
-typedef struct re_string_t re_string_t;
-
-
-struct re_dfa_t;
-typedef struct re_dfa_t re_dfa_t;
-
-#ifndef _LIBC
-# 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
-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 */
-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));
-#endif
-#define re_string_peek_byte(pstr, offset) \
-  ((pstr)->mbs[(pstr)->cur_idx + offset])
-#define re_string_fetch_byte(pstr) \
-  ((pstr)->mbs[(pstr)->cur_idx++])
-#define re_string_first_byte(pstr, idx) \
-  ((idx) == (pstr)->valid_len || (pstr)->wcs[idx] != WEOF)
-#define re_string_is_single_byte_char(pstr, idx) \
-  ((pstr)->wcs[idx] != WEOF && ((pstr)->valid_len == (idx) + 1 \
-                               || (pstr)->wcs[(idx) + 1] != WEOF))
-#define re_string_eoi(pstr) ((pstr)->stop <= (pstr)->cur_idx)
-#define re_string_cur_idx(pstr) ((pstr)->cur_idx)
-#define re_string_get_buffer(pstr) ((pstr)->mbs)
-#define re_string_length(pstr) ((pstr)->len)
-#define re_string_byte_at(pstr,idx) ((pstr)->mbs[idx])
-#define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
-#define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
-
-#if defined _LIBC || HAVE_ALLOCA
-# include <alloca.h>
-#endif
-
-#ifndef _LIBC
-# if HAVE_ALLOCA
-/* The OS usually guarantees only one guard page at the bottom of the stack,
-   and a page size can be as small as 4096 bytes.  So we cannot safely
-   allocate anything larger than 4096 bytes.  Also care for the possibility
-   of a few compiler-allocated temporary stack slots.  */
-#  define __libc_use_alloca(n) ((n) < 4032)
-# else
-/* alloca is implemented with malloc, so just use malloc.  */
-#  define __libc_use_alloca(n) 0
-#  undef alloca
-#  define alloca(n) malloc (n)
-# 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)))
-#define re_free(p) free (p)
-
-struct bin_tree_t
-{
-  struct bin_tree_t *parent;
-  struct bin_tree_t *left;
-  struct bin_tree_t *right;
-  struct bin_tree_t *first;
-  struct bin_tree_t *next;
-
-  re_token_t token;
-
-  /* '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;
-
-#define BIN_TREE_STORAGE_SIZE \
-  ((1024 - sizeof (void *)) / sizeof (bin_tree_t))
-
-struct bin_tree_storage_t
-{
-  struct bin_tree_storage_t *next;
-  bin_tree_t data[BIN_TREE_STORAGE_SIZE];
-};
-typedef struct bin_tree_storage_t bin_tree_storage_t;
-
-#define CONTEXT_WORD 1
-#define CONTEXT_NEWLINE (CONTEXT_WORD << 1)
-#define CONTEXT_BEGBUF (CONTEXT_NEWLINE << 1)
-#define CONTEXT_ENDBUF (CONTEXT_BEGBUF << 1)
-
-#define IS_WORD_CONTEXT(c) ((c) & CONTEXT_WORD)
-#define IS_NEWLINE_CONTEXT(c) ((c) & CONTEXT_NEWLINE)
-#define IS_BEGBUF_CONTEXT(c) ((c) & CONTEXT_BEGBUF)
-#define IS_ENDBUF_CONTEXT(c) ((c) & CONTEXT_ENDBUF)
-#define IS_ORDINARY_CONTEXT(c) ((c) == 0)
-
-#define IS_WORD_CHAR(ch) (isalnum (ch) || (ch) == '_')
-#define IS_NEWLINE(ch) ((ch) == NEWLINE_CHAR)
-#define IS_WIDE_WORD_CHAR(ch) (iswalnum (ch) || (ch) == L'_')
-#define IS_WIDE_NEWLINE(ch) ((ch) == WIDE_NEWLINE_CHAR)
-
-#define NOT_SATISFY_PREV_CONSTRAINT(constraint,context) \
- ((((constraint) & PREV_WORD_CONSTRAINT) && !IS_WORD_CONTEXT (context)) \
-  || ((constraint & PREV_NOTWORD_CONSTRAINT) && IS_WORD_CONTEXT (context)) \
-  || ((constraint & PREV_NEWLINE_CONSTRAINT) && !IS_NEWLINE_CONTEXT (context))\
-  || ((constraint & PREV_BEGBUF_CONSTRAINT) && !IS_BEGBUF_CONTEXT (context)))
-
-#define NOT_SATISFY_NEXT_CONSTRAINT(constraint,context) \
- ((((constraint) & NEXT_WORD_CONSTRAINT) && !IS_WORD_CONTEXT (context)) \
-  || (((constraint) & NEXT_NOTWORD_CONSTRAINT) && IS_WORD_CONTEXT (context)) \
-  || (((constraint) & NEXT_NEWLINE_CONSTRAINT) && !IS_NEWLINE_CONTEXT 
(context)) \
-  || (((constraint) & NEXT_ENDBUF_CONSTRAINT) && !IS_ENDBUF_CONTEXT (context)))
-
-struct re_dfastate_t
-{
-  re_hashval_t hash;
-  re_node_set nodes;
-  re_node_set non_eps_nodes;
-  re_node_set inveclosure;
-  re_node_set *entrance_nodes;
-  struct re_dfastate_t **trtable, **word_trtable;
-  unsigned int context : 4;
-  unsigned int halt : 1;
-  /* If this state can accept "multi byte".
-     Note that we refer to multibyte characters, and multi character
-     collating elements as "multi byte".  */
-  unsigned int accept_mb : 1;
-  /* If this state has backreference node(s).  */
-  unsigned int has_backref : 1;
-  unsigned int has_constraint : 1;
-};
-typedef struct re_dfastate_t re_dfastate_t;
-
-struct re_state_table_entry
-{
-  Idx num;
-  Idx alloc;
-  re_dfastate_t **array;
-};
-
-/* Array type used in re_sub_match_last_t and re_sub_match_top_t.  */
-
-typedef struct
-{
-  Idx next_idx;
-  Idx alloc;
-  re_dfastate_t **array;
-} state_array_t;
-
-/* Store information about the node NODE whose type is OP_CLOSE_SUBEXP.  */
-
-typedef struct
-{
-  Idx node;
-  Idx str_idx; /* The position NODE match at.  */
-  state_array_t path;
-} re_sub_match_last_t;
-
-/* Store information about the node NODE whose type is OP_OPEN_SUBEXP.
-   And information about the node, whose type is OP_CLOSE_SUBEXP,
-   corresponding to NODE is stored in LASTS.  */
-
-typedef struct
-{
-  Idx str_idx;
-  Idx node;
-  state_array_t *path;
-  Idx alasts; /* Allocation size of LASTS.  */
-  Idx nlasts; /* The number of LASTS.  */
-  re_sub_match_last_t **lasts;
-} re_sub_match_top_t;
-
-struct re_backref_cache_entry
-{
-  Idx node;
-  Idx str_idx;
-  Idx subexp_from;
-  Idx subexp_to;
-  char more;
-  char unused;
-  unsigned short int eps_reachable_subexps_map;
-};
-
-typedef struct
-{
-  /* The string object corresponding to the input string.  */
-  re_string_t input;
-#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
-  const re_dfa_t *const dfa;
-#else
-  const re_dfa_t *dfa;
-#endif
-  /* EFLAGS of the argument of regexec.  */
-  int eflags;
-  /* Where the matching ends.  */
-  Idx match_last;
-  Idx last_node;
-  /* The state log used by the matcher.  */
-  re_dfastate_t **state_log;
-  Idx state_log_top;
-  /* Back reference cache.  */
-  Idx nbkref_ents;
-  Idx abkref_ents;
-  struct re_backref_cache_entry *bkref_ents;
-  int max_mb_elem_len;
-  Idx nsub_tops;
-  Idx asub_tops;
-  re_sub_match_top_t **sub_tops;
-} re_match_context_t;
-
-typedef struct
-{
-  re_dfastate_t **sifted_states;
-  re_dfastate_t **limited_states;
-  Idx last_node;
-  Idx last_str_idx;
-  re_node_set limits;
-} re_sift_context_t;
-
-struct re_fail_stack_ent_t
-{
-  Idx idx;
-  Idx node;
-  regmatch_t *regs;
-  re_node_set eps_via_nodes;
-};
-
-struct re_fail_stack_t
-{
-  Idx num;
-  Idx alloc;
-  struct re_fail_stack_ent_t *stack;
-};
-
-struct re_dfa_t
-{
-  re_token_t *nodes;
-  size_t nodes_alloc;
-  size_t nodes_len;
-  Idx *nexts;
-  Idx *org_indices;
-  re_node_set *edests;
-  re_node_set *eclosures;
-  re_node_set *inveclosures;
-  struct re_state_table_entry *state_table;
-  re_dfastate_t *init_state;
-  re_dfastate_t *init_state_word;
-  re_dfastate_t *init_state_nl;
-  re_dfastate_t *init_state_begbuf;
-  bin_tree_t *str_tree;
-  bin_tree_storage_t *str_tree_storage;
-  re_bitset_ptr_t sb_char;
-  int str_tree_storage_idx;
-
-  /* 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.  */
-
-  /* Bitmap expressing which backreference is used.  */
-  bitset_word_t used_bkref_map;
-  bitset_word_t completed_bkref_map;
-
-  unsigned int has_plural_match : 1;
-  /* If this dfa has "multibyte node", which is a backreference or
-     a node which can accept multibyte character or multi character
-     collating element.  */
-  unsigned int has_mb_node : 1;
-  unsigned int is_utf8 : 1;
-  unsigned int map_notascii : 1;
-  unsigned int word_ops_used : 1;
-  int mb_cur_max;
-  bitset_t word_char;
-  reg_syntax_t syntax;
-  Idx *subexp_map;
-#ifdef DEBUG
-  char* re_str;
-#endif
-#ifdef _LIBC
-  __libc_lock_define (, lock)
-#endif
-};
-
-#define re_node_set_init_empty(set) memset (set, '\0', sizeof (re_node_set))
-#define re_node_set_remove(set,id) \
-  (re_node_set_remove_at (set, re_node_set_contains (set, id) - 1))
-#define re_node_set_empty(p) ((p)->nelem = 0)
-#define re_node_set_free(set) re_free ((set)->elems)
-
-
-typedef enum
-{
-  SB_CHAR,
-  MB_CHAR,
-  EQUIV_CLASS,
-  COLL_SYM,
-  CHAR_CLASS
-} bracket_elem_type;
-
-typedef struct
-{
-  bracket_elem_type type;
-  union
-  {
-    unsigned char ch;
-    unsigned char *name;
-    wchar_t wch;
-  } opr;
-} bracket_elem_t;
-
-
-/* Functions for bitset_t operation.  */
-
-static void
-bitset_set (bitset_t set, Idx i)
-{
-  set[i / BITSET_WORD_BITS] |= (bitset_word_t) 1 << i % BITSET_WORD_BITS;
-}
-
-static void
-bitset_clear (bitset_t set, Idx i)
-{
-  set[i / BITSET_WORD_BITS] &= ~ ((bitset_word_t) 1 << i % BITSET_WORD_BITS);
-}
-
-static bool
-bitset_contain (const bitset_t set, Idx i)
-{
-  return (set[i / BITSET_WORD_BITS] >> i % BITSET_WORD_BITS) & 1;
-}
-
-static void
-bitset_empty (bitset_t set)
-{
-  memset (set, '\0', sizeof (bitset_t));
-}
-
-static void
-bitset_set_all (bitset_t set)
-{
-  memset (set, -1, sizeof (bitset_word_t) * (SBC_MAX / BITSET_WORD_BITS));
-  if (SBC_MAX % BITSET_WORD_BITS != 0)
-    set[BITSET_WORDS - 1] =
-      ((bitset_word_t) 1 << SBC_MAX % BITSET_WORD_BITS) - 1;
-}
-
-static void
-bitset_copy (bitset_t dest, const bitset_t src)
-{
-  memcpy (dest, src, sizeof (bitset_t));
-}
-
-static void __attribute__ ((unused))
-bitset_not (bitset_t set)
-{
-  int bitset_i;
-  for (bitset_i = 0; bitset_i < SBC_MAX / BITSET_WORD_BITS; ++bitset_i)
-    set[bitset_i] = ~set[bitset_i];
-  if (SBC_MAX % BITSET_WORD_BITS != 0)
-    set[BITSET_WORDS - 1] =
-      ((((bitset_word_t) 1 << SBC_MAX % BITSET_WORD_BITS) - 1)
-       & ~set[BITSET_WORDS - 1]);
-}
-
-static void __attribute__ ((unused))
-bitset_merge (bitset_t dest, const bitset_t src)
-{
-  int bitset_i;
-  for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
-    dest[bitset_i] |= src[bitset_i];
-}
-
-static void __attribute__ ((unused))
-bitset_mask (bitset_t dest, const bitset_t src)
-{
-  int bitset_i;
-  for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
-    dest[bitset_i] &= src[bitset_i];
-}
-
-#ifdef RE_ENABLE_I18N
-/* 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;
-  if (pstr->mb_cur_max == 1)
-    return 1;
-  for (byte_idx = 1; idx + byte_idx < pstr->valid_len; ++byte_idx)
-    if (pstr->wcs[idx + byte_idx] != WEOF)
-      break;
-  return byte_idx;
-}
-
-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)
-    return (wint_t) pstr->mbs[idx];
-  return (wint_t) pstr->wcs[idx];
-}
-
-# ifndef NOT_IN_libc
-static int
-internal_function __attribute__ ((pure, unused))
-re_string_elem_size_at (const re_string_t *pstr, Idx idx)
-{
-#  ifdef _LIBC
-  const unsigned char *p, *extra;
-  const int32_t *table, *indirect;
-#   include <locale/weight.h>
-  uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
-
-  if (nrules != 0)
-    {
-      table = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
-      extra = (const unsigned char *)
-       _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
-      indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
-                                               _NL_COLLATE_INDIRECTMB);
-      p = pstr->mbs + idx;
-      findidx (&p, pstr->len - idx);
-      return p - pstr->mbs - idx;
-    }
-  else
-#  endif /* _LIBC */
-    return 1;
-}
-# endif
-#endif /* RE_ENABLE_I18N */
-
-#ifndef __GNUC_PREREQ
-# if defined __GNUC__ && defined __GNUC_MINOR__
-#  define __GNUC_PREREQ(maj, min) \
-         ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-# else
-#  define __GNUC_PREREQ(maj, min) 0
-# endif
-#endif
-
-#if __GNUC_PREREQ (3,4)
-# undef __attribute_warn_unused_result__
-# define __attribute_warn_unused_result__ \
-   __attribute__ ((__warn_unused_result__))
-#else
-# define __attribute_warn_unused_result__ /* empty */
-#endif
-
-#endif /*  _REGEX_INTERNAL_H */
diff --git a/grub-core/gnulib/regexec.c b/grub-core/gnulib/regexec.c
deleted file mode 100644
index a7776f088..000000000
--- a/grub-core/gnulib/regexec.c
+++ /dev/null
@@ -1,4417 +0,0 @@
-/* Extended regular expression matching and search library.
-   Copyright (C) 2002-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Isamu Hasegawa <address@hidden>.
-
-   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.
-
-   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.
-
-   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;
-static void match_ctx_clean (re_match_context_t *mctx) internal_function;
-static void match_ctx_free (re_match_context_t *cache) internal_function;
-static reg_errcode_t match_ctx_add_entry (re_match_context_t *cache, Idx node,
-                                         Idx str_idx, Idx from, Idx to)
-     internal_function;
-static Idx search_cur_bkref_entry (const re_match_context_t *mctx, Idx str_idx)
-     internal_function;
-static reg_errcode_t match_ctx_add_subtop (re_match_context_t *mctx, Idx node,
-                                          Idx str_idx) internal_function;
-static re_sub_match_last_t * match_ctx_add_sublast (re_sub_match_top_t *subtop,
-                                                   Idx node, Idx str_idx)
-     internal_function;
-static void sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
-                          re_dfastate_t **limited_sts, Idx last_node,
-                          Idx last_str_idx)
-     internal_function;
-static reg_errcode_t re_search_internal (const regex_t *preg,
-                                        const char *string, Idx length,
-                                        Idx start, Idx last_start, Idx stop,
-                                        size_t nmatch, regmatch_t pmatch[],
-                                        int eflags) internal_function;
-static regoff_t re_search_2_stub (struct re_pattern_buffer *bufp,
-                                 const char *string1, Idx length1,
-                                 const char *string2, Idx length2,
-                                 Idx start, regoff_t range,
-                                 struct re_registers *regs,
-                                 Idx stop, bool ret_len) internal_function;
-static regoff_t re_search_stub (struct re_pattern_buffer *bufp,
-                               const char *string, Idx length, Idx start,
-                               regoff_t range, Idx stop,
-                               struct re_registers *regs,
-                               bool ret_len) 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,
-                          Idx *p_match_first) internal_function;
-static Idx check_halt_state_context (const re_match_context_t *mctx,
-                                    const re_dfastate_t *state, Idx idx)
-     internal_function;
-static void update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
-                        regmatch_t *prev_idx_match, Idx cur_node,
-                        Idx cur_idx, Idx nmatch) internal_function;
-static reg_errcode_t push_fail_stack (struct re_fail_stack_t *fs,
-                                     Idx str_idx, Idx dest_node, Idx nregs,
-                                     regmatch_t *regs,
-                                     re_node_set *eps_via_nodes)
-     internal_function;
-static reg_errcode_t set_regs (const regex_t *preg,
-                              const re_match_context_t *mctx,
-                              size_t nmatch, regmatch_t *pmatch,
-                              bool fl_backtrack) internal_function;
-static reg_errcode_t free_fail_stack_return (struct re_fail_stack_t *fs)
-     internal_function;
-
-#ifdef RE_ENABLE_I18N
-static int sift_states_iter_mb (const re_match_context_t *mctx,
-                               re_sift_context_t *sctx,
-                               Idx node_idx, Idx str_idx, Idx max_str_idx)
-     internal_function;
-#endif /* RE_ENABLE_I18N */
-static reg_errcode_t sift_states_backward (const re_match_context_t *mctx,
-                                          re_sift_context_t *sctx)
-     internal_function;
-static reg_errcode_t build_sifted_states (const re_match_context_t *mctx,
-                                         re_sift_context_t *sctx, Idx str_idx,
-                                         re_node_set *cur_dest)
-     internal_function;
-static reg_errcode_t update_cur_sifted_state (const re_match_context_t *mctx,
-                                             re_sift_context_t *sctx,
-                                             Idx str_idx,
-                                             re_node_set *dest_nodes)
-     internal_function;
-static reg_errcode_t add_epsilon_src_nodes (const re_dfa_t *dfa,
-                                           re_node_set *dest_nodes,
-                                           const re_node_set *candidates)
-     internal_function;
-static bool check_dst_limits (const re_match_context_t *mctx,
-                             const re_node_set *limits,
-                             Idx dst_node, Idx dst_idx, Idx src_node,
-                             Idx src_idx) internal_function;
-static int check_dst_limits_calc_pos_1 (const re_match_context_t *mctx,
-                                       int boundaries, Idx subexp_idx,
-                                       Idx from_node, Idx bkref_idx)
-     internal_function;
-static int check_dst_limits_calc_pos (const re_match_context_t *mctx,
-                                     Idx limit, Idx subexp_idx,
-                                     Idx node, Idx str_idx,
-                                     Idx bkref_idx) internal_function;
-static reg_errcode_t check_subexp_limits (const re_dfa_t *dfa,
-                                         re_node_set *dest_nodes,
-                                         const re_node_set *candidates,
-                                         re_node_set *limits,
-                                         struct re_backref_cache_entry 
*bkref_ents,
-                                         Idx str_idx) internal_function;
-static reg_errcode_t sift_states_bkref (const re_match_context_t *mctx,
-                                       re_sift_context_t *sctx,
-                                       Idx str_idx, const re_node_set 
*candidates)
-     internal_function;
-static reg_errcode_t merge_state_array (const re_dfa_t *dfa,
-                                       re_dfastate_t **dst,
-                                       re_dfastate_t **src, Idx num)
-     internal_function;
-static re_dfastate_t *find_recover_state (reg_errcode_t *err,
-                                        re_match_context_t *mctx) 
internal_function;
-static re_dfastate_t *transit_state (reg_errcode_t *err,
-                                    re_match_context_t *mctx,
-                                    re_dfastate_t *state) internal_function;
-static re_dfastate_t *merge_state_with_log (reg_errcode_t *err,
-                                           re_match_context_t *mctx,
-                                           re_dfastate_t *next_state)
-     internal_function;
-static reg_errcode_t check_subexp_matching_top (re_match_context_t *mctx,
-                                               re_node_set *cur_nodes,
-                                               Idx str_idx) internal_function;
-#if 0
-static re_dfastate_t *transit_state_sb (reg_errcode_t *err,
-                                       re_match_context_t *mctx,
-                                       re_dfastate_t *pstate)
-     internal_function;
-#endif
-#ifdef RE_ENABLE_I18N
-static reg_errcode_t transit_state_mb (re_match_context_t *mctx,
-                                      re_dfastate_t *pstate)
-     internal_function;
-#endif /* RE_ENABLE_I18N */
-static reg_errcode_t transit_state_bkref (re_match_context_t *mctx,
-                                         const re_node_set *nodes)
-     internal_function;
-static reg_errcode_t get_subexp (re_match_context_t *mctx,
-                                Idx bkref_node, Idx bkref_str_idx)
-     internal_function;
-static reg_errcode_t get_subexp_sub (re_match_context_t *mctx,
-                                    const re_sub_match_top_t *sub_top,
-                                    re_sub_match_last_t *sub_last,
-                                    Idx bkref_node, Idx bkref_str)
-     internal_function;
-static Idx find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
-                            Idx subexp_idx, int type) internal_function;
-static reg_errcode_t check_arrival (re_match_context_t *mctx,
-                                   state_array_t *path, Idx top_node,
-                                   Idx top_str, Idx last_node, Idx last_str,
-                                   int type) internal_function;
-static reg_errcode_t check_arrival_add_next_nodes (re_match_context_t *mctx,
-                                                  Idx str_idx,
-                                                  re_node_set *cur_nodes,
-                                                  re_node_set *next_nodes)
-     internal_function;
-static reg_errcode_t check_arrival_expand_ecl (const re_dfa_t *dfa,
-                                              re_node_set *cur_nodes,
-                                              Idx ex_subexp, int type)
-     internal_function;
-static reg_errcode_t check_arrival_expand_ecl_sub (const re_dfa_t *dfa,
-                                                  re_node_set *dst_nodes,
-                                                  Idx target, Idx ex_subexp,
-                                                  int type) internal_function;
-static reg_errcode_t expand_bkref_cache (re_match_context_t *mctx,
-                                        re_node_set *cur_nodes, Idx cur_str,
-                                        Idx subexp_num, int type)
-     internal_function;
-static bool build_trtable (const re_dfa_t *dfa,
-                          re_dfastate_t *state) internal_function;
-#ifdef RE_ENABLE_I18N
-static int check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
-                                   const re_string_t *input, Idx idx)
-     internal_function;
-# ifdef _LIBC
-static unsigned int find_collation_sequence_value (const unsigned char *mbs,
-                                                  size_t name_len)
-     internal_function;
-# endif /* _LIBC */
-#endif /* RE_ENABLE_I18N */
-static Idx group_nodes_into_DFAstates (const re_dfa_t *dfa,
-                                      const re_dfastate_t *state,
-                                      re_node_set *states_node,
-                                      bitset_t *states_ch) internal_function;
-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, int min_len)
-     internal_function;
-
-/* Entry point for POSIX code.  */
-
-/* regexec searches for a given pattern, specified by PREG, in the
-   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
-   least NMATCH elements, and we set them to the offsets of the
-   corresponding matched substrings.
-
-   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.
-
-   We return 0 if we find a match and REG_NOMATCH if not.  */
-
-int
-regexec (preg, string, nmatch, pmatch, eflags)
-    const regex_t *_Restrict_ preg;
-    const char *_Restrict_ string;
-    size_t nmatch;
-    regmatch_t pmatch[_Restrict_arr_];
-    int eflags;
-{
-  reg_errcode_t err;
-  Idx start, length;
-#ifdef _LIBC
-  re_dfa_t *dfa = preg->buffer;
-#endif
-
-  if (eflags & ~(REG_NOTBOL | REG_NOTEOL | REG_STARTEND))
-    return REG_BADPAT;
-
-  if (eflags & REG_STARTEND)
-    {
-      start = pmatch[0].rm_so;
-      length = pmatch[0].rm_eo;
-    }
-  else
-    {
-      start = 0;
-      length = strlen (string);
-    }
-
-  __libc_lock_lock (dfa->lock);
-  if (preg->no_sub)
-    err = re_search_internal (preg, string, length, start, length,
-                             length, 0, NULL, eflags);
-  else
-    err = re_search_internal (preg, string, length, start, length,
-                             length, nmatch, pmatch, eflags);
-  __libc_lock_unlock (dfa->lock);
-  return err != REG_NOERROR;
-}
-
-#ifdef _LIBC
-# include <shlib-compat.h>
-versioned_symbol (libc, __regexec, regexec, GLIBC_2_3_4);
-
-# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-__typeof__ (__regexec) __compat_regexec;
-
-int
-attribute_compat_text_section
-__compat_regexec (const regex_t *_Restrict_ preg,
-                 const char *_Restrict_ string, size_t nmatch,
-                 regmatch_t pmatch[], int eflags)
-{
-  return regexec (preg, string, nmatch, pmatch,
-                 eflags & (REG_NOTBOL | REG_NOTEOL));
-}
-compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0);
-# endif
-#endif
-
-/* Entry points for GNU code.  */
-
-/* re_match, re_search, re_match_2, re_search_2
-
-   The former two functions operate on STRING with length LENGTH,
-   while the later two operate on concatenation of STRING1 and STRING2
-   with lengths LENGTH1 and LENGTH2, respectively.
-
-   re_match() matches the compiled pattern in BUFP against the string,
-   starting at index START.
-
-   re_search() first tries matching at index START, then it tries to match
-   starting from index START + 1, and so on.  The last start position tried
-   is START + RANGE.  (Thus RANGE = 0 forces re_search to operate the same
-   way as re_match().)
-
-   The parameter STOP of re_{match,search}_2 specifies that no match exceeding
-   the first STOP characters of the concatenation of the strings should be
-   concerned.
-
-   If REGS is not NULL, and BUFP->no_sub is not set, the offsets of the match
-   and all groups is stored in REGS.  (For the "_2" variants, the offsets are
-   computed relative to the concatenation, not relative to the individual
-   strings.)
-
-   On success, re_match* functions return the length of the match, re_search*
-   return the position of the start of the match.  Return value -1 means no
-   match was found and -2 indicates an internal error.  */
-
-regoff_t
-re_match (bufp, string, length, start, regs)
-    struct re_pattern_buffer *bufp;
-    const char *string;
-    Idx length, start;
-    struct re_registers *regs;
-{
-  return re_search_stub (bufp, string, length, start, 0, length, regs, true);
-}
-#ifdef _LIBC
-weak_alias (__re_match, re_match)
-#endif
-
-regoff_t
-re_search (bufp, string, length, start, range, regs)
-    struct re_pattern_buffer *bufp;
-    const char *string;
-    Idx length, start;
-    regoff_t range;
-    struct re_registers *regs;
-{
-  return re_search_stub (bufp, string, length, start, range, length, regs,
-                        false);
-}
-#ifdef _LIBC
-weak_alias (__re_search, re_search)
-#endif
-
-regoff_t
-re_match_2 (bufp, string1, length1, string2, length2, start, regs, stop)
-    struct re_pattern_buffer *bufp;
-    const char *string1, *string2;
-    Idx length1, length2, start, stop;
-    struct re_registers *regs;
-{
-  return re_search_2_stub (bufp, string1, length1, string2, length2,
-                          start, 0, regs, stop, true);
-}
-#ifdef _LIBC
-weak_alias (__re_match_2, re_match_2)
-#endif
-
-regoff_t
-re_search_2 (bufp, string1, length1, string2, length2, start, range, regs, 
stop)
-    struct re_pattern_buffer *bufp;
-    const char *string1, *string2;
-    Idx length1, length2, start, stop;
-    regoff_t range;
-    struct re_registers *regs;
-{
-  return re_search_2_stub (bufp, string1, length1, string2, length2,
-                          start, range, regs, stop, false);
-}
-#ifdef _LIBC
-weak_alias (__re_search_2, re_search_2)
-#endif
-
-static regoff_t
-re_search_2_stub (struct re_pattern_buffer *bufp,
-                 const char *string1, Idx length1,
-                 const char *string2, Idx length2,
-                 Idx start, regoff_t range, struct re_registers *regs,
-                 Idx stop, bool ret_len)
-{
-  const char *str;
-  regoff_t rval;
-  Idx len = length1 + length2;
-  char *s = NULL;
-
-  if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1, 0))
-    return -2;
-
-  /* Concatenate the strings.  */
-  if (length2 > 0)
-    if (length1 > 0)
-      {
-       s = re_malloc (char, len);
-
-       if (BE (s == NULL, 0))
-         return -2;
-#ifdef _LIBC
-       memcpy (__mempcpy (s, string1, length1), string2, length2);
-#else
-       memcpy (s, string1, length1);
-       memcpy (s + length1, string2, length2);
-#endif
-       str = s;
-      }
-    else
-      str = string2;
-  else
-    str = string1;
-
-  rval = re_search_stub (bufp, str, len, start, range, stop, regs,
-                        ret_len);
-  re_free (s);
-  return rval;
-}
-
-/* The parameters have the same meaning as those of re_search.
-   Additional parameters:
-   If RET_LEN is true the length of the match is returned (re_match style);
-   otherwise the position of the match is returned.  */
-
-static regoff_t
-re_search_stub (struct re_pattern_buffer *bufp,
-               const char *string, Idx length,
-               Idx start, regoff_t range, Idx stop, struct re_registers *regs,
-               bool ret_len)
-{
-  reg_errcode_t result;
-  regmatch_t *pmatch;
-  Idx nregs;
-  regoff_t rval;
-  int eflags = 0;
-#ifdef _LIBC
-  re_dfa_t *dfa = bufp->buffer;
-#endif
-  Idx last_start = start + range;
-
-  /* Check for out-of-range.  */
-  if (BE (start < 0 || start > length, 0))
-    return -1;
-  if (BE (length < last_start || (0 <= range && last_start < start), 0))
-    last_start = length;
-  else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0))
-    last_start = 0;
-
-  __libc_lock_lock (dfa->lock);
-
-  eflags |= (bufp->not_bol) ? REG_NOTBOL : 0;
-  eflags |= (bufp->not_eol) ? REG_NOTEOL : 0;
-
-  /* Compile fastmap if we haven't yet.  */
-  if (start < last_start && bufp->fastmap != NULL && !bufp->fastmap_accurate)
-    re_compile_fastmap (bufp);
-
-  if (BE (bufp->no_sub, 0))
-    regs = NULL;
-
-  /* We need at least 1 register.  */
-  if (regs == NULL)
-    nregs = 1;
-  else if (BE (bufp->regs_allocated == REGS_FIXED
-              && regs->num_regs <= bufp->re_nsub, 0))
-    {
-      nregs = regs->num_regs;
-      if (BE (nregs < 1, 0))
-       {
-         /* Nothing can be copied to regs.  */
-         regs = NULL;
-         nregs = 1;
-       }
-    }
-  else
-    nregs = bufp->re_nsub + 1;
-  pmatch = re_malloc (regmatch_t, nregs);
-  if (BE (pmatch == NULL, 0))
-    {
-      rval = -2;
-      goto out;
-    }
-
-  result = re_search_internal (bufp, string, length, start, last_start, stop,
-                              nregs, pmatch, eflags);
-
-  rval = 0;
-
-  /* I hope we needn't fill their regs with -1's when no match was found.  */
-  if (result != REG_NOERROR)
-    rval = result == REG_NOMATCH ? -1 : -2;
-  else if (regs != NULL)
-    {
-      /* If caller wants register contents data back, copy them.  */
-      bufp->regs_allocated = re_copy_regs (regs, pmatch, nregs,
-                                          bufp->regs_allocated);
-      if (BE (bufp->regs_allocated == REGS_UNALLOCATED, 0))
-       rval = -2;
-    }
-
-  if (BE (rval == 0, 1))
-    {
-      if (ret_len)
-       {
-         assert (pmatch[0].rm_so == start);
-         rval = pmatch[0].rm_eo - start;
-       }
-      else
-       rval = pmatch[0].rm_so;
-    }
-  re_free (pmatch);
- out:
-  __libc_lock_unlock (dfa->lock);
-  return rval;
-}
-
-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
-     uses.  */
-
-  /* Have the register data arrays been allocated?  */
-  if (regs_allocated == REGS_UNALLOCATED)
-    { /* No.  So allocate them with malloc.  */
-      regs->start = re_malloc (regoff_t, need_regs);
-      if (BE (regs->start == NULL, 0))
-       return REGS_UNALLOCATED;
-      regs->end = re_malloc (regoff_t, need_regs);
-      if (BE (regs->end == NULL, 0))
-       {
-         re_free (regs->start);
-         return REGS_UNALLOCATED;
-       }
-      regs->num_regs = need_regs;
-    }
-  else if (regs_allocated == REGS_REALLOCATE)
-    { /* Yes.  If we need more elements than were already
-        allocated, reallocate them.  If we need fewer, just
-        leave it alone.  */
-      if (BE (need_regs > regs->num_regs, 0))
-       {
-         regoff_t *new_start = re_realloc (regs->start, regoff_t, need_regs);
-         regoff_t *new_end;
-         if (BE (new_start == NULL, 0))
-           return REGS_UNALLOCATED;
-         new_end = re_realloc (regs->end, regoff_t, need_regs);
-         if (BE (new_end == NULL, 0))
-           {
-             re_free (new_start);
-             return REGS_UNALLOCATED;
-           }
-         regs->start = new_start;
-         regs->end = new_end;
-         regs->num_regs = need_regs;
-       }
-    }
-  else
-    {
-      assert (regs_allocated == REGS_FIXED);
-      /* This function may not be called with REGS_FIXED and nregs too big.  */
-      assert (regs->num_regs >= nregs);
-      rval = REGS_FIXED;
-    }
-
-  /* Copy the regs.  */
-  for (i = 0; i < nregs; ++i)
-    {
-      regs->start[i] = pmatch[i].rm_so;
-      regs->end[i] = pmatch[i].rm_eo;
-    }
-  for ( ; i < regs->num_regs; ++i)
-    regs->start[i] = regs->end[i] = -1;
-
-  return rval;
-}
-
-/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
-   ENDS.  Subsequent matches using PATTERN_BUFFER and REGS will use
-   this memory for recording register information.  STARTS and ENDS
-   must be allocated using the malloc library routine, 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
-   PATTERN_BUFFER will allocate its own register data, without
-   freeing the old data.  */
-
-void
-re_set_registers (bufp, regs, num_regs, starts, ends)
-    struct re_pattern_buffer *bufp;
-    struct re_registers *regs;
-    __re_size_t num_regs;
-    regoff_t *starts, *ends;
-{
-  if (num_regs)
-    {
-      bufp->regs_allocated = REGS_REALLOCATE;
-      regs->num_regs = num_regs;
-      regs->start = starts;
-      regs->end = ends;
-    }
-  else
-    {
-      bufp->regs_allocated = REGS_UNALLOCATED;
-      regs->num_regs = 0;
-      regs->start = regs->end = NULL;
-    }
-}
-#ifdef _LIBC
-weak_alias (__re_set_registers, re_set_registers)
-#endif
-
-/* Entry points compatible with 4.2 BSD regex library.  We don't define
-   them unless specifically requested.  */
-
-#if defined _REGEX_RE_COMP || defined _LIBC
-int
-# ifdef _LIBC
-weak_function
-# endif
-re_exec (s)
-     const char *s;
-{
-  return 0 == regexec (&re_comp_buf, s, 0, NULL, 0);
-}
-#endif /* _REGEX_RE_COMP */
-
-/* Internal entry point.  */
-
-/* Searches for a compiled pattern PREG in the string STRING, whose
-   length is LENGTH.  NMATCH, PMATCH, and EFLAGS have the same
-   meaning as with regexec.  LAST_START is START + RANGE, where
-   START and RANGE have the same meaning as with re_search.
-   Return REG_NOERROR if we find a match, and REG_NOMATCH if not,
-   otherwise return the error code.
-   Note: We assume front end functions already check ranges.
-   (0 <= LAST_START && LAST_START <= LENGTH)  */
-
-static reg_errcode_t
-__attribute_warn_unused_result__
-re_search_internal (const regex_t *preg,
-                   const char *string, Idx length,
-                   Idx start, Idx last_start, Idx stop,
-                   size_t nmatch, regmatch_t pmatch[],
-                   int eflags)
-{
-  reg_errcode_t err;
-  const re_dfa_t *dfa = preg->buffer;
-  Idx left_lim, right_lim;
-  int incr;
-  bool fl_longest_match;
-  int match_kind;
-  Idx match_first;
-  Idx match_last = REG_MISSING;
-  Idx extra_nmatch;
-  bool sb;
-  int ch;
-#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
-  re_match_context_t mctx = { .dfa = dfa };
-#else
-  re_match_context_t mctx;
-#endif
-  char *fastmap = ((preg->fastmap != NULL && preg->fastmap_accurate
-                   && start != last_start && !preg->can_be_null)
-                  ? preg->fastmap : NULL);
-  RE_TRANSLATE_TYPE t = preg->translate;
-
-#if !(defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 
199901L))
-  memset (&mctx, '\0', sizeof (re_match_context_t));
-  mctx.dfa = dfa;
-#endif
-
-  extra_nmatch = (nmatch > preg->re_nsub) ? nmatch - (preg->re_nsub + 1) : 0;
-  nmatch -= extra_nmatch;
-
-  /* Check if the DFA haven't been compiled.  */
-  if (BE (preg->used == 0 || dfa->init_state == NULL
-         || dfa->init_state_word == NULL || dfa->init_state_nl == NULL
-         || dfa->init_state_begbuf == NULL, 0))
-    return REG_NOMATCH;
-
-#ifdef DEBUG
-  /* We assume front-end functions already check them.  */
-  assert (0 <= last_start && last_start <= length);
-#endif
-
-  /* If initial states with non-begbuf contexts have no elements,
-     the regex must be anchored.  If preg->newline_anchor is set,
-     we'll never use init_state_nl, so do not check it.  */
-  if (dfa->init_state->nodes.nelem == 0
-      && dfa->init_state_word->nodes.nelem == 0
-      && (dfa->init_state_nl->nodes.nelem == 0
-         || !preg->newline_anchor))
-    {
-      if (start != 0 && last_start != 0)
-        return REG_NOMATCH;
-      start = last_start = 0;
-    }
-
-  /* We must check the longest matching, if nmatch > 0.  */
-  fl_longest_match = (nmatch != 0 || dfa->nbackref);
-
-  err = re_string_allocate (&mctx.input, string, length, dfa->nodes_len + 1,
-                           preg->translate, (preg->syntax & RE_ICASE) != 0,
-                           dfa);
-  if (BE (err != REG_NOERROR, 0))
-    goto free_return;
-  mctx.input.stop = stop;
-  mctx.input.raw_stop = stop;
-  mctx.input.newline_anchor = preg->newline_anchor;
-
-  err = match_ctx_init (&mctx, eflags, dfa->nbackref * 2);
-  if (BE (err != REG_NOERROR, 0))
-    goto free_return;
-
-  /* We will log all the DFA states through which the dfa pass,
-     if nmatch > 1, or this dfa has "multibyte node", which is a
-     back-reference or a node which can accept multibyte character or
-     multi character collating element.  */
-  if (nmatch > 1 || dfa->has_mb_node)
-    {
-      /* Avoid overflow.  */
-      if (BE ((MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *))
-               <= mctx.input.bufs_len), 0))
-       {
-         err = REG_ESPACE;
-         goto free_return;
-       }
-
-      mctx.state_log = re_malloc (re_dfastate_t *, mctx.input.bufs_len + 1);
-      if (BE (mctx.state_log == NULL, 0))
-       {
-         err = REG_ESPACE;
-         goto free_return;
-       }
-    }
-  else
-    mctx.state_log = NULL;
-
-  match_first = start;
-  mctx.input.tip_context = (eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
-                          : CONTEXT_NEWLINE | CONTEXT_BEGBUF;
-
-  /* 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;
-  sb = dfa->mb_cur_max == 1;
-  match_kind =
-    (fastmap
-     ? ((sb || !(preg->syntax & RE_ICASE || t) ? 4 : 0)
-       | (start <= last_start ? 2 : 0)
-       | (t != NULL ? 1 : 0))
-     : 8);
-
-  for (;; match_first += incr)
-    {
-      err = REG_NOMATCH;
-      if (match_first < left_lim || right_lim < match_first)
-       goto free_return;
-
-      /* Advance as rapidly as possible through the string, until we
-        find a plausible place to start matching.  This may be done
-        with varying efficiency, so there are various possibilities:
-        only the most common of them are specialized, in order to
-        save on code size.  We use a switch statement for speed.  */
-      switch (match_kind)
-       {
-       case 8:
-         /* No fastmap.  */
-         break;
-
-       case 7:
-         /* Fastmap with single-byte translation, match forward.  */
-         while (BE (match_first < right_lim, 1)
-                && !fastmap[t[(unsigned char) string[match_first]]])
-           ++match_first;
-         goto forward_match_found_start_or_reached_end;
-
-       case 6:
-         /* Fastmap without translation, match forward.  */
-         while (BE (match_first < right_lim, 1)
-                && !fastmap[(unsigned char) string[match_first]])
-           ++match_first;
-
-       forward_match_found_start_or_reached_end:
-         if (BE (match_first == right_lim, 0))
-           {
-             ch = match_first >= length
-                      ? 0 : (unsigned char) string[match_first];
-             if (!fastmap[t ? t[ch] : ch])
-               goto free_return;
-           }
-         break;
-
-       case 4:
-       case 5:
-         /* Fastmap without multi-byte translation, match backwards.  */
-         while (match_first >= left_lim)
-           {
-             ch = match_first >= length
-                      ? 0 : (unsigned char) string[match_first];
-             if (fastmap[t ? t[ch] : ch])
-               break;
-             --match_first;
-           }
-         if (match_first < left_lim)
-           goto free_return;
-         break;
-
-       default:
-         /* In this case, we can't determine easily the current byte,
-            since it might be a component byte of a multibyte
-            character.  Then we use the constructed buffer instead.  */
-         for (;;)
-           {
-             /* If MATCH_FIRST is out of the valid range, reconstruct the
-                buffers.  */
-             __re_size_t offset = match_first - mctx.input.raw_mbs_idx;
-             if (BE (offset >= (__re_size_t) mctx.input.valid_raw_len, 0))
-               {
-                 err = re_string_reconstruct (&mctx.input, match_first,
-                                              eflags);
-                 if (BE (err != REG_NOERROR, 0))
-                   goto free_return;
-
-                 offset = match_first - mctx.input.raw_mbs_idx;
-               }
-             /* If MATCH_FIRST is out of the buffer, leave it as '\0'.
-                Note that MATCH_FIRST must not be smaller than 0.  */
-             ch = (match_first >= length
-                   ? 0 : re_string_byte_at (&mctx.input, offset));
-             if (fastmap[ch])
-               break;
-             match_first += incr;
-             if (match_first < left_lim || match_first > right_lim)
-               {
-                 err = REG_NOMATCH;
-                 goto free_return;
-               }
-           }
-         break;
-       }
-
-      /* Reconstruct the buffers so that the matcher can assume that
-        the matching starts from the beginning of the buffer.  */
-      err = re_string_reconstruct (&mctx.input, match_first, eflags);
-      if (BE (err != REG_NOERROR, 0))
-       goto free_return;
-
-#ifdef RE_ENABLE_I18N
-     /* Don't consider this char as a possible match start if it part,
-       yet isn't the head, of a multibyte character.  */
-      if (!sb && !re_string_first_byte (&mctx.input, 0))
-       continue;
-#endif
-
-      /* It seems to be appropriate one, then use the matcher.  */
-      /* We assume that the matching starts from 0.  */
-      mctx.state_log_top = mctx.nbkref_ents = mctx.max_mb_elem_len = 0;
-      match_last = check_matching (&mctx, fl_longest_match,
-                                  start <= last_start ? &match_first : NULL);
-      if (match_last != REG_MISSING)
-       {
-         if (BE (match_last == REG_ERROR, 0))
-           {
-             err = REG_ESPACE;
-             goto free_return;
-           }
-         else
-           {
-             mctx.match_last = match_last;
-             if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
-               {
-                 re_dfastate_t *pstate = mctx.state_log[match_last];
-                 mctx.last_node = check_halt_state_context (&mctx, pstate,
-                                                            match_last);
-               }
-             if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
-                 || dfa->nbackref)
-               {
-                 err = prune_impossible_nodes (&mctx);
-                 if (err == REG_NOERROR)
-                   break;
-                 if (BE (err != REG_NOMATCH, 0))
-                   goto free_return;
-                 match_last = REG_MISSING;
-               }
-             else
-               break; /* We found a match.  */
-           }
-       }
-
-      match_ctx_clean (&mctx);
-    }
-
-#ifdef DEBUG
-  assert (match_last != REG_MISSING);
-  assert (err == REG_NOERROR);
-#endif
-
-  /* Set pmatch[] if we need.  */
-  if (nmatch > 0)
-    {
-      Idx reg_idx;
-
-      /* Initialize registers.  */
-      for (reg_idx = 1; reg_idx < nmatch; ++reg_idx)
-       pmatch[reg_idx].rm_so = pmatch[reg_idx].rm_eo = -1;
-
-      /* Set the points where matching start/end.  */
-      pmatch[0].rm_so = 0;
-      pmatch[0].rm_eo = mctx.match_last;
-      /* FIXME: This function should fail if mctx.match_last exceeds
-        the maximum possible regoff_t value.  We need a new error
-        code REG_OVERFLOW.  */
-
-      if (!preg->no_sub && nmatch > 1)
-       {
-         err = set_regs (preg, &mctx, nmatch, pmatch,
-                         dfa->has_plural_match && dfa->nbackref > 0);
-         if (BE (err != REG_NOERROR, 0))
-           goto free_return;
-       }
-
-      /* 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)
-       if (pmatch[reg_idx].rm_so != -1)
-         {
-#ifdef RE_ENABLE_I18N
-           if (BE (mctx.input.offsets_needed != 0, 0))
-             {
-               pmatch[reg_idx].rm_so =
-                 (pmatch[reg_idx].rm_so == mctx.input.valid_len
-                  ? mctx.input.valid_raw_len
-                  : mctx.input.offsets[pmatch[reg_idx].rm_so]);
-               pmatch[reg_idx].rm_eo =
-                 (pmatch[reg_idx].rm_eo == mctx.input.valid_len
-                  ? mctx.input.valid_raw_len
-                  : mctx.input.offsets[pmatch[reg_idx].rm_eo]);
-             }
-#else
-           assert (mctx.input.offsets_needed == 0);
-#endif
-           pmatch[reg_idx].rm_so += match_first;
-           pmatch[reg_idx].rm_eo += match_first;
-         }
-      for (reg_idx = 0; reg_idx < extra_nmatch; ++reg_idx)
-       {
-         pmatch[nmatch + reg_idx].rm_so = -1;
-         pmatch[nmatch + reg_idx].rm_eo = -1;
-       }
-
-      if (dfa->subexp_map)
-       for (reg_idx = 0; reg_idx + 1 < nmatch; reg_idx++)
-         if (dfa->subexp_map[reg_idx] != reg_idx)
-           {
-             pmatch[reg_idx + 1].rm_so
-               = pmatch[dfa->subexp_map[reg_idx] + 1].rm_so;
-             pmatch[reg_idx + 1].rm_eo
-               = pmatch[dfa->subexp_map[reg_idx] + 1].rm_eo;
-           }
-    }
-
- free_return:
-  re_free (mctx.state_log);
-  if (dfa->nbackref)
-    match_ctx_free (&mctx);
-  re_string_destruct (&mctx.input);
-  return err;
-}
-
-static reg_errcode_t
-__attribute_warn_unused_result__
-prune_impossible_nodes (re_match_context_t *mctx)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  Idx halt_node, match_last;
-  reg_errcode_t ret;
-  re_dfastate_t **sifted_states;
-  re_dfastate_t **lim_states = NULL;
-  re_sift_context_t sctx;
-#ifdef DEBUG
-  assert (mctx->state_log != NULL);
-#endif
-  match_last = mctx->match_last;
-  halt_node = mctx->last_node;
-
-  /* Avoid overflow.  */
-  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);
-  if (BE (sifted_states == NULL, 0))
-    {
-      ret = REG_ESPACE;
-      goto free_return;
-    }
-  if (dfa->nbackref)
-    {
-      lim_states = re_malloc (re_dfastate_t *, match_last + 1);
-      if (BE (lim_states == NULL, 0))
-       {
-         ret = REG_ESPACE;
-         goto free_return;
-       }
-      while (1)
-       {
-         memset (lim_states, '\0',
-                 sizeof (re_dfastate_t *) * (match_last + 1));
-         sift_ctx_init (&sctx, sifted_states, lim_states, halt_node,
-                        match_last);
-         ret = sift_states_backward (mctx, &sctx);
-         re_node_set_free (&sctx.limits);
-         if (BE (ret != REG_NOERROR, 0))
-             goto free_return;
-         if (sifted_states[0] != NULL || lim_states[0] != NULL)
-           break;
-         do
-           {
-             --match_last;
-             if (! REG_VALID_INDEX (match_last))
-               {
-                 ret = REG_NOMATCH;
-                 goto free_return;
-               }
-           } while (mctx->state_log[match_last] == NULL
-                    || !mctx->state_log[match_last]->halt);
-         halt_node = check_halt_state_context (mctx,
-                                               mctx->state_log[match_last],
-                                               match_last);
-       }
-      ret = merge_state_array (dfa, sifted_states, lim_states,
-                              match_last + 1);
-      re_free (lim_states);
-      lim_states = NULL;
-      if (BE (ret != REG_NOERROR, 0))
-       goto free_return;
-    }
-  else
-    {
-      sift_ctx_init (&sctx, sifted_states, lim_states, halt_node, match_last);
-      ret = sift_states_backward (mctx, &sctx);
-      re_node_set_free (&sctx.limits);
-      if (BE (ret != REG_NOERROR, 0))
-       goto free_return;
-      if (sifted_states[0] == NULL)
-       {
-         ret = REG_NOMATCH;
-         goto free_return;
-       }
-    }
-  re_free (mctx->state_log);
-  mctx->state_log = sifted_states;
-  sifted_states = NULL;
-  mctx->last_node = halt_node;
-  mctx->match_last = match_last;
-  ret = REG_NOERROR;
- free_return:
-  re_free (sifted_states);
-  re_free (lim_states);
-  return ret;
-}
-
-/* Acquire an initial state and return it.
-   We must select appropriate initial state depending on the context,
-   since initial states may have constraints like "\<", "^", etc..  */
-
-static inline re_dfastate_t *
-__attribute__ ((always_inline)) internal_function
-acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx,
-                           Idx idx)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  if (dfa->init_state->has_constraint)
-    {
-      unsigned int context;
-      context = re_string_context_at (&mctx->input, idx - 1, mctx->eflags);
-      if (IS_WORD_CONTEXT (context))
-       return dfa->init_state_word;
-      else if (IS_ORDINARY_CONTEXT (context))
-       return dfa->init_state;
-      else if (IS_BEGBUF_CONTEXT (context) && IS_NEWLINE_CONTEXT (context))
-       return dfa->init_state_begbuf;
-      else if (IS_NEWLINE_CONTEXT (context))
-       return dfa->init_state_nl;
-      else if (IS_BEGBUF_CONTEXT (context))
-       {
-         /* It is relatively rare case, then calculate on demand.  */
-         return re_acquire_state_context (err, dfa,
-                                          dfa->init_state->entrance_nodes,
-                                          context);
-       }
-      else
-       /* Must not happen?  */
-       return dfa->init_state;
-    }
-  else
-    return dfa->init_state;
-}
-
-/* Check whether the regular expression match input string INPUT or not,
-   and return the index where the matching end.  Return REG_MISSING if
-   there is no match, and return REG_ERROR in case of an error.
-   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 assumes that the matching starts from the current
-   index of the buffer.  */
-
-static Idx
-internal_function __attribute_warn_unused_result__
-check_matching (re_match_context_t *mctx, bool fl_longest_match,
-               Idx *p_match_first)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  reg_errcode_t err;
-  Idx match = 0;
-  Idx match_last = REG_MISSING;
-  Idx cur_str_idx = re_string_cur_idx (&mctx->input);
-  re_dfastate_t *cur_state;
-  bool at_init_state = p_match_first != NULL;
-  Idx next_start_idx = cur_str_idx;
-
-  err = REG_NOERROR;
-  cur_state = acquire_init_state_context (&err, mctx, cur_str_idx);
-  /* An initial state must not be NULL (invalid).  */
-  if (BE (cur_state == NULL, 0))
-    {
-      assert (err == REG_ESPACE);
-      return REG_ERROR;
-    }
-
-  if (mctx->state_log != NULL)
-    {
-      mctx->state_log[cur_str_idx] = cur_state;
-
-      /* Check OP_OPEN_SUBEXP in the initial state in case that we use them
-        later.  E.g. Processing back references.  */
-      if (BE (dfa->nbackref, 0))
-       {
-         at_init_state = false;
-         err = check_subexp_matching_top (mctx, &cur_state->nodes, 0);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-
-         if (cur_state->has_backref)
-           {
-             err = transit_state_bkref (mctx, &cur_state->nodes);
-             if (BE (err != REG_NOERROR, 0))
-               return err;
-           }
-       }
-    }
-
-  /* If the RE accepts NULL string.  */
-  if (BE (cur_state->halt, 0))
-    {
-      if (!cur_state->has_constraint
-         || check_halt_state_context (mctx, cur_state, cur_str_idx))
-       {
-         if (!fl_longest_match)
-           return cur_str_idx;
-         else
-           {
-             match_last = cur_str_idx;
-             match = 1;
-           }
-       }
-    }
-
-  while (!re_string_eoi (&mctx->input))
-    {
-      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)
-          && 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, next_char_idx + 1);
-         if (BE (err != REG_NOERROR, 0))
-           {
-             assert (err == REG_ESPACE);
-             return REG_ERROR;
-           }
-       }
-
-      cur_state = transit_state (&err, mctx, cur_state);
-      if (mctx->state_log != NULL)
-       cur_state = merge_state_with_log (&err, mctx, cur_state);
-
-      if (cur_state == NULL)
-       {
-         /* Reached the invalid state or an error.  Try to recover a valid
-            state using the state log, if available and if we have not
-            already found a valid (even if not the longest) match.  */
-         if (BE (err != REG_NOERROR, 0))
-           return REG_ERROR;
-
-         if (mctx->state_log == NULL
-             || (match && !fl_longest_match)
-             || (cur_state = find_recover_state (&err, mctx)) == NULL)
-           break;
-       }
-
-      if (BE (at_init_state, 0))
-       {
-         if (old_state == cur_state)
-           next_start_idx = next_char_idx;
-         else
-           at_init_state = false;
-       }
-
-      if (cur_state->halt)
-       {
-         /* Reached a halt state.
-            Check the halt state can satisfy the current context.  */
-         if (!cur_state->has_constraint
-             || check_halt_state_context (mctx, cur_state,
-                                          re_string_cur_idx (&mctx->input)))
-           {
-             /* We found an appropriate halt state.  */
-             match_last = re_string_cur_idx (&mctx->input);
-             match = 1;
-
-             /* We found a match, do not modify match_first below.  */
-             p_match_first = NULL;
-             if (!fl_longest_match)
-               break;
-           }
-       }
-    }
-
-  if (p_match_first)
-    *p_match_first += next_start_idx;
-
-  return match_last;
-}
-
-/* Check NODE match the current context.  */
-
-static bool
-internal_function
-check_halt_node_context (const re_dfa_t *dfa, Idx node, unsigned int context)
-{
-  re_token_type_t type = dfa->nodes[node].type;
-  unsigned int constraint = dfa->nodes[node].constraint;
-  if (type != END_OF_RE)
-    return false;
-  if (!constraint)
-    return true;
-  if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
-    return false;
-  return true;
-}
-
-/* Check the halt state STATE match the current context.
-   Return 0 if not match, if the node, STATE has, is a halt node and
-   match the context, return the node.  */
-
-static Idx
-internal_function
-check_halt_state_context (const re_match_context_t *mctx,
-                         const re_dfastate_t *state, Idx idx)
-{
-  Idx i;
-  unsigned int context;
-#ifdef DEBUG
-  assert (state->halt);
-#endif
-  context = re_string_context_at (&mctx->input, idx, mctx->eflags);
-  for (i = 0; i < state->nodes.nelem; ++i)
-    if (check_halt_node_context (mctx->dfa, state->nodes.elems[i], context))
-      return state->nodes.elems[i];
-  return 0;
-}
-
-/* Compute the next node to which "NFA" transit from NODE("NFA" is a NFA
-   corresponding to the DFA).
-   Return the destination node, and update EPS_VIA_NODES;
-   return REG_MISSING in case of errors.  */
-
-static Idx
-internal_function
-proceed_next_node (const re_match_context_t *mctx, Idx nregs, regmatch_t *regs,
-                  Idx *pidx, Idx node, re_node_set *eps_via_nodes,
-                  struct re_fail_stack_t *fs)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  Idx i;
-  bool ok;
-  if (IS_EPSILON_NODE (dfa->nodes[node].type))
-    {
-      re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes;
-      re_node_set *edests = &dfa->edests[node];
-      Idx dest_node;
-      ok = re_node_set_insert (eps_via_nodes, node);
-      if (BE (! ok, 0))
-       return REG_ERROR;
-      /* Pick up a valid destination, or return REG_MISSING if none
-        is found.  */
-      for (dest_node = REG_MISSING, i = 0; i < edests->nelem; ++i)
-       {
-         Idx candidate = edests->elems[i];
-         if (!re_node_set_contains (cur_nodes, candidate))
-           continue;
-          if (dest_node == REG_MISSING)
-           dest_node = candidate;
-
-         else
-           {
-             /* In order to avoid infinite loop like "(a*)*", return the second
-                epsilon-transition if the first was already considered.  */
-             if (re_node_set_contains (eps_via_nodes, dest_node))
-               return candidate;
-
-             /* Otherwise, push the second epsilon-transition on the fail 
stack.  */
-             else if (fs != NULL
-                      && push_fail_stack (fs, *pidx, candidate, nregs, regs,
-                                          eps_via_nodes))
-               return REG_ERROR;
-
-             /* We know we are going to exit.  */
-             break;
-           }
-       }
-      return dest_node;
-    }
-  else
-    {
-      Idx naccepted = 0;
-      re_token_type_t type = dfa->nodes[node].type;
-
-#ifdef RE_ENABLE_I18N
-      if (dfa->nodes[node].accept_mb)
-       naccepted = check_node_accept_bytes (dfa, node, &mctx->input, *pidx);
-      else
-#endif /* RE_ENABLE_I18N */
-      if (type == OP_BACK_REF)
-       {
-         Idx subexp_idx = dfa->nodes[node].opr.idx + 1;
-         naccepted = regs[subexp_idx].rm_eo - regs[subexp_idx].rm_so;
-         if (fs != NULL)
-           {
-             if (regs[subexp_idx].rm_so == -1 || regs[subexp_idx].rm_eo == -1)
-               return REG_MISSING;
-             else if (naccepted)
-               {
-                 char *buf = (char *) re_string_get_buffer (&mctx->input);
-                 if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
-                             naccepted) != 0)
-                   return REG_MISSING;
-               }
-           }
-
-         if (naccepted == 0)
-           {
-             Idx dest_node;
-             ok = re_node_set_insert (eps_via_nodes, node);
-             if (BE (! ok, 0))
-               return REG_ERROR;
-             dest_node = dfa->edests[node].elems[0];
-             if (re_node_set_contains (&mctx->state_log[*pidx]->nodes,
-                                       dest_node))
-               return dest_node;
-           }
-       }
-
-      if (naccepted != 0
-         || check_node_accept (mctx, dfa->nodes + node, *pidx))
-       {
-         Idx dest_node = dfa->nexts[node];
-         *pidx = (naccepted == 0) ? *pidx + 1 : *pidx + naccepted;
-         if (fs && (*pidx > mctx->match_last || mctx->state_log[*pidx] == NULL
-                    || !re_node_set_contains (&mctx->state_log[*pidx]->nodes,
-                                              dest_node)))
-           return REG_MISSING;
-         re_node_set_empty (eps_via_nodes);
-         return dest_node;
-       }
-    }
-  return REG_MISSING;
-}
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-push_fail_stack (struct re_fail_stack_t *fs, Idx str_idx, Idx dest_node,
-                Idx nregs, regmatch_t *regs, re_node_set *eps_via_nodes)
-{
-  reg_errcode_t err;
-  Idx num = fs->num++;
-  if (fs->num == fs->alloc)
-    {
-      struct re_fail_stack_ent_t *new_array;
-      new_array = realloc (fs->stack, (sizeof (struct re_fail_stack_ent_t)
-                                      * fs->alloc * 2));
-      if (new_array == NULL)
-       return REG_ESPACE;
-      fs->alloc *= 2;
-      fs->stack = new_array;
-    }
-  fs->stack[num].idx = str_idx;
-  fs->stack[num].node = dest_node;
-  fs->stack[num].regs = re_malloc (regmatch_t, nregs);
-  if (fs->stack[num].regs == NULL)
-    return REG_ESPACE;
-  memcpy (fs->stack[num].regs, regs, sizeof (regmatch_t) * nregs);
-  err = re_node_set_init_copy (&fs->stack[num].eps_via_nodes, eps_via_nodes);
-  return err;
-}
-
-static Idx
-internal_function
-pop_fail_stack (struct re_fail_stack_t *fs, Idx *pidx, Idx nregs,
-               regmatch_t *regs, re_node_set *eps_via_nodes)
-{
-  Idx num = --fs->num;
-  assert (REG_VALID_INDEX (num));
-  *pidx = fs->stack[num].idx;
-  memcpy (regs, fs->stack[num].regs, sizeof (regmatch_t) * nregs);
-  re_node_set_free (eps_via_nodes);
-  re_free (fs->stack[num].regs);
-  *eps_via_nodes = fs->stack[num].eps_via_nodes;
-  return fs->stack[num].node;
-}
-
-/* Set the positions where the subexpressions are starts/ends to registers
-   PMATCH.
-   Note: We assume that pmatch[0] is already set, and
-   pmatch[i].rm_so == pmatch[i].rm_eo == -1 for 0 < i < nmatch.  */
-
-static reg_errcode_t
-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 = preg->buffer;
-  Idx idx, cur_node;
-  re_node_set eps_via_nodes;
-  struct re_fail_stack_t *fs;
-  struct re_fail_stack_t fs_body = { 0, 2, NULL };
-  regmatch_t *prev_idx_match;
-  bool prev_idx_match_malloced = false;
-
-#ifdef DEBUG
-  assert (nmatch > 1);
-  assert (mctx->state_log != NULL);
-#endif
-  if (fl_backtrack)
-    {
-      fs = &fs_body;
-      fs->stack = re_malloc (struct re_fail_stack_ent_t, fs->alloc);
-      if (fs->stack == NULL)
-       return REG_ESPACE;
-    }
-  else
-    fs = NULL;
-
-  cur_node = dfa->init_node;
-  re_node_set_init_empty (&eps_via_nodes);
-
-  if (__libc_use_alloca (nmatch * sizeof (regmatch_t)))
-    prev_idx_match = (regmatch_t *) alloca (nmatch * sizeof (regmatch_t));
-  else
-    {
-      prev_idx_match = re_malloc (regmatch_t, nmatch);
-      if (prev_idx_match == NULL)
-       {
-         free_fail_stack_return (fs);
-         return REG_ESPACE;
-       }
-      prev_idx_match_malloced = true;
-    }
-  memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
-
-  for (idx = pmatch[0].rm_so; idx <= pmatch[0].rm_eo ;)
-    {
-      update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
-
-      if (idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
-       {
-         Idx reg_idx;
-         if (fs)
-           {
-             for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
-               if (pmatch[reg_idx].rm_so > -1 && pmatch[reg_idx].rm_eo == -1)
-                 break;
-             if (reg_idx == nmatch)
-               {
-                 re_node_set_free (&eps_via_nodes);
-                 if (prev_idx_match_malloced)
-                   re_free (prev_idx_match);
-                 return free_fail_stack_return (fs);
-               }
-             cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
-                                        &eps_via_nodes);
-           }
-         else
-           {
-             re_node_set_free (&eps_via_nodes);
-             if (prev_idx_match_malloced)
-               re_free (prev_idx_match);
-             return REG_NOERROR;
-           }
-       }
-
-      /* Proceed to next node.  */
-      cur_node = proceed_next_node (mctx, nmatch, pmatch, &idx, cur_node,
-                                   &eps_via_nodes, fs);
-
-      if (BE (! REG_VALID_INDEX (cur_node), 0))
-       {
-         if (BE (cur_node == REG_ERROR, 0))
-           {
-             re_node_set_free (&eps_via_nodes);
-             if (prev_idx_match_malloced)
-               re_free (prev_idx_match);
-             free_fail_stack_return (fs);
-             return REG_ESPACE;
-           }
-         if (fs)
-           cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
-                                      &eps_via_nodes);
-         else
-           {
-             re_node_set_free (&eps_via_nodes);
-             if (prev_idx_match_malloced)
-               re_free (prev_idx_match);
-             return REG_NOMATCH;
-           }
-       }
-    }
-  re_node_set_free (&eps_via_nodes);
-  if (prev_idx_match_malloced)
-    re_free (prev_idx_match);
-  return free_fail_stack_return (fs);
-}
-
-static reg_errcode_t
-internal_function
-free_fail_stack_return (struct re_fail_stack_t *fs)
-{
-  if (fs)
-    {
-      Idx fs_idx;
-      for (fs_idx = 0; fs_idx < fs->num; ++fs_idx)
-       {
-         re_node_set_free (&fs->stack[fs_idx].eps_via_nodes);
-         re_free (fs->stack[fs_idx].regs);
-       }
-      re_free (fs->stack);
-    }
-  return REG_NOERROR;
-}
-
-static void
-internal_function
-update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
-            regmatch_t *prev_idx_match, Idx cur_node, Idx cur_idx, Idx nmatch)
-{
-  int type = dfa->nodes[cur_node].type;
-  if (type == OP_OPEN_SUBEXP)
-    {
-      Idx reg_num = dfa->nodes[cur_node].opr.idx + 1;
-
-      /* We are at the first node of this sub expression.  */
-      if (reg_num < nmatch)
-       {
-         pmatch[reg_num].rm_so = cur_idx;
-         pmatch[reg_num].rm_eo = -1;
-       }
-    }
-  else if (type == OP_CLOSE_SUBEXP)
-    {
-      Idx reg_num = dfa->nodes[cur_node].opr.idx + 1;
-      if (reg_num < nmatch)
-       {
-         /* We are at the last node of this sub expression.  */
-         if (pmatch[reg_num].rm_so < cur_idx)
-           {
-             pmatch[reg_num].rm_eo = cur_idx;
-             /* This is a non-empty match or we are not inside an optional
-                subexpression.  Accept this right away.  */
-             memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
-           }
-         else
-           {
-             if (dfa->nodes[cur_node].opt_subexp
-                 && prev_idx_match[reg_num].rm_so != -1)
-               /* We transited through an empty match for an optional
-                  subexpression, like (a?)*, and this is not the subexp's
-                  first match.  Copy back the old content of the registers
-                  so that matches of an inner subexpression are undone as
-                  well, like in ((a?))*.  */
-               memcpy (pmatch, prev_idx_match, sizeof (regmatch_t) * nmatch);
-             else
-               /* We completed a subexpression, but it may be part of
-                  an optional one, so do not update PREV_IDX_MATCH.  */
-               pmatch[reg_num].rm_eo = cur_idx;
-           }
-       }
-    }
-}
-
-/* This function checks the STATE_LOG from the SCTX->last_str_idx to 0
-   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...
-     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':
-       i. If 'b' isn't in the STATE_LOG[STR_IDX+strlen('s')], we throw
-          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'.
-     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'.
-       ii. If 'b' is in the STATE_LOG[STR_IDX] but 'b' is thrown away,
-           we throw away the node 'a'.  */
-
-#define STATE_NODE_CONTAINS(state,node) \
-  ((state) != NULL && re_node_set_contains (&(state)->nodes, node))
-
-static reg_errcode_t
-internal_function
-sift_states_backward (const re_match_context_t *mctx, re_sift_context_t *sctx)
-{
-  reg_errcode_t err;
-  int null_cnt = 0;
-  Idx str_idx = sctx->last_str_idx;
-  re_node_set cur_dest;
-
-#ifdef DEBUG
-  assert (mctx->state_log != NULL && mctx->state_log[str_idx] != NULL);
-#endif
-
-  /* Build sifted state_log[str_idx].  It has the nodes which can epsilon
-     transit to the last_node and the last_node itself.  */
-  err = re_node_set_init_1 (&cur_dest, sctx->last_node);
-  if (BE (err != REG_NOERROR, 0))
-    return err;
-  err = update_cur_sifted_state (mctx, sctx, str_idx, &cur_dest);
-  if (BE (err != REG_NOERROR, 0))
-    goto free_return;
-
-  /* Then check each states in the state_log.  */
-  while (str_idx > 0)
-    {
-      /* Update counters.  */
-      null_cnt = (sctx->sifted_states[str_idx] == NULL) ? null_cnt + 1 : 0;
-      if (null_cnt > mctx->max_mb_elem_len)
-       {
-         memset (sctx->sifted_states, '\0',
-                 sizeof (re_dfastate_t *) * str_idx);
-         re_node_set_free (&cur_dest);
-         return REG_NOERROR;
-       }
-      re_node_set_empty (&cur_dest);
-      --str_idx;
-
-      if (mctx->state_log[str_idx])
-       {
-         err = build_sifted_states (mctx, sctx, str_idx, &cur_dest);
-         if (BE (err != REG_NOERROR, 0))
-           goto free_return;
-       }
-
-      /* Add all the nodes which satisfy the following conditions:
-        - It can epsilon transit to a node in CUR_DEST.
-        - It is in CUR_SRC.
-        And update state_log.  */
-      err = update_cur_sifted_state (mctx, sctx, str_idx, &cur_dest);
-      if (BE (err != REG_NOERROR, 0))
-       goto free_return;
-    }
-  err = REG_NOERROR;
- free_return:
-  re_node_set_free (&cur_dest);
-  return err;
-}
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-build_sifted_states (const re_match_context_t *mctx, re_sift_context_t *sctx,
-                    Idx str_idx, re_node_set *cur_dest)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  const re_node_set *cur_src = &mctx->state_log[str_idx]->non_eps_nodes;
-  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'.
-     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]'
-     (with the epsilon nodes pre-filtered out).  */
-  for (i = 0; i < cur_src->nelem; i++)
-    {
-      Idx prev_node = cur_src->elems[i];
-      int naccepted = 0;
-      bool ok;
-
-#ifdef DEBUG
-      re_token_type_t type = dfa->nodes[prev_node].type;
-      assert (!IS_EPSILON_NODE (type));
-#endif
-#ifdef RE_ENABLE_I18N
-      /* 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);
-#endif /* RE_ENABLE_I18N */
-
-      /* We don't check backreferences here.
-        See update_cur_sifted_state().  */
-      if (!naccepted
-         && check_node_accept (mctx, dfa->nodes + prev_node, str_idx)
-         && STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + 1],
-                                 dfa->nexts[prev_node]))
-       naccepted = 1;
-
-      if (naccepted == 0)
-       continue;
-
-      if (sctx->limits.nelem)
-       {
-         Idx to_idx = str_idx + naccepted;
-         if (check_dst_limits (mctx, &sctx->limits,
-                               dfa->nexts[prev_node], to_idx,
-                               prev_node, str_idx))
-           continue;
-       }
-      ok = re_node_set_insert (cur_dest, prev_node);
-      if (BE (! ok, 0))
-       return REG_ESPACE;
-    }
-
-  return REG_NOERROR;
-}
-
-/* Helper functions.  */
-
-static reg_errcode_t
-internal_function
-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
-       && 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, next_state_log_idx + 1);
-      if (BE (err != REG_NOERROR, 0))
-       return err;
-    }
-
-  if (top < next_state_log_idx)
-    {
-      memset (mctx->state_log + top + 1, '\0',
-             sizeof (re_dfastate_t *) * (next_state_log_idx - top));
-      mctx->state_log_top = next_state_log_idx;
-    }
-  return REG_NOERROR;
-}
-
-static reg_errcode_t
-internal_function
-merge_state_array (const re_dfa_t *dfa, re_dfastate_t **dst,
-                  re_dfastate_t **src, Idx num)
-{
-  Idx st_idx;
-  reg_errcode_t err;
-  for (st_idx = 0; st_idx < num; ++st_idx)
-    {
-      if (dst[st_idx] == NULL)
-       dst[st_idx] = src[st_idx];
-      else if (src[st_idx] != NULL)
-       {
-         re_node_set merged_set;
-         err = re_node_set_init_union (&merged_set, &dst[st_idx]->nodes,
-                                       &src[st_idx]->nodes);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-         dst[st_idx] = re_acquire_state (&err, dfa, &merged_set);
-         re_node_set_free (&merged_set);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-       }
-    }
-  return REG_NOERROR;
-}
-
-static reg_errcode_t
-internal_function
-update_cur_sifted_state (const re_match_context_t *mctx,
-                        re_sift_context_t *sctx, Idx str_idx,
-                        re_node_set *dest_nodes)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  reg_errcode_t err = REG_NOERROR;
-  const re_node_set *candidates;
-  candidates = ((mctx->state_log[str_idx] == NULL) ? NULL
-               : &mctx->state_log[str_idx]->nodes);
-
-  if (dest_nodes->nelem == 0)
-    sctx->sifted_states[str_idx] = NULL;
-  else
-    {
-      if (candidates)
-       {
-         /* At first, add the nodes which can epsilon transit to a node in
-            DEST_NODE.  */
-         err = add_epsilon_src_nodes (dfa, dest_nodes, candidates);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-
-         /* Then, check the limitations in the current sift_context.  */
-         if (sctx->limits.nelem)
-           {
-             err = check_subexp_limits (dfa, dest_nodes, candidates, 
&sctx->limits,
-                                        mctx->bkref_ents, str_idx);
-             if (BE (err != REG_NOERROR, 0))
-               return err;
-           }
-       }
-
-      sctx->sifted_states[str_idx] = re_acquire_state (&err, dfa, dest_nodes);
-      if (BE (err != REG_NOERROR, 0))
-       return err;
-    }
-
-  if (candidates && mctx->state_log[str_idx]->has_backref)
-    {
-      err = sift_states_bkref (mctx, sctx, str_idx, candidates);
-      if (BE (err != REG_NOERROR, 0))
-       return err;
-    }
-  return REG_NOERROR;
-}
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-add_epsilon_src_nodes (const re_dfa_t *dfa, re_node_set *dest_nodes,
-                      const re_node_set *candidates)
-{
-  reg_errcode_t err = REG_NOERROR;
-  Idx i;
-
-  re_dfastate_t *state = re_acquire_state (&err, dfa, dest_nodes);
-  if (BE (err != REG_NOERROR, 0))
-    return err;
-
-  if (!state->inveclosure.alloc)
-    {
-      err = re_node_set_alloc (&state->inveclosure, dest_nodes->nelem);
-      if (BE (err != REG_NOERROR, 0))
-       return REG_ESPACE;
-      for (i = 0; i < dest_nodes->nelem; i++)
-       {
-         err = re_node_set_merge (&state->inveclosure,
-                                  dfa->inveclosures + dest_nodes->elems[i]);
-         if (BE (err != REG_NOERROR, 0))
-           return REG_ESPACE;
-       }
-    }
-  return re_node_set_add_intersect (dest_nodes, candidates,
-                                   &state->inveclosure);
-}
-
-static reg_errcode_t
-internal_function
-sub_epsilon_src_nodes (const re_dfa_t *dfa, Idx node, re_node_set *dest_nodes,
-                      const re_node_set *candidates)
-{
-    Idx ecl_idx;
-    reg_errcode_t err;
-    re_node_set *inv_eclosure = dfa->inveclosures + node;
-    re_node_set except_nodes;
-    re_node_set_init_empty (&except_nodes);
-    for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
-      {
-       Idx cur_node = inv_eclosure->elems[ecl_idx];
-       if (cur_node == node)
-         continue;
-       if (IS_EPSILON_NODE (dfa->nodes[cur_node].type))
-         {
-           Idx edst1 = dfa->edests[cur_node].elems[0];
-           Idx edst2 = ((dfa->edests[cur_node].nelem > 1)
-                        ? dfa->edests[cur_node].elems[1] : REG_MISSING);
-           if ((!re_node_set_contains (inv_eclosure, edst1)
-                && re_node_set_contains (dest_nodes, edst1))
-               || (REG_VALID_NONZERO_INDEX (edst2)
-                   && !re_node_set_contains (inv_eclosure, edst2)
-                   && re_node_set_contains (dest_nodes, edst2)))
-             {
-               err = re_node_set_add_intersect (&except_nodes, candidates,
-                                                dfa->inveclosures + cur_node);
-               if (BE (err != REG_NOERROR, 0))
-                 {
-                   re_node_set_free (&except_nodes);
-                   return err;
-                 }
-             }
-         }
-      }
-    for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
-      {
-       Idx cur_node = inv_eclosure->elems[ecl_idx];
-       if (!re_node_set_contains (&except_nodes, cur_node))
-         {
-           Idx idx = re_node_set_contains (dest_nodes, cur_node) - 1;
-           re_node_set_remove_at (dest_nodes, idx);
-         }
-      }
-    re_node_set_free (&except_nodes);
-    return REG_NOERROR;
-}
-
-static bool
-internal_function
-check_dst_limits (const re_match_context_t *mctx, const re_node_set *limits,
-                 Idx dst_node, Idx dst_idx, Idx src_node, Idx src_idx)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  Idx lim_idx, src_pos, dst_pos;
-
-  Idx dst_bkref_idx = search_cur_bkref_entry (mctx, dst_idx);
-  Idx src_bkref_idx = search_cur_bkref_entry (mctx, src_idx);
-  for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
-    {
-      Idx subexp_idx;
-      struct re_backref_cache_entry *ent;
-      ent = mctx->bkref_ents + limits->elems[lim_idx];
-      subexp_idx = dfa->nodes[ent->node].opr.idx;
-
-      dst_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
-                                          subexp_idx, dst_node, dst_idx,
-                                          dst_bkref_idx);
-      src_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
-                                          subexp_idx, src_node, src_idx,
-                                          src_bkref_idx);
-
-      /* In case of:
-        <src> <dst> ( <subexp> )
-        ( <subexp> ) <src> <dst>
-        ( <subexp1> <src> <subexp2> <dst> <subexp3> )  */
-      if (src_pos == dst_pos)
-       continue; /* This is unrelated limitation.  */
-      else
-       return true;
-    }
-  return false;
-}
-
-static int
-internal_function
-check_dst_limits_calc_pos_1 (const re_match_context_t *mctx, int boundaries,
-                            Idx subexp_idx, Idx from_node, Idx bkref_idx)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  const re_node_set *eclosures = dfa->eclosures + from_node;
-  Idx node_idx;
-
-  /* Else, we are on the boundary: examine the nodes on the epsilon
-     closure.  */
-  for (node_idx = 0; node_idx < eclosures->nelem; ++node_idx)
-    {
-      Idx node = eclosures->elems[node_idx];
-      switch (dfa->nodes[node].type)
-       {
-       case OP_BACK_REF:
-         if (bkref_idx != REG_MISSING)
-           {
-             struct re_backref_cache_entry *ent = mctx->bkref_ents + bkref_idx;
-             do
-               {
-                 Idx dst;
-                 int cpos;
-
-                 if (ent->node != node)
-                   continue;
-
-                 if (subexp_idx < BITSET_WORD_BITS
-                     && !(ent->eps_reachable_subexps_map
-                          & ((bitset_word_t) 1 << subexp_idx)))
-                   continue;
-
-                 /* Recurse trying to reach the OP_OPEN_SUBEXP and
-                    OP_CLOSE_SUBEXP cases below.  But, if the
-                    destination node is the same node as the source
-                    node, don't recurse because it would cause an
-                    infinite loop: a regex that exhibits this behavior
-                    is ()\1*\1*  */
-                 dst = dfa->edests[node].elems[0];
-                 if (dst == from_node)
-                   {
-                     if (boundaries & 1)
-                       return -1;
-                     else /* if (boundaries & 2) */
-                       return 0;
-                   }
-
-                 cpos =
-                   check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
-                                                dst, bkref_idx);
-                 if (cpos == -1 /* && (boundaries & 1) */)
-                   return -1;
-                 if (cpos == 0 && (boundaries & 2))
-                   return 0;
-
-                 if (subexp_idx < BITSET_WORD_BITS)
-                   ent->eps_reachable_subexps_map
-                     &= ~((bitset_word_t) 1 << subexp_idx);
-               }
-             while (ent++->more);
-           }
-         break;
-
-       case OP_OPEN_SUBEXP:
-         if ((boundaries & 1) && subexp_idx == dfa->nodes[node].opr.idx)
-           return -1;
-         break;
-
-       case OP_CLOSE_SUBEXP:
-         if ((boundaries & 2) && subexp_idx == dfa->nodes[node].opr.idx)
-           return 0;
-         break;
-
-       default:
-           break;
-       }
-    }
-
-  return (boundaries & 2) ? 1 : 0;
-}
-
-static int
-internal_function
-check_dst_limits_calc_pos (const re_match_context_t *mctx, Idx limit,
-                          Idx subexp_idx, Idx from_node, Idx str_idx,
-                          Idx bkref_idx)
-{
-  struct re_backref_cache_entry *lim = mctx->bkref_ents + limit;
-  int boundaries;
-
-  /* If we are outside the range of the subexpression, return -1 or 1.  */
-  if (str_idx < lim->subexp_from)
-    return -1;
-
-  if (lim->subexp_to < str_idx)
-    return 1;
-
-  /* If we are within the subexpression, return 0.  */
-  boundaries = (str_idx == lim->subexp_from);
-  boundaries |= (str_idx == lim->subexp_to) << 1;
-  if (boundaries == 0)
-    return 0;
-
-  /* Else, examine epsilon closure.  */
-  return check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
-                                     from_node, bkref_idx);
-}
-
-/* Check the limitations of sub expressions LIMITS, and remove the nodes
-   which are against limitations from DEST_NODES. */
-
-static reg_errcode_t
-internal_function
-check_subexp_limits (const re_dfa_t *dfa, re_node_set *dest_nodes,
-                    const re_node_set *candidates, re_node_set *limits,
-                    struct re_backref_cache_entry *bkref_ents, Idx str_idx)
-{
-  reg_errcode_t err;
-  Idx node_idx, lim_idx;
-
-  for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
-    {
-      Idx subexp_idx;
-      struct re_backref_cache_entry *ent;
-      ent = bkref_ents + limits->elems[lim_idx];
-
-      if (str_idx <= ent->subexp_from || ent->str_idx < str_idx)
-       continue; /* This is unrelated limitation.  */
-
-      subexp_idx = dfa->nodes[ent->node].opr.idx;
-      if (ent->subexp_to == str_idx)
-       {
-         Idx ops_node = REG_MISSING;
-         Idx cls_node = REG_MISSING;
-         for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
-           {
-             Idx node = dest_nodes->elems[node_idx];
-             re_token_type_t type = dfa->nodes[node].type;
-             if (type == OP_OPEN_SUBEXP
-                 && subexp_idx == dfa->nodes[node].opr.idx)
-               ops_node = node;
-             else if (type == OP_CLOSE_SUBEXP
-                      && subexp_idx == dfa->nodes[node].opr.idx)
-               cls_node = node;
-           }
-
-         /* Check the limitation of the open subexpression.  */
-         /* Note that (ent->subexp_to = str_idx != ent->subexp_from).  */
-         if (REG_VALID_INDEX (ops_node))
-           {
-             err = sub_epsilon_src_nodes (dfa, ops_node, dest_nodes,
-                                          candidates);
-             if (BE (err != REG_NOERROR, 0))
-               return err;
-           }
-
-         /* Check the limitation of the close subexpression.  */
-         if (REG_VALID_INDEX (cls_node))
-           for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
-             {
-               Idx node = dest_nodes->elems[node_idx];
-               if (!re_node_set_contains (dfa->inveclosures + node,
-                                          cls_node)
-                   && !re_node_set_contains (dfa->eclosures + node,
-                                             cls_node))
-                 {
-                   /* It is against this limitation.
-                      Remove it form the current sifted state.  */
-                   err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
-                                                candidates);
-                   if (BE (err != REG_NOERROR, 0))
-                     return err;
-                   --node_idx;
-                 }
-             }
-       }
-      else /* (ent->subexp_to != str_idx)  */
-       {
-         for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
-           {
-             Idx node = dest_nodes->elems[node_idx];
-             re_token_type_t type = dfa->nodes[node].type;
-             if (type == OP_CLOSE_SUBEXP || type == OP_OPEN_SUBEXP)
-               {
-                 if (subexp_idx != dfa->nodes[node].opr.idx)
-                   continue;
-                 /* It is against this limitation.
-                    Remove it form the current sifted state.  */
-                 err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
-                                              candidates);
-                 if (BE (err != REG_NOERROR, 0))
-                   return err;
-               }
-           }
-       }
-    }
-  return REG_NOERROR;
-}
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-sift_states_bkref (const re_match_context_t *mctx, re_sift_context_t *sctx,
-                  Idx str_idx, const re_node_set *candidates)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  reg_errcode_t err;
-  Idx node_idx, node;
-  re_sift_context_t local_sctx;
-  Idx first_idx = search_cur_bkref_entry (mctx, str_idx);
-
-  if (first_idx == REG_MISSING)
-    return REG_NOERROR;
-
-  local_sctx.sifted_states = NULL; /* Mark that it hasn't been initialized.  */
-
-  for (node_idx = 0; node_idx < candidates->nelem; ++node_idx)
-    {
-      Idx enabled_idx;
-      re_token_type_t type;
-      struct re_backref_cache_entry *entry;
-      node = candidates->elems[node_idx];
-      type = dfa->nodes[node].type;
-      /* Avoid infinite loop for the REs like "()\1+".  */
-      if (node == sctx->last_node && str_idx == sctx->last_str_idx)
-       continue;
-      if (type != OP_BACK_REF)
-       continue;
-
-      entry = mctx->bkref_ents + first_idx;
-      enabled_idx = first_idx;
-      do
-       {
-         Idx subexp_len;
-         Idx to_idx;
-         Idx dst_node;
-         bool ok;
-         re_dfastate_t *cur_state;
-
-         if (entry->node != node)
-           continue;
-         subexp_len = entry->subexp_to - entry->subexp_from;
-         to_idx = str_idx + subexp_len;
-         dst_node = (subexp_len ? dfa->nexts[node]
-                     : dfa->edests[node].elems[0]);
-
-         if (to_idx > sctx->last_str_idx
-             || sctx->sifted_states[to_idx] == NULL
-             || !STATE_NODE_CONTAINS (sctx->sifted_states[to_idx], dst_node)
-             || check_dst_limits (mctx, &sctx->limits, node,
-                                  str_idx, dst_node, to_idx))
-           continue;
-
-         if (local_sctx.sifted_states == NULL)
-           {
-             local_sctx = *sctx;
-             err = re_node_set_init_copy (&local_sctx.limits, &sctx->limits);
-             if (BE (err != REG_NOERROR, 0))
-               goto free_return;
-           }
-         local_sctx.last_node = node;
-         local_sctx.last_str_idx = str_idx;
-         ok = re_node_set_insert (&local_sctx.limits, enabled_idx);
-         if (BE (! ok, 0))
-           {
-             err = REG_ESPACE;
-             goto free_return;
-           }
-         cur_state = local_sctx.sifted_states[str_idx];
-         err = sift_states_backward (mctx, &local_sctx);
-         if (BE (err != REG_NOERROR, 0))
-           goto free_return;
-         if (sctx->limited_states != NULL)
-           {
-             err = merge_state_array (dfa, sctx->limited_states,
-                                      local_sctx.sifted_states,
-                                      str_idx + 1);
-             if (BE (err != REG_NOERROR, 0))
-               goto free_return;
-           }
-         local_sctx.sifted_states[str_idx] = cur_state;
-         re_node_set_remove (&local_sctx.limits, enabled_idx);
-
-         /* mctx->bkref_ents may have changed, reload the pointer.  */
-         entry = mctx->bkref_ents + enabled_idx;
-       }
-      while (enabled_idx++, entry++->more);
-    }
-  err = REG_NOERROR;
- free_return:
-  if (local_sctx.sifted_states != NULL)
-    {
-      re_node_set_free (&local_sctx.limits);
-    }
-
-  return err;
-}
-
-
-#ifdef RE_ENABLE_I18N
-static int
-internal_function
-sift_states_iter_mb (const re_match_context_t *mctx, re_sift_context_t *sctx,
-                    Idx node_idx, Idx str_idx, Idx max_str_idx)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  int naccepted;
-  /* 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
-       destination was already thrown away, then the node
-       could't accept the current input "multi byte".   */
-    naccepted = 0;
-  /* Otherwise, it is sure that the node could accept
-     'naccepted' bytes input.  */
-  return naccepted;
-}
-#endif /* RE_ENABLE_I18N */
-
-
-/* Functions for state transition.  */
-
-/* Return the next state to which the current state STATE will transit by
-   accepting the current input byte, and update STATE_LOG if necessary.
-   If STATE can accept a multibyte char/collating element/back reference
-   update the destination of STATE_LOG.  */
-
-static re_dfastate_t *
-internal_function __attribute_warn_unused_result__
-transit_state (reg_errcode_t *err, re_match_context_t *mctx,
-              re_dfastate_t *state)
-{
-  re_dfastate_t **trtable;
-  unsigned char ch;
-
-#ifdef RE_ENABLE_I18N
-  /* If the current state can accept multibyte.  */
-  if (BE (state->accept_mb, 0))
-    {
-      *err = transit_state_mb (mctx, state);
-      if (BE (*err != REG_NOERROR, 0))
-       return NULL;
-    }
-#endif /* RE_ENABLE_I18N */
-
-  /* Then decide the next state with the single byte.  */
-#if 0
-  if (0)
-    /* don't use transition table  */
-    return transit_state_sb (err, mctx, state);
-#endif
-
-  /* Use transition table  */
-  ch = re_string_fetch_byte (&mctx->input);
-  for (;;)
-    {
-      trtable = state->trtable;
-      if (BE (trtable != NULL, 1))
-       return trtable[ch];
-
-      trtable = state->word_trtable;
-      if (BE (trtable != NULL, 1))
-       {
-         unsigned int context;
-         context
-           = re_string_context_at (&mctx->input,
-                                   re_string_cur_idx (&mctx->input) - 1,
-                                   mctx->eflags);
-         if (IS_WORD_CONTEXT (context))
-           return trtable[ch + SBC_MAX];
-         else
-           return trtable[ch];
-       }
-
-      if (!build_trtable (mctx->dfa, state))
-       {
-         *err = REG_ESPACE;
-         return NULL;
-       }
-
-      /* Retry, we now have a transition table.  */
-    }
-}
-
-/* Update the state_log if we need */
-static re_dfastate_t *
-internal_function
-merge_state_with_log (reg_errcode_t *err, re_match_context_t *mctx,
-                     re_dfastate_t *next_state)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  Idx cur_idx = re_string_cur_idx (&mctx->input);
-
-  if (cur_idx > mctx->state_log_top)
-    {
-      mctx->state_log[cur_idx] = next_state;
-      mctx->state_log_top = cur_idx;
-    }
-  else if (mctx->state_log[cur_idx] == 0)
-    {
-      mctx->state_log[cur_idx] = next_state;
-    }
-  else
-    {
-      re_dfastate_t *pstate;
-      unsigned int context;
-      re_node_set next_nodes, *log_nodes, *table_nodes = NULL;
-      /* If (state_log[cur_idx] != 0), it implies that cur_idx is
-        the destination of a multibyte char/collating element/
-        back reference.  Then the next state is the union set of
-        these destinations and the results of the transition table.  */
-      pstate = mctx->state_log[cur_idx];
-      log_nodes = pstate->entrance_nodes;
-      if (next_state != NULL)
-       {
-         table_nodes = next_state->entrance_nodes;
-         *err = re_node_set_init_union (&next_nodes, table_nodes,
-                                            log_nodes);
-         if (BE (*err != REG_NOERROR, 0))
-           return NULL;
-       }
-      else
-       next_nodes = *log_nodes;
-      /* Note: We already add the nodes of the initial state,
-        then we don't need to add them here.  */
-
-      context = re_string_context_at (&mctx->input,
-                                     re_string_cur_idx (&mctx->input) - 1,
-                                     mctx->eflags);
-      next_state = mctx->state_log[cur_idx]
-       = re_acquire_state_context (err, dfa, &next_nodes, context);
-      /* We don't need to check errors here, since the return value of
-        this function is next_state and ERR is already set.  */
-
-      if (table_nodes != NULL)
-       re_node_set_free (&next_nodes);
-    }
-
-  if (BE (dfa->nbackref, 0) && next_state != NULL)
-    {
-      /* Check OP_OPEN_SUBEXP in the current state in case that we use them
-        later.  We must check them here, since the back references in the
-        next state might use them.  */
-      *err = check_subexp_matching_top (mctx, &next_state->nodes,
-                                       cur_idx);
-      if (BE (*err != REG_NOERROR, 0))
-       return NULL;
-
-      /* If the next state has back references.  */
-      if (next_state->has_backref)
-       {
-         *err = transit_state_bkref (mctx, &next_state->nodes);
-         if (BE (*err != REG_NOERROR, 0))
-           return NULL;
-         next_state = mctx->state_log[cur_idx];
-       }
-    }
-
-  return next_state;
-}
-
-/* Skip bytes in the input that correspond to part of a
-   multi-byte match, then look in the log for a state
-   from which to restart matching.  */
-static re_dfastate_t *
-internal_function
-find_recover_state (reg_errcode_t *err, re_match_context_t *mctx)
-{
-  re_dfastate_t *cur_state;
-  do
-    {
-      Idx max = mctx->state_log_top;
-      Idx cur_str_idx = re_string_cur_idx (&mctx->input);
-
-      do
-       {
-         if (++cur_str_idx > max)
-           return NULL;
-         re_string_skip_bytes (&mctx->input, 1);
-       }
-      while (mctx->state_log[cur_str_idx] == NULL);
-
-      cur_state = merge_state_with_log (err, mctx, NULL);
-    }
-  while (*err == REG_NOERROR && cur_state == NULL);
-  return cur_state;
-}
-
-/* Helper functions for transit_state.  */
-
-/* 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
-   corresponding back references.  */
-
-static reg_errcode_t
-internal_function
-check_subexp_matching_top (re_match_context_t *mctx, re_node_set *cur_nodes,
-                          Idx str_idx)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  Idx node_idx;
-  reg_errcode_t err;
-
-  /* TODO: This isn't efficient.
-          Because there might be more than one nodes whose types are
-          OP_OPEN_SUBEXP and whose index is SUBEXP_IDX, we must check all
-          nodes.
-          E.g. RE: (a){2}  */
-  for (node_idx = 0; node_idx < cur_nodes->nelem; ++node_idx)
-    {
-      Idx node = cur_nodes->elems[node_idx];
-      if (dfa->nodes[node].type == OP_OPEN_SUBEXP
-         && dfa->nodes[node].opr.idx < BITSET_WORD_BITS
-         && (dfa->used_bkref_map
-             & ((bitset_word_t) 1 << dfa->nodes[node].opr.idx)))
-       {
-         err = match_ctx_add_subtop (mctx, node, str_idx);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-       }
-    }
-  return REG_NOERROR;
-}
-
-#if 0
-/* Return the next state to which the current state STATE will transit by
-   accepting the current input byte.  */
-
-static re_dfastate_t *
-transit_state_sb (reg_errcode_t *err, re_match_context_t *mctx,
-                 re_dfastate_t *state)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  re_node_set next_nodes;
-  re_dfastate_t *next_state;
-  Idx node_cnt, cur_str_idx = re_string_cur_idx (&mctx->input);
-  unsigned int context;
-
-  *err = re_node_set_alloc (&next_nodes, state->nodes.nelem + 1);
-  if (BE (*err != REG_NOERROR, 0))
-    return NULL;
-  for (node_cnt = 0; node_cnt < state->nodes.nelem; ++node_cnt)
-    {
-      Idx cur_node = state->nodes.elems[node_cnt];
-      if (check_node_accept (mctx, dfa->nodes + cur_node, cur_str_idx))
-       {
-         *err = re_node_set_merge (&next_nodes,
-                                   dfa->eclosures + dfa->nexts[cur_node]);
-         if (BE (*err != REG_NOERROR, 0))
-           {
-             re_node_set_free (&next_nodes);
-             return NULL;
-           }
-       }
-    }
-  context = re_string_context_at (&mctx->input, cur_str_idx, mctx->eflags);
-  next_state = re_acquire_state_context (err, dfa, &next_nodes, context);
-  /* We don't need to check errors here, since the return value of
-     this function is next_state and ERR is already set.  */
-
-  re_node_set_free (&next_nodes);
-  re_string_skip_bytes (&mctx->input, 1);
-  return next_state;
-}
-#endif
-
-#ifdef RE_ENABLE_I18N
-static reg_errcode_t
-internal_function
-transit_state_mb (re_match_context_t *mctx, re_dfastate_t *pstate)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  reg_errcode_t err;
-  Idx i;
-
-  for (i = 0; i < pstate->nodes.nelem; ++i)
-    {
-      re_node_set dest_nodes, *new_nodes;
-      Idx cur_node_idx = pstate->nodes.elems[i];
-      int naccepted;
-      Idx dest_idx;
-      unsigned int context;
-      re_dfastate_t *dest_state;
-
-      if (!dfa->nodes[cur_node_idx].accept_mb)
-       continue;
-
-      if (dfa->nodes[cur_node_idx].constraint)
-       {
-         context = re_string_context_at (&mctx->input,
-                                         re_string_cur_idx (&mctx->input),
-                                         mctx->eflags);
-         if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
-                                          context))
-           continue;
-       }
-
-      /* How many bytes the node can accept?  */
-      naccepted = check_node_accept_bytes (dfa, cur_node_idx, &mctx->input,
-                                          re_string_cur_idx (&mctx->input));
-      if (naccepted == 0)
-       continue;
-
-      /* 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);
-      err = clean_state_log_if_needed (mctx, dest_idx);
-      if (BE (err != REG_NOERROR, 0))
-       return err;
-#ifdef DEBUG
-      assert (dfa->nexts[cur_node_idx] != REG_MISSING);
-#endif
-      new_nodes = dfa->eclosures + dfa->nexts[cur_node_idx];
-
-      dest_state = mctx->state_log[dest_idx];
-      if (dest_state == NULL)
-       dest_nodes = *new_nodes;
-      else
-       {
-         err = re_node_set_init_union (&dest_nodes,
-                                       dest_state->entrance_nodes, new_nodes);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-       }
-      context = re_string_context_at (&mctx->input, dest_idx - 1,
-                                     mctx->eflags);
-      mctx->state_log[dest_idx]
-       = re_acquire_state_context (&err, dfa, &dest_nodes, context);
-      if (dest_state != NULL)
-       re_node_set_free (&dest_nodes);
-      if (BE (mctx->state_log[dest_idx] == NULL && err != REG_NOERROR, 0))
-       return err;
-    }
-  return REG_NOERROR;
-}
-#endif /* RE_ENABLE_I18N */
-
-static reg_errcode_t
-internal_function
-transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  reg_errcode_t err;
-  Idx i;
-  Idx cur_str_idx = re_string_cur_idx (&mctx->input);
-
-  for (i = 0; i < nodes->nelem; ++i)
-    {
-      Idx dest_str_idx, prev_nelem, bkc_idx;
-      Idx node_idx = nodes->elems[i];
-      unsigned int context;
-      const re_token_t *node = dfa->nodes + node_idx;
-      re_node_set *new_dest_nodes;
-
-      /* Check whether 'node' is a backreference or not.  */
-      if (node->type != OP_BACK_REF)
-       continue;
-
-      if (node->constraint)
-       {
-         context = re_string_context_at (&mctx->input, cur_str_idx,
-                                         mctx->eflags);
-         if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
-           continue;
-       }
-
-      /* '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
-        the backreference to appropriate state_log.  */
-#ifdef DEBUG
-      assert (dfa->nexts[node_idx] != REG_MISSING);
-#endif
-      for (; bkc_idx < mctx->nbkref_ents; ++bkc_idx)
-       {
-         Idx subexp_len;
-         re_dfastate_t *dest_state;
-         struct re_backref_cache_entry *bkref_ent;
-         bkref_ent = mctx->bkref_ents + bkc_idx;
-         if (bkref_ent->node != node_idx || bkref_ent->str_idx != cur_str_idx)
-           continue;
-         subexp_len = bkref_ent->subexp_to - bkref_ent->subexp_from;
-         new_dest_nodes = (subexp_len == 0
-                           ? dfa->eclosures + dfa->edests[node_idx].elems[0]
-                           : dfa->eclosures + dfa->nexts[node_idx]);
-         dest_str_idx = (cur_str_idx + bkref_ent->subexp_to
-                         - bkref_ent->subexp_from);
-         context = re_string_context_at (&mctx->input, dest_str_idx - 1,
-                                         mctx->eflags);
-         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.  */
-         if (dest_state == NULL)
-           {
-             mctx->state_log[dest_str_idx]
-               = re_acquire_state_context (&err, dfa, new_dest_nodes,
-                                           context);
-             if (BE (mctx->state_log[dest_str_idx] == NULL
-                     && err != REG_NOERROR, 0))
-               goto free_return;
-           }
-         else
-           {
-             re_node_set dest_nodes;
-             err = re_node_set_init_union (&dest_nodes,
-                                           dest_state->entrance_nodes,
-                                           new_dest_nodes);
-             if (BE (err != REG_NOERROR, 0))
-               {
-                 re_node_set_free (&dest_nodes);
-                 goto free_return;
-               }
-             mctx->state_log[dest_str_idx]
-               = re_acquire_state_context (&err, dfa, &dest_nodes, context);
-             re_node_set_free (&dest_nodes);
-             if (BE (mctx->state_log[dest_str_idx] == NULL
-                     && err != REG_NOERROR, 0))
-               goto free_return;
-           }
-         /* We need to check recursively if the backreference can epsilon
-            transit.  */
-         if (subexp_len == 0
-             && mctx->state_log[cur_str_idx]->nodes.nelem > prev_nelem)
-           {
-             err = check_subexp_matching_top (mctx, new_dest_nodes,
-                                              cur_str_idx);
-             if (BE (err != REG_NOERROR, 0))
-               goto free_return;
-             err = transit_state_bkref (mctx, new_dest_nodes);
-             if (BE (err != REG_NOERROR, 0))
-               goto free_return;
-           }
-       }
-    }
-  err = REG_NOERROR;
- free_return:
-  return err;
-}
-
-/* Enumerate all the candidates which the backreference BKREF_NODE can match
-   at BKREF_STR_IDX, and register them by match_ctx_add_entry().
-   Note that we might collect inappropriate candidates here.
-   However, the cost of checking them strictly here is too high, then we
-   delay these checking for prune_impossible_nodes().  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-get_subexp (re_match_context_t *mctx, Idx bkref_node, Idx bkref_str_idx)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  Idx subexp_num, sub_top_idx;
-  const char *buf = (const char *) re_string_get_buffer (&mctx->input);
-  /* Return if we have already checked BKREF_NODE at BKREF_STR_IDX.  */
-  Idx cache_idx = search_cur_bkref_entry (mctx, bkref_str_idx);
-  if (cache_idx != REG_MISSING)
-    {
-      const struct re_backref_cache_entry *entry
-       = mctx->bkref_ents + cache_idx;
-      do
-       if (entry->node == bkref_node)
-         return REG_NOERROR; /* We already checked it.  */
-      while (entry++->more);
-    }
-
-  subexp_num = dfa->nodes[bkref_node].opr.idx;
-
-  /* For each sub expression  */
-  for (sub_top_idx = 0; sub_top_idx < mctx->nsub_tops; ++sub_top_idx)
-    {
-      reg_errcode_t err;
-      re_sub_match_top_t *sub_top = mctx->sub_tops[sub_top_idx];
-      re_sub_match_last_t *sub_last;
-      Idx sub_last_idx, sl_str, bkref_str_off;
-
-      if (dfa->nodes[sub_top->node].opr.idx != subexp_num)
-       continue; /* It isn't related.  */
-
-      sl_str = sub_top->str_idx;
-      bkref_str_off = bkref_str_idx;
-      /* At first, check the last node of sub expressions we already
-        evaluated.  */
-      for (sub_last_idx = 0; sub_last_idx < sub_top->nlasts; ++sub_last_idx)
-       {
-         regoff_t sl_str_diff;
-         sub_last = sub_top->lasts[sub_last_idx];
-         sl_str_diff = sub_last->str_idx - sl_str;
-         /* The matched string by the sub expression match with the substring
-            at the back reference?  */
-         if (sl_str_diff > 0)
-           {
-             if (BE (bkref_str_off + sl_str_diff > mctx->input.valid_len, 0))
-               {
-                 /* Not enough chars for a successful match.  */
-                 if (bkref_str_off + sl_str_diff > mctx->input.len)
-                   break;
-
-                 err = clean_state_log_if_needed (mctx,
-                                                  bkref_str_off
-                                                  + sl_str_diff);
-                 if (BE (err != REG_NOERROR, 0))
-                   return err;
-                 buf = (const char *) re_string_get_buffer (&mctx->input);
-               }
-             if (memcmp (buf + bkref_str_off, buf + sl_str, sl_str_diff) != 0)
-               /* We don't need to search this sub expression any more.  */
-               break;
-           }
-         bkref_str_off += sl_str_diff;
-         sl_str += sl_str_diff;
-         err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
-                               bkref_str_idx);
-
-         /* Reload buf, since the preceding call might have reallocated
-            the buffer.  */
-         buf = (const char *) re_string_get_buffer (&mctx->input);
-
-         if (err == REG_NOMATCH)
-           continue;
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-       }
-
-      if (sub_last_idx < sub_top->nlasts)
-       continue;
-      if (sub_last_idx > 0)
-       ++sl_str;
-      /* Then, search for the other last nodes of the sub expression.  */
-      for (; sl_str <= bkref_str_idx; ++sl_str)
-       {
-         Idx cls_node;
-         regoff_t sl_str_off;
-         const re_node_set *nodes;
-         sl_str_off = sl_str - sub_top->str_idx;
-         /* The matched string by the sub expression match with the substring
-            at the back reference?  */
-         if (sl_str_off > 0)
-           {
-             if (BE (bkref_str_off >= mctx->input.valid_len, 0))
-               {
-                 /* If we are at the end of the input, we cannot match.  */
-                 if (bkref_str_off >= mctx->input.len)
-                   break;
-
-                 err = extend_buffers (mctx, bkref_str_off + 1);
-                 if (BE (err != REG_NOERROR, 0))
-                   return err;
-
-                 buf = (const char *) re_string_get_buffer (&mctx->input);
-               }
-             if (buf [bkref_str_off++] != buf[sl_str - 1])
-               break; /* We don't need to search this sub expression
-                         any more.  */
-           }
-         if (mctx->state_log[sl_str] == NULL)
-           continue;
-         /* Does this state have a ')' of the sub expression?  */
-         nodes = &mctx->state_log[sl_str]->nodes;
-         cls_node = find_subexp_node (dfa, nodes, subexp_num,
-                                      OP_CLOSE_SUBEXP);
-         if (cls_node == REG_MISSING)
-           continue; /* No.  */
-         if (sub_top->path == NULL)
-           {
-             sub_top->path = calloc (sizeof (state_array_t),
-                                     sl_str - sub_top->str_idx + 1);
-             if (sub_top->path == NULL)
-               return REG_ESPACE;
-           }
-         /* Can the OP_OPEN_SUBEXP node arrive the OP_CLOSE_SUBEXP node
-            in the current context?  */
-         err = check_arrival (mctx, sub_top->path, sub_top->node,
-                              sub_top->str_idx, cls_node, sl_str,
-                              OP_CLOSE_SUBEXP);
-         if (err == REG_NOMATCH)
-             continue;
-         if (BE (err != REG_NOERROR, 0))
-             return err;
-         sub_last = match_ctx_add_sublast (sub_top, cls_node, sl_str);
-         if (BE (sub_last == NULL, 0))
-           return REG_ESPACE;
-         err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
-                               bkref_str_idx);
-         if (err == REG_NOMATCH)
-           continue;
-       }
-    }
-  return REG_NOERROR;
-}
-
-/* Helper functions for get_subexp().  */
-
-/* Check SUB_LAST can arrive to the back reference BKREF_NODE at BKREF_STR.
-   If it can arrive, register the sub expression expressed with SUB_TOP
-   and SUB_LAST.  */
-
-static reg_errcode_t
-internal_function
-get_subexp_sub (re_match_context_t *mctx, const re_sub_match_top_t *sub_top,
-               re_sub_match_last_t *sub_last, Idx bkref_node, Idx bkref_str)
-{
-  reg_errcode_t err;
-  Idx to_idx;
-  /* Can the subexpression arrive the back reference?  */
-  err = check_arrival (mctx, &sub_last->path, sub_last->node,
-                      sub_last->str_idx, bkref_node, bkref_str,
-                      OP_OPEN_SUBEXP);
-  if (err != REG_NOERROR)
-    return err;
-  err = match_ctx_add_entry (mctx, bkref_node, bkref_str, sub_top->str_idx,
-                            sub_last->str_idx);
-  if (BE (err != REG_NOERROR, 0))
-    return err;
-  to_idx = bkref_str + sub_last->str_idx - sub_top->str_idx;
-  return clean_state_log_if_needed (mctx, to_idx);
-}
-
-/* Find the first node which is '(' or ')' and whose index is SUBEXP_IDX.
-   Search '(' if FL_OPEN, or search ')' otherwise.
-   TODO: This function isn't efficient...
-        Because there might be more than one nodes whose types are
-        OP_OPEN_SUBEXP and whose index is SUBEXP_IDX, we must check all
-        nodes.
-        E.g. RE: (a){2}  */
-
-static Idx
-internal_function
-find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
-                 Idx subexp_idx, int type)
-{
-  Idx cls_idx;
-  for (cls_idx = 0; cls_idx < nodes->nelem; ++cls_idx)
-    {
-      Idx cls_node = nodes->elems[cls_idx];
-      const re_token_t *node = dfa->nodes + cls_node;
-      if (node->type == type
-         && node->opr.idx == subexp_idx)
-       return cls_node;
-    }
-  return REG_MISSING;
-}
-
-/* Check whether the node TOP_NODE at TOP_STR can arrive to the node
-   LAST_NODE at LAST_STR.  We record the path onto PATH since it will be
-   heavily reused.
-   Return REG_NOERROR if it can arrive, or REG_NOMATCH otherwise.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-check_arrival (re_match_context_t *mctx, state_array_t *path, Idx top_node,
-              Idx top_str, Idx last_node, Idx last_str, int type)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  reg_errcode_t err = REG_NOERROR;
-  Idx subexp_num, backup_cur_idx, str_idx, null_cnt;
-  re_dfastate_t *cur_state = NULL;
-  re_node_set *cur_nodes, next_nodes;
-  re_dfastate_t **backup_state_log;
-  unsigned int context;
-
-  subexp_num = dfa->nodes[top_node].opr.idx;
-  /* Extend the buffer if we need.  */
-  if (BE (path->alloc < last_str + mctx->max_mb_elem_len + 1, 0))
-    {
-      re_dfastate_t **new_array;
-      Idx old_alloc = path->alloc;
-      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))
-       return REG_ESPACE;
-      path->array = new_array;
-      path->alloc = new_alloc;
-      memset (new_array + old_alloc, '\0',
-             sizeof (re_dfastate_t *) * (path->alloc - old_alloc));
-    }
-
-  str_idx = path->next_idx ? path->next_idx : top_str;
-
-  /* Temporary modify MCTX.  */
-  backup_state_log = mctx->state_log;
-  backup_cur_idx = mctx->input.cur_idx;
-  mctx->state_log = path->array;
-  mctx->input.cur_idx = str_idx;
-
-  /* Setup initial node set.  */
-  context = re_string_context_at (&mctx->input, str_idx - 1, mctx->eflags);
-  if (str_idx == top_str)
-    {
-      err = re_node_set_init_1 (&next_nodes, top_node);
-      if (BE (err != REG_NOERROR, 0))
-       return err;
-      err = check_arrival_expand_ecl (dfa, &next_nodes, subexp_num, type);
-      if (BE (err != REG_NOERROR, 0))
-       {
-         re_node_set_free (&next_nodes);
-         return err;
-       }
-    }
-  else
-    {
-      cur_state = mctx->state_log[str_idx];
-      if (cur_state && cur_state->has_backref)
-       {
-         err = re_node_set_init_copy (&next_nodes, &cur_state->nodes);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-       }
-      else
-       re_node_set_init_empty (&next_nodes);
-    }
-  if (str_idx == top_str || (cur_state && cur_state->has_backref))
-    {
-      if (next_nodes.nelem)
-       {
-         err = expand_bkref_cache (mctx, &next_nodes, str_idx,
-                                   subexp_num, type);
-         if (BE (err != REG_NOERROR, 0))
-           {
-             re_node_set_free (&next_nodes);
-             return err;
-           }
-       }
-      cur_state = re_acquire_state_context (&err, dfa, &next_nodes, context);
-      if (BE (cur_state == NULL && err != REG_NOERROR, 0))
-       {
-         re_node_set_free (&next_nodes);
-         return err;
-       }
-      mctx->state_log[str_idx] = cur_state;
-    }
-
-  for (null_cnt = 0; str_idx < last_str && null_cnt <= mctx->max_mb_elem_len;)
-    {
-      re_node_set_empty (&next_nodes);
-      if (mctx->state_log[str_idx + 1])
-       {
-         err = re_node_set_merge (&next_nodes,
-                                  &mctx->state_log[str_idx + 1]->nodes);
-         if (BE (err != REG_NOERROR, 0))
-           {
-             re_node_set_free (&next_nodes);
-             return err;
-           }
-       }
-      if (cur_state)
-       {
-         err = check_arrival_add_next_nodes (mctx, str_idx,
-                                             &cur_state->non_eps_nodes,
-                                             &next_nodes);
-         if (BE (err != REG_NOERROR, 0))
-           {
-             re_node_set_free (&next_nodes);
-             return err;
-           }
-       }
-      ++str_idx;
-      if (next_nodes.nelem)
-       {
-         err = check_arrival_expand_ecl (dfa, &next_nodes, subexp_num, type);
-         if (BE (err != REG_NOERROR, 0))
-           {
-             re_node_set_free (&next_nodes);
-             return err;
-           }
-         err = expand_bkref_cache (mctx, &next_nodes, str_idx,
-                                   subexp_num, type);
-         if (BE (err != REG_NOERROR, 0))
-           {
-             re_node_set_free (&next_nodes);
-             return err;
-           }
-       }
-      context = re_string_context_at (&mctx->input, str_idx - 1, mctx->eflags);
-      cur_state = re_acquire_state_context (&err, dfa, &next_nodes, context);
-      if (BE (cur_state == NULL && err != REG_NOERROR, 0))
-       {
-         re_node_set_free (&next_nodes);
-         return err;
-       }
-      mctx->state_log[str_idx] = cur_state;
-      null_cnt = cur_state == NULL ? null_cnt + 1 : 0;
-    }
-  re_node_set_free (&next_nodes);
-  cur_nodes = (mctx->state_log[last_str] == NULL ? NULL
-              : &mctx->state_log[last_str]->nodes);
-  path->next_idx = str_idx;
-
-  /* Fix MCTX.  */
-  mctx->state_log = backup_state_log;
-  mctx->input.cur_idx = backup_cur_idx;
-
-  /* Then check the current node set has the node LAST_NODE.  */
-  if (cur_nodes != NULL && re_node_set_contains (cur_nodes, last_node))
-    return REG_NOERROR;
-
-  return REG_NOMATCH;
-}
-
-/* Helper functions for check_arrival.  */
-
-/* Calculate the destination nodes of CUR_NODES at STR_IDX, and append them
-   to NEXT_NODES.
-   TODO: This function is similar to the functions transit_state*(),
-        however this function has many additional works.
-        Can't we unify them?  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-check_arrival_add_next_nodes (re_match_context_t *mctx, Idx str_idx,
-                             re_node_set *cur_nodes, re_node_set *next_nodes)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  bool ok;
-  Idx cur_idx;
-#ifdef RE_ENABLE_I18N
-  reg_errcode_t err = REG_NOERROR;
-#endif
-  re_node_set union_set;
-  re_node_set_init_empty (&union_set);
-  for (cur_idx = 0; cur_idx < cur_nodes->nelem; ++cur_idx)
-    {
-      int naccepted = 0;
-      Idx cur_node = cur_nodes->elems[cur_idx];
-#ifdef DEBUG
-      re_token_type_t type = dfa->nodes[cur_node].type;
-      assert (!IS_EPSILON_NODE (type));
-#endif
-#ifdef RE_ENABLE_I18N
-      /* If the node may accept "multi byte".  */
-      if (dfa->nodes[cur_node].accept_mb)
-       {
-         naccepted = check_node_accept_bytes (dfa, cur_node, &mctx->input,
-                                              str_idx);
-         if (naccepted > 1)
-           {
-             re_dfastate_t *dest_state;
-             Idx next_node = dfa->nexts[cur_node];
-             Idx next_idx = str_idx + naccepted;
-             dest_state = mctx->state_log[next_idx];
-             re_node_set_empty (&union_set);
-             if (dest_state)
-               {
-                 err = re_node_set_merge (&union_set, &dest_state->nodes);
-                 if (BE (err != REG_NOERROR, 0))
-                   {
-                     re_node_set_free (&union_set);
-                     return err;
-                   }
-               }
-             ok = re_node_set_insert (&union_set, next_node);
-             if (BE (! ok, 0))
-               {
-                 re_node_set_free (&union_set);
-                 return REG_ESPACE;
-               }
-             mctx->state_log[next_idx] = re_acquire_state (&err, dfa,
-                                                           &union_set);
-             if (BE (mctx->state_log[next_idx] == NULL
-                     && err != REG_NOERROR, 0))
-               {
-                 re_node_set_free (&union_set);
-                 return err;
-               }
-           }
-       }
-#endif /* RE_ENABLE_I18N */
-      if (naccepted
-         || check_node_accept (mctx, dfa->nodes + cur_node, str_idx))
-       {
-         ok = re_node_set_insert (next_nodes, dfa->nexts[cur_node]);
-         if (BE (! ok, 0))
-           {
-             re_node_set_free (&union_set);
-             return REG_ESPACE;
-           }
-       }
-    }
-  re_node_set_free (&union_set);
-  return REG_NOERROR;
-}
-
-/* For all the nodes in CUR_NODES, add the epsilon closures of them to
-   CUR_NODES, however exclude the nodes which are:
-    - inside the sub expression whose number is EX_SUBEXP, if FL_OPEN.
-    - out of the sub expression whose number is EX_SUBEXP, if !FL_OPEN.
-*/
-
-static reg_errcode_t
-internal_function
-check_arrival_expand_ecl (const re_dfa_t *dfa, re_node_set *cur_nodes,
-                         Idx ex_subexp, int type)
-{
-  reg_errcode_t err;
-  Idx idx, outside_node;
-  re_node_set new_nodes;
-#ifdef DEBUG
-  assert (cur_nodes->nelem);
-#endif
-  err = re_node_set_alloc (&new_nodes, cur_nodes->nelem);
-  if (BE (err != REG_NOERROR, 0))
-    return err;
-  /* Create a new node set NEW_NODES with the nodes which are epsilon
-     closures of the node in CUR_NODES.  */
-
-  for (idx = 0; idx < cur_nodes->nelem; ++idx)
-    {
-      Idx cur_node = cur_nodes->elems[idx];
-      const re_node_set *eclosure = dfa->eclosures + cur_node;
-      outside_node = find_subexp_node (dfa, eclosure, ex_subexp, type);
-      if (outside_node == REG_MISSING)
-       {
-         /* There are no problematic nodes, just merge them.  */
-         err = re_node_set_merge (&new_nodes, eclosure);
-         if (BE (err != REG_NOERROR, 0))
-           {
-             re_node_set_free (&new_nodes);
-             return err;
-           }
-       }
-      else
-       {
-         /* There are problematic nodes, re-calculate incrementally.  */
-         err = check_arrival_expand_ecl_sub (dfa, &new_nodes, cur_node,
-                                             ex_subexp, type);
-         if (BE (err != REG_NOERROR, 0))
-           {
-             re_node_set_free (&new_nodes);
-             return err;
-           }
-       }
-    }
-  re_node_set_free (cur_nodes);
-  *cur_nodes = new_nodes;
-  return REG_NOERROR;
-}
-
-/* Helper function for check_arrival_expand_ecl.
-   Check incrementally the epsilon closure of TARGET, and if it isn't
-   problematic append it to DST_NODES.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-check_arrival_expand_ecl_sub (const re_dfa_t *dfa, re_node_set *dst_nodes,
-                             Idx target, Idx ex_subexp, int type)
-{
-  Idx cur_node;
-  for (cur_node = target; !re_node_set_contains (dst_nodes, cur_node);)
-    {
-      bool ok;
-
-      if (dfa->nodes[cur_node].type == type
-         && dfa->nodes[cur_node].opr.idx == ex_subexp)
-       {
-         if (type == OP_CLOSE_SUBEXP)
-           {
-             ok = re_node_set_insert (dst_nodes, cur_node);
-             if (BE (! ok, 0))
-               return REG_ESPACE;
-           }
-         break;
-       }
-      ok = re_node_set_insert (dst_nodes, cur_node);
-      if (BE (! ok, 0))
-       return REG_ESPACE;
-      if (dfa->edests[cur_node].nelem == 0)
-       break;
-      if (dfa->edests[cur_node].nelem == 2)
-       {
-         reg_errcode_t err;
-         err = check_arrival_expand_ecl_sub (dfa, dst_nodes,
-                                             dfa->edests[cur_node].elems[1],
-                                             ex_subexp, type);
-         if (BE (err != REG_NOERROR, 0))
-           return err;
-       }
-      cur_node = dfa->edests[cur_node].elems[0];
-    }
-  return REG_NOERROR;
-}
-
-
-/* For all the back references in the current state, calculate the
-   destination of the back references by the appropriate entry
-   in MCTX->BKREF_ENTS.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-expand_bkref_cache (re_match_context_t *mctx, re_node_set *cur_nodes,
-                   Idx cur_str, Idx subexp_num, int type)
-{
-  const re_dfa_t *const dfa = mctx->dfa;
-  reg_errcode_t err;
-  Idx cache_idx_start = search_cur_bkref_entry (mctx, cur_str);
-  struct re_backref_cache_entry *ent;
-
-  if (cache_idx_start == REG_MISSING)
-    return REG_NOERROR;
-
- restart:
-  ent = mctx->bkref_ents + cache_idx_start;
-  do
-    {
-      Idx to_idx, next_node;
-
-      /* Is this entry ENT is appropriate?  */
-      if (!re_node_set_contains (cur_nodes, ent->node))
-       continue; /* No.  */
-
-      to_idx = cur_str + ent->subexp_to - ent->subexp_from;
-      /* Calculate the destination of the back reference, and append it
-        to MCTX->STATE_LOG.  */
-      if (to_idx == cur_str)
-       {
-         /* The backreference did epsilon transit, we must re-check all the
-            node in the current state.  */
-         re_node_set new_dests;
-         reg_errcode_t err2, err3;
-         next_node = dfa->edests[ent->node].elems[0];
-         if (re_node_set_contains (cur_nodes, next_node))
-           continue;
-         err = re_node_set_init_1 (&new_dests, next_node);
-         err2 = check_arrival_expand_ecl (dfa, &new_dests, subexp_num, type);
-         err3 = re_node_set_merge (cur_nodes, &new_dests);
-         re_node_set_free (&new_dests);
-         if (BE (err != REG_NOERROR || err2 != REG_NOERROR
-                 || err3 != REG_NOERROR, 0))
-           {
-             err = (err != REG_NOERROR ? err
-                    : (err2 != REG_NOERROR ? err2 : err3));
-             return err;
-           }
-         /* TODO: It is still inefficient...  */
-         goto restart;
-       }
-      else
-       {
-         re_node_set union_set;
-         next_node = dfa->nexts[ent->node];
-         if (mctx->state_log[to_idx])
-           {
-             bool ok;
-             if (re_node_set_contains (&mctx->state_log[to_idx]->nodes,
-                                       next_node))
-               continue;
-             err = re_node_set_init_copy (&union_set,
-                                          &mctx->state_log[to_idx]->nodes);
-             ok = re_node_set_insert (&union_set, next_node);
-             if (BE (err != REG_NOERROR || ! ok, 0))
-               {
-                 re_node_set_free (&union_set);
-                 err = err != REG_NOERROR ? err : REG_ESPACE;
-                 return err;
-               }
-           }
-         else
-           {
-             err = re_node_set_init_1 (&union_set, next_node);
-             if (BE (err != REG_NOERROR, 0))
-               return err;
-           }
-         mctx->state_log[to_idx] = re_acquire_state (&err, dfa, &union_set);
-         re_node_set_free (&union_set);
-         if (BE (mctx->state_log[to_idx] == NULL
-                 && err != REG_NOERROR, 0))
-           return err;
-       }
-    }
-  while (ent++->more);
-  return REG_NOERROR;
-}
-
-/* Build transition table for the state.
-   Return true if successful.  */
-
-static bool
-internal_function
-build_trtable (const re_dfa_t *dfa, re_dfastate_t *state)
-{
-  reg_errcode_t err;
-  Idx i, j;
-  int ch;
-  bool need_word_trtable = false;
-  bitset_word_t elem, mask;
-  bool dests_node_malloced = false;
-  bool dest_states_malloced = false;
-  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;
-  bitset_t *dests_ch;
-  bitset_t acceptable;
-
-  struct dests_alloc
-  {
-    re_node_set dests_node[SBC_MAX];
-    bitset_t dests_ch[SBC_MAX];
-  } *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
-     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));
-  else
-    {
-      dests_alloc = re_malloc (struct dests_alloc, 1);
-      if (BE (dests_alloc == NULL, 0))
-       return false;
-      dests_node_malloced = true;
-    }
-  dests_node = dests_alloc->dests_node;
-  dests_ch = dests_alloc->dests_ch;
-
-  /* Initialize transition table.  */
-  state->word_trtable = state->trtable = NULL;
-
-  /* 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;
-    }
-
-  err = re_node_set_alloc (&follows, ndests + 1);
-  if (BE (err != REG_NOERROR, 0))
-    goto out_free;
-
-  /* Avoid arithmetic overflow in size calculation.  */
-  if (BE ((((SIZE_MAX - (sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX)
-           / (3 * sizeof (re_dfastate_t *)))
-          < ndests),
-         0))
-    goto out_free;
-
-  if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX
-                        + ndests * 3 * sizeof (re_dfastate_t *)))
-    dest_states = (re_dfastate_t **)
-      alloca (ndests * 3 * sizeof (re_dfastate_t *));
-  else
-    {
-      dest_states = (re_dfastate_t **)
-       malloc (ndests * 3 * sizeof (re_dfastate_t *));
-      if (BE (dest_states == NULL, 0))
-       {
-out_free:
-         if (dest_states_malloced)
-           free (dest_states);
-         re_node_set_free (&follows);
-         for (i = 0; i < ndests; ++i)
-           re_node_set_free (dests_node + i);
-         if (dests_node_malloced)
-           free (dests_alloc);
-         return false;
-       }
-      dest_states_malloced = true;
-    }
-  dest_states_word = dest_states + ndests;
-  dest_states_nl = dest_states_word + ndests;
-  bitset_empty (acceptable);
-
-  /* Then build the states for all destinations.  */
-  for (i = 0; i < ndests; ++i)
-    {
-      Idx next_node;
-      re_node_set_empty (&follows);
-      /* Merge the follows of this destination states.  */
-      for (j = 0; j < dests_node[i].nelem; ++j)
-       {
-         next_node = dfa->nexts[dests_node[i].elems[j]];
-         if (next_node != REG_MISSING)
-           {
-             err = re_node_set_merge (&follows, dfa->eclosures + next_node);
-             if (BE (err != REG_NOERROR, 0))
-               goto out_free;
-           }
-       }
-      dest_states[i] = re_acquire_state_context (&err, dfa, &follows, 0);
-      if (BE (dest_states[i] == NULL && err != REG_NOERROR, 0))
-       goto out_free;
-      /* If the new state has context constraint,
-        build appropriate states for these contexts.  */
-      if (dest_states[i]->has_constraint)
-       {
-         dest_states_word[i] = re_acquire_state_context (&err, dfa, &follows,
-                                                         CONTEXT_WORD);
-         if (BE (dest_states_word[i] == NULL && err != REG_NOERROR, 0))
-           goto out_free;
-
-         if (dest_states[i] != dest_states_word[i] && dfa->mb_cur_max > 1)
-           need_word_trtable = true;
-
-         dest_states_nl[i] = re_acquire_state_context (&err, dfa, &follows,
-                                                       CONTEXT_NEWLINE);
-         if (BE (dest_states_nl[i] == NULL && err != REG_NOERROR, 0))
-           goto out_free;
-       }
-      else
-       {
-         dest_states_word[i] = dest_states[i];
-         dest_states_nl[i] = dest_states[i];
-       }
-      bitset_merge (acceptable, dests_ch[i]);
-    }
-
-  if (!BE (need_word_trtable, 0))
-    {
-      /* We don't care about whether the following character is a word
-        character, or we are in a single-byte character set so we can
-        discern by looking at the character code: allocate a
-        256-entry transition table.  */
-      trtable = state->trtable =
-       (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), SBC_MAX);
-      if (BE (trtable == NULL, 0))
-       goto out_free;
-
-      /* For all characters ch...:  */
-      for (i = 0; i < BITSET_WORDS; ++i)
-       for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
-            elem;
-            mask <<= 1, elem >>= 1, ++ch)
-         if (BE (elem & 1, 0))
-           {
-             /* There must be exactly one destination which accepts
-                character ch.  See group_nodes_into_DFAstates.  */
-             for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
-               ;
-
-             /* j-th destination accepts the word character ch.  */
-             if (dfa->word_char[i] & mask)
-               trtable[ch] = dest_states_word[j];
-             else
-               trtable[ch] = dest_states[j];
-           }
-    }
-  else
-    {
-      /* We care about whether the following character is a word
-        character, and we are in a multi-byte character set: discern
-        by looking at the character code: build two 256-entry
-        transition tables, one starting at trtable[0] and one
-        starting at trtable[SBC_MAX].  */
-      trtable = state->word_trtable =
-       (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), 2 * SBC_MAX);
-      if (BE (trtable == NULL, 0))
-       goto out_free;
-
-      /* For all characters ch...:  */
-      for (i = 0; i < BITSET_WORDS; ++i)
-       for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
-            elem;
-            mask <<= 1, elem >>= 1, ++ch)
-         if (BE (elem & 1, 0))
-           {
-             /* There must be exactly one destination which accepts
-                character ch.  See group_nodes_into_DFAstates.  */
-             for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
-               ;
-
-             /* j-th destination accepts the word character ch.  */
-             trtable[ch] = dest_states[j];
-             trtable[ch + SBC_MAX] = dest_states_word[j];
-           }
-    }
-
-  /* new line */
-  if (bitset_contain (acceptable, NEWLINE_CHAR))
-    {
-      /* The current state accepts newline character.  */
-      for (j = 0; j < ndests; ++j)
-       if (bitset_contain (dests_ch[j], NEWLINE_CHAR))
-         {
-           /* k-th destination accepts newline character.  */
-           trtable[NEWLINE_CHAR] = dest_states_nl[j];
-           if (need_word_trtable)
-             trtable[NEWLINE_CHAR + SBC_MAX] = dest_states_nl[j];
-           /* There must be only one destination which accepts
-              newline.  See group_nodes_into_DFAstates.  */
-           break;
-         }
-    }
-
-  if (dest_states_malloced)
-    free (dest_states);
-
-  re_node_set_free (&follows);
-  for (i = 0; i < ndests; ++i)
-    re_node_set_free (dests_node + i);
-
-  if (dests_node_malloced)
-    free (dests_alloc);
-
-  return true;
-}
-
-/* Group all nodes belonging to STATE into several destinations.
-   Then for all destinations, set the nodes belonging to the destination
-   to DESTS_NODE[i] and set the characters accepted by the destination
-   to DEST_CH[i].  This function return the number of destinations.  */
-
-static Idx
-internal_function
-group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
-                           re_node_set *dests_node, bitset_t *dests_ch)
-{
-  reg_errcode_t err;
-  bool ok;
-  Idx i, j, k;
-  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 (i = 0; i < cur_nodes->nelem; ++i)
-    {
-      re_token_t *node = &dfa->nodes[cur_nodes->elems[i]];
-      re_token_type_t type = node->type;
-      unsigned int constraint = node->constraint;
-
-      /* Enumerate all single byte character this node can accept.  */
-      if (type == CHARACTER)
-       bitset_set (accepts, node->opr.c);
-      else if (type == SIMPLE_BRACKET)
-       {
-         bitset_merge (accepts, node->opr.sbcset);
-       }
-      else if (type == OP_PERIOD)
-       {
-#ifdef RE_ENABLE_I18N
-         if (dfa->mb_cur_max > 1)
-           bitset_merge (accepts, dfa->sb_char);
-         else
-#endif
-           bitset_set_all (accepts);
-         if (!(dfa->syntax & RE_DOT_NEWLINE))
-           bitset_clear (accepts, '\n');
-         if (dfa->syntax & RE_DOT_NOT_NULL)
-           bitset_clear (accepts, '\0');
-       }
-#ifdef RE_ENABLE_I18N
-      else if (type == OP_UTF8_PERIOD)
-       {
-         if (ASCII_CHARS % BITSET_WORD_BITS == 0)
-           memset (accepts, -1, ASCII_CHARS / CHAR_BIT);
-         else
-           bitset_merge (accepts, utf8_sb_map);
-         if (!(dfa->syntax & RE_DOT_NEWLINE))
-           bitset_clear (accepts, '\n');
-         if (dfa->syntax & RE_DOT_NOT_NULL)
-           bitset_clear (accepts, '\0');
-       }
-#endif
-      else
-       continue;
-
-      /* Check the 'accepts' and sift the characters which are not
-        match it the context.  */
-      if (constraint)
-       {
-         if (constraint & NEXT_NEWLINE_CONSTRAINT)
-           {
-             bool accepts_newline = bitset_contain (accepts, NEWLINE_CHAR);
-             bitset_empty (accepts);
-             if (accepts_newline)
-               bitset_set (accepts, NEWLINE_CHAR);
-             else
-               continue;
-           }
-         if (constraint & NEXT_ENDBUF_CONSTRAINT)
-           {
-             bitset_empty (accepts);
-             continue;
-           }
-
-         if (constraint & NEXT_WORD_CONSTRAINT)
-           {
-             bitset_word_t any_set = 0;
-             if (type == CHARACTER && !node->word_char)
-               {
-                 bitset_empty (accepts);
-                 continue;
-               }
-#ifdef RE_ENABLE_I18N
-             if (dfa->mb_cur_max > 1)
-               for (j = 0; j < BITSET_WORDS; ++j)
-                 any_set |= (accepts[j] &= (dfa->word_char[j] | 
~dfa->sb_char[j]));
-             else
-#endif
-               for (j = 0; j < BITSET_WORDS; ++j)
-                 any_set |= (accepts[j] &= dfa->word_char[j]);
-             if (!any_set)
-               continue;
-           }
-         if (constraint & NEXT_NOTWORD_CONSTRAINT)
-           {
-             bitset_word_t any_set = 0;
-             if (type == CHARACTER && node->word_char)
-               {
-                 bitset_empty (accepts);
-                 continue;
-               }
-#ifdef RE_ENABLE_I18N
-             if (dfa->mb_cur_max > 1)
-               for (j = 0; j < BITSET_WORDS; ++j)
-                 any_set |= (accepts[j] &= ~(dfa->word_char[j] & 
dfa->sb_char[j]));
-             else
-#endif
-               for (j = 0; j < BITSET_WORDS; ++j)
-                 any_set |= (accepts[j] &= ~dfa->word_char[j]);
-             if (!any_set)
-               continue;
-           }
-       }
-
-      /* 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)
-       {
-         bitset_t intersec; /* Intersection sets, see below.  */
-         bitset_t remains;
-         /* Flags, see below.  */
-         bitset_word_t has_intersec, not_subset, not_consumed;
-
-         /* Optimization, skip if this state doesn't accept the character.  */
-         if (type == CHARACTER && !bitset_contain (dests_ch[j], node->opr.c))
-           continue;
-
-         /* 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];
-         /* And skip if the intersection set is empty.  */
-         if (!has_intersec)
-           continue;
-
-         /* Then check if this state is a subset of 'accepts'.  */
-         not_subset = not_consumed = 0;
-         for (k = 0; k < BITSET_WORDS; ++k)
-           {
-             not_subset |= remains[k] = ~accepts[k] & dests_ch[j][k];
-             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 (not_subset)
-           {
-             bitset_copy (dests_ch[ndests], remains);
-             bitset_copy (dests_ch[j], intersec);
-             err = re_node_set_init_copy (dests_node + ndests, &dests_node[j]);
-             if (BE (err != REG_NOERROR, 0))
-               goto error_return;
-             ++ndests;
-           }
-
-         /* Put the position in the current group. */
-         ok = re_node_set_insert (&dests_node[j], cur_nodes->elems[i]);
-         if (BE (! ok, 0))
-           goto error_return;
-
-         /* If all characters are consumed, go to next node. */
-         if (!not_consumed)
-           break;
-       }
-      /* Some characters remain, create a new group. */
-      if (j == ndests)
-       {
-         bitset_copy (dests_ch[ndests], accepts);
-         err = re_node_set_init_1 (dests_node + ndests, cur_nodes->elems[i]);
-         if (BE (err != REG_NOERROR, 0))
-           goto error_return;
-         ++ndests;
-         bitset_empty (accepts);
-       }
-    }
-  return ndests;
- error_return:
-  for (j = 0; j < ndests; ++j)
-    re_node_set_free (dests_node + j);
-  return REG_MISSING;
-}
-
-#ifdef RE_ENABLE_I18N
-/* 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.
-
-   This function handles the nodes which can accept one character, or
-   one collating element like '.', '[a-z]', opposite to the other nodes
-   can only accept one byte.  */
-
-static int
-internal_function
-check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
-                        const re_string_t *input, Idx str_idx)
-{
-  const re_token_t *node = dfa->nodes + node_idx;
-  int char_len, elem_len;
-  Idx i;
-
-  if (BE (node->type == OP_UTF8_PERIOD, 0))
-    {
-      unsigned char c = re_string_byte_at (input, str_idx), d;
-      if (BE (c < 0xc2, 1))
-       return 0;
-
-      if (str_idx + 2 > input->len)
-       return 0;
-
-      d = re_string_byte_at (input, str_idx + 1);
-      if (c < 0xe0)
-       return (d < 0x80 || d > 0xbf) ? 0 : 2;
-      else if (c < 0xf0)
-       {
-         char_len = 3;
-         if (c == 0xe0 && d < 0xa0)
-           return 0;
-       }
-      else if (c < 0xf8)
-       {
-         char_len = 4;
-         if (c == 0xf0 && d < 0x90)
-           return 0;
-       }
-      else if (c < 0xfc)
-       {
-         char_len = 5;
-         if (c == 0xf8 && d < 0x88)
-           return 0;
-       }
-      else if (c < 0xfe)
-       {
-         char_len = 6;
-         if (c == 0xfc && d < 0x84)
-           return 0;
-       }
-      else
-       return 0;
-
-      if (str_idx + char_len > input->len)
-       return 0;
-
-      for (i = 1; i < char_len; ++i)
-       {
-         d = re_string_byte_at (input, str_idx + i);
-         if (d < 0x80 || d > 0xbf)
-           return 0;
-       }
-      return char_len;
-    }
-
-  char_len = re_string_char_size_at (input, str_idx);
-  if (node->type == OP_PERIOD)
-    {
-      if (char_len <= 1)
-       return 0;
-      /* FIXME: I don't think this if is needed, as both '\n'
-        and '\0' are char_len == 1.  */
-      /* '.' accepts any one character except the following two cases.  */
-      if ((!(dfa->syntax & RE_DOT_NEWLINE) &&
-          re_string_byte_at (input, str_idx) == '\n') ||
-         ((dfa->syntax & RE_DOT_NOT_NULL) &&
-          re_string_byte_at (input, str_idx) == '\0'))
-       return 0;
-      return char_len;
-    }
-
-  elem_len = re_string_elem_size_at (input, str_idx);
-  if ((elem_len <= 1 && char_len <= 1) || char_len == 0)
-    return 0;
-
-  if (node->type == COMPLEX_BRACKET)
-    {
-      const re_charset_t *cset = node->opr.mbcset;
-# ifdef _LIBC
-      const unsigned char *pin
-       = ((const unsigned char *) re_string_get_buffer (input) + str_idx);
-      Idx j;
-      uint32_t nrules;
-# endif /* _LIBC */
-      int match_len = 0;
-      wchar_t wc = ((cset->nranges || cset->nchar_classes || cset->nmbchars)
-                   ? re_string_wchar_at (input, str_idx) : 0);
-
-      /* match with multibyte character?  */
-      for (i = 0; i < cset->nmbchars; ++i)
-       if (wc == cset->mbchars[i])
-         {
-           match_len = char_len;
-           goto check_node_accept_bytes_match;
-         }
-      /* match with character_class?  */
-      for (i = 0; i < cset->nchar_classes; ++i)
-       {
-         wctype_t wt = cset->char_classes[i];
-         if (__iswctype (wc, wt))
-           {
-             match_len = char_len;
-             goto check_node_accept_bytes_match;
-           }
-       }
-
-# ifdef _LIBC
-      nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
-      if (nrules != 0)
-       {
-         unsigned int in_collseq = 0;
-         const int32_t *table, *indirect;
-         const unsigned char *weights, *extra;
-         const char *collseqwc;
-         /* This #include defines a local function!  */
-#  include <locale/weight.h>
-
-         /* match with collating_symbol?  */
-         if (cset->ncoll_syms)
-           extra = (const unsigned char *)
-             _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB);
-         for (i = 0; i < cset->ncoll_syms; ++i)
-           {
-             const unsigned char *coll_sym = extra + cset->coll_syms[i];
-             /* Compare the length of input collating element and
-                the length of current collating element.  */
-             if (*coll_sym != elem_len)
-               continue;
-             /* Compare each bytes.  */
-             for (j = 0; j < *coll_sym; j++)
-               if (pin[j] != coll_sym[1 + j])
-                 break;
-             if (j == *coll_sym)
-               {
-                 /* Match if every bytes is equal.  */
-                 match_len = j;
-                 goto check_node_accept_bytes_match;
-               }
-           }
-
-         if (cset->nranges)
-           {
-             if (elem_len <= char_len)
-               {
-                 collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
-                 in_collseq = __collseq_table_lookup (collseqwc, wc);
-               }
-             else
-               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])
-             {
-               match_len = elem_len;
-               goto check_node_accept_bytes_match;
-             }
-
-         /* match with equivalence_class?  */
-         if (cset->nequiv_classes)
-           {
-             const unsigned char *cp = pin;
-             table = (const int32_t *)
-               _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
-             weights = (const unsigned char *)
-               _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTMB);
-             extra = (const unsigned char *)
-               _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
-             indirect = (const int32_t *)
-               _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB);
-             int32_t idx = findidx (&cp, elem_len);
-             if (idx > 0)
-               for (i = 0; i < cset->nequiv_classes; ++i)
-                 {
-                   int32_t equiv_class_idx = cset->equiv_classes[i];
-                   size_t weight_len = weights[idx & 0xffffff];
-                   if (weight_len == weights[equiv_class_idx & 0xffffff]
-                       && (idx >> 24) == (equiv_class_idx >> 24))
-                     {
-                       Idx cnt = 0;
-
-                       idx &= 0xffffff;
-                       equiv_class_idx &= 0xffffff;
-
-                       while (cnt <= weight_len
-                              && (weights[equiv_class_idx + 1 + cnt]
-                                  == weights[idx + 1 + cnt]))
-                         ++cnt;
-                       if (cnt > weight_len)
-                         {
-                           match_len = elem_len;
-                           goto check_node_accept_bytes_match;
-                         }
-                     }
-                 }
-           }
-       }
-      else
-# endif /* _LIBC */
-       {
-         /* match with range expression?  */
-         for (i = 0; i < cset->nranges; ++i)
-           {
-             if (cset->range_starts[i] <= wc && wc <= cset->range_ends[i])
-               {
-                 match_len = char_len;
-                 goto check_node_accept_bytes_match;
-               }
-           }
-       }
-    check_node_accept_bytes_match:
-      if (!cset->non_match)
-       return match_len;
-      else
-       {
-         if (match_len > 0)
-           return 0;
-         else
-           return (elem_len > char_len) ? elem_len : char_len;
-       }
-    }
-  return 0;
-}
-
-# ifdef _LIBC
-static unsigned int
-internal_function
-find_collation_sequence_value (const unsigned char *mbs, size_t mbs_len)
-{
-  uint32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
-  if (nrules == 0)
-    {
-      if (mbs_len == 1)
-       {
-         /* No valid character.  Match it as a single byte character.  */
-         const unsigned char *collseq = (const unsigned char *)
-           _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQMB);
-         return collseq[mbs[0]];
-       }
-      return UINT_MAX;
-    }
-  else
-    {
-      int32_t idx;
-      const unsigned char *extra = (const unsigned char *)
-       _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB);
-      int32_t extrasize = (const unsigned char *)
-       _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB + 1) - extra;
-
-      for (idx = 0; idx < extrasize;)
-       {
-         int mbs_cnt;
-         bool found = false;
-         int32_t elem_mbs_len;
-         /* Skip the name of collating element name.  */
-         idx = idx + extra[idx] + 1;
-         elem_mbs_len = extra[idx++];
-         if (mbs_len == elem_mbs_len)
-           {
-             for (mbs_cnt = 0; mbs_cnt < elem_mbs_len; ++mbs_cnt)
-               if (extra[idx + mbs_cnt] != mbs[mbs_cnt])
-                 break;
-             if (mbs_cnt == elem_mbs_len)
-               /* Found the entry.  */
-               found = true;
-           }
-         /* Skip the byte sequence of the collating element.  */
-         idx += elem_mbs_len;
-         /* Adjust for the alignment.  */
-         idx = (idx + 3) & ~3;
-         /* Skip the collation sequence value.  */
-         idx += sizeof (uint32_t);
-         /* Skip the wide char sequence of the collating element.  */
-         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);
-         /* Skip the collation sequence value.  */
-         idx += sizeof (uint32_t);
-       }
-      return UINT_MAX;
-    }
-}
-# endif /* _LIBC */
-#endif /* RE_ENABLE_I18N */
-
-/* Check whether the node accepts the byte which is IDX-th
-   byte of the INPUT.  */
-
-static bool
-internal_function
-check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
-                  Idx idx)
-{
-  unsigned char ch;
-  ch = re_string_byte_at (&mctx->input, idx);
-  switch (node->type)
-    {
-    case CHARACTER:
-      if (node->opr.c != ch)
-        return false;
-      break;
-
-    case SIMPLE_BRACKET:
-      if (!bitset_contain (node->opr.sbcset, ch))
-        return false;
-      break;
-
-#ifdef RE_ENABLE_I18N
-    case OP_UTF8_PERIOD:
-      if (ch >= ASCII_CHARS)
-        return false;
-#if defined __GNUC__ && __GNUC__ >= 7
-      __attribute__ ((fallthrough));
-#endif
-      /* FALLTHROUGH */
-#endif
-    case OP_PERIOD:
-      if ((ch == '\n' && !(mctx->dfa->syntax & RE_DOT_NEWLINE))
-         || (ch == '\0' && (mctx->dfa->syntax & RE_DOT_NOT_NULL)))
-       return false;
-      break;
-
-    default:
-      return false;
-    }
-
-  if (node->constraint)
-    {
-      /* The node has constraints.  Check whether the current context
-        satisfies the constraints.  */
-      unsigned int context = re_string_context_at (&mctx->input, idx,
-                                                  mctx->eflags);
-      if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
-       return false;
-    }
-
-  return true;
-}
-
-/* Extend the buffers, if the buffers have run out.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-extend_buffers (re_match_context_t *mctx, int min_len)
-{
-  reg_errcode_t ret;
-  re_string_t *pstr = &mctx->input;
-
-  /* Avoid overflow.  */
-  if (BE (MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *)) / 2
-          <= pstr->bufs_len, 0))
-    return REG_ESPACE;
-
-  /* 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;
-
-  if (mctx->state_log != NULL)
-    {
-      /* And double the length of state_log.  */
-      /* XXX We have no indication of the size of this buffer.  If this
-        allocation fail we have no indication that the state_log array
-        does not have the right size.  */
-      re_dfastate_t **new_array = re_realloc (mctx->state_log, re_dfastate_t *,
-                                             pstr->bufs_len + 1);
-      if (BE (new_array == NULL, 0))
-       return REG_ESPACE;
-      mctx->state_log = new_array;
-    }
-
-  /* Then reconstruct the buffers.  */
-  if (pstr->icase)
-    {
-#ifdef RE_ENABLE_I18N
-      if (pstr->mb_cur_max > 1)
-       {
-         ret = build_wcs_upper_buffer (pstr);
-         if (BE (ret != REG_NOERROR, 0))
-           return ret;
-       }
-      else
-#endif /* RE_ENABLE_I18N  */
-       build_upper_buffer (pstr);
-    }
-  else
-    {
-#ifdef RE_ENABLE_I18N
-      if (pstr->mb_cur_max > 1)
-       build_wcs_buffer (pstr);
-      else
-#endif /* RE_ENABLE_I18N  */
-       {
-         if (pstr->trans != NULL)
-           re_string_translate_buffer (pstr);
-       }
-    }
-  return REG_NOERROR;
-}
-
-
-/* Functions for matching context.  */
-
-/* Initialize MCTX.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-match_ctx_init (re_match_context_t *mctx, int eflags, Idx n)
-{
-  mctx->eflags = eflags;
-  mctx->match_last = REG_MISSING;
-  if (n > 0)
-    {
-      /* Avoid overflow.  */
-      size_t max_object_size =
-       MAX (sizeof (struct re_backref_cache_entry),
-            sizeof (re_sub_match_top_t *));
-      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);
-      mctx->sub_tops = re_malloc (re_sub_match_top_t *, n);
-      if (BE (mctx->bkref_ents == NULL || mctx->sub_tops == NULL, 0))
-       return REG_ESPACE;
-    }
-  /* Already zero-ed by the caller.
-     else
-       mctx->bkref_ents = NULL;
-     mctx->nbkref_ents = 0;
-     mctx->nsub_tops = 0;  */
-  mctx->abkref_ents = n;
-  mctx->max_mb_elem_len = 1;
-  mctx->asub_tops = n;
-  return REG_NOERROR;
-}
-
-/* Clean the entries which depend on the current input in MCTX.
-   This function must be invoked when the matcher changes the start index
-   of the input, or changes the input string.  */
-
-static void
-internal_function
-match_ctx_clean (re_match_context_t *mctx)
-{
-  Idx st_idx;
-  for (st_idx = 0; st_idx < mctx->nsub_tops; ++st_idx)
-    {
-      Idx sl_idx;
-      re_sub_match_top_t *top = mctx->sub_tops[st_idx];
-      for (sl_idx = 0; sl_idx < top->nlasts; ++sl_idx)
-       {
-         re_sub_match_last_t *last = top->lasts[sl_idx];
-         re_free (last->path.array);
-         re_free (last);
-       }
-      re_free (top->lasts);
-      if (top->path)
-       {
-         re_free (top->path->array);
-         re_free (top->path);
-       }
-      free (top);
-    }
-
-  mctx->nsub_tops = 0;
-  mctx->nbkref_ents = 0;
-}
-
-/* Free all the memory associated with MCTX.  */
-
-static void
-internal_function
-match_ctx_free (re_match_context_t *mctx)
-{
-  /* First, free all the memory associated with MCTX->SUB_TOPS.  */
-  match_ctx_clean (mctx);
-  re_free (mctx->sub_tops);
-  re_free (mctx->bkref_ents);
-}
-
-/* Add a new backreference entry to MCTX.
-   Note that we assume that caller never call this function with duplicate
-   entry, and call with STR_IDX which isn't smaller than any existing entry.
-*/
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-match_ctx_add_entry (re_match_context_t *mctx, Idx node, Idx str_idx, Idx from,
-                    Idx to)
-{
-  if (mctx->nbkref_ents >= mctx->abkref_ents)
-    {
-      struct re_backref_cache_entry* new_entry;
-      new_entry = re_realloc (mctx->bkref_ents, struct re_backref_cache_entry,
-                             mctx->abkref_ents * 2);
-      if (BE (new_entry == NULL, 0))
-       {
-         re_free (mctx->bkref_ents);
-         return REG_ESPACE;
-       }
-      mctx->bkref_ents = new_entry;
-      memset (mctx->bkref_ents + mctx->nbkref_ents, '\0',
-             sizeof (struct re_backref_cache_entry) * mctx->abkref_ents);
-      mctx->abkref_ents *= 2;
-    }
-  if (mctx->nbkref_ents > 0
-      && mctx->bkref_ents[mctx->nbkref_ents - 1].str_idx == str_idx)
-    mctx->bkref_ents[mctx->nbkref_ents - 1].more = 1;
-
-  mctx->bkref_ents[mctx->nbkref_ents].node = node;
-  mctx->bkref_ents[mctx->nbkref_ents].str_idx = str_idx;
-  mctx->bkref_ents[mctx->nbkref_ents].subexp_from = from;
-  mctx->bkref_ents[mctx->nbkref_ents].subexp_to = to;
-
-  /* This is a cache that saves negative results of check_dst_limits_calc_pos.
-     If bit N is clear, means that this entry won't epsilon-transition to
-     an OP_OPEN_SUBEXP or OP_CLOSE_SUBEXP for the N+1-th subexpression.  If
-     it is set, check_dst_limits_calc_pos_1 will recurse and try to find one
-     such node.
-
-     A backreference does not epsilon-transition unless it is empty, so set
-     to all zeros if FROM != TO.  */
-  mctx->bkref_ents[mctx->nbkref_ents].eps_reachable_subexps_map
-    = (from == to ? -1 : 0);
-
-  mctx->bkref_ents[mctx->nbkref_ents++].more = 0;
-  if (mctx->max_mb_elem_len < to - from)
-    mctx->max_mb_elem_len = to - from;
-  return REG_NOERROR;
-}
-
-/* Return the first entry with the same str_idx, or REG_MISSING if none is
-   found.  Note that MCTX->BKREF_ENTS is already sorted by MCTX->STR_IDX.  */
-
-static Idx
-internal_function
-search_cur_bkref_entry (const re_match_context_t *mctx, Idx str_idx)
-{
-  Idx left, right, mid, last;
-  last = right = mctx->nbkref_ents;
-  for (left = 0; left < right;)
-    {
-      mid = (left + right) / 2;
-      if (mctx->bkref_ents[mid].str_idx < str_idx)
-       left = mid + 1;
-      else
-       right = mid;
-    }
-  if (left < last && mctx->bkref_ents[left].str_idx == str_idx)
-    return left;
-  else
-    return REG_MISSING;
-}
-
-/* Register the node NODE, whose type is OP_OPEN_SUBEXP, and which matches
-   at STR_IDX.  */
-
-static reg_errcode_t
-internal_function __attribute_warn_unused_result__
-match_ctx_add_subtop (re_match_context_t *mctx, Idx node, Idx str_idx)
-{
-#ifdef DEBUG
-  assert (mctx->sub_tops != NULL);
-  assert (mctx->asub_tops > 0);
-#endif
-  if (BE (mctx->nsub_tops == mctx->asub_tops, 0))
-    {
-      Idx new_asub_tops = mctx->asub_tops * 2;
-      re_sub_match_top_t **new_array = re_realloc (mctx->sub_tops,
-                                                  re_sub_match_top_t *,
-                                                  new_asub_tops);
-      if (BE (new_array == NULL, 0))
-       return REG_ESPACE;
-      mctx->sub_tops = new_array;
-      mctx->asub_tops = new_asub_tops;
-    }
-  mctx->sub_tops[mctx->nsub_tops] = calloc (1, sizeof (re_sub_match_top_t));
-  if (BE (mctx->sub_tops[mctx->nsub_tops] == NULL, 0))
-    return REG_ESPACE;
-  mctx->sub_tops[mctx->nsub_tops]->node = node;
-  mctx->sub_tops[mctx->nsub_tops++]->str_idx = str_idx;
-  return REG_NOERROR;
-}
-
-/* Register the node NODE, whose type is OP_CLOSE_SUBEXP, and which matches
-   at STR_IDX, whose corresponding OP_OPEN_SUBEXP is SUB_TOP.  */
-
-static re_sub_match_last_t *
-internal_function
-match_ctx_add_sublast (re_sub_match_top_t *subtop, Idx node, Idx str_idx)
-{
-  re_sub_match_last_t *new_entry;
-  if (BE (subtop->nlasts == subtop->alasts, 0))
-    {
-      Idx new_alasts = 2 * subtop->alasts + 1;
-      re_sub_match_last_t **new_array = re_realloc (subtop->lasts,
-                                                   re_sub_match_last_t *,
-                                                   new_alasts);
-      if (BE (new_array == NULL, 0))
-       return NULL;
-      subtop->lasts = new_array;
-      subtop->alasts = new_alasts;
-    }
-  new_entry = calloc (1, sizeof (re_sub_match_last_t));
-  if (BE (new_entry != NULL, 1))
-    {
-      subtop->lasts[subtop->nlasts] = new_entry;
-      new_entry->node = node;
-      new_entry->str_idx = str_idx;
-      ++subtop->nlasts;
-    }
-  return new_entry;
-}
-
-static void
-internal_function
-sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
-              re_dfastate_t **limited_sts, Idx last_node, Idx last_str_idx)
-{
-  sctx->sifted_states = sifted_sts;
-  sctx->limited_states = limited_sts;
-  sctx->last_node = last_node;
-  sctx->last_str_idx = last_str_idx;
-  re_node_set_init_empty (&sctx->limits);
-}
diff --git a/grub-core/gnulib/size_max.h b/grub-core/gnulib/size_max.h
deleted file mode 100644
index 5f3312404..000000000
--- a/grub-core/gnulib/size_max.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* size_max.h -- declare SIZE_MAX through system headers
-   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
-   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 GNULIB_SIZE_MAX_H
-#define GNULIB_SIZE_MAX_H
-
-/* Get SIZE_MAX declaration on systems like Solaris 7/8/9.  */
-# include <limits.h>
-/* Get SIZE_MAX declaration on systems like glibc 2.  */
-# if HAVE_STDINT_H
-#  include <stdint.h>
-# endif
-/* On systems where these include files don't define it, SIZE_MAX is defined
-   in config.h.  */
-
-#endif /* GNULIB_SIZE_MAX_H */
diff --git a/grub-core/gnulib/sleep.c b/grub-core/gnulib/sleep.c
deleted file mode 100644
index 4c97d7dfa..000000000
--- a/grub-core/gnulib/sleep.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Pausing execution of the current thread.
-   Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 2007.
-
-   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 <unistd.h>
-
-#include <limits.h>
-
-#include "verify.h"
-
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-
-# define WIN32_LEAN_AND_MEAN  /* avoid including junk */
-# include <windows.h>
-
-unsigned int
-sleep (unsigned int seconds)
-{
-  unsigned int remaining;
-
-  /* Sleep for 1 second many times, because
-       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);
-
-  return remaining;
-}
-
-#elif HAVE_SLEEP
-
-# undef sleep
-
-/* 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.  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 / 24 / 24 / 60 / 60);
-  const unsigned int limit = 24 * 24 * 60 * 60;
-  while (limit < seconds)
-    {
-      unsigned int result;
-      seconds -= limit;
-      result = sleep (limit);
-      if (result)
-        return seconds + result;
-    }
-  return sleep (seconds);
-}
-
-#else /* !HAVE_SLEEP */
-
- #error "Please port gnulib sleep.c to your platform, possibly using usleep() 
or select(), then report this to bug-gnulib."
-
-#endif
diff --git a/grub-core/gnulib/stdalign.in.h b/grub-core/gnulib/stdalign.in.h
deleted file mode 100644
index c3a67321b..000000000
--- a/grub-core/gnulib/stdalign.in.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* 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
deleted file mode 100644
index 7c1577277..000000000
--- a/grub-core/gnulib/stdbool.in.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* Copyright (C) 2001-2003, 2006-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 2001.
-
-   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 _GL_STDBOOL_H
-#define _GL_STDBOOL_H
-
-/* ISO C 99 <stdbool.h> for platforms that lack it.  */
-
-/* Usage suggestions:
-
-   Programs that use <stdbool.h> should be aware of some limitations
-   and standards compliance issues.
-
-   Standards compliance:
-
-       - <stdbool.h> must be #included before 'bool', 'false', 'true'
-         can be used.
-
-       - You cannot assume that sizeof (bool) == 1.
-
-       - Programs should not undefine the macros bool, true, and false,
-         as C99 lists that as an "obsolescent feature".
-
-   Limitations of this substitute, when used in a C89 environment:
-
-       - <stdbool.h> must be #included before the '_Bool' type can be used.
-
-       - You cannot assume that _Bool is a typedef; it might be a macro.
-
-       - Bit-fields of type 'bool' are not supported.  Portable code
-         should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
-
-       - In C99, casts and automatic conversions to '_Bool' or 'bool' are
-         performed in such a way that every nonzero value gets converted
-         to 'true', and zero gets converted to 'false'.  This doesn't work
-         with this substitute.  With this substitute, only the values 0 and 1
-         give the expected result when converted to _Bool' or 'bool'.
-
-       - C99 allows the use of (_Bool)0.0 in constant expressions, but
-         this substitute cannot always provide this property.
-
-   Also, it is suggested that programs use 'bool' rather than '_Bool';
-   this isn't required, but 'bool' is more common.  */
-
-
-/* 7.16. Boolean type and values */
-
-/* BeOS <sys/socket.h> already #defines false 0, true 1.  We use the same
-   definitions below, but temporarily we have to #undef them.  */
-#if defined __BEOS__ && !defined __HAIKU__
-# include <OS.h> /* defines bool but not _Bool */
-# undef false
-# undef true
-#endif
-
-#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 address@hidden@
-typedef bool _Bool;
-#  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
-          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-          http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
-        Similar bugs are likely with other compilers as well; this file
-        wouldn't be used if <stdbool.h> was working.
-        So we override the _Bool type.
-      If address@hidden@:
-        Need to define _Bool ourselves. As 'signed char' or as an enum type?
-        Use of a typedef, with SunPRO C, leads to a stupid
-          "warning: _Bool is a keyword in ISO C99".
-        Use of an enum type, with IRIX cc, leads to a stupid
-          "warning(1185): enumerated type mixed with another type".
-        Even the existence of an enum type, without a typedef,
-          "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
-   /* With this compiler, trust the _Bool type if the compiler has it.  */
-#   if address@hidden@
-   /* 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
-
-/* The other macros must be usable in preprocessor directives.  */
-#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
deleted file mode 100644
index 40f0536aa..000000000
--- a/grub-core/gnulib/stddef.in.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
-
-   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
-   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 Eric Blake.  */
-
-/*
- * POSIX 2008 <stddef.h> for platforms that have issues.
- * <http://www.opengroup.org/susv3xbd/stddef.h.html>
- */
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-#if defined __need_wchar_t || defined __need_size_t  \
-  || defined __need_ptrdiff_t || defined __need_NULL \
-  || defined __need_wint_t
-/* Special invocation convention inside gcc header files.  In
-   particular, gcc provides a version of <stddef.h> that blindly
-   redefines NULL even when __need_wint_t was defined, even though
-   wint_t is not normally provided by <stddef.h>.  Hence, we must
-   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 address@hidden@_STDDEF_H && defined _GL_STDDEF_WINT_T)
-#  ifdef __need_wint_t
-#   undef address@hidden@_STDDEF_H
-#   define _GL_STDDEF_WINT_T
-#  endif
-#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
-# endif
-
-#else
-/* Normal invocation convention.  */
-
-# ifndef address@hidden@_STDDEF_H
-
-/* The include_next requires a split double-inclusion guard.  */
-
-#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
-
-#  ifndef address@hidden@_STDDEF_H
-#   define address@hidden@_STDDEF_H
-
-/* On NetBSD 5.0, the definition of NULL lacks proper parentheses.  */
-#if @REPLACE_NULL@
-# undef NULL
-# ifdef __cplusplus
-   /* ISO C++ says that the macro NULL must expand to an integer constant
-      expression, hence '((void *) 0)' is not allowed in C++.  */
-#  if __GNUG__ >= 3
-    /* GNU C++ has a __null macro that behaves like an integer ('int' or
-       'long') but has the same size as a pointer.  Use that, to avoid
-       warnings.  */
-#   define NULL __null
-#  else
-#   define NULL 0L
-#  endif
-# else
-#  define NULL ((void *) 0)
-# endif
-#endif
-
-/* Some platforms lack wchar_t.  */
-#if address@hidden@
-# define wchar_t int
-#endif
-
-#  endif /* address@hidden@_STDDEF_H */
-# endif /* address@hidden@_STDDEF_H */
-#endif /* __need_XXX */
diff --git a/grub-core/gnulib/stdint.in.h b/grub-core/gnulib/stdint.in.h
deleted file mode 100644
index 2db8b2e37..000000000
--- a/grub-core/gnulib/stdint.in.h
+++ /dev/null
@@ -1,636 +0,0 @@
-/* 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.
-
-   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/>.  */
-
-/*
- * ISO C 99 <stdint.h> for platforms that lack it.
- * <http://www.opengroup.org/susv3xbd/stdint.h.html>
- */
-
-#ifndef address@hidden@_STDINT_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-/* When including a system file that in turn includes <inttypes.h>,
-   use the system <inttypes.h>, not our substitute.  This avoids
-   problems with (for example) VMS, whose <sys/bitypes.h> includes
-   <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
-   signed char int8_t;" that will get messed up by our macro.  Our
-   macros should all be consistent with the system versions, except
-   for the "fast" types and macros, which we recommend against using
-   in public interfaces due to compiler differences.  */
-
-#if @HAVE_STDINT_H@
-# if defined __sgi && ! defined __c99
-   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
-      with "This header file is to be used only for c99 mode compilations"
-      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
-     address@hidden@_STDINT_H is defined.
-     The include_next requires a split double-inclusion guard.  */
-# @INCLUDE_NEXT@ @NEXT_STDINT_H@
-#endif
-
-#if ! defined address@hidden@_STDINT_H && ! defined 
_GL_JUST_INCLUDE_SYSTEM_STDINT_H
-#define address@hidden@_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.
-   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 @address@hidden  */
-#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
-# include <sys/types.h>
-#endif
-
-/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX,
-   LONG_MIN, LONG_MAX, ULONG_MAX.  */
-#include <limits.h>
-
-#if @HAVE_INTTYPES_H@
-  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
-     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
-     <inttypes.h> also defines intptr_t and uintptr_t.  */
-# include <inttypes.h>
-#elif @HAVE_SYS_INTTYPES_H@
-  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
-     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
-# include <sys/inttypes.h>
-#endif
-
-#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
-  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
-     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
-     included by <sys/types.h>.  */
-# include <sys/bitypes.h>
-#endif
-
-#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
-
-/* 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.  */
-
-#define _STDINT_MIN(signed, bits, zero) \
-  ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
-
-#define _STDINT_MAX(signed, bits, zero) \
-  ((signed) \
-   ? ~ _STDINT_MIN (signed, bits, zero) \
-   : /* The expression for the unsigned case.  The subtraction of (signed) \
-        is a nop in the unsigned case and avoids "signed integer overflow" \
-        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
-   types have 8, 16, 32, optionally 64 bits.  */
-
-#undef int8_t
-#undef uint8_t
-typedef signed char gl_int8_t;
-typedef unsigned char gl_uint8_t;
-#define int8_t gl_int8_t
-#define uint8_t gl_uint8_t
-
-#undef int16_t
-#undef uint16_t
-typedef short int gl_int16_t;
-typedef unsigned short int gl_uint16_t;
-#define int16_t gl_int16_t
-#define uint16_t gl_uint16_t
-
-#undef int32_t
-#undef uint32_t
-typedef int gl_int32_t;
-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
-typedef long int gl_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
-typedef long long int gl_int64_t;
-#  define int64_t gl_int64_t
-#  define GL_INT64_T
-# endif
-#endif
-
-#ifdef UINT64_MAX
-# define GL_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
-typedef unsigned long long int 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.  */
-#define _UINT8_T
-#define _UINT32_T
-#define _UINT64_T
-
-
-/* 7.18.1.2. Minimum-width integer types */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
-   are the same as the corresponding N_t types.  */
-
-#undef int_least8_t
-#undef uint_least8_t
-#undef int_least16_t
-#undef uint_least16_t
-#undef int_least32_t
-#undef uint_least32_t
-#undef int_least64_t
-#undef uint_least64_t
-#define int_least8_t int8_t
-#define uint_least8_t uint8_t
-#define int_least16_t int16_t
-#define uint_least16_t uint16_t
-#define int_least32_t int32_t
-#define uint_least32_t uint32_t
-#ifdef GL_INT64_T
-# define int_least64_t int64_t
-#endif
-#ifdef GL_UINT64_T
-# define uint_least64_t uint64_t
-#endif
-
-/* 7.18.1.3. Fastest minimum-width integer types */
-
-/* Note: Other <stdint.h> substitutes may define these types differently.
-   It is not recommended to use these types in public header files. */
-
-/* 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.  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
-#undef int_fast16_t
-#undef uint_fast16_t
-#undef int_fast32_t
-#undef uint_fast32_t
-#undef int_fast64_t
-#undef uint_fast64_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
-#define uint_fast16_t gl_uint_fast16_t
-#define int_fast32_t gl_int_fast32_t
-#define uint_fast32_t gl_uint_fast32_t
-#ifdef GL_INT64_T
-# define int_fast64_t int64_t
-#endif
-#ifdef GL_UINT64_T
-# define uint_fast64_t uint64_t
-#endif
-
-/* 7.18.1.4. Integer types capable of holding object pointers */
-
-#undef intptr_t
-#undef uintptr_t
-typedef long int gl_intptr_t;
-typedef unsigned long int gl_uintptr_t;
-#define intptr_t gl_intptr_t
-#define uintptr_t gl_uintptr_t
-
-/* 7.18.1.5. Greatest-width integer types */
-
-/* Note: These types are compiler dependent. It may be unwise to use them in
-   public header files. */
-
-/* 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
-typedef long int gl_intmax_t;
-#  define intmax_t gl_intmax_t
-# endif
-#endif
-
-#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
-typedef unsigned long int 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[sizeof (intmax_t) == sizeof (uintmax_t)
-                                ? 1 : -1];
-
-#define GNULIB_defined_stdint_types 1
-#endif /* !GNULIB_defined_stdint_types */
-
-/* 7.18.2. Limits of specified-width integer types */
-
-/* 7.18.2.1. Limits of exact-width integer types */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits.  */
-
-#undef INT8_MIN
-#undef INT8_MAX
-#undef UINT8_MAX
-#define INT8_MIN  (~ INT8_MAX)
-#define INT8_MAX  127
-#define UINT8_MAX  255
-
-#undef INT16_MIN
-#undef INT16_MAX
-#undef UINT16_MAX
-#define INT16_MIN  (~ INT16_MAX)
-#define INT16_MAX  32767
-#define UINT16_MAX  65535
-
-#undef INT32_MIN
-#undef INT32_MAX
-#undef UINT32_MAX
-#define INT32_MIN  (~ INT32_MAX)
-#define INT32_MAX  2147483647
-#define UINT32_MAX  4294967295U
-
-#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
-
-#if defined GL_UINT64_T && ! defined UINT64_MAX
-# define UINT64_MAX  UINTMAX_C (18446744073709551615)
-#endif
-
-/* 7.18.2.2. Limits of minimum-width integer types */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
-   are the same as the corresponding N_t types.  */
-
-#undef INT_LEAST8_MIN
-#undef INT_LEAST8_MAX
-#undef UINT_LEAST8_MAX
-#define INT_LEAST8_MIN  INT8_MIN
-#define INT_LEAST8_MAX  INT8_MAX
-#define UINT_LEAST8_MAX  UINT8_MAX
-
-#undef INT_LEAST16_MIN
-#undef INT_LEAST16_MAX
-#undef UINT_LEAST16_MAX
-#define INT_LEAST16_MIN  INT16_MIN
-#define INT_LEAST16_MAX  INT16_MAX
-#define UINT_LEAST16_MAX  UINT16_MAX
-
-#undef INT_LEAST32_MIN
-#undef INT_LEAST32_MAX
-#undef UINT_LEAST32_MAX
-#define INT_LEAST32_MIN  INT32_MIN
-#define INT_LEAST32_MAX  INT32_MAX
-#define UINT_LEAST32_MAX  UINT32_MAX
-
-#undef INT_LEAST64_MIN
-#undef INT_LEAST64_MAX
-#ifdef GL_INT64_T
-# define INT_LEAST64_MIN  INT64_MIN
-# define INT_LEAST64_MAX  INT64_MAX
-#endif
-
-#undef UINT_LEAST64_MAX
-#ifdef GL_UINT64_T
-# define UINT_LEAST64_MAX  UINT64_MAX
-#endif
-
-/* 7.18.2.3. Limits of fastest minimum-width integer types */
-
-/* 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.  */
-
-#undef INT_FAST8_MIN
-#undef INT_FAST8_MAX
-#undef UINT_FAST8_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  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
-#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
-#ifdef GL_INT64_T
-# define INT_FAST64_MIN  INT64_MIN
-# define INT_FAST64_MAX  INT64_MAX
-#endif
-
-#undef UINT_FAST64_MAX
-#ifdef GL_UINT64_T
-# define UINT_FAST64_MAX  UINT64_MAX
-#endif
-
-/* 7.18.2.4. Limits of integer types capable of holding object pointers */
-
-#undef INTPTR_MIN
-#undef INTPTR_MAX
-#undef UINTPTR_MAX
-#define INTPTR_MIN  LONG_MIN
-#define INTPTR_MAX  LONG_MAX
-#define UINTPTR_MAX  ULONG_MAX
-
-/* 7.18.2.5. Limits of greatest-width integer types */
-
-#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
-
-#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 */
-
-/* ptrdiff_t limits */
-#undef PTRDIFF_MIN
-#undef PTRDIFF_MAX
-#if @APPLE_UNIVERSAL_BUILD@
-# ifdef _LP64
-#  define PTRDIFF_MIN  _STDINT_MIN (1, 64, 0l)
-#  define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
-# else
-#  define PTRDIFF_MIN  _STDINT_MIN (1, 32, 0)
-#  define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
-# endif
-#else
-# define PTRDIFF_MIN  \
-    _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, address@hidden@)
-# define PTRDIFF_MAX  \
-    _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, address@hidden@)
-#endif
-
-/* sig_atomic_t limits */
-#undef SIG_ATOMIC_MIN
-#undef SIG_ATOMIC_MAX
-#define SIG_ATOMIC_MIN  \
-   _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
-                address@hidden@)
-#define SIG_ATOMIC_MAX  \
-   _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
-                address@hidden@)
-
-
-/* size_t limit */
-#undef SIZE_MAX
-#if @APPLE_UNIVERSAL_BUILD@
-# ifdef _LP64
-#  define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
-# else
-#  define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
-# endif
-#else
-# define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, address@hidden@)
-#endif
-
-/* 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
-   <stdint.h> and assumes its types are already defined.  */
-#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
-#endif
-#undef WCHAR_MIN
-#undef WCHAR_MAX
-#define WCHAR_MIN  \
-   _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, address@hidden@)
-#define WCHAR_MAX  \
-   _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, address@hidden@)
-
-/* wint_t limits */
-#undef WINT_MIN
-#undef WINT_MAX
-#define WINT_MIN  \
-   _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, address@hidden@)
-#define WINT_MAX  \
-   _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, address@hidden@)
-
-/* 7.18.4. Macros for integer constants */
-
-/* 7.18.4.1. Macros for minimum-width integer constants */
-/* According to ISO C 99 Technical Corrigendum 1 */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
-
-#undef INT8_C
-#undef UINT8_C
-#define INT8_C(x) x
-#define UINT8_C(x) x
-
-#undef INT16_C
-#undef UINT16_C
-#define INT16_C(x) x
-#define UINT16_C(x) x
-
-#undef INT32_C
-#undef UINT32_C
-#define INT32_C(x) x
-#define UINT32_C(x) x ## U
-
-#undef INT64_C
-#undef UINT64_C
-#if LONG_MAX >> 31 >> 31 == 1
-# define INT64_C(x) x##L
-#elif defined _MSC_VER
-# define INT64_C(x) x##i64
-#elif @HAVE_LONG_LONG_INT@
-# define INT64_C(x) x##LL
-#endif
-#if ULONG_MAX >> 31 >> 31 >> 1 == 1
-# define UINT64_C(x) x##UL
-#elif defined _MSC_VER
-# define UINT64_C(x) x##ui64
-#elif @HAVE_UNSIGNED_LONG_LONG_INT@
-# define UINT64_C(x) x##ULL
-#endif
-
-/* 7.18.4.2. Macros for greatest-width integer constants */
-
-#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
-
-#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 /* address@hidden@_STDINT_H */
-#endif /* !(defined __ANDROID__ && ...) */
-#endif /* !defined address@hidden@_STDINT_H && !defined 
_GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/grub-core/gnulib/stdio.in.h b/grub-core/gnulib/stdio.in.h
deleted file mode 100644
index e1d28cebf..000000000
--- a/grub-core/gnulib/stdio.in.h
+++ /dev/null
@@ -1,1333 +0,0 @@
-/* A GNU-like <stdio.h>.
-
-   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
-   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
address@hidden@
-#endif
address@hidden@
-
-#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.  */
-
address@hidden@ @NEXT_STDIO_H@
-
-#else
-/* Normal invocation convention.  */
-
-#ifndef address@hidden@_STDIO_H
-
-#define _GL_ALREADY_INCLUDING_STDIO_H
-
-/* The include_next requires a split double-inclusion guard.  */
address@hidden@ @NEXT_STDIO_H@
-
-#undef _GL_ALREADY_INCLUDING_STDIO_H
-
-#ifndef address@hidden@_STDIO_H
-#define address@hidden@_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
-   and eglibc 2.11.2.
-   May also define off_t to a 64-bit type on native Windows.  */
-#include <sys/types.h>
-
-/* 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 _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 _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
-
-
-/* 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.  */
-
-/* Macros for stringification.  */
-#define _GL_STDIO_STRINGIZE(token) #token
-#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
-
-
-#if @GNULIB_DPRINTF@
-# if @REPLACE_DPRINTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define dprintf rpl_dprintf
-#  endif
-_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...)
-                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
-                                _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...)
-                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
-                                _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...));
-# endif
-_GL_CXXALIASWARN (dprintf);
-#elif defined GNULIB_POSIXCHECK
-# undef dprintf
-# if HAVE_RAW_DECL_DPRINTF
-_GL_WARN_ON_USE (dprintf, "dprintf is unportable - "
-                 "use gnulib module dprintf for portability");
-# endif
-#endif
-
-#if @GNULIB_FCLOSE@
-/* Close STREAM and its underlying file descriptor.  */
-# if @REPLACE_FCLOSE@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define fclose rpl_fclose
-#  endif
-_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
-# else
-_GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
-# endif
-_GL_CXXALIASWARN (fclose);
-#elif defined GNULIB_POSIXCHECK
-# undef fclose
-/* Assume fclose is always declared.  */
-_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.
-   Note! LOSS OF DATA can occur if fflush is applied on an input stream
-   that is _not_seekable_ or on an update stream that is _not_seekable_
-   and in which the most recent operation was input.  Seekability can
-   be tested with lseek(fileno(fp),0,SEEK_CUR).  */
-# if @REPLACE_FFLUSH@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define fflush rpl_fflush
-#  endif
-_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
-_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
-# else
-_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
-# endif
-_GL_CXXALIASWARN (fflush);
-#elif defined GNULIB_POSIXCHECK
-# undef fflush
-/* Assume fflush is always declared.  */
-_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
-                 "use gnulib module fflush for portable POSIX compliance");
-#endif
-
-#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@
-# if @REPLACE_FOPEN@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fopen
-#   define fopen rpl_fopen
-#  endif
-_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode)
-                                 _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode));
-# else
-_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode));
-# endif
-_GL_CXXALIASWARN (fopen);
-#elif defined GNULIB_POSIXCHECK
-# undef fopen
-/* Assume fopen is always declared.  */
-_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_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, ...)
-                                _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, ...));
-# endif
-_GL_CXXALIASWARN (fprintf);
-#endif
-#if address@hidden@ && defined GNULIB_POSIXCHECK
-# if !GNULIB_overrides_fprintf
-#  undef fprintf
-# endif
-/* Assume fprintf is always declared.  */
-_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
-                 "use gnulib module fprintf-posix for portable "
-                 "POSIX compliance");
-#endif
-
-#if @GNULIB_FPURGE@
-/* Discard all pending buffered I/O data on STREAM.
-   STREAM must not be wide-character oriented.
-   When discarding pending output, the file position is set back to where it
-   was before the write calls.  When discarding pending input, the file
-   position is advanced to match the end of the previously read input.
-   Return 0 if successful.  Upon error, return -1 and set errno.  */
-# if @REPLACE_FPURGE@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define fpurge rpl_fpurge
-#  endif
-_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
-# endif
-_GL_CXXALIASWARN (fpurge);
-#elif defined GNULIB_POSIXCHECK
-# undef fpurge
-# if HAVE_RAW_DECL_FPURGE
-_GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
-                 "use gnulib module fpurge for portability");
-# endif
-#endif
-
-#if @GNULIB_FPUTC@
-# 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
-#  endif
-_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
-# else
-_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
-# endif
-_GL_CXXALIASWARN (fputc);
-#endif
-
-#if @GNULIB_FPUTS@
-# 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
-#  endif
-_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream)
-                              _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream));
-# else
-_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
-# endif
-_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)
-#   undef freopen
-#   define freopen rpl_freopen
-#  endif
-_GL_FUNCDECL_RPL (freopen, FILE *,
-                  (const char *filename, const char *mode, FILE *stream)
-                  _GL_ARG_NONNULL ((2, 3)));
-_GL_CXXALIAS_RPL (freopen, FILE *,
-                  (const char *filename, const char *mode, FILE *stream));
-# else
-_GL_CXXALIAS_SYS (freopen, FILE *,
-                  (const char *filename, const char *mode, FILE *stream));
-# endif
-_GL_CXXALIASWARN (freopen);
-#elif defined GNULIB_POSIXCHECK
-# undef freopen
-/* Assume freopen is always declared.  */
-_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
-   an arbitrary limitation on some 32-bit hosts.  Remember that the
-   fseek module depends on the fseeko module, so we only have three
-   cases to consider:
-
-   1. The developer is not using either module.  Issue a warning under
-   GNULIB_POSIXCHECK for both functions, to remind them that both
-   functions have bugs on some systems.  _GL_NO_LARGE_FILES has no
-   impact on this warning.
-
-   2. The developer is using both modules.  They may be unaware of the
-   arbitrary limitations of fseek, so issue a warning under
-   GNULIB_POSIXCHECK.  On the other hand, they may be using both
-   modules intentionally, so the developer can define
-   _GL_NO_LARGE_FILES in the compilation units where the use of fseek
-   is safe, to silence the warning.
-
-   3. The developer is using the fseeko module, but not fseek.  Gnulib
-   guarantees that fseek will still work around platform bugs in that
-   case, but we presume that the developer is aware of the pitfalls of
-   fseek and was trying to avoid it, so issue a warning even when
-   GNULIB_POSIXCHECK is undefined.  Again, _GL_NO_LARGE_FILES can be
-   defined to silence the warning in particular compilation units.
-   In C++ compilations with GNULIB_NAMESPACE, in order to avoid that
-   fseek gets defined as a macro, it is recommended that the developer
-   uses the fseek module, even if he is not calling the fseek function.
-
-   Most gnulib clients that perform stream operations should fall into
-   category 3.  */
-
-#if @GNULIB_FSEEK@
-# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
-#  define _GL_FSEEK_WARN /* Category 2, above.  */
-#  undef fseek
-# endif
-# if @REPLACE_FSEEK@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fseek
-#   define fseek rpl_fseek
-#  endif
-_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence)
-                              _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
-# else
-_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
-# endif
-_GL_CXXALIASWARN (fseek);
-#endif
-
-#if @GNULIB_FSEEKO@
-# if address@hidden@ && !defined _GL_NO_LARGE_FILES
-#  define _GL_FSEEK_WARN /* Category 3, above.  */
-#  undef fseek
-# endif
-# if @REPLACE_FSEEKO@
-/* Provide an fseeko function that is aware of a preceding fflush(), and which
-   detects pipes.  */
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fseeko
-#   define fseeko rpl_fseeko
-#  endif
-_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_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);
-#elif defined GNULIB_POSIXCHECK
-# define _GL_FSEEK_WARN /* Category 1, above.  */
-# undef fseek
-# undef fseeko
-# if HAVE_RAW_DECL_FSEEKO
-_GL_WARN_ON_USE (fseeko, "fseeko is unportable - "
-                 "use gnulib module fseeko for portability");
-# endif
-#endif
-
-#ifdef _GL_FSEEK_WARN
-# undef _GL_FSEEK_WARN
-/* Here, either fseek is undefined (but C89 guarantees that it is
-   declared), or it is defined as rpl_fseek (declared above).  */
-_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB "
-                 "on 32-bit platforms - "
-                 "use fseeko function for handling of large files");
-#endif
-
-
-/* ftell, ftello.  See the comments on fseek/fseeko.  */
-
-#if @GNULIB_FTELL@
-# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
-#  define _GL_FTELL_WARN /* Category 2, above.  */
-#  undef ftell
-# endif
-# if @REPLACE_FTELL@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ftell
-#   define ftell rpl_ftell
-#  endif
-_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
-# else
-_GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
-# endif
-_GL_CXXALIASWARN (ftell);
-#endif
-
-#if @GNULIB_FTELLO@
-# if address@hidden@ && !defined _GL_NO_LARGE_FILES
-#  define _GL_FTELL_WARN /* Category 3, above.  */
-#  undef ftell
-# endif
-# if @REPLACE_FTELLO@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ftello
-#   define ftello rpl_ftello
-#  endif
-_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
-# else
-#  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);
-#elif defined GNULIB_POSIXCHECK
-# define _GL_FTELL_WARN /* Category 1, above.  */
-# undef ftell
-# undef ftello
-# if HAVE_RAW_DECL_FTELLO
-_GL_WARN_ON_USE (ftello, "ftello is unportable - "
-                 "use gnulib module ftello for portability");
-# endif
-#endif
-
-#ifdef _GL_FTELL_WARN
-# undef _GL_FTELL_WARN
-/* Here, either ftell is undefined (but C89 guarantees that it is
-   declared), or it is defined as rpl_ftell (declared above).  */
-_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
-                 "on 32-bit platforms - "
-                 "use ftello function for handling of large files");
-#endif
-
-
-#if @GNULIB_FWRITE@
-# 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
-#  endif
-_GL_FUNCDECL_RPL (fwrite, size_t,
-                  (const void *ptr, size_t s, size_t n, FILE *stream)
-                  _GL_ARG_NONNULL ((1, 4)));
-_GL_CXXALIAS_RPL (fwrite, size_t,
-                  (const void *ptr, size_t s, size_t n, FILE *stream));
-# 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).
-   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
-   bytes of space.  It is realloc'd as necessary.
-   Return the number of bytes read and stored at *LINEPTR (not including the
-   NUL terminator), or -1 on error or EOF.  */
-# if @REPLACE_GETDELIM@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef getdelim
-#   define getdelim rpl_getdelim
-#  endif
-_GL_FUNCDECL_RPL (getdelim, ssize_t,
-                  (char **lineptr, size_t *linesize, int delimiter,
-                   FILE *stream)
-                  _GL_ARG_NONNULL ((1, 2, 4)));
-_GL_CXXALIAS_RPL (getdelim, ssize_t,
-                  (char **lineptr, size_t *linesize, int delimiter,
-                   FILE *stream));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (getdelim, ssize_t,
-                  (char **lineptr, size_t *linesize, int delimiter,
-                   FILE *stream)
-                  _GL_ARG_NONNULL ((1, 2, 4)));
-#  endif
-_GL_CXXALIAS_SYS (getdelim, ssize_t,
-                  (char **lineptr, size_t *linesize, int delimiter,
-                   FILE *stream));
-# endif
-_GL_CXXALIASWARN (getdelim);
-#elif defined GNULIB_POSIXCHECK
-# undef getdelim
-# if HAVE_RAW_DECL_GETDELIM
-_GL_WARN_ON_USE (getdelim, "getdelim is unportable - "
-                 "use gnulib module getdelim for portability");
-# endif
-#endif
-
-#if @GNULIB_GETLINE@
-/* Read a line, up to (and including) the next newline, from STREAM, store it
-   in *LINEPTR (and NUL-terminate it).
-   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
-   bytes of space.  It is realloc'd as necessary.
-   Return the number of bytes read and stored at *LINEPTR (not including the
-   NUL terminator), or -1 on error or EOF.  */
-# if @REPLACE_GETLINE@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef getline
-#   define getline rpl_getline
-#  endif
-_GL_FUNCDECL_RPL (getline, ssize_t,
-                  (char **lineptr, size_t *linesize, FILE *stream)
-                  _GL_ARG_NONNULL ((1, 2, 3)));
-_GL_CXXALIAS_RPL (getline, ssize_t,
-                  (char **lineptr, size_t *linesize, FILE *stream));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (getline, ssize_t,
-                  (char **lineptr, size_t *linesize, FILE *stream)
-                  _GL_ARG_NONNULL ((1, 2, 3)));
-#  endif
-_GL_CXXALIAS_SYS (getline, ssize_t,
-                  (char **lineptr, size_t *linesize, FILE *stream));
-# endif
-# if @HAVE_DECL_GETLINE@
-_GL_CXXALIASWARN (getline);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef getline
-# if HAVE_RAW_DECL_GETLINE
-_GL_WARN_ON_USE (getline, "getline is unportable - "
-                 "use gnulib module getline for portability");
-# 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
-   bytes added to OBS.  No trailing nul byte is added, and the
-   object should be closed with obstack_finish before use.  Upon
-   memory allocation error, call obstack_alloc_failed_handler.  Upon
-   other error, return -1.  */
-# if @REPLACE_OBSTACK_PRINTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define obstack_printf rpl_obstack_printf
-#  endif
-_GL_FUNCDECL_RPL (obstack_printf, int,
-                  (struct obstack *obs, const char *format, ...)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (obstack_printf, int,
-                  (struct obstack *obs, const char *format, ...));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (obstack_printf, int,
-                  (struct obstack *obs, const char *format, ...)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
-                  _GL_ARG_NONNULL ((1, 2)));
-#  endif
-_GL_CXXALIAS_SYS (obstack_printf, int,
-                  (struct obstack *obs, const char *format, ...));
-# endif
-_GL_CXXALIASWARN (obstack_printf);
-# if @REPLACE_OBSTACK_PRINTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define obstack_vprintf rpl_obstack_vprintf
-#  endif
-_GL_FUNCDECL_RPL (obstack_vprintf, int,
-                  (struct obstack *obs, const char *format, va_list args)
-                  _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));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (obstack_vprintf, int,
-                  (struct obstack *obs, const char *format, va_list args)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
-                  _GL_ARG_NONNULL ((1, 2)));
-#  endif
-_GL_CXXALIAS_SYS (obstack_vprintf, int,
-                  (struct obstack *obs, const char *format, va_list args));
-# endif
-_GL_CXXALIASWARN (obstack_vprintf);
-#endif
-
-#if @GNULIB_PCLOSE@
-# if address@hidden@
-_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 ": ",
-   and terminated with a newline.  */
-# if @REPLACE_PERROR@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define perror rpl_perror
-#  endif
-_GL_FUNCDECL_RPL (perror, void, (const char *string));
-_GL_CXXALIAS_RPL (perror, void, (const char *string));
-# else
-_GL_CXXALIAS_SYS (perror, void, (const char *string));
-# endif
-_GL_CXXALIASWARN (perror);
-#elif defined GNULIB_POSIXCHECK
-# undef perror
-/* Assume perror is always declared.  */
-_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
-                 "use gnulib module perror for portability");
-#endif
-
-#if @GNULIB_POPEN@
-# if @REPLACE_POPEN@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef popen
-#   define popen rpl_popen
-#  endif
-_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 address@hidden@
-_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);
-#elif defined GNULIB_POSIXCHECK
-# undef popen
-# if HAVE_RAW_DECL_POPEN
-_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
-                 "use gnulib module popen or pipe for more portability");
-# endif
-#endif
-
-#if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
-# if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
-     || (@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))
-                    _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, ...)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
-                  _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
-#  endif
-#  define GNULIB_overrides_printf 1
-# else
-_GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
-# endif
-_GL_CXXALIASWARN (printf);
-#endif
-#if address@hidden@ && defined GNULIB_POSIXCHECK
-# if !GNULIB_overrides_printf
-#  undef printf
-# endif
-/* Assume printf is always declared.  */
-_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
-                 "use gnulib module printf-posix for portable "
-                 "POSIX compliance");
-#endif
-
-#if @GNULIB_PUTC@
-# 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
-#  endif
-_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
-# else
-_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
-# endif
-_GL_CXXALIASWARN (putc);
-#endif
-
-#if @GNULIB_PUTCHAR@
-# 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
-#  endif
-_GL_FUNCDECL_RPL (putchar, int, (int c));
-_GL_CXXALIAS_RPL (putchar, int, (int c));
-# else
-_GL_CXXALIAS_SYS (putchar, int, (int c));
-# endif
-_GL_CXXALIASWARN (putchar);
-#endif
-
-#if @GNULIB_PUTS@
-# 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
-#  endif
-_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (puts, int, (const char *string));
-# else
-_GL_CXXALIAS_SYS (puts, int, (const char *string));
-# endif
-_GL_CXXALIASWARN (puts);
-#endif
-
-#if @GNULIB_REMOVE@
-# if @REPLACE_REMOVE@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef remove
-#   define remove rpl_remove
-#  endif
-_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (remove, int, (const char *name));
-# else
-_GL_CXXALIAS_SYS (remove, int, (const char *name));
-# endif
-_GL_CXXALIASWARN (remove);
-#elif defined GNULIB_POSIXCHECK
-# undef remove
-/* Assume remove is always declared.  */
-_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - 
"
-                 "use gnulib module remove for more portability");
-#endif
-
-#if @GNULIB_RENAME@
-# if @REPLACE_RENAME@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef rename
-#   define rename rpl_rename
-#  endif
-_GL_FUNCDECL_RPL (rename, int,
-                  (const char *old_filename, const char *new_filename)
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (rename, int,
-                  (const char *old_filename, const char *new_filename));
-# else
-_GL_CXXALIAS_SYS (rename, int,
-                  (const char *old_filename, const char *new_filename));
-# endif
-_GL_CXXALIASWARN (rename);
-#elif defined GNULIB_POSIXCHECK
-# undef rename
-/* Assume rename is always declared.  */
-_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - "
-                 "use gnulib module rename for more portability");
-#endif
-
-#if @GNULIB_RENAMEAT@
-# if @REPLACE_RENAMEAT@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef renameat
-#   define renameat rpl_renameat
-#  endif
-_GL_FUNCDECL_RPL (renameat, int,
-                  (int fd1, char const *file1, int fd2, char const *file2)
-                  _GL_ARG_NONNULL ((2, 4)));
-_GL_CXXALIAS_RPL (renameat, int,
-                  (int fd1, char const *file1, int fd2, char const *file2));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (renameat, int,
-                  (int fd1, char const *file1, int fd2, char const *file2)
-                  _GL_ARG_NONNULL ((2, 4)));
-#  endif
-_GL_CXXALIAS_SYS (renameat, int,
-                  (int fd1, char const *file1, int fd2, char const *file2));
-# endif
-_GL_CXXALIASWARN (renameat);
-#elif defined GNULIB_POSIXCHECK
-# undef renameat
-# if HAVE_RAW_DECL_RENAMEAT
-_GL_WARN_ON_USE (renameat, "renameat is not portable - "
-                 "use gnulib module renameat for portability");
-# 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)
-#   define snprintf rpl_snprintf
-#  endif
-_GL_FUNCDECL_RPL (snprintf, int,
-                  (char *str, size_t size, const char *format, ...)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
-                  _GL_ARG_NONNULL ((3)));
-_GL_CXXALIAS_RPL (snprintf, int,
-                  (char *str, size_t size, const char *format, ...));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (snprintf, int,
-                  (char *str, size_t size, const char *format, ...)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
-                  _GL_ARG_NONNULL ((3)));
-#  endif
-_GL_CXXALIAS_SYS (snprintf, int,
-                  (char *str, size_t size, const char *format, ...));
-# endif
-_GL_CXXALIASWARN (snprintf);
-#elif defined GNULIB_POSIXCHECK
-# undef snprintf
-# if HAVE_RAW_DECL_SNPRINTF
-_GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
-                 "use gnulib module snprintf for portability");
-# endif
-#endif
-
-/* 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
-   intentionally avoids adding a warning to sprintf except when
-   GNULIB_POSIXCHECK is defined.  */
-
-#if @GNULIB_SPRINTF_POSIX@
-# if @REPLACE_SPRINTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define sprintf rpl_sprintf
-#  endif
-_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...)
-                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
-                                _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
-# else
-_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...));
-# endif
-_GL_CXXALIASWARN (sprintf);
-#elif defined GNULIB_POSIXCHECK
-# undef sprintf
-/* Assume sprintf is always declared.  */
-_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
-                 "use gnulib module sprintf-posix for portable "
-                 "POSIX compliance");
-#endif
-
-#if @GNULIB_TMPFILE@
-# if @REPLACE_TMPFILE@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define tmpfile rpl_tmpfile
-#  endif
-_GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
-_GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
-# else
-_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
-# endif
-_GL_CXXALIASWARN (tmpfile);
-#elif defined GNULIB_POSIXCHECK
-# undef tmpfile
-# if HAVE_RAW_DECL_TMPFILE
-_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
-                 "use gnulib module tmpfile for portability");
-# endif
-#endif
-
-#if @GNULIB_VASPRINTF@
-/* Write formatted output to a string dynamically allocated with malloc().
-   If the memory allocation succeeds, store the address of the string in
-   *RESULT and return the number of resulting bytes, excluding the trailing
-   NUL.  Upon memory allocation error, or some other error, return -1.  */
-# if @REPLACE_VASPRINTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define asprintf rpl_asprintf
-#  endif
-_GL_FUNCDECL_RPL (asprintf, int,
-                  (char **result, const char *format, ...)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (asprintf, int,
-                  (char **result, const char *format, ...));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (asprintf, int,
-                  (char **result, const char *format, ...)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
-                  _GL_ARG_NONNULL ((1, 2)));
-#  endif
-_GL_CXXALIAS_SYS (asprintf, int,
-                  (char **result, const char *format, ...));
-# endif
-_GL_CXXALIASWARN (asprintf);
-# if @REPLACE_VASPRINTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define vasprintf rpl_vasprintf
-#  endif
-_GL_FUNCDECL_RPL (vasprintf, int,
-                  (char **result, const char *format, va_list args)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (vasprintf, int,
-                  (char **result, const char *format, va_list args));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (vasprintf, int,
-                  (char **result, const char *format, va_list args)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
-                  _GL_ARG_NONNULL ((1, 2)));
-#  endif
-_GL_CXXALIAS_SYS (vasprintf, int,
-                  (char **result, const char *format, va_list args));
-# endif
-_GL_CXXALIASWARN (vasprintf);
-#endif
-
-#if @GNULIB_VDPRINTF@
-# if @REPLACE_VDPRINTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define vdprintf rpl_vdprintf
-#  endif
-_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args)
-                                 _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 address@hidden@
-_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
-                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
-                                 _GL_ARG_NONNULL ((2)));
-#  endif
-/* Need to cast, because on Solaris, the third parameter will likely be
-                                                    __va_list args.  */
-_GL_CXXALIAS_SYS_CAST (vdprintf, int,
-                       (int fd, const char *format, va_list args));
-# endif
-_GL_CXXALIASWARN (vdprintf);
-#elif defined GNULIB_POSIXCHECK
-# undef vdprintf
-# if HAVE_RAW_DECL_VDPRINTF
-_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
-                 "use gnulib module vdprintf for portability");
-# endif
-#endif
-
-#if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@
-# if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \
-     || (@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)
-                                 _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
-                                                      __va_list args
-   and GCC's fixincludes did not change this to __gnuc_va_list.  */
-_GL_CXXALIAS_SYS_CAST (vfprintf, int,
-                       (FILE *fp, const char *format, va_list args));
-# endif
-_GL_CXXALIASWARN (vfprintf);
-#endif
-#if address@hidden@ && defined GNULIB_POSIXCHECK
-# if !GNULIB_overrides_vfprintf
-#  undef vfprintf
-# endif
-/* Assume vfprintf is always declared.  */
-_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
-                 "use gnulib module vfprintf-posix for portable "
-                      "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_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)
-                                _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
-                                                          __va_list args
-   and GCC's fixincludes did not change this to __gnuc_va_list.  */
-_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
-# endif
-_GL_CXXALIASWARN (vprintf);
-#endif
-#if address@hidden@ && defined GNULIB_POSIXCHECK
-# if !GNULIB_overrides_vprintf
-#  undef vprintf
-# endif
-/* Assume vprintf is always declared.  */
-_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
-                 "use gnulib module vprintf-posix for portable "
-                 "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)
-#   define vsnprintf rpl_vsnprintf
-#  endif
-_GL_FUNCDECL_RPL (vsnprintf, int,
-                  (char *str, size_t size, const char *format, va_list args)
-                  _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));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (vsnprintf, int,
-                  (char *str, size_t size, const char *format, va_list args)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
-                  _GL_ARG_NONNULL ((3)));
-#  endif
-_GL_CXXALIAS_SYS (vsnprintf, int,
-                  (char *str, size_t size, const char *format, va_list args));
-# endif
-_GL_CXXALIASWARN (vsnprintf);
-#elif defined GNULIB_POSIXCHECK
-# undef vsnprintf
-# if HAVE_RAW_DECL_VSNPRINTF
-_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
-                 "use gnulib module vsnprintf for portability");
-# endif
-#endif
-
-#if @GNULIB_VSPRINTF_POSIX@
-# if @REPLACE_VSPRINTF@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define vsprintf rpl_vsprintf
-#  endif
-_GL_FUNCDECL_RPL (vsprintf, int,
-                  (char *str, const char *format, va_list args)
-                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (vsprintf, int,
-                  (char *str, const char *format, va_list args));
-# else
-/* Need to cast, because on Solaris, the third parameter is
-                                                       __va_list args
-   and GCC's fixincludes did not change this to __gnuc_va_list.  */
-_GL_CXXALIAS_SYS_CAST (vsprintf, int,
-                       (char *str, const char *format, va_list args));
-# endif
-_GL_CXXALIASWARN (vsprintf);
-#elif defined GNULIB_POSIXCHECK
-# undef vsprintf
-/* Assume vsprintf is always declared.  */
-_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
-                 "use gnulib module vsprintf-posix for portable "
-                      "POSIX compliance");
-#endif
-
-#endif /* address@hidden@_STDIO_H */
-#endif /* address@hidden@_STDIO_H */
-#endif
diff --git a/grub-core/gnulib/stdlib.in.h b/grub-core/gnulib/stdlib.in.h
deleted file mode 100644
index c9552480e..000000000
--- a/grub-core/gnulib/stdlib.in.h
+++ /dev/null
@@ -1,954 +0,0 @@
-/* A GNU-like <stdlib.h>.
-
-   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
-   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
address@hidden@
-#endif
address@hidden@
-
-#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.  */
-
address@hidden@ @NEXT_STDLIB_H@
-
-#else
-/* Normal invocation convention.  */
-
-#ifndef address@hidden@_STDLIB_H
-
-/* The include_next requires a split double-inclusion guard.  */
address@hidden@ @NEXT_STDLIB_H@
-
-#ifndef address@hidden@_STDLIB_H
-#define address@hidden@_STDLIB_H
-
-/* NetBSD 5.0 mis-defines NULL.  */
-#include <stddef.h>
-
-/* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>.  */
-#if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS
-# include <sys/wait.h>
-#endif
-
-/* Solaris declares getloadavg() in <sys/loadavg.h>.  */
-#if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@
-# include <sys/loadavg.h>
-#endif
-
-/* Native Windows platforms declare mktemp() in <io.h>.  */
-#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
-# include <io.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 address@hidden@ || @REPLACE_RANDOM_R@ || address@hidden@
-#  include <stdint.h>
-# endif
-
-# if address@hidden@
-/* 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.  */
-  int32_t *rptr;                /* Rear pointer.  */
-  int32_t *state;               /* Array of state values.  */
-  int rand_type;                /* Type of random number generator.  */
-  int rand_deg;                 /* Degree of random number generator.  */
-  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_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
-
-/* 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.  */
-
-/* The definition of _GL_WARN_ON_USE is copied here.  */
-
-
-/* Some systems do not define EXIT_*, despite otherwise supporting C89.  */
-#ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
-#endif
-/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
-   with proper operation of xargs.  */
-#ifndef EXIT_FAILURE
-# define EXIT_FAILURE 1
-#elif EXIT_FAILURE != 1
-# undef EXIT_FAILURE
-# define EXIT_FAILURE 1
-#endif
-
-
-#if @GNULIB__EXIT@
-/* Terminate the current process with the given return code, without running
-   the 'atexit' handlers.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status));
-# endif
-_GL_CXXALIAS_SYS (_Exit, void, (int status));
-_GL_CXXALIASWARN (_Exit);
-#elif defined GNULIB_POSIXCHECK
-# undef _Exit
-# if HAVE_RAW_DECL__EXIT
-_GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
-                 "use gnulib module _Exit for portability");
-# endif
-#endif
-
-
-#if @GNULIB_ATOLL@
-/* Parse a signed decimal integer.
-   Returns the value of the integer.  Errors are not detected.  */
-# if address@hidden@
-_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);
-#elif defined GNULIB_POSIXCHECK
-# undef atoll
-# if HAVE_RAW_DECL_ATOLL
-_GL_WARN_ON_USE (atoll, "atoll is unportable - "
-                 "use gnulib module atoll for portability");
-# endif
-#endif
-
-#if @GNULIB_CALLOC_POSIX@
-# if @REPLACE_CALLOC@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef calloc
-#   define calloc rpl_calloc
-#  endif
-_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size));
-_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size));
-# else
-_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size));
-# endif
-_GL_CXXALIASWARN (calloc);
-#elif defined GNULIB_POSIXCHECK
-# undef calloc
-/* Assume calloc is always declared.  */
-_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - "
-                 "use gnulib module calloc-posix for portability");
-#endif
-
-#if @GNULIB_CANONICALIZE_FILE_NAME@
-# if @REPLACE_CANONICALIZE_FILE_NAME@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define canonicalize_file_name rpl_canonicalize_file_name
-#  endif
-_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name)
-                                                  _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name)
-                                                  _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name));
-# endif
-_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 - "
-                 "use gnulib module canonicalize-lgpl for portability");
-# endif
-#endif
-
-#if @GNULIB_GETLOADAVG@
-/* Store max(NELEM,3) load average numbers in LOADAVG[].
-   The three numbers are the load average of the last 1 minute, the last 5
-   minutes, and the last 15 minutes, respectively.
-   LOADAVG is an array of NELEM numbers.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem)
-                                   _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem));
-_GL_CXXALIASWARN (getloadavg);
-#elif defined GNULIB_POSIXCHECK
-# undef getloadavg
-# if HAVE_RAW_DECL_GETLOADAVG
-_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
-                 "use gnulib module getloadavg for portability");
-# endif
-#endif
-
-#if @GNULIB_GETSUBOPT@
-/* Assuming *OPTIONP is a comma separated list of elements of the form
-   "token" or "token=value", getsubopt parses the first of these elements.
-   If the first element refers to a "token" that is member of the given
-   NULL-terminated array of tokens:
-     - It replaces the comma with a NUL byte, updates *OPTIONP to point past
-       the first option and the comma, sets *VALUEP to the value of the
-       element (or NULL if it doesn't contain an "=" sign),
-     - It returns the index of the "token" in the given array of tokens.
-   Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
-   For more details see the POSIX:2001 specification.
-   http://www.opengroup.org/susv3xsh/getsubopt.html */
-# if address@hidden@
-_GL_FUNCDECL_SYS (getsubopt, int,
-                  (char **optionp, char *const *tokens, char **valuep)
-                  _GL_ARG_NONNULL ((1, 2, 3)));
-# endif
-_GL_CXXALIAS_SYS (getsubopt, int,
-                  (char **optionp, char *const *tokens, char **valuep));
-_GL_CXXALIASWARN (getsubopt);
-#elif defined GNULIB_POSIXCHECK
-# undef getsubopt
-# if HAVE_RAW_DECL_GETSUBOPT
-_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - "
-                 "use gnulib module getsubopt for portability");
-# endif
-#endif
-
-#if @GNULIB_GRANTPT@
-/* Change the ownership and access permission of the slave side of the
-   pseudo-terminal whose master side is specified by FD.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (grantpt, int, (int fd));
-# endif
-_GL_CXXALIAS_SYS (grantpt, int, (int fd));
-_GL_CXXALIASWARN (grantpt);
-#elif defined GNULIB_POSIXCHECK
-# undef grantpt
-# if HAVE_RAW_DECL_GRANTPT
-_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) \
-        || _GL_USE_STDLIB_ALLOC)
-#   undef malloc
-#   define malloc rpl_malloc
-#  endif
-_GL_FUNCDECL_RPL (malloc, void *, (size_t size));
-_GL_CXXALIAS_RPL (malloc, void *, (size_t size));
-# else
-_GL_CXXALIAS_SYS (malloc, void *, (size_t size));
-# endif
-_GL_CXXALIASWARN (malloc);
-#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";
-   they are replaced with a string that makes the directory name unique.
-   Returns TEMPLATE, or a null pointer if it cannot get a unique name.
-   The directory is created mode 700.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL 
((1)));
-# endif
-_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/));
-_GL_CXXALIASWARN (mkdtemp);
-#elif defined GNULIB_POSIXCHECK
-# undef mkdtemp
-# if HAVE_RAW_DECL_MKDTEMP
-_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - "
-                 "use gnulib module mkdtemp for portability");
-# endif
-#endif
-
-#if @GNULIB_MKOSTEMP@
-/* Create a unique temporary file from TEMPLATE.
-   The last six characters of TEMPLATE must be "XXXXXX";
-   they are replaced with a string that makes the file name unique.
-   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
-   and O_TEXT, O_BINARY (defined in "binary-io.h").
-   The file is then created, with the specified flags, ensuring it didn't exist
-   before.
-   The file is created read-write (mask at least 0600 & ~umask), but it may be
-   world-readable and world-writable (mask 0666 & ~umask), depending on the
-   implementation.
-   Returns the open file descriptor if successful, otherwise -1 and errno
-   set.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)
-                                 _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/));
-_GL_CXXALIASWARN (mkostemp);
-#elif defined GNULIB_POSIXCHECK
-# undef mkostemp
-# if HAVE_RAW_DECL_MKOSTEMP
-_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - "
-                 "use gnulib module mkostemp for portability");
-# endif
-#endif
-
-#if @GNULIB_MKOSTEMPS@
-/* Create a unique temporary file from TEMPLATE.
-   The last six characters of TEMPLATE before a suffix of length
-   SUFFIXLEN must be "XXXXXX";
-   they are replaced with a string that makes the file name unique.
-   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
-   and O_TEXT, O_BINARY (defined in "binary-io.h").
-   The file is then created, with the specified flags, ensuring it didn't exist
-   before.
-   The file is created read-write (mask at least 0600 & ~umask), but it may be
-   world-readable and world-writable (mask 0666 & ~umask), depending on the
-   implementation.
-   Returns the open file descriptor if successful, otherwise -1 and errno
-   set.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (mkostemps, int,
-                  (char * /*template*/, int /*suffixlen*/, int /*flags*/)
-                  _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (mkostemps, int,
-                  (char * /*template*/, int /*suffixlen*/, int /*flags*/));
-_GL_CXXALIASWARN (mkostemps);
-#elif defined GNULIB_POSIXCHECK
-# undef mkostemps
-# if HAVE_RAW_DECL_MKOSTEMPS
-_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - "
-                 "use gnulib module mkostemps for portability");
-# endif
-#endif
-
-#if @GNULIB_MKSTEMP@
-/* Create a unique temporary file from TEMPLATE.
-   The last six characters of TEMPLATE must be "XXXXXX";
-   they are replaced with a string that makes the file name unique.
-   The file is then created, ensuring it didn't exist before.
-   The file is created read-write (mask at least 0600 & ~umask), but it may be
-   world-readable and world-writable (mask 0666 & ~umask), depending on the
-   implementation.
-   Returns the open file descriptor if successful, otherwise -1 and errno
-   set.  */
-# if @REPLACE_MKSTEMP@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define mkstemp rpl_mkstemp
-#  endif
-_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/));
-# else
-#  if ! @HAVE_MKSTEMP@
-_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/));
-# endif
-_GL_CXXALIASWARN (mkstemp);
-#elif defined GNULIB_POSIXCHECK
-# undef mkstemp
-# if HAVE_RAW_DECL_MKSTEMP
-_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - "
-                 "use gnulib module mkstemp for portability");
-# endif
-#endif
-
-#if @GNULIB_MKSTEMPS@
-/* Create a unique temporary file from TEMPLATE.
-   The last six characters of TEMPLATE prior to a suffix of length
-   SUFFIXLEN must be "XXXXXX";
-   they are replaced with a string that makes the file name unique.
-   The file is then created, ensuring it didn't exist before.
-   The file is created read-write (mask at least 0600 & ~umask), but it may be
-   world-readable and world-writable (mask 0666 & ~umask), depending on the
-   implementation.
-   Returns the open file descriptor if successful, otherwise -1 and errno
-   set.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)
-                                 _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/));
-_GL_CXXALIASWARN (mkstemps);
-#elif defined GNULIB_POSIXCHECK
-# undef mkstemps
-# if HAVE_RAW_DECL_MKSTEMPS
-_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - "
-                 "use gnulib module mkstemps for portability");
-# 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 address@hidden@
-_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 @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 address@hidden@
-_GL_FUNCDECL_SYS (ptsname, char *, (int fd));
-#  endif
-_GL_CXXALIAS_SYS (ptsname, char *, (int fd));
-# endif
-_GL_CXXALIASWARN (ptsname);
-#elif defined GNULIB_POSIXCHECK
-# undef ptsname
-# if HAVE_RAW_DECL_PTSNAME
-_GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
-                 "use gnulib module ptsname for portability");
-# 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 address@hidden@
-_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)
-#   undef putenv
-#   define putenv rpl_putenv
-#  endif
-_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (putenv, int, (char *string));
-# else
-_GL_CXXALIAS_SYS (putenv, int, (char *string));
-# endif
-_GL_CXXALIASWARN (putenv);
-#endif
-
-
-#if @GNULIB_RANDOM_R@
-# if address@hidden@
-#  ifndef RAND_MAX
-#   define RAND_MAX 2147483647
-#  endif
-# endif
-#endif
-
-
-#if @GNULIB_RANDOM@
-# if address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 @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 address@hidden@
-_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result)
-                                 _GL_ARG_NONNULL ((1, 2)));
-#  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
-# if HAVE_RAW_DECL_RANDOM_R
-_GL_WARN_ON_USE (random_r, "random_r is unportable - "
-                 "use gnulib module random_r for portability");
-# endif
-#endif
-
-#if @GNULIB_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 address@hidden@
-_GL_FUNCDECL_SYS (srandom_r, int,
-                  (unsigned int seed, struct random_data *rand_state)
-                  _GL_ARG_NONNULL ((2)));
-#  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
-# if HAVE_RAW_DECL_SRANDOM_R
-_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - "
-                 "use gnulib module random_r for portability");
-# endif
-#endif
-
-#if @GNULIB_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 address@hidden@
-_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
-_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
-# if HAVE_RAW_DECL_INITSTATE_R
-_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - "
-                 "use gnulib module random_r for portability");
-# endif
-#endif
-
-#if @GNULIB_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 address@hidden@
-_GL_FUNCDECL_SYS (setstate_r, int,
-                  (char *arg_state, struct random_data *rand_state)
-                  _GL_ARG_NONNULL ((1, 2)));
-#  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
-# if HAVE_RAW_DECL_SETSTATE_R
-_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - "
-                 "use gnulib module random_r for portability");
-# endif
-#endif
-
-
-#if @GNULIB_REALLOC_POSIX@
-# if @REPLACE_REALLOC@
-#  if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
-        || _GL_USE_STDLIB_ALLOC)
-#   undef realloc
-#   define realloc rpl_realloc
-#  endif
-_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size));
-_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
-# else
-_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
-# endif
-_GL_CXXALIASWARN (realloc);
-#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 - "
-                 "use gnulib module realloc-posix for portability");
-#endif
-
-#if @GNULIB_REALPATH@
-# if @REPLACE_REALPATH@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define realpath rpl_realpath
-#  endif
-_GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved)
-                                    _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved)
-                                    _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved));
-# endif
-_GL_CXXALIASWARN (realpath);
-#elif defined GNULIB_POSIXCHECK
-# undef realpath
-# if HAVE_RAW_DECL_REALPATH
-_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module "
-                 "canonicalize or canonicalize-lgpl for portability");
-# endif
-#endif
-
-#if @GNULIB_RPMATCH@
-/* Test a user response to a question.
-   Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (rpmatch, int, (const char *response));
-_GL_CXXALIASWARN (rpmatch);
-#elif defined GNULIB_POSIXCHECK
-# undef rpmatch
-# if HAVE_RAW_DECL_RPMATCH
-_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - "
-                 "use gnulib module rpmatch for portability");
-# endif
-#endif
-
-#if @GNULIB_SECURE_GETENV@
-/* Look up NAME in the environment, returning 0 in insecure situations.  */
-# if address@hidden@
-_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.  */
-# if @REPLACE_SETENV@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef setenv
-#   define setenv rpl_setenv
-#  endif
-_GL_FUNCDECL_RPL (setenv, int,
-                  (const char *name, const char *value, int replace)
-                  _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (setenv, int,
-                  (const char *name, const char *value, int replace));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (setenv, int,
-                  (const char *name, const char *value, int replace)
-                  _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (setenv, int,
-                  (const char *name, const char *value, int replace));
-# endif
-# if !(@REPLACE_SETENV@ && address@hidden@)
-_GL_CXXALIASWARN (setenv);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef setenv
-# if HAVE_RAW_DECL_SETENV
-_GL_WARN_ON_USE (setenv, "setenv is unportable - "
-                 "use gnulib module setenv for portability");
-# endif
-#endif
-
-#if @GNULIB_STRTOD@
- /* Parse a double from STRING, updating ENDP if appropriate.  */
-# if @REPLACE_STRTOD@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define strtod rpl_strtod
-#  endif
-_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp)
-                                  _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp)
-                                  _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp));
-# endif
-_GL_CXXALIASWARN (strtod);
-#elif defined GNULIB_POSIXCHECK
-# undef strtod
-# if HAVE_RAW_DECL_STRTOD
-_GL_WARN_ON_USE (strtod, "strtod is unportable - "
-                 "use gnulib module strtod for portability");
-# endif
-#endif
-
-#if @GNULIB_STRTOLL@
-/* Parse a signed integer whose textual representation starts at STRING.
-   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
-   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
-   "0x").
-   If ENDPTR is not NULL, the address of the first byte after the integer is
-   stored in *ENDPTR.
-   Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
-   to ERANGE.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (strtoll, long long,
-                  (const char *string, char **endptr, int base)
-                  _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (strtoll, long long,
-                  (const char *string, char **endptr, int base));
-_GL_CXXALIASWARN (strtoll);
-#elif defined GNULIB_POSIXCHECK
-# undef strtoll
-# if HAVE_RAW_DECL_STRTOLL
-_GL_WARN_ON_USE (strtoll, "strtoll is unportable - "
-                 "use gnulib module strtoll for portability");
-# endif
-#endif
-
-#if @GNULIB_STRTOULL@
-/* Parse an unsigned integer whose textual representation starts at STRING.
-   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
-   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
-   "0x").
-   If ENDPTR is not NULL, the address of the first byte after the integer is
-   stored in *ENDPTR.
-   Upon overflow, the return value is ULLONG_MAX, and errno is set to
-   ERANGE.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (strtoull, unsigned long long,
-                  (const char *string, char **endptr, int base)
-                  _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (strtoull, unsigned long long,
-                  (const char *string, char **endptr, int base));
-_GL_CXXALIASWARN (strtoull);
-#elif defined GNULIB_POSIXCHECK
-# undef strtoull
-# if HAVE_RAW_DECL_STRTOULL
-_GL_WARN_ON_USE (strtoull, "strtoull is unportable - "
-                 "use gnulib module strtoull for portability");
-# endif
-#endif
-
-#if @GNULIB_UNLOCKPT@
-/* Unlock the slave side of the pseudo-terminal whose master side is specified
-   by FD, so that it can be opened.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (unlockpt, int, (int fd));
-# endif
-_GL_CXXALIAS_SYS (unlockpt, int, (int fd));
-_GL_CXXALIASWARN (unlockpt);
-#elif defined GNULIB_POSIXCHECK
-# undef unlockpt
-# if HAVE_RAW_DECL_UNLOCKPT
-_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - "
-                 "use gnulib module unlockpt for portability");
-# endif
-#endif
-
-#if @GNULIB_UNSETENV@
-/* Remove the variable NAME from the environment.  */
-# if @REPLACE_UNSETENV@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef unsetenv
-#   define unsetenv rpl_unsetenv
-#  endif
-_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (unsetenv, int, (const char *name));
-# else
-#  if address@hidden@
-_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@ && address@hidden@)
-_GL_CXXALIASWARN (unsetenv);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef unsetenv
-# if HAVE_RAW_DECL_UNSETENV
-_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
-                 "use gnulib module unsetenv for portability");
-# 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 /* address@hidden@_STDLIB_H */
-#endif /* address@hidden@_STDLIB_H */
-#endif
diff --git a/grub-core/gnulib/strcasecmp.c b/grub-core/gnulib/strcasecmp.c
deleted file mode 100644
index 0f0a742ff..000000000
--- a/grub-core/gnulib/strcasecmp.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Case-insensitive string comparison function.
-   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
-   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 <string.h>
-
-#include <ctype.h>
-#include <limits.h>
-
-#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
-
-/* 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.
-   Note: This function does not work with multibyte strings!  */
-
-int
-strcasecmp (const char *s1, const char *s2)
-{
-  const unsigned char *p1 = (const unsigned char *) s1;
-  const unsigned char *p2 = (const unsigned char *) s2;
-  unsigned char c1, c2;
-
-  if (p1 == p2)
-    return 0;
-
-  do
-    {
-      c1 = TOLOWER (*p1);
-      c2 = TOLOWER (*p2);
-
-      if (c1 == '\0')
-        break;
-
-      ++p1;
-      ++p2;
-    }
-  while (c1 == c2);
-
-  if (UCHAR_MAX <= INT_MAX)
-    return c1 - c2;
-  else
-    /* On machines where 'char' and 'int' are types of the same size, the
-       difference of two 'unsigned char' values - including the sign bit -
-       doesn't fit in an 'int'.  */
-    return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
-}
diff --git a/grub-core/gnulib/strchrnul.c b/grub-core/gnulib/strchrnul.c
deleted file mode 100644
index f6b072274..000000000
--- a/grub-core/gnulib/strchrnul.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Searching in a string.
-   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
-   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 <string.h>
-
-/* Find the first occurrence of C in S or the final NUL byte.  */
-char *
-strchrnul (const char *s, int c_in)
-{
-  /* On 32-bit hardware, choosing longword to be a 32-bit unsigned
-     long instead of a 64-bit uintmax_t tends to give better
-     performance.  On 64-bit hardware, unsigned long is generally 64
-     bits already.  Change this typedef to experiment with
-     performance.  */
-  typedef unsigned long int longword;
-
-  const unsigned char *char_ptr;
-  const longword *longword_ptr;
-  longword repeated_one;
-  longword repeated_c;
-  unsigned char c;
-
-  c = (unsigned char) c_in;
-  if (!c)
-    return rawmemchr (s, 0);
-
-  /* Handle the first few bytes by reading one byte at a time.
-     Do this until CHAR_PTR is aligned on a longword boundary.  */
-  for (char_ptr = (const unsigned char *) s;
-       (size_t) char_ptr % sizeof (longword) != 0;
-       ++char_ptr)
-    if (!*char_ptr || *char_ptr == c)
-      return (char *) char_ptr;
-
-  longword_ptr = (const longword *) char_ptr;
-
-  /* All these elucidatory comments refer to 4-byte longwords,
-     but the theory applies equally well to any size longwords.  */
-
-  /* Compute auxiliary longword values:
-     repeated_one is a value which has a 1 in every byte.
-     repeated_c has c in every byte.  */
-  repeated_one = 0x01010101;
-  repeated_c = c | (c << 8);
-  repeated_c |= repeated_c << 16;
-  if (0xffffffffU < (longword) -1)
-    {
-      repeated_one |= repeated_one << 31 << 1;
-      repeated_c |= repeated_c << 31 << 1;
-      if (8 < sizeof (longword))
-        {
-          size_t i;
-
-          for (i = 64; i < sizeof (longword) * 8; i *= 2)
-            {
-              repeated_one |= repeated_one << i;
-              repeated_c |= repeated_c << i;
-            }
-        }
-    }
-
-  /* Instead of the traditional loop which tests each byte, we will
-     test a longword at a time.  The tricky part is testing if *any of
-     the four* bytes in the longword in question are equal to NUL or
-     c.  We first use an xor with repeated_c.  This reduces the task
-     to testing whether *any of the four* bytes in longword1 or
-     longword2 is zero.
-
-     Let's consider longword1.  We compute tmp =
-       ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7).
-     That is, we perform the following operations:
-       1. Subtract repeated_one.
-       2. & ~longword1.
-       3. & a mask consisting of 0x80 in every byte.
-     Consider what happens in each byte:
-       - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff,
-         and step 3 transforms it into 0x80.  A carry can also be propagated
-         to more significant bytes.
-       - If a byte of longword1 is nonzero, let its lowest 1 bit be at
-         position k (0 <= k <= 7); so the lowest k bits are 0.  After step 1,
-         the byte ends in a single bit of value 0 and k bits of value 1.
-         After step 2, the result is just k bits of value 1: 2^k - 1.  After
-         step 3, the result is 0.  And no carry is produced.
-     So, if longword1 has only non-zero bytes, tmp is zero.
-     Whereas if longword1 has a zero byte, call j the position of the least
-     significant zero byte.  Then the result has a zero at positions 0, ...,
-     j-1 and a 0x80 at position j.  We cannot predict the result at the more
-     significant bytes (positions j+1..3), but it does not matter since we
-     already have a non-zero bit at position 8*j+7.
-
-     The test whether any byte in longword1 or longword2 is zero is equivalent
-     to testing whether tmp1 is nonzero or tmp2 is nonzero.  We can combine
-     this into a single test, whether (tmp1 | tmp2) is nonzero.
-
-     This test can read more than one byte beyond the end of a string,
-     depending on where the terminating NUL is encountered.  However,
-     this is considered safe since the initialization phase ensured
-     that the read will be aligned, therefore, the read will not cross
-     page boundaries and will not cause a fault.  */
-
-  while (1)
-    {
-      longword longword1 = *longword_ptr ^ repeated_c;
-      longword longword2 = *longword_ptr;
-
-      if (((((longword1 - repeated_one) & ~longword1)
-            | ((longword2 - repeated_one) & ~longword2))
-           & (repeated_one << 7)) != 0)
-        break;
-      longword_ptr++;
-    }
-
-  char_ptr = (const unsigned char *) longword_ptr;
-
-  /* At this point, we know that one of the sizeof (longword) bytes
-     starting at char_ptr is == 0 or == c.  On little-endian machines,
-     we could determine the first such byte without any further memory
-     accesses, just by looking at the tmp result from the last loop
-     iteration.  But this does not work on big-endian machines.
-     Choose code that works in both cases.  */
-
-  char_ptr = (unsigned char *) longword_ptr;
-  while (*char_ptr && (*char_ptr != c))
-    char_ptr++;
-  return (char *) char_ptr;
-}
diff --git a/grub-core/gnulib/strchrnul.valgrind 
b/grub-core/gnulib/strchrnul.valgrind
deleted file mode 100644
index b14fa1304..000000000
--- a/grub-core/gnulib/strchrnul.valgrind
+++ /dev/null
@@ -1,12 +0,0 @@
-# Suppress a valgrind message about use of uninitialized memory in strchrnul().
-# This use is OK because it provides only a speedup.
-{
-    strchrnul-value4
-    Memcheck:Value4
-    fun:strchrnul
-}
-{
-    strchrnul-value8
-    Memcheck:Value8
-    fun:strchrnul
-}
diff --git a/grub-core/gnulib/streq.h b/grub-core/gnulib/streq.h
deleted file mode 100644
index 12c1867c8..000000000
--- a/grub-core/gnulib/streq.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Optimized string comparison.
-   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
-   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 <address@hidden>.  */
-
-#ifndef _GL_STREQ_H
-#define _GL_STREQ_H
-
-#include <string.h>
-
-/* 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.  */
-
-/* Help GCC to generate good code for string comparisons with
-   immediate strings. */
-#if defined (__GNUC__) && defined (__OPTIMIZE__)
-
-static inline int
-streq9 (const char *s1, const char *s2)
-{
-  return strcmp (s1 + 9, s2 + 9) == 0;
-}
-
-static inline int
-streq8 (const char *s1, const char *s2, char s28)
-{
-  if (s1[8] == s28)
-    {
-      if (s28 == 0)
-        return 1;
-      else
-        return streq9 (s1, s2);
-    }
-  else
-    return 0;
-}
-
-static inline int
-streq7 (const char *s1, const char *s2, char s27, char s28)
-{
-  if (s1[7] == s27)
-    {
-      if (s27 == 0)
-        return 1;
-      else
-        return streq8 (s1, s2, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-streq6 (const char *s1, const char *s2, char s26, char s27, char s28)
-{
-  if (s1[6] == s26)
-    {
-      if (s26 == 0)
-        return 1;
-      else
-        return streq7 (s1, s2, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-streq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)
-{
-  if (s1[5] == s25)
-    {
-      if (s25 == 0)
-        return 1;
-      else
-        return streq6 (s1, s2, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-streq4 (const char *s1, const char *s2, char s24, char s25, char s26, char 
s27, char s28)
-{
-  if (s1[4] == s24)
-    {
-      if (s24 == 0)
-        return 1;
-      else
-        return streq5 (s1, s2, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-streq3 (const char *s1, const char *s2, char s23, char s24, char s25, char 
s26, char s27, char s28)
-{
-  if (s1[3] == s23)
-    {
-      if (s23 == 0)
-        return 1;
-      else
-        return streq4 (s1, s2, s24, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-streq2 (const char *s1, const char *s2, char s22, char s23, char s24, char 
s25, char s26, char s27, char s28)
-{
-  if (s1[2] == s22)
-    {
-      if (s22 == 0)
-        return 1;
-      else
-        return streq3 (s1, s2, s23, s24, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-streq1 (const char *s1, const char *s2, char s21, char s22, char s23, char 
s24, char s25, char s26, char s27, char s28)
-{
-  if (s1[1] == s21)
-    {
-      if (s21 == 0)
-        return 1;
-      else
-        return streq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char 
s23, char s24, char s25, char s26, char s27, char s28)
-{
-  if (s1[0] == s20)
-    {
-      if (s20 == 0)
-        return 1;
-      else
-        return streq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-#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_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
-  (strcmp (s1, s2) == 0)
-
-#endif
-
-#endif /* _GL_STREQ_H */
diff --git a/grub-core/gnulib/strerror-override.c 
b/grub-core/gnulib/strerror-override.c
deleted file mode 100644
index d0ed2fb86..000000000
--- a/grub-core/gnulib/strerror-override.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/* 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 <address@hidden>, 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
deleted file mode 100644
index 3b8f24b99..000000000
--- a/grub-core/gnulib/strerror-override.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* 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
deleted file mode 100644
index 80a2f2eea..000000000
--- a/grub-core/gnulib/strerror.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* strerror.c --- POSIX compatible system error routine
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <string.h>
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "intprops.h"
-#include "strerror-override.h"
-#include "verify.h"
-
-/* Use the system functions, not the gnulib overrides in this file.  */
-#undef sprintf
-
-char *
-strerror (int n)
-#undef strerror
-{
-  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;
-
-  msg = strerror (n);
-
-  /* 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;
-    }
-
-  /* Fix STACKBUF_LEN if this ever aborts.  */
-  len = strlen (msg);
-  if (sizeof buf <= len)
-    abort ();
-
-  return memcpy (buf, msg, len + 1);
-}
diff --git a/grub-core/gnulib/string.in.h b/grub-core/gnulib/string.in.h
deleted file mode 100644
index d7a6c9c92..000000000
--- a/grub-core/gnulib/string.in.h
+++ /dev/null
@@ -1,1029 +0,0 @@
-/* A GNU-like <string.h>.
-
-   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
-   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 address@hidden@_STRING_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-/* The include_next requires a split double-inclusion guard.  */
address@hidden@ @NEXT_STRING_H@
-
-#ifndef address@hidden@_STRING_H
-#define address@hidden@_STRING_H
-
-/* NetBSD 5.0 mis-defines NULL.  */
-#include <stddef.h>
-
-/* MirBSD defines mbslen as a macro.  */
-#if @GNULIB_MBSLEN@ && defined __MirBSD__
-# include <wchar.h>
-#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
-
-/* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>.  */
-/* But in any case avoid namespace pollution on glibc systems.  */
-#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \
-    && ! defined __GLIBC__
-# include <unistd.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.  */
-
-
-/* Find the index of the least-significant set bit.  */
-#if @GNULIB_FFSL@
-# if address@hidden@
-_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 address@hidden@
-_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@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define memchr rpl_memchr
-#  endif
-_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n)
-                                  _GL_ATTRIBUTE_PURE
-                                  _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n));
-# else
-#  if ! @HAVE_MEMCHR@
-_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n)
-                                  _GL_ATTRIBUTE_PURE
-                                  _GL_ARG_NONNULL ((1)));
-#  endif
-  /* On some systems, this function is defined as an overloaded function:
-       extern "C" { const void * std::memchr (const void *, int, size_t); }
-       extern "C++" { void * std::memchr (void *, int, size_t); }  */
-_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) && !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 *,
-                   (void const *__s, int __c, size_t __n));
-# else
-_GL_CXXALIASWARN (memchr);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef memchr
-/* Assume memchr is always declared.  */
-_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - "
-                 "use gnulib module memchr for portability" );
-#endif
-
-/* Return the first occurrence of NEEDLE in HAYSTACK.  */
-#if @GNULIB_MEMMEM@
-# if @REPLACE_MEMMEM@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define memmem rpl_memmem
-#  endif
-_GL_FUNCDECL_RPL (memmem, void *,
-                  (void const *__haystack, size_t __haystack_len,
-                   void const *__needle, size_t __needle_len)
-                  _GL_ATTRIBUTE_PURE
-                  _GL_ARG_NONNULL ((1, 3)));
-_GL_CXXALIAS_RPL (memmem, void *,
-                  (void const *__haystack, size_t __haystack_len,
-                   void const *__needle, size_t __needle_len));
-# else
-#  if ! @HAVE_DECL_MEMMEM@
-_GL_FUNCDECL_SYS (memmem, void *,
-                  (void const *__haystack, size_t __haystack_len,
-                   void const *__needle, size_t __needle_len)
-                  _GL_ATTRIBUTE_PURE
-                  _GL_ARG_NONNULL ((1, 3)));
-#  endif
-_GL_CXXALIAS_SYS (memmem, void *,
-                  (void const *__haystack, size_t __haystack_len,
-                   void const *__needle, size_t __needle_len));
-# endif
-_GL_CXXALIASWARN (memmem);
-#elif defined GNULIB_POSIXCHECK
-# undef memmem
-# if HAVE_RAW_DECL_MEMMEM
-_GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - "
-                 "use gnulib module memmem-simple for portability, "
-                 "and module memmem for speed" );
-# endif
-#endif
-
-/* Copy N bytes of SRC to DEST, return pointer to bytes after the
-   last written byte.  */
-#if @GNULIB_MEMPCPY@
-# if ! @HAVE_MEMPCPY@
-_GL_FUNCDECL_SYS (mempcpy, void *,
-                  (void *restrict __dest, void const *restrict __src,
-                   size_t __n)
-                  _GL_ARG_NONNULL ((1, 2)));
-# endif
-_GL_CXXALIAS_SYS (mempcpy, void *,
-                  (void *restrict __dest, void const *restrict __src,
-                   size_t __n));
-_GL_CXXALIASWARN (mempcpy);
-#elif defined GNULIB_POSIXCHECK
-# undef mempcpy
-# if HAVE_RAW_DECL_MEMPCPY
-_GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - "
-                 "use gnulib module mempcpy for portability");
-# endif
-#endif
-
-/* Search backwards through a block for a byte (specified as an int).  */
-#if @GNULIB_MEMRCHR@
-# if ! @HAVE_DECL_MEMRCHR@
-_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t)
-                                   _GL_ATTRIBUTE_PURE
-                                   _GL_ARG_NONNULL ((1)));
-# endif
-  /* On some systems, this function is defined as an overloaded function:
-       extern "C++" { const void * std::memrchr (const void *, int, size_t); }
-       extern "C++" { void * std::memrchr (void *, 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) && !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));
-# else
-_GL_CXXALIASWARN (memrchr);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef memrchr
-# if HAVE_RAW_DECL_MEMRCHR
-_GL_WARN_ON_USE (memrchr, "memrchr is unportable - "
-                 "use gnulib module memrchr for portability");
-# endif
-#endif
-
-/* Find the first occurrence of C in S.  More efficient than
-   memchr(S,C,N), at the expense of undefined behavior if C does not
-   occur within N bytes.  */
-#if @GNULIB_RAWMEMCHR@
-# if ! @HAVE_RAWMEMCHR@
-_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in)
-                                     _GL_ATTRIBUTE_PURE
-                                     _GL_ARG_NONNULL ((1)));
-# endif
-  /* On some systems, this function is defined as an overloaded function:
-       extern "C++" { const void * std::rawmemchr (const void *, int); }
-       extern "C++" { void * std::rawmemchr (void *, int); }  */
-_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) && !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));
-# else
-_GL_CXXALIASWARN (rawmemchr);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef rawmemchr
-# if HAVE_RAW_DECL_RAWMEMCHR
-_GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - "
-                 "use gnulib module rawmemchr for portability");
-# endif
-#endif
-
-/* Copy SRC to DST, returning the address of the terminating '\0' in DST.  */
-#if @GNULIB_STPCPY@
-# if ! @HAVE_STPCPY@
-_GL_FUNCDECL_SYS (stpcpy, char *,
-                  (char *restrict __dst, char const *restrict __src)
-                  _GL_ARG_NONNULL ((1, 2)));
-# endif
-_GL_CXXALIAS_SYS (stpcpy, char *,
-                  (char *restrict __dst, char const *restrict __src));
-_GL_CXXALIASWARN (stpcpy);
-#elif defined GNULIB_POSIXCHECK
-# undef stpcpy
-# if HAVE_RAW_DECL_STPCPY
-_GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
-                 "use gnulib module stpcpy for portability");
-# endif
-#endif
-
-/* Copy no more than N bytes of SRC to DST, returning a pointer past the
-   last non-NUL byte written into DST.  */
-#if @GNULIB_STPNCPY@
-# if @REPLACE_STPNCPY@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef stpncpy
-#   define stpncpy rpl_stpncpy
-#  endif
-_GL_FUNCDECL_RPL (stpncpy, char *,
-                  (char *restrict __dst, char const *restrict __src,
-                   size_t __n)
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (stpncpy, char *,
-                  (char *restrict __dst, char const *restrict __src,
-                   size_t __n));
-# else
-#  if ! @HAVE_STPNCPY@
-_GL_FUNCDECL_SYS (stpncpy, char *,
-                  (char *restrict __dst, char const *restrict __src,
-                   size_t __n)
-                  _GL_ARG_NONNULL ((1, 2)));
-#  endif
-_GL_CXXALIAS_SYS (stpncpy, char *,
-                  (char *restrict __dst, char const *restrict __src,
-                   size_t __n));
-# endif
-_GL_CXXALIASWARN (stpncpy);
-#elif defined GNULIB_POSIXCHECK
-# undef stpncpy
-# if HAVE_RAW_DECL_STPNCPY
-_GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - "
-                 "use gnulib module stpncpy for portability");
-# endif
-#endif
-
-#if defined GNULIB_POSIXCHECK
-/* strchr() does not work with multibyte strings if the locale encoding is
-   GB18030 and the character to be searched is a digit.  */
-# undef strchr
-/* Assume strchr is always declared.  */
-_GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings "
-                 "in some multibyte locales - "
-                 "use mbschr if you care about internationalization");
-#endif
-
-/* Find the first occurrence of C in S or the final NUL byte.  */
-#if @GNULIB_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
-  /* 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));
-# 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));
-# else
-_GL_CXXALIASWARN (strchrnul);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef strchrnul
-# if HAVE_RAW_DECL_STRCHRNUL
-_GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - "
-                 "use gnulib module strchrnul for portability");
-# endif
-#endif
-
-/* Duplicate S, returning an identical malloc'd string.  */
-#if @GNULIB_STRDUP@
-# if @REPLACE_STRDUP@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef strdup
-#   define strdup rpl_strdup
-#  endif
-_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (strdup, char *, (char const *__s));
-# else
-#  if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup
-    /* strdup exists as a function and as a macro.  Get rid of the macro.  */
-#   undef strdup
-#  endif
-#  if !(@HAVE_DECL_STRDUP@ || defined strdup)
-_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (strdup, char *, (char const *__s));
-# endif
-_GL_CXXALIASWARN (strdup);
-#elif defined GNULIB_POSIXCHECK
-# undef strdup
-# if HAVE_RAW_DECL_STRDUP
-_GL_WARN_ON_USE (strdup, "strdup is unportable - "
-                 "use gnulib module strdup for portability");
-# endif
-#endif
-
-/* Append no more than N characters from SRC onto DEST.  */
-#if @GNULIB_STRNCAT@
-# if @REPLACE_STRNCAT@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef strncat
-#   define strncat rpl_strncat
-#  endif
-_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n)
-                                   _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n));
-# else
-_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n));
-# endif
-_GL_CXXALIASWARN (strncat);
-#elif defined GNULIB_POSIXCHECK
-# undef strncat
-# if HAVE_RAW_DECL_STRNCAT
-_GL_WARN_ON_USE (strncat, "strncat is unportable - "
-                 "use gnulib module strncat for portability");
-# endif
-#endif
-
-/* Return a newly allocated copy of at most N bytes of STRING.  */
-#if @GNULIB_STRNDUP@
-# if @REPLACE_STRNDUP@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef strndup
-#   define strndup rpl_strndup
-#  endif
-_GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n)
-                                   _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n));
-# else
-#  if ! @HAVE_DECL_STRNDUP@
-_GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n)
-                                   _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n));
-# endif
-_GL_CXXALIASWARN (strndup);
-#elif defined GNULIB_POSIXCHECK
-# undef strndup
-# if HAVE_RAW_DECL_STRNDUP
-_GL_WARN_ON_USE (strndup, "strndup is unportable - "
-                 "use gnulib module strndup for portability");
-# endif
-#endif
-
-/* Find the length (number of bytes) of STRING, but scan at most
-   MAXLEN bytes.  If no '\0' terminator is found in that many bytes,
-   return MAXLEN.  */
-#if @GNULIB_STRNLEN@
-# if @REPLACE_STRNLEN@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef strnlen
-#   define strnlen rpl_strnlen
-#  endif
-_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)
-                                   _GL_ATTRIBUTE_PURE
-                                   _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen));
-# else
-#  if ! @HAVE_DECL_STRNLEN@
-_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)
-                                   _GL_ATTRIBUTE_PURE
-                                   _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen));
-# endif
-_GL_CXXALIASWARN (strnlen);
-#elif defined GNULIB_POSIXCHECK
-# undef strnlen
-# if HAVE_RAW_DECL_STRNLEN
-_GL_WARN_ON_USE (strnlen, "strnlen is unportable - "
-                 "use gnulib module strnlen for portability");
-# endif
-#endif
-
-#if defined GNULIB_POSIXCHECK
-/* strcspn() assumes the second argument is a list of single-byte characters.
-   Even in this simple case, it does not work with multibyte strings if the
-   locale encoding is GB18030 and one of the characters to be searched is a
-   digit.  */
-# undef strcspn
-/* Assume strcspn is always declared.  */
-_GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings "
-                 "in multibyte locales - "
-                 "use mbscspn if you care about internationalization");
-#endif
-
-/* Find the first occurrence in S of any character in ACCEPT.  */
-#if @GNULIB_STRPBRK@
-# if ! @HAVE_STRPBRK@
-_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept)
-                                   _GL_ATTRIBUTE_PURE
-                                   _GL_ARG_NONNULL ((1, 2)));
-# endif
-  /* On some systems, this function is defined as an overloaded function:
-       extern "C" { const char * strpbrk (const char *, const char *); }
-       extern "C++" { char * strpbrk (char *, const char *); }  */
-_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) && !defined __UCLIBC__) \
-     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
-_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept));
-_GL_CXXALIASWARN1 (strpbrk, char const *,
-                   (char const *__s, char const *__accept));
-# else
-_GL_CXXALIASWARN (strpbrk);
-# endif
-# if defined GNULIB_POSIXCHECK
-/* strpbrk() assumes the second argument is a list of single-byte characters.
-   Even in this simple case, it does not work with multibyte strings if the
-   locale encoding is GB18030 and one of the characters to be searched is a
-   digit.  */
-#  undef strpbrk
-_GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings "
-                 "in multibyte locales - "
-                 "use mbspbrk if you care about internationalization");
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef strpbrk
-# if HAVE_RAW_DECL_STRPBRK
-_GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - "
-                 "use gnulib module strpbrk for portability");
-# endif
-#endif
-
-#if defined GNULIB_POSIXCHECK
-/* strspn() assumes the second argument is a list of single-byte characters.
-   Even in this simple case, it cannot work with multibyte strings.  */
-# undef strspn
-/* Assume strspn is always declared.  */
-_GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings "
-                 "in multibyte locales - "
-                 "use mbsspn if you care about internationalization");
-#endif
-
-#if defined GNULIB_POSIXCHECK
-/* strrchr() does not work with multibyte strings if the locale encoding is
-   GB18030 and the character to be searched is a digit.  */
-# undef strrchr
-/* Assume strrchr is always declared.  */
-_GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings "
-                 "in some multibyte locales - "
-                 "use mbsrchr if you care about internationalization");
-#endif
-
-/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
-   If one is found, overwrite it with a NUL, and advance *STRINGP
-   to point to the next char after it.  Otherwise, set *STRINGP to NULL.
-   If *STRINGP was already NULL, nothing happens.
-   Return the old value of *STRINGP.
-
-   This is a variant of strtok() that is multithread-safe and supports
-   empty fields.
-
-   Caveat: It modifies the original string.
-   Caveat: These functions cannot be used on constant strings.
-   Caveat: The identity of the delimiting character is lost.
-   Caveat: It doesn't work with multibyte strings unless all of the delimiter
-           characters are ASCII characters < 0x30.
-
-   See also strtok_r().  */
-#if @GNULIB_STRSEP@
-# if ! @HAVE_STRSEP@
-_GL_FUNCDECL_SYS (strsep, char *,
-                  (char **restrict __stringp, char const *restrict __delim)
-                  _GL_ARG_NONNULL ((1, 2)));
-# endif
-_GL_CXXALIAS_SYS (strsep, char *,
-                  (char **restrict __stringp, char const *restrict __delim));
-_GL_CXXALIASWARN (strsep);
-# if defined GNULIB_POSIXCHECK
-#  undef strsep
-_GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings "
-                 "in multibyte locales - "
-                 "use mbssep if you care about internationalization");
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef strsep
-# if HAVE_RAW_DECL_STRSEP
-_GL_WARN_ON_USE (strsep, "strsep is unportable - "
-                 "use gnulib module strsep for portability");
-# endif
-#endif
-
-#if @GNULIB_STRSTR@
-# if @REPLACE_STRSTR@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define strstr rpl_strstr
-#  endif
-_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle)
-                                  _GL_ATTRIBUTE_PURE
-                                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle));
-# else
-  /* On some systems, this function is defined as an overloaded function:
-       extern "C++" { const char * strstr (const char *, const char *); }
-       extern "C++" { char * strstr (char *, const char *); }  */
-_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) && !defined __UCLIBC__) \
-     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
-_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle));
-_GL_CXXALIASWARN1 (strstr, const char *,
-                   (const char *haystack, const char *needle));
-# else
-_GL_CXXALIASWARN (strstr);
-# endif
-#elif defined GNULIB_POSIXCHECK
-/* strstr() does not work with multibyte strings if the locale encoding is
-   different from UTF-8:
-   POSIX says that it operates on "strings", and "string" in POSIX is defined
-   as a sequence of bytes, not of characters.  */
-# undef strstr
-/* Assume strstr is always declared.  */
-_GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot "
-                 "work correctly on character strings in most "
-                 "multibyte locales - "
-                 "use mbsstr if you care about internationalization, "
-                 "or use strstr if you care about speed");
-#endif
-
-/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
-   comparison.  */
-#if @GNULIB_STRCASESTR@
-# if @REPLACE_STRCASESTR@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define strcasestr rpl_strcasestr
-#  endif
-_GL_FUNCDECL_RPL (strcasestr, char *,
-                  (const char *haystack, const char *needle)
-                  _GL_ATTRIBUTE_PURE
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (strcasestr, char *,
-                  (const char *haystack, const char *needle));
-# else
-#  if ! @HAVE_STRCASESTR@
-_GL_FUNCDECL_SYS (strcasestr, char *,
-                  (const char *haystack, const char *needle)
-                  _GL_ATTRIBUTE_PURE
-                  _GL_ARG_NONNULL ((1, 2)));
-#  endif
-  /* On some systems, this function is defined as an overloaded function:
-       extern "C++" { const char * strcasestr (const char *, const char *); }
-       extern "C++" { char * strcasestr (char *, const char *); }  */
-_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) && !defined __UCLIBC__) \
-     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
-_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle));
-_GL_CXXALIASWARN1 (strcasestr, const char *,
-                   (const char *haystack, const char *needle));
-# else
-_GL_CXXALIASWARN (strcasestr);
-# endif
-#elif defined GNULIB_POSIXCHECK
-/* strcasestr() does not work with multibyte strings:
-   It is a glibc extension, and glibc implements it only for unibyte
-   locales.  */
-# undef strcasestr
-# if HAVE_RAW_DECL_STRCASESTR
-_GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character "
-                 "strings in multibyte locales - "
-                 "use mbscasestr if you care about "
-                 "internationalization, or use c-strcasestr if you want "
-                 "a locale independent function");
-# endif
-#endif
-
-/* Parse S into tokens separated by characters in DELIM.
-   If S is NULL, the saved pointer in SAVE_PTR is used as
-   the next starting point.  For example:
-        char s[] = "-abc-=-def";
-        char *sp;
-        x = strtok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
-        x = strtok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
-        x = strtok_r(NULL, "=", &sp);   // x = NULL
-                // s = "abc\0-def\0"
-
-   This is a variant of strtok() that is multithread-safe.
-
-   For the POSIX documentation for this function, see:
-   http://www.opengroup.org/susv3xsh/strtok.html
-
-   Caveat: It modifies the original string.
-   Caveat: These functions cannot be used on constant strings.
-   Caveat: The identity of the delimiting character is lost.
-   Caveat: It doesn't work with multibyte strings unless all of the delimiter
-           characters are ASCII characters < 0x30.
-
-   See also strsep().  */
-#if @GNULIB_STRTOK_R@
-# if @REPLACE_STRTOK_R@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef strtok_r
-#   define strtok_r rpl_strtok_r
-#  endif
-_GL_FUNCDECL_RPL (strtok_r, char *,
-                  (char *restrict s, char const *restrict delim,
-                   char **restrict save_ptr)
-                  _GL_ARG_NONNULL ((2, 3)));
-_GL_CXXALIAS_RPL (strtok_r, char *,
-                  (char *restrict s, char const *restrict delim,
-                   char **restrict save_ptr));
-# else
-#  if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK
-#   undef strtok_r
-#  endif
-#  if ! @HAVE_DECL_STRTOK_R@
-_GL_FUNCDECL_SYS (strtok_r, char *,
-                  (char *restrict s, char const *restrict delim,
-                   char **restrict save_ptr)
-                  _GL_ARG_NONNULL ((2, 3)));
-#  endif
-_GL_CXXALIAS_SYS (strtok_r, char *,
-                  (char *restrict s, char const *restrict delim,
-                   char **restrict save_ptr));
-# endif
-_GL_CXXALIASWARN (strtok_r);
-# if defined GNULIB_POSIXCHECK
-_GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character "
-                 "strings in multibyte locales - "
-                 "use mbstok_r if you care about internationalization");
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef strtok_r
-# if HAVE_RAW_DECL_STRTOK_R
-_GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - "
-                 "use gnulib module strtok_r for portability");
-# endif
-#endif
-
-
-/* The following functions are not specified by POSIX.  They are gnulib
-   extensions.  */
-
-#if @GNULIB_MBSLEN@
-/* Return the number of multibyte characters in the character string STRING.
-   This considers multibyte characters, unlike strlen, which counts bytes.  */
-# ifdef __MirBSD__  /* MirBSD defines mbslen as a macro.  Override it.  */
-#  undef mbslen
-# endif
-# if @HAVE_MBSLEN@  /* AIX, OSF/1, MirBSD define mbslen already in libc.  */
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define mbslen rpl_mbslen
-#  endif
-_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_ATTRIBUTE_PURE
-                                  _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string));
-# endif
-_GL_CXXALIASWARN (mbslen);
-#endif
-
-#if @GNULIB_MBSNLEN@
-/* 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
-
-#if @GNULIB_MBSCHR@
-/* Locate the first single-byte character C in the character string STRING,
-   and return a pointer to it.  Return NULL if C is not found in STRING.
-   Unlike strchr(), this function works correctly in multibyte locales with
-   encodings such as GB18030.  */
-# if defined __hpux
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   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
-_GL_CXXALIASWARN (mbschr);
-#endif
-
-#if @GNULIB_MBSRCHR@
-/* Locate the last single-byte character C in the character string STRING,
-   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 || defined __INTERIX
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   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
-_GL_CXXALIASWARN (mbsrchr);
-#endif
-
-#if @GNULIB_MBSSTR@
-/* Find the first occurrence of the character string NEEDLE in the character
-   string HAYSTACK.  Return NULL if NEEDLE is not found in HAYSTACK.
-   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
-
-#if @GNULIB_MBSCASECMP@
-/* Compare the character 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.
-   Note: This function may, in multibyte locales, return 0 for strings of
-   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
-
-#if @GNULIB_MBSNCASECMP@
-/* Compare the initial segment of the character string S1 consisting of at most
-   N characters with the initial segment of the character string S2 consisting
-   of at most N characters, ignoring case, returning less than, equal to or
-   greater than zero if the initial segment of S1 is lexicographically less
-   than, equal to or greater than the initial segment of S2.
-   Note: This function may, in multibyte locales, return 0 for initial segments
-   of different lengths!
-   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
-
-#if @GNULIB_MBSPCASECMP@
-/* Compare the initial segment of the character string STRING consisting of
-   at most mbslen (PREFIX) characters with the character string PREFIX,
-   ignoring case.  If the two match, return a pointer to the first byte
-   after this prefix in STRING.  Otherwise, return NULL.
-   Note: This function may, in multibyte locales, return non-NULL if STRING
-   is of smaller length than PREFIX!
-   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
-
-#if @GNULIB_MBSCASESTR@
-/* Find the first occurrence of the character string NEEDLE in the character
-   string HAYSTACK, using case-insensitive comparison.
-   Note: This function may, in multibyte locales, return success even if
-   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
-
-#if @GNULIB_MBSCSPN@
-/* Find the first occurrence in the character string STRING of any character
-   in the character string ACCEPT.  Return the number of bytes from the
-   beginning of the string to this occurrence, or to the end of the string
-   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
-
-#if @GNULIB_MBSPBRK@
-/* Find the first occurrence in the character string STRING of any character
-   in the character string ACCEPT.  Return the pointer to it, or NULL if none
-   exists.
-   Unlike strpbrk(), this function works correctly in multibyte locales.  */
-# if defined __hpux
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   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
-_GL_CXXALIASWARN (mbspbrk);
-#endif
-
-#if @GNULIB_MBSSPN@
-/* Find the first occurrence in the character string STRING of any character
-   not in the character string REJECT.  Return the number of bytes from the
-   beginning of the string to this occurrence, or to the end of the string
-   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
-
-#if @GNULIB_MBSSEP@
-/* Search the next delimiter (multibyte character listed in the character
-   string DELIM) starting at the character string *STRINGP.
-   If one is found, overwrite it with a NUL, and advance *STRINGP to point
-   to the next multibyte character after it.  Otherwise, set *STRINGP to NULL.
-   If *STRINGP was already NULL, nothing happens.
-   Return the old value of *STRINGP.
-
-   This is a variant of mbstok_r() that supports empty fields.
-
-   Caveat: It modifies the original string.
-   Caveat: These functions cannot be used on constant strings.
-   Caveat: The identity of the delimiting character is lost.
-
-   See also mbstok_r().  */
-_GL_EXTERN_C char * mbssep (char **stringp, const char *delim)
-     _GL_ARG_NONNULL ((1, 2));
-#endif
-
-#if @GNULIB_MBSTOK_R@
-/* Parse the character string STRING into tokens separated by characters in
-   the character string DELIM.
-   If STRING is NULL, the saved pointer in SAVE_PTR is used as
-   the next starting point.  For example:
-        char s[] = "-abc-=-def";
-        char *sp;
-        x = mbstok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
-        x = mbstok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
-        x = mbstok_r(NULL, "=", &sp);   // x = NULL
-                // s = "abc\0-def\0"
-
-   Caveat: It modifies the original string.
-   Caveat: These functions cannot be used on constant strings.
-   Caveat: The identity of the delimiting character is lost.
-
-   See also mbssep().  */
-_GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr)
-     _GL_ARG_NONNULL ((2, 3));
-#endif
-
-/* Map any int, typically from errno, into an error message.  */
-#if @GNULIB_STRERROR@
-# if @REPLACE_STRERROR@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef strerror
-#   define strerror rpl_strerror
-#  endif
-_GL_FUNCDECL_RPL (strerror, char *, (int));
-_GL_CXXALIAS_RPL (strerror, char *, (int));
-# else
-_GL_CXXALIAS_SYS (strerror, char *, (int));
-# endif
-_GL_CXXALIASWARN (strerror);
-#elif defined GNULIB_POSIXCHECK
-# undef strerror
-/* Assume strerror is always declared.  */
-_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 address@hidden@
-_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)
-#   define strsignal rpl_strsignal
-#  endif
-_GL_FUNCDECL_RPL (strsignal, char *, (int __sig));
-_GL_CXXALIAS_RPL (strsignal, char *, (int __sig));
-# else
-#  if ! @HAVE_DECL_STRSIGNAL@
-_GL_FUNCDECL_SYS (strsignal, char *, (int __sig));
-#  endif
-/* Need to cast, because on Cygwin 1.5.x systems, the return type is
-   'const char *'.  */
-_GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig));
-# endif
-_GL_CXXALIASWARN (strsignal);
-#elif defined GNULIB_POSIXCHECK
-# undef strsignal
-# if HAVE_RAW_DECL_STRSIGNAL
-_GL_WARN_ON_USE (strsignal, "strsignal is unportable - "
-                 "use gnulib module strsignal for portability");
-# endif
-#endif
-
-#if @GNULIB_STRVERSCMP@
-# if address@hidden@
-_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 *));
-_GL_CXXALIASWARN (strverscmp);
-#elif defined GNULIB_POSIXCHECK
-# undef strverscmp
-# if HAVE_RAW_DECL_STRVERSCMP
-_GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - "
-                 "use gnulib module strverscmp for portability");
-# endif
-#endif
-
-
-#endif /* address@hidden@_STRING_H */
-#endif /* address@hidden@_STRING_H */
diff --git a/grub-core/gnulib/strings.in.h b/grub-core/gnulib/strings.in.h
deleted file mode 100644
index 4469f86ca..000000000
--- a/grub-core/gnulib/strings.in.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* A substitute <strings.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, 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 address@hidden@_STRINGS_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-/* 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.  */
-#if @HAVE_STRINGS_H@
-# @INCLUDE_NEXT@ @NEXT_STRINGS_H@
-#endif
-
-#ifndef address@hidden@_STRINGS_H
-#define address@hidden@_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.  */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-  /* Find the index of the least-significant set bit.  */
-#if @GNULIB_FFS@
-# if address@hidden@
-_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.
-   Note: This function does not work in multibyte locales.  */
-#if ! @HAVE_STRCASECMP@
-extern int strcasecmp (char const *s1, char const *s2)
-     _GL_ARG_NONNULL ((1, 2));
-#endif
-#if defined GNULIB_POSIXCHECK
-/* strcasecmp() does not work with multibyte strings:
-   POSIX says that it operates on "strings", and "string" in POSIX is defined
-   as a sequence of bytes, not of characters.   */
-# undef strcasecmp
-# if HAVE_RAW_DECL_STRCASECMP
-_GL_WARN_ON_USE (strcasecmp, "strcasecmp cannot work correctly on character "
-                 "strings in multibyte locales - "
-                 "use mbscasecmp if you care about "
-                 "internationalization, or use c_strcasecmp , "
-                 "gnulib module c-strcase) if you want a locale "
-                 "independent function");
-# endif
-#endif
-
-/* Compare no more than N bytes of 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.
-   Note: This function cannot work correctly in multibyte locales.  */
-#if ! @HAVE_DECL_STRNCASECMP@
-extern int strncasecmp (char const *s1, char const *s2, size_t n)
-     _GL_ARG_NONNULL ((1, 2));
-#endif
-#if defined GNULIB_POSIXCHECK
-/* strncasecmp() does not work with multibyte strings:
-   POSIX says that it operates on "strings", and "string" in POSIX is defined
-   as a sequence of bytes, not of characters.  */
-# undef strncasecmp
-# if HAVE_RAW_DECL_STRNCASECMP
-_GL_WARN_ON_USE (strncasecmp, "strncasecmp cannot work correctly on character "
-                 "strings in multibyte locales - "
-                 "use mbsncasecmp or mbspcasecmp if you care about "
-                 "internationalization, or use c_strncasecmp , "
-                 "gnulib module c-strcase) if you want a locale "
-                 "independent function");
-# endif
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* address@hidden@_STRING_H */
-#endif /* address@hidden@_STRING_H */
diff --git a/grub-core/gnulib/stripslash.c b/grub-core/gnulib/stripslash.c
deleted file mode 100644
index 0e452a95e..000000000
--- a/grub-core/gnulib/stripslash.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* stripslash.c -- remove redundant trailing slashes from a file name
-
-   Copyright (C) 1990, 2001, 2003-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/>.  */
-
-#include <config.h>
-
-#include "dirname.h"
-
-/* Remove trailing slashes from FILE.  Return true if a trailing slash
-   was removed.  This is useful when using file name completion from a
-   shell that adds a "/" after directory names (such as tcsh and
-   bash), because on symlinks to directories, several system calls
-   have different semantics according to whether a trailing slash is
-   present.  */
-
-bool
-strip_trailing_slashes (char *file)
-{
-  char *base = last_component (file);
-  char *base_lim;
-  bool had_slash;
-
-  /* last_component returns "" for file system roots, but we need to turn
-     "///" into "/".  */
-  if (! *base)
-    base = file;
-  base_lim = base + base_len (base);
-  had_slash = (*base_lim != '\0');
-  *base_lim = '\0';
-  return had_slash;
-}
diff --git a/grub-core/gnulib/strncasecmp.c b/grub-core/gnulib/strncasecmp.c
deleted file mode 100644
index 35840bc01..000000000
--- a/grub-core/gnulib/strncasecmp.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* strncasecmp.c -- case insensitive string comparator
-   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
-   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 <string.h>
-
-#include <ctype.h>
-#include <limits.h>
-
-#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
-
-/* Compare no more than N bytes of 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.
-   Note: This function cannot work correctly in multibyte locales.  */
-
-int
-strncasecmp (const char *s1, const char *s2, size_t n)
-{
-  register const unsigned char *p1 = (const unsigned char *) s1;
-  register const unsigned char *p2 = (const unsigned char *) s2;
-  unsigned char c1, c2;
-
-  if (p1 == p2 || n == 0)
-    return 0;
-
-  do
-    {
-      c1 = TOLOWER (*p1);
-      c2 = TOLOWER (*p2);
-
-      if (--n == 0 || c1 == '\0')
-        break;
-
-      ++p1;
-      ++p2;
-    }
-  while (c1 == c2);
-
-  if (UCHAR_MAX <= INT_MAX)
-    return c1 - c2;
-  else
-    /* On machines where 'char' and 'int' are types of the same size, the
-       difference of two 'unsigned char' values - including the sign bit -
-       doesn't fit in an 'int'.  */
-    return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
-}
diff --git a/grub-core/gnulib/strndup.c b/grub-core/gnulib/strndup.c
deleted file mode 100644
index e60268b86..000000000
--- a/grub-core/gnulib/strndup.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* A replacement function, for systems that lack strndup.
-
-   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
-   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>
-
-#include <string.h>
-
-#include <stdlib.h>
-
-char *
-strndup (char const *s, size_t n)
-{
-  size_t len = strnlen (s, n);
-  char *new = malloc (len + 1);
-
-  if (new == NULL)
-    return NULL;
-
-  new[len] = '\0';
-  return memcpy (new, s, len);
-}
diff --git a/grub-core/gnulib/strnlen.c b/grub-core/gnulib/strnlen.c
deleted file mode 100644
index 57fdfe770..000000000
--- a/grub-core/gnulib/strnlen.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Find the length of STRING, but scan at most MAXLEN characters.
-   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
-   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>
-
-#include <string.h>
-
-/* Find the length of STRING, but scan at most MAXLEN characters.
-   If no '\0' terminator is found in that many characters, return MAXLEN.  */
-
-size_t
-strnlen (const char *string, size_t maxlen)
-{
-  const char *end = memchr (string, '\0', maxlen);
-  return end ? (size_t) (end - string) : maxlen;
-}
diff --git a/grub-core/gnulib/strnlen1.c b/grub-core/gnulib/strnlen1.c
deleted file mode 100644
index 0c22d21ed..000000000
--- a/grub-core/gnulib/strnlen1.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
-   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
-   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 "strnlen1.h"
-
-#include <string.h>
-
-/* 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.  */
-size_t
-strnlen1 (const char *string, size_t maxlen)
-{
-  const char *end = (const char *) memchr (string, '\0', maxlen);
-  if (end != NULL)
-    return end - string + 1;
-  else
-    return maxlen;
-}
diff --git a/grub-core/gnulib/strnlen1.h b/grub-core/gnulib/strnlen1.h
deleted file mode 100644
index 7c65e3161..000000000
--- a/grub-core/gnulib/strnlen1.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
-   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
-   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 _STRNLEN1_H
-#define _STRNLEN1_H
-
-#include <stddef.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* 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)
-  _GL_ATTRIBUTE_PURE;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _STRNLEN1_H */
diff --git a/grub-core/gnulib/sys_types.in.h b/grub-core/gnulib/sys_types.in.h
deleted file mode 100644
index d7da35623..000000000
--- a/grub-core/gnulib/sys_types.in.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* 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
address@hidden@
-#endif
address@hidden@
-
-#ifndef address@hidden@_SYS_TYPES_H
-
-/* The include_next requires a split double-inclusion guard.  */
address@hidden@ @NEXT_SYS_TYPES_H@
-
-#ifndef address@hidden@_SYS_TYPES_H
-#define address@hidden@_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 /* address@hidden@_SYS_TYPES_H */
-#endif /* address@hidden@_SYS_TYPES_H */
diff --git a/grub-core/gnulib/sysexits.in.h b/grub-core/gnulib/sysexits.in.h
deleted file mode 100644
index fa8db8386..000000000
--- a/grub-core/gnulib/sysexits.in.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* exit() exit codes for some BSD system programs.
-   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
-   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 Simon Josefsson based on sysexits(3) man page */
-
-#ifndef address@hidden@_SYSEXITS_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-#if @HAVE_SYSEXITS_H@
-
-/* IRIX 6.5 has an <unistd.h> that defines a macro EX_OK with a nonzero
-   value.  Override it.  See
-   <http://lists.gnu.org/archive/html/bug-gnulib/2007-03/msg00361.html>  */
-# ifdef __sgi
-#  include <unistd.h>
-#  undef EX_OK
-# endif
-
-/* The include_next requires a split double-inclusion guard.  */
-# @INCLUDE_NEXT@ @NEXT_SYSEXITS_H@
-
-/* HP-UX 11 <sysexits.h> ends at EX_NOPERM.  */
-# ifndef EX_CONFIG
-#  define EX_CONFIG 78
-# endif
-
-#endif
-
-#ifndef address@hidden@_SYSEXITS_H
-#define address@hidden@_SYSEXITS_H
-
-#if address@hidden@
-
-# define EX_OK 0 /* same value as EXIT_SUCCESS */
-
-# define EX_USAGE 64
-# define EX_DATAERR 65
-# define EX_NOINPUT 66
-# define EX_NOUSER 67
-# define EX_NOHOST 68
-# define EX_UNAVAILABLE 69
-# define EX_SOFTWARE 70
-# define EX_OSERR 71
-# define EX_OSFILE 72
-# define EX_CANTCREAT 73
-# define EX_IOERR 74
-# define EX_TEMPFAIL 75
-# define EX_PROTOCOL 76
-# define EX_NOPERM 77
-# define EX_CONFIG 78
-
-#endif
-
-#endif /* address@hidden@_SYSEXITS_H */
-#endif /* address@hidden@_SYSEXITS_H */
diff --git a/grub-core/gnulib/unistd.c b/grub-core/gnulib/unistd.c
deleted file mode 100644
index 6c6a8e268..000000000
--- a/grub-core/gnulib/unistd.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#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
deleted file mode 100644
index 2ea9af436..000000000
--- a/grub-core/gnulib/unistd.in.h
+++ /dev/null
@@ -1,1530 +0,0 @@
-/* Substitute for and wrapper around <unistd.h>.
-   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
-   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 address@hidden@_UNISTD_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-/* The include_next requires a split double-inclusion guard.  */
-#if @HAVE_UNISTD_H@
-# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
-#endif
-
-/* Get all possible declarations of gethostname().  */
-#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
-  && !defined _GL_INCLUDING_WINSOCK2_H
-# define _GL_INCLUDING_WINSOCK2_H
-# include <winsock2.h>
-# undef _GL_INCLUDING_WINSOCK2_H
-#endif
-
-#if !defined address@hidden@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
-#define address@hidden@_UNISTD_H
-
-/* NetBSD 5.0 mis-defines NULL.  Also get size_t.  */
-#include <stddef.h>
-
-/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>.  */
-/* 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) \
-         && 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 __CYGWIN__ \
-    && ! defined __GLIBC__
-# include <fcntl.h>
-#endif
-
-/* mingw fails to declare _exit 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.  */
-#if !defined __GLIBC__ && !defined __osf__
-# define __need_system_stdlib_h
-# include <stdlib.h>
-# undef __need_system_stdlib_h
-#endif
-
-/* 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
-
-/* 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 address@hidden@ || @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>
-#endif
-
-/* 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.  */
-
-/* The definition of _GL_WARN_ON_USE is copied here.  */
-
-
-/* Hide some function declarations from <winsock2.h>.  */
-
-#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@
-# if !defined address@hidden@_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
-# endif
-# if !defined address@hidden@_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
-
-
-/* OS/2 EMX lacks these macros.  */
-#ifndef STDIN_FILENO
-# define STDIN_FILENO 0
-#endif
-#ifndef STDOUT_FILENO
-# define STDOUT_FILENO 1
-#endif
-#ifndef STDERR_FILENO
-# define STDERR_FILENO 2
-#endif
-
-/* Ensure *_OK macros exist.  */
-#ifndef F_OK
-# define F_OK 0
-# define X_OK 1
-# define W_OK 2
-# define R_OK 4
-#endif
-
-
-/* Declare overridden functions.  */
-
-
-#if defined GNULIB_POSIXCHECK
-/* The access() function is a security risk.  */
-_GL_WARN_ON_USE (access, "the access function is a security risk - "
-                 "use the gnulib module faccessat instead");
-#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:2008 specification
-   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html.  */
-# if @REPLACE_CHOWN@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef chown
-#   define chown rpl_chown
-#  endif
-_GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)
-                              _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)
-                              _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid));
-# endif
-_GL_CXXALIASWARN (chown);
-#elif defined GNULIB_POSIXCHECK
-# undef chown
-# if HAVE_RAW_DECL_CHOWN
-_GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and "
-                 "doesn't treat a uid or gid of -1 on some systems - "
-                 "use gnulib module chown for portability");
-# endif
-#endif
-
-
-#if @GNULIB_CLOSE@
-# if @REPLACE_CLOSE@
-/* Automatically included by modules that need a replacement for close.  */
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef close
-#   define close rpl_close
-#  endif
-_GL_FUNCDECL_RPL (close, int, (int fd));
-_GL_CXXALIAS_RPL (close, int, (int fd));
-# else
-_GL_CXXALIAS_SYS (close, int, (int fd));
-# endif
-_GL_CXXALIASWARN (close);
-#elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
-# undef close
-# define close close_used_without_requesting_gnulib_module_close
-#elif defined GNULIB_POSIXCHECK
-# undef close
-/* Assume close is always declared.  */
-_GL_WARN_ON_USE (close, "close does not portably work on sockets - "
-                 "use gnulib module close for portability");
-#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
-_GL_CXXALIAS_SYS (dup, int, (int oldfd));
-# 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:2008 specification
-   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>.  */
-# if @REPLACE_DUP2@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define dup2 rpl_dup2
-#  endif
-_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd));
-_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd));
-#  endif
-_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd));
-# endif
-_GL_CXXALIASWARN (dup2);
-#elif defined GNULIB_POSIXCHECK
-# undef dup2
-# if HAVE_RAW_DECL_DUP2
-_GL_WARN_ON_USE (dup2, "dup2 is unportable - "
-                 "use gnulib module dup2 for portability");
-# endif
-#endif
-
-
-#if @GNULIB_DUP3@
-/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the
-   specified flags.
-   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
-   and O_TEXT, O_BINARY (defined in "binary-io.h").
-   Close NEWFD first if it is open.
-   Return newfd if successful, otherwise -1 and errno set.
-   See the Linux man page at
-   <http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>.  */
-# if @HAVE_DUP3@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define dup3 rpl_dup3
-#  endif
-_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
-_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
-# else
-_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
-_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
-# endif
-_GL_CXXALIASWARN (dup3);
-#elif defined GNULIB_POSIXCHECK
-# undef dup3
-# if HAVE_RAW_DECL_DUP3
-_GL_WARN_ON_USE (dup3, "dup3 is unportable - "
-                 "use gnulib module dup3 for portability");
-# endif
-#endif
-
-
-#if @GNULIB_ENVIRON@
-# if address@hidden@
-/* Set of environment variables and values.  An array of strings of the form
-   "VARIABLE=VALUE", terminated with a NULL.  */
-#  if defined __APPLE__ && defined __MACH__
-#   include <crt_externs.h>
-#   define environ (*_NSGetEnviron ())
-#  else
-#   ifdef __cplusplus
-extern "C" {
-#   endif
-extern char **environ;
-#   ifdef __cplusplus
-}
-#   endif
-#  endif
-# endif
-#elif defined GNULIB_POSIXCHECK
-# if HAVE_RAW_DECL_ENVIRON
-_GL_UNISTD_INLINE char ***
-rpl_environ (void)
-{
-  return &environ;
-}
-_GL_WARN_ON_USE (rpl_environ, "environ is unportable - "
-                 "use gnulib module environ for portability");
-#  undef environ
-#  define environ (*rpl_environ ())
-# endif
-#endif
-
-
-#if @GNULIB_EUIDACCESS@
-/* Like access(), except that it uses the effective user id and group id of
-   the current process.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode)
-                                   _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode));
-_GL_CXXALIASWARN (euidaccess);
-# if defined GNULIB_POSIXCHECK
-/* Like access(), this function is a security risk.  */
-_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - "
-                 "use the gnulib module faccessat instead");
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef euidaccess
-# if HAVE_RAW_DECL_EUIDACCESS
-_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - "
-                 "use gnulib module euidaccess for portability");
-# endif
-#endif
-
-
-#if @GNULIB_FACCESSAT@
-# if address@hidden@
-_GL_FUNCDECL_SYS (faccessat, int,
-                  (int fd, char const *file, int mode, int flag)
-                  _GL_ARG_NONNULL ((2)));
-# endif
-_GL_CXXALIAS_SYS (faccessat, int,
-                  (int fd, char const *file, int mode, int flag));
-_GL_CXXALIASWARN (faccessat);
-#elif defined GNULIB_POSIXCHECK
-# undef faccessat
-# if HAVE_RAW_DECL_FACCESSAT
-_GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
-                 "use gnulib module faccessat for portability");
-# endif
-#endif
-
-
-#if @GNULIB_FCHDIR@
-/* 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:2008 specification
-   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>.  */
-# if ! @HAVE_FCHDIR@
-_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
-
-/* Gnulib internal hooks needed to maintain the fchdir metadata.  */
-_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
-     _GL_ARG_NONNULL ((2));
-_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 address@hidden@
-_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
-#  endif
-# endif
-_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
-_GL_CXXALIASWARN (fchdir);
-#elif defined GNULIB_POSIXCHECK
-# undef fchdir
-# if HAVE_RAW_DECL_FCHDIR
-_GL_WARN_ON_USE (fchdir, "fchdir is unportable - "
-                 "use gnulib module fchdir for portability");
-# endif
-#endif
-
-
-#if @GNULIB_FCHOWNAT@
-# if @REPLACE_FCHOWNAT@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef fchownat
-#   define fchownat rpl_fchownat
-#  endif
-_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file,
-                                  uid_t owner, gid_t group, int flag)
-                                 _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file,
-                                  uid_t owner, gid_t group, int flag));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file,
-                                  uid_t owner, gid_t group, int flag)
-                                 _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file,
-                                  uid_t owner, gid_t group, int flag));
-# endif
-_GL_CXXALIASWARN (fchownat);
-#elif defined GNULIB_POSIXCHECK
-# undef fchownat
-# if HAVE_RAW_DECL_FCHOWNAT
-_GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
-                 "use gnulib module openat for portability");
-# endif
-#endif
-
-
-#if @GNULIB_FDATASYNC@
-/* Synchronize changes to a file.
-   Return 0 if successful, otherwise -1 and errno set.
-   See POSIX:2008 specification
-   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>. 
 */
-# if address@hidden@ || address@hidden@
-_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 address@hidden@
-_GL_FUNCDECL_SYS (fsync, int, (int fd));
-# endif
-_GL_CXXALIAS_SYS (fsync, int, (int fd));
-_GL_CXXALIASWARN (fsync);
-#elif defined GNULIB_POSIXCHECK
-# undef fsync
-# if HAVE_RAW_DECL_FSYNC
-_GL_WARN_ON_USE (fsync, "fsync is unportable - "
-                 "use gnulib module fsync for portability");
-# endif
-#endif
-
-
-#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: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 address@hidden@
-_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
-#  endif
-_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
-# endif
-_GL_CXXALIASWARN (ftruncate);
-#elif defined GNULIB_POSIXCHECK
-# undef ftruncate
-# if HAVE_RAW_DECL_FTRUNCATE
-_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
-                 "use gnulib module ftruncate for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETCWD@
-/* Get the name of the current working directory, and put it in SIZE bytes
-   of BUF.
-   Return BUF if successful, or NULL if the directory couldn't be determined
-   or SIZE was too small.
-   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
-   necessary.  */
-# if @REPLACE_GETCWD@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define getcwd rpl_getcwd
-#  endif
-_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
-_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
-# else
-/* Need to cast, because on mingw, the second parameter is
-                                                   int size.  */
-_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
-# endif
-_GL_CXXALIASWARN (getcwd);
-#elif defined GNULIB_POSIXCHECK
-# undef getcwd
-# if HAVE_RAW_DECL_GETCWD
-_GL_WARN_ON_USE (getcwd, "getcwd is unportable - "
-                 "use gnulib module getcwd for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETDOMAINNAME@
-/* Return the NIS domain name of the machine.
-   WARNING! The NIS domain name is unrelated to the fully qualified host name
-            of the machine.  It is also unrelated to email addresses.
-   WARNING! The NIS domain name is usually the empty string or "(none)" when
-            not using NIS.
-
-   Put up to LEN bytes of the NIS domain name into NAME.
-   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 @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 address@hidden@
-_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
-_GL_CXXALIASWARN (getdomainname);
-#elif defined GNULIB_POSIXCHECK
-# undef getdomainname
-# if HAVE_RAW_DECL_GETDOMAINNAME
-_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - "
-                 "use gnulib module getdomainname for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETDTABLESIZE@
-/* Return the maximum number of file descriptors in the current process.
-   In POSIX, this is same as sysconf (_SC_OPEN_MAX).  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (getdtablesize, int, (void));
-# endif
-_GL_CXXALIAS_SYS (getdtablesize, int, (void));
-_GL_CXXALIASWARN (getdtablesize);
-#elif defined GNULIB_POSIXCHECK
-# undef getdtablesize
-# if HAVE_RAW_DECL_GETDTABLESIZE
-_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - "
-                 "use gnulib module getdtablesize for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETGROUPS@
-/* Return the supplemental groups that the current process belongs to.
-   It is unspecified whether the effective group id is in the list.
-   If N is 0, return the group count; otherwise, N describes how many
-   entries are available in GROUPS.  Return -1 and set errno if N is
-   not 0 and not large enough.  Fails with ENOSYS on some systems.  */
-# if @REPLACE_GETGROUPS@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef getgroups
-#   define getgroups rpl_getgroups
-#  endif
-_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups));
-_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups));
-#  endif
-_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups));
-# endif
-_GL_CXXALIASWARN (getgroups);
-#elif defined GNULIB_POSIXCHECK
-# undef getgroups
-# if HAVE_RAW_DECL_GETGROUPS
-_GL_WARN_ON_USE (getgroups, "getgroups is unportable - "
-                 "use gnulib module getgroups for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETHOSTNAME@
-/* Return the standard host name of the machine.
-   WARNING! The host name may or may not be fully qualified.
-
-   Put up to LEN bytes of the host name into NAME.
-   Null terminate it if the name is shorter than LEN.
-   If the host name is longer than LEN, set errno = EINVAL and return -1.
-   Return 0 if successful, otherwise set errno and return -1.  */
-# if @UNISTD_H_HAVE_WINSOCK2_H@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef gethostname
-#   define gethostname rpl_gethostname
-#  endif
-_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len)
-                                    _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len)
-                                    _GL_ARG_NONNULL ((1)));
-#  endif
-/* 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
-_GL_CXXALIASWARN (gethostname);
-#elif @UNISTD_H_HAVE_WINSOCK2_H@
-# undef gethostname
-# define gethostname 
gethostname_used_without_requesting_gnulib_module_gethostname
-#elif defined GNULIB_POSIXCHECK
-# undef gethostname
-# if HAVE_RAW_DECL_GETHOSTNAME
-_GL_WARN_ON_USE (gethostname, "gethostname is unportable - "
-                 "use gnulib module gethostname for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETLOGIN@
-/* Returns the user's login name, or NULL if it cannot be found.  Upon error,
-   returns NULL with errno set.
-
-   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
-
-   Most programs don't need to use this function, because the information is
-   available through environment variables:
-     ${LOGNAME-$USER}        on Unix platforms,
-     $USERNAME               on native Windows platforms.
- */
-# if address@hidden@
-_GL_FUNCDECL_SYS (getlogin, char *, (void));
-# endif
-_GL_CXXALIAS_SYS (getlogin, char *, (void));
-_GL_CXXALIASWARN (getlogin);
-#elif defined GNULIB_POSIXCHECK
-# undef getlogin
-# if HAVE_RAW_DECL_GETLOGIN
-_GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
-                 "use gnulib module getlogin for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETLOGIN_R@
-/* Copies the user's login name to NAME.
-   The array pointed to by NAME has room for SIZE bytes.
-
-   Returns 0 if successful.  Upon error, an error number is returned, or -1 in
-   the case that the login name cannot be found but no specific error is
-   provided (this case is hopefully rare but is left open by the POSIX spec).
-
-   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
-
-   Most programs don't need to use this function, because the information is
-   available through environment variables:
-     ${LOGNAME-$USER}        on Unix platforms,
-     $USERNAME               on native Windows platforms.
- */
-# 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 address@hidden@
-_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
-                                   _GL_ARG_NONNULL ((1)));
-#  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
-# if HAVE_RAW_DECL_GETLOGIN_R
-_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - "
-                 "use gnulib module getlogin_r for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETPAGESIZE@
-# if @REPLACE_GETPAGESIZE@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define getpagesize rpl_getpagesize
-#  endif
-_GL_FUNCDECL_RPL (getpagesize, int, (void));
-_GL_CXXALIAS_RPL (getpagesize, int, (void));
-# else
-#  if address@hidden@
-#   if !defined getpagesize
-/* This is for POSIX systems.  */
-#    if !defined _gl_getpagesize && defined _SC_PAGESIZE
-#     if ! (defined __VMS && __VMS_VER < 70000000)
-#      define _gl_getpagesize() sysconf (_SC_PAGESIZE)
-#     endif
-#    endif
-/* This is for older VMS.  */
-#    if !defined _gl_getpagesize && defined __VMS
-#     ifdef __ALPHA
-#      define _gl_getpagesize() 8192
-#     else
-#      define _gl_getpagesize() 512
-#     endif
-#    endif
-/* This is for BeOS.  */
-#    if !defined _gl_getpagesize && @HAVE_OS_H@
-#     include <OS.h>
-#     if defined B_PAGE_SIZE
-#      define _gl_getpagesize() B_PAGE_SIZE
-#     endif
-#    endif
-/* This is for AmigaOS4.0.  */
-#    if !defined _gl_getpagesize && defined __amigaos4__
-#     define _gl_getpagesize() 2048
-#    endif
-/* This is for older Unix systems.  */
-#    if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@
-#     include <sys/param.h>
-#     ifdef EXEC_PAGESIZE
-#      define _gl_getpagesize() EXEC_PAGESIZE
-#     else
-#      ifdef NBPG
-#       ifndef CLSIZE
-#        define CLSIZE 1
-#       endif
-#       define _gl_getpagesize() (NBPG * CLSIZE)
-#      else
-#       ifdef NBPC
-#        define _gl_getpagesize() NBPC
-#       endif
-#      endif
-#     endif
-#    endif
-#    if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#     define getpagesize() _gl_getpagesize ()
-#    else
-#     if !GNULIB_defined_getpagesize_function
-_GL_UNISTD_INLINE int
-getpagesize ()
-{
-  return _gl_getpagesize ();
-}
-#      define GNULIB_defined_getpagesize_function 1
-#     endif
-#    endif
-#   endif
-#  endif
-/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t.  
*/
-_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
-# endif
-# if @HAVE_DECL_GETPAGESIZE@
-_GL_CXXALIASWARN (getpagesize);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef getpagesize
-# if HAVE_RAW_DECL_GETPAGESIZE
-_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
-                 "use gnulib module getpagesize for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GETUSERSHELL@
-/* Return the next valid login shell on the system, or NULL when the end of
-   the list has been reached.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (getusershell, char *, (void));
-# endif
-_GL_CXXALIAS_SYS (getusershell, char *, (void));
-_GL_CXXALIASWARN (getusershell);
-#elif defined GNULIB_POSIXCHECK
-# undef getusershell
-# if HAVE_RAW_DECL_GETUSERSHELL
-_GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
-                 "use gnulib module getusershell for portability");
-# endif
-#endif
-
-#if @GNULIB_GETUSERSHELL@
-/* Rewind to pointer that is advanced at each getusershell() call.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (setusershell, void, (void));
-# endif
-_GL_CXXALIAS_SYS (setusershell, void, (void));
-_GL_CXXALIASWARN (setusershell);
-#elif defined GNULIB_POSIXCHECK
-# undef setusershell
-# if HAVE_RAW_DECL_SETUSERSHELL
-_GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
-                 "use gnulib module getusershell for portability");
-# endif
-#endif
-
-#if @GNULIB_GETUSERSHELL@
-/* Free the pointer that is advanced at each getusershell() call and
-   associated resources.  */
-# if address@hidden@
-_GL_FUNCDECL_SYS (endusershell, void, (void));
-# endif
-_GL_CXXALIAS_SYS (endusershell, void, (void));
-_GL_CXXALIASWARN (endusershell);
-#elif defined GNULIB_POSIXCHECK
-# undef endusershell
-# if HAVE_RAW_DECL_ENDUSERSHELL
-_GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
-                 "use gnulib module getusershell for portability");
-# endif
-#endif
-
-
-#if @GNULIB_GROUP_MEMBER@
-/* Determine whether group id is in calling user's group list.  */
-# if address@hidden@
-_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:2008 specification
-   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>.  */
-# if @REPLACE_LCHOWN@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef lchown
-#   define lchown rpl_lchown
-#  endif
-_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)
-                               _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)
-                               _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group));
-# endif
-_GL_CXXALIASWARN (lchown);
-#elif defined GNULIB_POSIXCHECK
-# undef lchown
-# if HAVE_RAW_DECL_LCHOWN
-_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
-                 "use gnulib module lchown for portability");
-# endif
-#endif
-
-
-#if @GNULIB_LINK@
-/* Create a new hard link for an existing file.
-   Return 0 if successful, otherwise -1 and errno set.
-   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
-#  endif
-_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2)
-                             _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2)
-                             _GL_ARG_NONNULL ((1, 2)));
-#  endif
-_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2));
-# endif
-_GL_CXXALIASWARN (link);
-#elif defined GNULIB_POSIXCHECK
-# undef link
-# if HAVE_RAW_DECL_LINK
-_GL_WARN_ON_USE (link, "link is unportable - "
-                 "use gnulib module link for portability");
-# endif
-#endif
-
-
-#if @GNULIB_LINKAT@
-/* Create a new hard link for an existing file, relative to two
-   directories.  FLAG controls whether symlinks are followed.
-   Return 0 if successful, otherwise -1 and errno set.  */
-# if @REPLACE_LINKAT@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef linkat
-#   define linkat rpl_linkat
-#  endif
-_GL_FUNCDECL_RPL (linkat, int,
-                  (int fd1, const char *path1, int fd2, const char *path2,
-                   int flag)
-                  _GL_ARG_NONNULL ((2, 4)));
-_GL_CXXALIAS_RPL (linkat, int,
-                  (int fd1, const char *path1, int fd2, const char *path2,
-                   int flag));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (linkat, int,
-                  (int fd1, const char *path1, int fd2, const char *path2,
-                   int flag)
-                  _GL_ARG_NONNULL ((2, 4)));
-#  endif
-_GL_CXXALIAS_SYS (linkat, int,
-                  (int fd1, const char *path1, int fd2, const char *path2,
-                   int flag));
-# endif
-_GL_CXXALIASWARN (linkat);
-#elif defined GNULIB_POSIXCHECK
-# undef linkat
-# if HAVE_RAW_DECL_LINKAT
-_GL_WARN_ON_USE (linkat, "linkat is unportable - "
-                 "use gnulib module linkat for portability");
-# endif
-#endif
-
-
-#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:2008 specification
-   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>.  */
-# if @REPLACE_LSEEK@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define lseek rpl_lseek
-#  endif
-_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
-_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
-# else
-_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence));
-# endif
-_GL_CXXALIASWARN (lseek);
-#elif defined GNULIB_POSIXCHECK
-# undef lseek
-# if HAVE_RAW_DECL_LSEEK
-_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
-                 "systems - use gnulib module lseek for portability");
-# endif
-#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 address@hidden@
-_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.
-   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
-   and O_TEXT, O_BINARY (defined in "binary-io.h").
-   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.
-   See also the Linux man page at
-   <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>.  */
-# if @HAVE_PIPE2@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define pipe2 rpl_pipe2
-#  endif
-_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
-# else
-_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
-# endif
-_GL_CXXALIASWARN (pipe2);
-#elif defined GNULIB_POSIXCHECK
-# undef pipe2
-# if HAVE_RAW_DECL_PIPE2
-_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
-                 "use gnulib module pipe2 for portability");
-# endif
-#endif
-
-
-#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: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,
-                  (int fd, void *buf, size_t bufsize, off_t offset)
-                  _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (pread, ssize_t,
-                  (int fd, void *buf, size_t bufsize, off_t offset));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (pread, ssize_t,
-                  (int fd, void *buf, size_t bufsize, off_t offset)
-                  _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (pread, ssize_t,
-                  (int fd, void *buf, size_t bufsize, off_t offset));
-# endif
-_GL_CXXALIASWARN (pread);
-#elif defined GNULIB_POSIXCHECK
-# undef pread
-# if HAVE_RAW_DECL_PREAD
-_GL_WARN_ON_USE (pread, "pread is unportable - "
-                 "use gnulib module pread for portability");
-# endif
-#endif
-
-
-#if @GNULIB_PWRITE@
-/* 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: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,
-                  (int fd, const void *buf, size_t bufsize, off_t offset)
-                  _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (pwrite, ssize_t,
-                  (int fd, const void *buf, size_t bufsize, off_t offset));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (pwrite, ssize_t,
-                  (int fd, const void *buf, size_t bufsize, off_t offset)
-                  _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (pwrite, ssize_t,
-                  (int fd, const void *buf, size_t bufsize, off_t offset));
-# endif
-_GL_CXXALIASWARN (pwrite);
-#elif defined GNULIB_POSIXCHECK
-# undef pwrite
-# if HAVE_RAW_DECL_PWRITE
-_GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
-                 "use gnulib module pwrite for portability");
-# endif
-#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:2008 specification
-   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>.  
*/
-# if @REPLACE_READLINK@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define readlink rpl_readlink
-#  endif
-_GL_FUNCDECL_RPL (readlink, ssize_t,
-                  (const char *file, char *buf, size_t bufsize)
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (readlink, ssize_t,
-                  (const char *file, char *buf, size_t bufsize));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (readlink, ssize_t,
-                  (const char *file, char *buf, size_t bufsize)
-                  _GL_ARG_NONNULL ((1, 2)));
-#  endif
-_GL_CXXALIAS_SYS (readlink, ssize_t,
-                  (const char *file, char *buf, size_t bufsize));
-# endif
-_GL_CXXALIASWARN (readlink);
-#elif defined GNULIB_POSIXCHECK
-# undef readlink
-# if HAVE_RAW_DECL_READLINK
-_GL_WARN_ON_USE (readlink, "readlink is unportable - "
-                 "use gnulib module readlink for portability");
-# endif
-#endif
-
-
-#if @GNULIB_READLINKAT@
-# if address@hidden@
-_GL_FUNCDECL_SYS (readlinkat, ssize_t,
-                  (int fd, char const *file, char *buf, size_t len)
-                  _GL_ARG_NONNULL ((2, 3)));
-# endif
-_GL_CXXALIAS_SYS (readlinkat, ssize_t,
-                  (int fd, char const *file, char *buf, size_t len));
-_GL_CXXALIASWARN (readlinkat);
-#elif defined GNULIB_POSIXCHECK
-# undef readlinkat
-# if HAVE_RAW_DECL_READLINKAT
-_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
-                 "use gnulib module readlinkat for portability");
-# endif
-#endif
-
-
-#if @GNULIB_RMDIR@
-/* Remove the directory DIR.  */
-# if @REPLACE_RMDIR@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define rmdir rpl_rmdir
-#  endif
-_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (rmdir, int, (char const *name));
-# else
-_GL_CXXALIAS_SYS (rmdir, int, (char const *name));
-# endif
-_GL_CXXALIASWARN (rmdir);
-#elif defined GNULIB_POSIXCHECK
-# undef rmdir
-# if HAVE_RAW_DECL_RMDIR
-_GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
-                 "use gnulib module rmdir for portability");
-# endif
-#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 address@hidden@ || address@hidden@
-_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:2008 specification
-   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>.  */
-# if @REPLACE_SLEEP@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef sleep
-#   define sleep rpl_sleep
-#  endif
-_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
-_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
-#  endif
-_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
-# endif
-_GL_CXXALIASWARN (sleep);
-#elif defined GNULIB_POSIXCHECK
-# undef sleep
-# if HAVE_RAW_DECL_SLEEP
-_GL_WARN_ON_USE (sleep, "sleep is unportable - "
-                 "use gnulib module sleep for portability");
-# endif
-#endif
-
-
-#if @GNULIB_SYMLINK@
-# if @REPLACE_SYMLINK@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef symlink
-#   define symlink rpl_symlink
-#  endif
-_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file)
-                                _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file)
-                                _GL_ARG_NONNULL ((1, 2)));
-#  endif
-_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file));
-# endif
-_GL_CXXALIASWARN (symlink);
-#elif defined GNULIB_POSIXCHECK
-# undef symlink
-# if HAVE_RAW_DECL_SYMLINK
-_GL_WARN_ON_USE (symlink, "symlink is not portable - "
-                 "use gnulib module symlink for portability");
-# endif
-#endif
-
-
-#if @GNULIB_SYMLINKAT@
-# if address@hidden@
-_GL_FUNCDECL_SYS (symlinkat, int,
-                  (char const *contents, int fd, char const *file)
-                  _GL_ARG_NONNULL ((1, 3)));
-# endif
-_GL_CXXALIAS_SYS (symlinkat, int,
-                  (char const *contents, int fd, char const *file));
-_GL_CXXALIASWARN (symlinkat);
-#elif defined GNULIB_POSIXCHECK
-# undef symlinkat
-# if HAVE_RAW_DECL_SYMLINKAT
-_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
-                 "use gnulib module symlinkat for portability");
-# endif
-#endif
-
-
-#if @GNULIB_TTYNAME_R@
-/* Store at most BUFLEN characters of the pathname of the terminal FD is
-   open on in BUF.  Return 0 on success, otherwise an error number.  */
-# if @REPLACE_TTYNAME_R@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef ttyname_r
-#   define ttyname_r rpl_ttyname_r
-#  endif
-_GL_FUNCDECL_RPL (ttyname_r, int,
-                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (ttyname_r, int,
-                  (int fd, char *buf, size_t buflen));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (ttyname_r, int,
-                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (ttyname_r, int,
-                  (int fd, char *buf, size_t buflen));
-# endif
-_GL_CXXALIASWARN (ttyname_r);
-#elif defined GNULIB_POSIXCHECK
-# undef ttyname_r
-# if HAVE_RAW_DECL_TTYNAME_R
-_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
-                 "use gnulib module ttyname_r for portability");
-# endif
-#endif
-
-
-#if @GNULIB_UNLINK@
-# if @REPLACE_UNLINK@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef unlink
-#   define unlink rpl_unlink
-#  endif
-_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (unlink, int, (char const *file));
-# else
-_GL_CXXALIAS_SYS (unlink, int, (char const *file));
-# endif
-_GL_CXXALIASWARN (unlink);
-#elif defined GNULIB_POSIXCHECK
-# undef unlink
-# if HAVE_RAW_DECL_UNLINK
-_GL_WARN_ON_USE (unlink, "unlink is not portable - "
-                 "use gnulib module unlink for portability");
-# endif
-#endif
-
-
-#if @GNULIB_UNLINKAT@
-# if @REPLACE_UNLINKAT@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef unlinkat
-#   define unlinkat rpl_unlinkat
-#  endif
-_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag)
-                                 _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag)
-                                 _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag));
-# endif
-_GL_CXXALIASWARN (unlinkat);
-#elif defined GNULIB_POSIXCHECK
-# undef unlinkat
-# if HAVE_RAW_DECL_UNLINKAT
-_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
-                 "use gnulib module openat for portability");
-# endif
-#endif
-
-
-#if @GNULIB_USLEEP@
-/* 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/usleep.html>.  */
-# if @REPLACE_USLEEP@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef usleep
-#   define usleep rpl_usleep
-#  endif
-_GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
-_GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
-#  endif
-_GL_CXXALIAS_SYS (usleep, int, (useconds_t n));
-# endif
-_GL_CXXALIASWARN (usleep);
-#elif defined GNULIB_POSIXCHECK
-# undef usleep
-# if HAVE_RAW_DECL_USLEEP
-_GL_WARN_ON_USE (usleep, "usleep is unportable - "
-                 "use gnulib module usleep for portability");
-# endif
-#endif
-
-
-#if @GNULIB_WRITE@
-/* Write up to COUNT bytes starting at BUF to file descriptor FD.
-   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
-#  endif
-_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
-                                  _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const 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 (write, ssize_t, (int fd, const void *buf, size_t 
count));
-# endif
-_GL_CXXALIASWARN (write);
-#endif
-
-_GL_INLINE_HEADER_END
-
-#endif /* address@hidden@_UNISTD_H */
-#endif /* address@hidden@_UNISTD_H */
diff --git a/grub-core/gnulib/unitypes.in.h b/grub-core/gnulib/unitypes.in.h
deleted file mode 100644
index 06eef05ce..000000000
--- a/grub-core/gnulib/unitypes.in.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* 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
deleted file mode 100644
index 8931cc9b0..000000000
--- a/grub-core/gnulib/uniwidth.in.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* 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
deleted file mode 100644
index 11b14dfec..000000000
--- a/grub-core/gnulib/uniwidth/cjk.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Test for CJK encoding.
-   Copyright (C) 2001-2002, 2005-2007, 2009-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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
deleted file mode 100644
index 173d0872c..000000000
--- a/grub-core/gnulib/uniwidth/width.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/* Determine display width of Unicode character.
-   Copyright (C) 2001-2002, 2006-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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
deleted file mode 100644
index 8fdab32ea..000000000
--- a/grub-core/gnulib/vasnprintf.c
+++ /dev/null
@@ -1,5606 +0,0 @@
-/* vsprintf with automatic memory allocation.
-   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
-   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/>.  */
-
-/* This file can be parametrized with the following macros:
-     VASNPRINTF         The name of the function being defined.
-     FCHAR_T            The element type of the format string.
-     DCHAR_T            The element type of the destination (result) string.
-     FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters
-                        in the format string are ASCII. MUST be set if
-                        FCHAR_T and DCHAR_T are not the same type.
-     DIRECTIVE          Structure denoting a format directive.
-                        Depends on FCHAR_T.
-     DIRECTIVES         Structure denoting the set of format directives of a
-                        format string.  Depends on FCHAR_T.
-     PRINTF_PARSE       Function that parses a format string.
-                        Depends on FCHAR_T.
-     DCHAR_CPY          memcpy like function for DCHAR_T[] arrays.
-     DCHAR_SET          memset like function for DCHAR_T[] arrays.
-     DCHAR_MBSNLEN      mbsnlen like function for DCHAR_T[] arrays.
-     SNPRINTF           The system's snprintf (or similar) function.
-                        This may be either snprintf or swprintf.
-     TCHAR_T            The element type of the argument and result string
-                        of the said SNPRINTF function.  This may be either
-                        char or wchar_t.  The code exploits that
-                        sizeof (TCHAR_T) | sizeof (DCHAR_T) and
-                        alignof (TCHAR_T) <= alignof (DCHAR_T).
-     DCHAR_IS_TCHAR     Set to 1 if DCHAR_T and TCHAR_T are the same type.
-     DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[].
-     DCHAR_IS_UINT8_T   Set to 1 if DCHAR_T is uint8_t.
-     DCHAR_IS_UINT16_T  Set to 1 if DCHAR_T is uint16_t.
-     DCHAR_IS_UINT32_T  Set to 1 if DCHAR_T is uint32_t.  */
-
-/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
-   This must come before <config.h> because <config.h> may include
-   <features.h>, and once <features.h> has been included, it's too late.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE    1
-#endif
-
-#ifndef VASNPRINTF
-# include <config.h>
-#endif
-#ifndef IN_LIBINTL
-# include <alloca.h>
-#endif
-
-/* Specification.  */
-#ifndef VASNPRINTF
-# if WIDE_CHAR_VERSION
-#  include "vasnwprintf.h"
-# else
-#  include "vasnprintf.h"
-# endif
-#endif
-
-#include <locale.h>     /* localeconv() */
-#include <stdio.h>      /* snprintf(), sprintf() */
-#include <stdlib.h>     /* abort(), malloc(), realloc(), free() */
-#include <string.h>     /* memcpy(), strlen() */
-#include <errno.h>      /* errno */
-#include <limits.h>     /* CHAR_BIT */
-#include <float.h>      /* DBL_MAX_EXP, LDBL_MAX_EXP */
-#if HAVE_NL_LANGINFO
-# include <langinfo.h>
-#endif
-#ifndef VASNPRINTF
-# if WIDE_CHAR_VERSION
-#  include "wprintf-parse.h"
-# else
-#  include "printf-parse.h"
-# endif
-#endif
-
-/* 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"
-#endif
-
-#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL
-# include <math.h>
-# include "isnand-nolibm.h"
-#endif
-
-#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined 
IN_LIBINTL
-# include <math.h>
-# include "isnanl-nolibm.h"
-# include "fpucw.h"
-#endif
-
-#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
-# include <math.h>
-# include "isnand-nolibm.h"
-# include "printf-frexp.h"
-#endif
-
-#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
-# include <math.h>
-# include "isnanl-nolibm.h"
-# include "printf-frexpl.h"
-# include "fpucw.h"
-#endif
-
-/* Default parameters.  */
-#ifndef VASNPRINTF
-# if WIDE_CHAR_VERSION
-#  define VASNPRINTF vasnwprintf
-#  define FCHAR_T wchar_t
-#  define DCHAR_T wchar_t
-#  define TCHAR_T wchar_t
-#  define DCHAR_IS_TCHAR 1
-#  define DIRECTIVE wchar_t_directive
-#  define DIRECTIVES wchar_t_directives
-#  define PRINTF_PARSE wprintf_parse
-#  define DCHAR_CPY wmemcpy
-#  define DCHAR_SET wmemset
-# else
-#  define VASNPRINTF vasnprintf
-#  define FCHAR_T char
-#  define DCHAR_T char
-#  define TCHAR_T char
-#  define DCHAR_IS_TCHAR 1
-#  define DIRECTIVE char_directive
-#  define DIRECTIVES char_directives
-#  define PRINTF_PARSE printf_parse
-#  define DCHAR_CPY memcpy
-#  define DCHAR_SET memset
-# endif
-#endif
-#if WIDE_CHAR_VERSION
-  /* TCHAR_T is wchar_t.  */
-# define USE_SNPRINTF 1
-# if HAVE_DECL__SNWPRINTF
-   /* On Windows, the function swprintf() has a different signature than
-      on Unix; we use the function _snwprintf() or - on mingw - snwprintf()
-      instead.  The mingw function snwprintf() has fewer bugs than the
-      MSVCRT function _snwprintf(), so prefer that.  */
-#  if defined __MINGW32__
-#   define SNPRINTF snwprintf
-#  else
-#   define SNPRINTF _snwprintf
-#  endif
-# else
-   /* Unix.  */
-#  define SNPRINTF swprintf
-# endif
-#else
-  /* TCHAR_T is char.  */
-  /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'.
-     But don't use it on BeOS, since BeOS snprintf produces no output if the
-     size argument is >= 0x3000000.
-     Also don't use it on Linux libc5, since there snprintf with size = 1
-     writes any output without bounds, like sprintf.  */
-# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ && 
!(__GNU_LIBRARY__ == 1)
-#  define USE_SNPRINTF 1
-# else
-#  define USE_SNPRINTF 0
-# endif
-# if HAVE_DECL__SNPRINTF
-   /* Windows.  The mingw function snprintf() has fewer bugs than the MSVCRT
-      function _snprintf(), so prefer that.  */
-#  if defined __MINGW32__
-#   define SNPRINTF snprintf
-    /* Here we need to call the native snprintf, not rpl_snprintf.  */
-#   undef snprintf
-#  else
-#   define SNPRINTF _snprintf
-#  endif
-# else
-   /* Unix.  */
-#  define SNPRINTF snprintf
-   /* Here we need to call the native snprintf, not rpl_snprintf.  */
-#  undef snprintf
-# endif
-#endif
-/* Here we need to call the native sprintf, not rpl_sprintf.  */
-#undef sprintf
-
-/* GCC >= 4.0 with -Wall emits unjustified "... may be used uninitialized"
-   warnings in this file.  Use -Dlint to suppress them.  */
-#ifdef lint
-# define IF_LINT(Code) Code
-#else
-# define IF_LINT(Code) /* empty */
-#endif
-
-/* Avoid some warnings from "gcc -Wshadow".
-   This file doesn't use the exp() and remainder() functions.  */
-#undef exp
-#define exp expo
-#undef remainder
-#define remainder rem
-
-#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && !WIDE_CHAR_VERSION
-# if (HAVE_STRNLEN && !defined _AIX)
-#  define local_strnlen strnlen
-# else
-#  ifndef local_strnlen_defined
-#   define local_strnlen_defined 1
-static size_t
-local_strnlen (const char *string, size_t maxlen)
-{
-  const char *end = memchr (string, '\0', maxlen);
-  return end ? (size_t) (end - string) : maxlen;
-}
-#  endif
-# endif
-#endif
-
-#if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && WIDE_CHAR_VERSION) || 
((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && 
!defined IN_LIBINTL)) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && HAVE_WCHAR_T
-# if HAVE_WCSLEN
-#  define local_wcslen wcslen
-# else
-   /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
-      a dependency towards this library, here is a local substitute.
-      Define this substitute only once, even if this file is included
-      twice in the same compilation unit.  */
-#  ifndef local_wcslen_defined
-#   define local_wcslen_defined 1
-static size_t
-local_wcslen (const wchar_t *s)
-{
-  const wchar_t *ptr;
-
-  for (ptr = s; *ptr != (wchar_t) 0; ptr++)
-    ;
-  return ptr - s;
-}
-#  endif
-# endif
-#endif
-
-#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && HAVE_WCHAR_T && 
WIDE_CHAR_VERSION
-# if HAVE_WCSNLEN
-#  define local_wcsnlen wcsnlen
-# else
-#  ifndef local_wcsnlen_defined
-#   define local_wcsnlen_defined 1
-static size_t
-local_wcsnlen (const wchar_t *s, size_t maxlen)
-{
-  const wchar_t *ptr;
-
-  for (ptr = s; maxlen > 0 && *ptr != (wchar_t) 0; ptr++, maxlen--)
-    ;
-  return ptr - s;
-}
-#  endif
-# endif
-#endif
-
-#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || 
NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_DOUBLE || 
NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL
-/* Determine the decimal-point character according to the current locale.  */
-# ifndef decimal_point_char_defined
-#  define decimal_point_char_defined 1
-static char
-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 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 __UCLIBC__ || (defined 
__APPLE__ && defined __MACH__))
-  point = nl_langinfo (RADIXCHAR);
-#  elif 1
-  char pointbuf[5];
-  sprintf (pointbuf, "%#.0f", 1.0);
-  point = &pointbuf[1];
-#  else
-  point = localeconv () -> decimal_point;
-#  endif
-  /* The decimal point is always a single byte: either '.' or ','.  */
-  return (point[0] != '\0' ? point[0] : '.');
-}
-# endif
-#endif
-
-#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL
-
-/* Equivalent to !isfinite(x) || x == 0, but does not require libm.  */
-static int
-is_infinite_or_zero (double x)
-{
-  return isnand (x) || x + x == x;
-}
-
-#endif
-
-#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined 
IN_LIBINTL
-
-/* Equivalent to !isfinite(x) || x == 0, but does not require libm.  */
-static int
-is_infinite_or_zerol (long double x)
-{
-  return isnanl (x) || x + x == x;
-}
-
-#endif
-
-#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
-
-/* Converting 'long double' to decimal without rare rounding bugs requires
-   real bignums.  We use the naming conventions of GNU gmp, but vastly simpler
-   (and slower) algorithms.  */
-
-typedef unsigned int mp_limb_t;
-# define GMP_LIMB_BITS 32
-verify (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS);
-
-typedef unsigned long long mp_twolimb_t;
-# define GMP_TWOLIMB_BITS 64
-verify (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS);
-
-/* Representation of a bignum >= 0.  */
-typedef struct
-{
-  size_t nlimbs;
-  mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc().  
*/
-} mpn_t;
-
-/* Compute the product of two bignums >= 0.
-   Return the allocated memory in case of success, NULL in case of memory
-   allocation failure.  */
-static void *
-multiply (mpn_t src1, mpn_t src2, mpn_t *dest)
-{
-  const mp_limb_t *p1;
-  const mp_limb_t *p2;
-  size_t len1;
-  size_t len2;
-
-  if (src1.nlimbs <= src2.nlimbs)
-    {
-      len1 = src1.nlimbs;
-      p1 = src1.limbs;
-      len2 = src2.nlimbs;
-      p2 = src2.limbs;
-    }
-  else
-    {
-      len1 = src2.nlimbs;
-      p1 = src2.limbs;
-      len2 = src1.nlimbs;
-      p2 = src1.limbs;
-    }
-  /* Now 0 <= len1 <= len2.  */
-  if (len1 == 0)
-    {
-      /* src1 or src2 is zero.  */
-      dest->nlimbs = 0;
-      dest->limbs = (mp_limb_t *) malloc (1);
-    }
-  else
-    {
-      /* Here 1 <= len1 <= len2.  */
-      size_t dlen;
-      mp_limb_t *dp;
-      size_t k, i, j;
-
-      dlen = len1 + len2;
-      dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t));
-      if (dp == NULL)
-        return NULL;
-      for (k = len2; k > 0; )
-        dp[--k] = 0;
-      for (i = 0; i < len1; i++)
-        {
-          mp_limb_t digit1 = p1[i];
-          mp_twolimb_t carry = 0;
-          for (j = 0; j < len2; j++)
-            {
-              mp_limb_t digit2 = p2[j];
-              carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
-              carry += dp[i + j];
-              dp[i + j] = (mp_limb_t) carry;
-              carry = carry >> GMP_LIMB_BITS;
-            }
-          dp[i + len2] = (mp_limb_t) carry;
-        }
-      /* Normalise.  */
-      while (dlen > 0 && dp[dlen - 1] == 0)
-        dlen--;
-      dest->nlimbs = dlen;
-      dest->limbs = dp;
-    }
-  return dest->limbs;
-}
-
-/* Compute the quotient of a bignum a >= 0 and a bignum b > 0.
-   a is written as  a = q * b + r  with 0 <= r < b.  q is the quotient, r
-   the remainder.
-   Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd,
-   q is incremented.
-   Return the allocated memory in case of success, NULL in case of memory
-   allocation failure.  */
-static void *
-divide (mpn_t a, mpn_t b, mpn_t *q)
-{
-  /* Algorithm:
-     First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]]
-     with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS).
-     If m<n, then q:=0 and r:=a.
-     If m>=n=1, perform a single-precision division:
-       r:=0, j:=m,
-       while j>0 do
-         {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j =
-               = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r<b[0]<beta}
-         j:=j-1, r:=r*beta+a[j], q[j]:=floor(r/b[0]), r:=r-b[0]*q[j].
-       Normalise [q[m-1],...,q[0]], yields q.
-     If m>=n>1, perform a multiple-precision division:
-       We have a/b < beta^(m-n+1).
-       s:=intDsize-1-(highest bit in b[n-1]), 0<=s<intDsize.
-       Shift a and b left by s bits, copying them. r:=a.
-       r=[r[m],...,r[0]], b=[b[n-1],...,b[0]] with b[n-1]>=beta/2.
-       For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).}
-         Compute q* :
-           q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]).
-           In case of overflow (q* >= beta) set q* := beta-1.
-           Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2]
-           and c3 := b[n-2] * q*.
-           {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow
-            occurred.  Furthermore 0 <= c3 < beta^2.
-            If there was overflow and
-            r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2,
-            the next test can be skipped.}
-           While c3 > c2, {Here 0 <= c2 < c3 < beta^2}
-             Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2].
-           If q* > 0:
-             Put r := r - b * q* * beta^j. In detail:
-               [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]].
-               hence: u:=0, for i:=0 to n-1 do
-                              u := u + q* * b[i],
-                              r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry),
-                              u:=u div beta (+ 1, if carry in subtraction)
-                      r[n+j]:=r[n+j]-u.
-               {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1
-                               < q* + 1 <= beta,
-                the carry u does not overflow.}
-             If a negative carry occurs, put q* := q* - 1
-               and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + 
[0,b[n-1],...,b[0]].
-         Set q[j] := q*.
-       Normalise [q[m-n],..,q[0]]; this yields the quotient q.
-       Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the
-       rest r.
-       The room for q[j] can be allocated at the memory location of r[n+j].
-     Finally, round-to-even:
-       Shift r left by 1 bit.
-       If r > b or if r = b and q[0] is odd, q := q+1.
-   */
-  const mp_limb_t *a_ptr = a.limbs;
-  size_t a_len = a.nlimbs;
-  const mp_limb_t *b_ptr = b.limbs;
-  size_t b_len = b.nlimbs;
-  mp_limb_t *roomptr;
-  mp_limb_t *tmp_roomptr = NULL;
-  mp_limb_t *q_ptr;
-  size_t q_len;
-  mp_limb_t *r_ptr;
-  size_t r_len;
-
-  /* Allocate room for a_len+2 digits.
-     (Need a_len+1 digits for the real division and 1 more digit for the
-     final rounding of q.)  */
-  roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t));
-  if (roomptr == NULL)
-    return NULL;
-
-  /* Normalise a.  */
-  while (a_len > 0 && a_ptr[a_len - 1] == 0)
-    a_len--;
-
-  /* Normalise b.  */
-  for (;;)
-    {
-      if (b_len == 0)
-        /* Division by zero.  */
-        abort ();
-      if (b_ptr[b_len - 1] == 0)
-        b_len--;
-      else
-        break;
-    }
-
-  /* Here m = a_len >= 0 and n = b_len > 0.  */
-
-  if (a_len < b_len)
-    {
-      /* m<n: trivial case.  q=0, r := copy of a.  */
-      r_ptr = roomptr;
-      r_len = a_len;
-      memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
-      q_ptr = roomptr + a_len;
-      q_len = 0;
-    }
-  else if (b_len == 1)
-    {
-      /* n=1: single precision division.
-         beta^(m-1) <= a < beta^m  ==>  beta^(m-2) <= a/b < beta^m  */
-      r_ptr = roomptr;
-      q_ptr = roomptr + 1;
-      {
-        mp_limb_t den = b_ptr[0];
-        mp_limb_t remainder = 0;
-        const mp_limb_t *sourceptr = a_ptr + a_len;
-        mp_limb_t *destptr = q_ptr + a_len;
-        size_t count;
-        for (count = a_len; count > 0; count--)
-          {
-            mp_twolimb_t num =
-              ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr;
-            *--destptr = num / den;
-            remainder = num % den;
-          }
-        /* Normalise and store r.  */
-        if (remainder > 0)
-          {
-            r_ptr[0] = remainder;
-            r_len = 1;
-          }
-        else
-          r_len = 0;
-        /* Normalise q.  */
-        q_len = a_len;
-        if (q_ptr[q_len - 1] == 0)
-          q_len--;
-      }
-    }
-  else
-    {
-      /* n>1: multiple precision division.
-         beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n  ==>
-         beta^(m-n-1) <= a/b < beta^(m-n+1).  */
-      /* Determine s.  */
-      size_t s;
-      {
-        mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */
-        /* 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)
-          {
-            /* 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);
-          }
-        else
-#   undef NWORDS
-#  endif
-          {
-            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.  */
-      if (s > 0)
-        {
-          tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t));
-          if (tmp_roomptr == NULL)
-            {
-              free (roomptr);
-              return NULL;
-            }
-          {
-            const mp_limb_t *sourceptr = b_ptr;
-            mp_limb_t *destptr = tmp_roomptr;
-            mp_twolimb_t accu = 0;
-            size_t count;
-            for (count = b_len; count > 0; count--)
-              {
-                accu += (mp_twolimb_t) *sourceptr++ << s;
-                *destptr++ = (mp_limb_t) accu;
-                accu = accu >> GMP_LIMB_BITS;
-              }
-            /* accu must be zero, since that was how s was determined.  */
-            if (accu != 0)
-              abort ();
-          }
-          b_ptr = tmp_roomptr;
-        }
-      /* Copy a, shifting it left by s bits, yields r.
-         Memory layout:
-         At the beginning: r = roomptr[0..a_len],
-         at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len]  */
-      r_ptr = roomptr;
-      if (s == 0)
-        {
-          memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
-          r_ptr[a_len] = 0;
-        }
-      else
-        {
-          const mp_limb_t *sourceptr = a_ptr;
-          mp_limb_t *destptr = r_ptr;
-          mp_twolimb_t accu = 0;
-          size_t count;
-          for (count = a_len; count > 0; count--)
-            {
-              accu += (mp_twolimb_t) *sourceptr++ << s;
-              *destptr++ = (mp_limb_t) accu;
-              accu = accu >> GMP_LIMB_BITS;
-            }
-          *destptr++ = (mp_limb_t) accu;
-        }
-      q_ptr = roomptr + b_len;
-      q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */
-      {
-        size_t j = a_len - b_len; /* m-n */
-        mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */
-        mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */
-        mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */
-          ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd;
-        /* Division loop, traversed m-n+1 times.
-           j counts down, b is unchanged, beta/2 <= b[n-1] < beta.  */
-        for (;;)
-          {
-            mp_limb_t q_star;
-            mp_limb_t c1;
-            if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */
-              {
-                /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow.  */
-                mp_twolimb_t num =
-                  ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS)
-                  | r_ptr[j + b_len - 1];
-                q_star = num / b_msd;
-                c1 = num % b_msd;
-              }
-            else
-              {
-                /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1].  */
-                q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */
-                /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta
-                   <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta
-                   <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta)
-                        {<= beta !}.
-                   If yes, jump directly to the subtraction loop.
-                   (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta
-                    <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) 
*/
-                if (r_ptr[j + b_len] > b_msd
-                    || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd)
-                  /* r[j+n] >= b[n-1]+1 or
-                     r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a
-                     carry.  */
-                  goto subtract;
-              }
-            /* q_star = q*,
-               c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, <beta).  */
-            {
-              mp_twolimb_t c2 = /* c1*beta+r[j+n-2] */
-                ((mp_twolimb_t) c1 << GMP_LIMB_BITS) | r_ptr[j + b_len - 2];
-              mp_twolimb_t c3 = /* b[n-2] * q* */
-                (mp_twolimb_t) b_2msd * (mp_twolimb_t) q_star;
-              /* While c2 < c3, increase c2 and decrease c3.
-                 Consider c3-c2.  While it is > 0, decrease it by
-                 b[n-1]*beta+b[n-2].  Because of b[n-1]*beta+b[n-2] >= beta^2/2
-                 this can happen only twice.  */
-              if (c3 > c2)
-                {
-                  q_star = q_star - 1; /* q* := q* - 1 */
-                  if (c3 - c2 > b_msdd)
-                    q_star = q_star - 1; /* q* := q* - 1 */
-                }
-            }
-            if (q_star > 0)
-              subtract:
-              {
-                /* Subtract r := r - b * q* * beta^j.  */
-                mp_limb_t cr;
-                {
-                  const mp_limb_t *sourceptr = b_ptr;
-                  mp_limb_t *destptr = r_ptr + j;
-                  mp_twolimb_t carry = 0;
-                  size_t count;
-                  for (count = b_len; count > 0; count--)
-                    {
-                      /* Here 0 <= carry <= q*.  */
-                      carry =
-                        carry
-                        + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++
-                        + (mp_limb_t) ~(*destptr);
-                      /* Here 0 <= carry <= beta*q* + beta-1.  */
-                      *destptr++ = ~(mp_limb_t) carry;
-                      carry = carry >> GMP_LIMB_BITS; /* <= q* */
-                    }
-                  cr = (mp_limb_t) carry;
-                }
-                /* Subtract cr from r_ptr[j + b_len], then forget about
-                   r_ptr[j + b_len].  */
-                if (cr > r_ptr[j + b_len])
-                  {
-                    /* Subtraction gave a carry.  */
-                    q_star = q_star - 1; /* q* := q* - 1 */
-                    /* Add b back.  */
-                    {
-                      const mp_limb_t *sourceptr = b_ptr;
-                      mp_limb_t *destptr = r_ptr + j;
-                      mp_limb_t carry = 0;
-                      size_t count;
-                      for (count = b_len; count > 0; count--)
-                        {
-                          mp_limb_t source1 = *sourceptr++;
-                          mp_limb_t source2 = *destptr;
-                          *destptr++ = source1 + source2 + carry;
-                          carry =
-                            (carry
-                             ? source1 >= (mp_limb_t) ~source2
-                             : source1 > (mp_limb_t) ~source2);
-                        }
-                    }
-                    /* Forget about the carry and about r[j+n].  */
-                  }
-              }
-            /* q* is determined.  Store it as q[j].  */
-            q_ptr[j] = q_star;
-            if (j == 0)
-              break;
-            j--;
-          }
-      }
-      r_len = b_len;
-      /* Normalise q.  */
-      if (q_ptr[q_len - 1] == 0)
-        q_len--;
-# if 0 /* Not needed here, since we need r only to compare it with b/2, and
-          b is shifted left by s bits.  */
-      /* Shift r right by s bits.  */
-      if (s > 0)
-        {
-          mp_limb_t ptr = r_ptr + r_len;
-          mp_twolimb_t accu = 0;
-          size_t count;
-          for (count = r_len; count > 0; count--)
-            {
-              accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS;
-              accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s);
-              *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS);
-            }
-        }
-# endif
-      /* Normalise r.  */
-      while (r_len > 0 && r_ptr[r_len - 1] == 0)
-        r_len--;
-    }
-  /* Compare r << 1 with b.  */
-  if (r_len > b_len)
-    goto increment_q;
-  {
-    size_t i;
-    for (i = b_len;;)
-      {
-        mp_limb_t r_i =
-          (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0)
-          | (i < r_len ? r_ptr[i] << 1 : 0);
-        mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0);
-        if (r_i > b_i)
-          goto increment_q;
-        if (r_i < b_i)
-          goto keep_q;
-        if (i == 0)
-          break;
-        i--;
-      }
-  }
-  if (q_len > 0 && ((q_ptr[0] & 1) != 0))
-    /* q is odd.  */
-    increment_q:
-    {
-      size_t i;
-      for (i = 0; i < q_len; i++)
-        if (++(q_ptr[i]) != 0)
-          goto keep_q;
-      q_ptr[q_len++] = 1;
-    }
-  keep_q:
-  if (tmp_roomptr != NULL)
-    free (tmp_roomptr);
-  q->limbs = q_ptr;
-  q->nlimbs = q_len;
-  return roomptr;
-}
-
-/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal
-   representation.
-   Destroys the contents of a.
-   Return the allocated memory - containing the decimal digits in low-to-high
-   order, terminated with a NUL character - in case of success, NULL in case
-   of memory allocation failure.  */
-static char *
-convert_to_decimal (mpn_t a, size_t extra_zeroes)
-{
-  mp_limb_t *a_ptr = a.limbs;
-  size_t a_len = a.nlimbs;
-  /* 0.03345 is slightly larger than log(2)/(9*log(10)).  */
-  size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1);
-  char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes));
-  if (c_ptr != NULL)
-    {
-      char *d_ptr = c_ptr;
-      for (; extra_zeroes > 0; extra_zeroes--)
-        *d_ptr++ = '0';
-      while (a_len > 0)
-        {
-          /* Divide a by 10^9, in-place.  */
-          mp_limb_t remainder = 0;
-          mp_limb_t *ptr = a_ptr + a_len;
-          size_t count;
-          for (count = a_len; count > 0; count--)
-            {
-              mp_twolimb_t num =
-                ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr;
-              *ptr = num / 1000000000;
-              remainder = num % 1000000000;
-            }
-          /* Store the remainder as 9 decimal digits.  */
-          for (count = 9; count > 0; count--)
-            {
-              *d_ptr++ = '0' + (remainder % 10);
-              remainder = remainder / 10;
-            }
-          /* Normalize a.  */
-          if (a_ptr[a_len - 1] == 0)
-            a_len--;
-        }
-      /* Remove leading zeroes.  */
-      while (d_ptr > c_ptr && d_ptr[-1] == '0')
-        d_ptr--;
-      /* But keep at least one zero.  */
-      if (d_ptr == c_ptr)
-        *d_ptr++ = '0';
-      /* Terminate the string.  */
-      *d_ptr = '\0';
-    }
-  return c_ptr;
-}
-
-# if NEED_PRINTF_LONG_DOUBLE
-
-/* Assuming x is finite and >= 0:
-   write x as x = 2^e * m, where m is a bignum.
-   Return the allocated memory in case of success, NULL in case of memory
-   allocation failure.  */
-static void *
-decode_long_double (long double x, int *ep, mpn_t *mp)
-{
-  mpn_t m;
-  int exp;
-  long double y;
-  size_t i;
-
-  /* Allocate memory for result.  */
-  m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
-  m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
-  if (m.limbs == NULL)
-    return NULL;
-  /* Split into exponential part and mantissa.  */
-  y = frexpl (x, &exp);
-  if (!(y >= 0.0L && y < 1.0L))
-    abort ();
-  /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the
-     latter is an integer.  */
-  /* 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',
-     doesn't matter).  */
-#  if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0
-#   if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
-    {
-      mp_limb_t hi, lo;
-      y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2));
-      hi = (int) y;
-      y -= hi;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      lo = (int) y;
-      y -= lo;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | 
lo;
-    }
-#   else
-    {
-      mp_limb_t d;
-      y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS);
-      d = (int) y;
-      y -= d;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d;
-    }
-#   endif
-#  endif
-  for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
-    {
-      mp_limb_t hi, lo;
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      hi = (int) y;
-      y -= hi;
-      if (!(y >= 0.0L && y < 1.0L))
-        abort ();
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      lo = (int) y;
-      y -= lo;
-      if (!(y >= 0.0L && y < 1.0L))
-        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 (!(y == 0.0L))
-    abort ();
-#  endif
-  /* Normalise.  */
-  while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
-    m.nlimbs--;
-  *mp = m;
-  *ep = exp - LDBL_MANT_BIT;
-  return m.limbs;
-}
-
-# endif
-
-# if NEED_PRINTF_DOUBLE
-
-/* Assuming x is finite and >= 0:
-   write x as x = 2^e * m, where m is a bignum.
-   Return the allocated memory in case of success, NULL in case of memory
-   allocation failure.  */
-static void *
-decode_double (double x, int *ep, mpn_t *mp)
-{
-  mpn_t m;
-  int exp;
-  double y;
-  size_t i;
-
-  /* Allocate memory for result.  */
-  m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
-  m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
-  if (m.limbs == NULL)
-    return NULL;
-  /* Split into exponential part and mantissa.  */
-  y = frexp (x, &exp);
-  if (!(y >= 0.0 && y < 1.0))
-    abort ();
-  /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the
-     latter is an integer.  */
-  /* 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',
-     doesn't matter).  */
-#  if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0
-#   if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
-    {
-      mp_limb_t hi, lo;
-      y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2));
-      hi = (int) y;
-      y -= hi;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      lo = (int) y;
-      y -= lo;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo;
-    }
-#   else
-    {
-      mp_limb_t d;
-      y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS);
-      d = (int) y;
-      y -= d;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d;
-    }
-#   endif
-#  endif
-  for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
-    {
-      mp_limb_t hi, lo;
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      hi = (int) y;
-      y -= hi;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
-      lo = (int) y;
-      y -= lo;
-      if (!(y >= 0.0 && y < 1.0))
-        abort ();
-      m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
-    }
-  if (!(y == 0.0))
-    abort ();
-  /* Normalise.  */
-  while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
-    m.nlimbs--;
-  *mp = m;
-  *ep = exp - DBL_MANT_BIT;
-  return m.limbs;
-}
-
-# endif
-
-/* Assuming x = 2^e * m is finite and >= 0, and n is an integer:
-   Returns the decimal representation of round (x * 10^n).
-   Return the allocated memory - containing the decimal digits in low-to-high
-   order, terminated with a NUL character - in case of success, NULL in case
-   of memory allocation failure.  */
-static char *
-scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n)
-{
-  int s;
-  size_t extra_zeroes;
-  unsigned int abs_n;
-  unsigned int abs_s;
-  mp_limb_t *pow5_ptr;
-  size_t pow5_len;
-  unsigned int s_limbs;
-  unsigned int s_bits;
-  mpn_t pow5;
-  mpn_t z;
-  void *z_memory;
-  char *digits;
-
-  if (memory == NULL)
-    return NULL;
-  /* x = 2^e * m, hence
-     y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m)
-       = round (2^s * 5^n * m).  */
-  s = e + n;
-  extra_zeroes = 0;
-  /* Factor out a common power of 10 if possible.  */
-  if (s > 0 && n > 0)
-    {
-      extra_zeroes = (s < n ? s : n);
-      s -= extra_zeroes;
-      n -= extra_zeroes;
-    }
-  /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes.
-     Before converting to decimal, we need to compute
-     z = round (2^s * 5^n * m).  */
-  /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same
-     sign.  2.322 is slightly larger than log(5)/log(2).  */
-  abs_n = (n >= 0 ? n : -n);
-  abs_s = (s >= 0 ? s : -s);
-  pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1
-                                    + abs_s / GMP_LIMB_BITS + 1)
-                                   * sizeof (mp_limb_t));
-  if (pow5_ptr == NULL)
-    {
-      free (memory);
-      return NULL;
-    }
-  /* Initialize with 1.  */
-  pow5_ptr[0] = 1;
-  pow5_len = 1;
-  /* Multiply with 5^|n|.  */
-  if (abs_n > 0)
-    {
-      static mp_limb_t const small_pow5[13 + 1] =
-        {
-          1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625,
-          48828125, 244140625, 1220703125
-        };
-      unsigned int n13;
-      for (n13 = 0; n13 <= abs_n; n13 += 13)
-        {
-          mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13];
-          size_t j;
-          mp_twolimb_t carry = 0;
-          for (j = 0; j < pow5_len; j++)
-            {
-              mp_limb_t digit2 = pow5_ptr[j];
-              carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
-              pow5_ptr[j] = (mp_limb_t) carry;
-              carry = carry >> GMP_LIMB_BITS;
-            }
-          if (carry > 0)
-            pow5_ptr[pow5_len++] = (mp_limb_t) carry;
-        }
-    }
-  s_limbs = abs_s / GMP_LIMB_BITS;
-  s_bits = abs_s % GMP_LIMB_BITS;
-  if (n >= 0 ? s >= 0 : s <= 0)
-    {
-      /* Multiply with 2^|s|.  */
-      if (s_bits > 0)
-        {
-          mp_limb_t *ptr = pow5_ptr;
-          mp_twolimb_t accu = 0;
-          size_t count;
-          for (count = pow5_len; count > 0; count--)
-            {
-              accu += (mp_twolimb_t) *ptr << s_bits;
-              *ptr++ = (mp_limb_t) accu;
-              accu = accu >> GMP_LIMB_BITS;
-            }
-          if (accu > 0)
-            {
-              *ptr = (mp_limb_t) accu;
-              pow5_len++;
-            }
-        }
-      if (s_limbs > 0)
-        {
-          size_t count;
-          for (count = pow5_len; count > 0;)
-            {
-              count--;
-              pow5_ptr[s_limbs + count] = pow5_ptr[count];
-            }
-          for (count = s_limbs; count > 0;)
-            {
-              count--;
-              pow5_ptr[count] = 0;
-            }
-          pow5_len += s_limbs;
-        }
-      pow5.limbs = pow5_ptr;
-      pow5.nlimbs = pow5_len;
-      if (n >= 0)
-        {
-          /* Multiply m with pow5.  No division needed.  */
-          z_memory = multiply (m, pow5, &z);
-        }
-      else
-        {
-          /* Divide m by pow5 and round.  */
-          z_memory = divide (m, pow5, &z);
-        }
-    }
-  else
-    {
-      pow5.limbs = pow5_ptr;
-      pow5.nlimbs = pow5_len;
-      if (n >= 0)
-        {
-          /* n >= 0, s < 0.
-             Multiply m with pow5, then divide by 2^|s|.  */
-          mpn_t numerator;
-          mpn_t denominator;
-          void *tmp_memory;
-          tmp_memory = multiply (m, pow5, &numerator);
-          if (tmp_memory == NULL)
-            {
-              free (pow5_ptr);
-              free (memory);
-              return NULL;
-            }
-          /* Construct 2^|s|.  */
-          {
-            mp_limb_t *ptr = pow5_ptr + pow5_len;
-            size_t i;
-            for (i = 0; i < s_limbs; i++)
-              ptr[i] = 0;
-            ptr[s_limbs] = (mp_limb_t) 1 << s_bits;
-            denominator.limbs = ptr;
-            denominator.nlimbs = s_limbs + 1;
-          }
-          z_memory = divide (numerator, denominator, &z);
-          free (tmp_memory);
-        }
-      else
-        {
-          /* n < 0, s > 0.
-             Multiply m with 2^s, then divide by pow5.  */
-          mpn_t numerator;
-          mp_limb_t *num_ptr;
-          num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1)
-                                          * sizeof (mp_limb_t));
-          if (num_ptr == NULL)
-            {
-              free (pow5_ptr);
-              free (memory);
-              return NULL;
-            }
-          {
-            mp_limb_t *destptr = num_ptr;
-            {
-              size_t i;
-              for (i = 0; i < s_limbs; i++)
-                *destptr++ = 0;
-            }
-            if (s_bits > 0)
-              {
-                const mp_limb_t *sourceptr = m.limbs;
-                mp_twolimb_t accu = 0;
-                size_t count;
-                for (count = m.nlimbs; count > 0; count--)
-                  {
-                    accu += (mp_twolimb_t) *sourceptr++ << s_bits;
-                    *destptr++ = (mp_limb_t) accu;
-                    accu = accu >> GMP_LIMB_BITS;
-                  }
-                if (accu > 0)
-                  *destptr++ = (mp_limb_t) accu;
-              }
-            else
-              {
-                const mp_limb_t *sourceptr = m.limbs;
-                size_t count;
-                for (count = m.nlimbs; count > 0; count--)
-                  *destptr++ = *sourceptr++;
-              }
-            numerator.limbs = num_ptr;
-            numerator.nlimbs = destptr - num_ptr;
-          }
-          z_memory = divide (numerator, pow5, &z);
-          free (num_ptr);
-        }
-    }
-  free (pow5_ptr);
-  free (memory);
-
-  /* Here y = round (x * 10^n) = z * 10^extra_zeroes.  */
-
-  if (z_memory == NULL)
-    return NULL;
-  digits = convert_to_decimal (z, extra_zeroes);
-  free (z_memory);
-  return digits;
-}
-
-# if NEED_PRINTF_LONG_DOUBLE
-
-/* Assuming x is finite and >= 0, and n is an integer:
-   Returns the decimal representation of round (x * 10^n).
-   Return the allocated memory - containing the decimal digits in low-to-high
-   order, terminated with a NUL character - in case of success, NULL in case
-   of memory allocation failure.  */
-static char *
-scale10_round_decimal_long_double (long double x, int n)
-{
-  int e IF_LINT(= 0);
-  mpn_t m;
-  void *memory = decode_long_double (x, &e, &m);
-  return scale10_round_decimal_decoded (e, m, memory, n);
-}
-
-# endif
-
-# if NEED_PRINTF_DOUBLE
-
-/* Assuming x is finite and >= 0, and n is an integer:
-   Returns the decimal representation of round (x * 10^n).
-   Return the allocated memory - containing the decimal digits in low-to-high
-   order, terminated with a NUL character - in case of success, NULL in case
-   of memory allocation failure.  */
-static char *
-scale10_round_decimal_double (double x, int n)
-{
-  int e IF_LINT(= 0);
-  mpn_t m;
-  void *memory = decode_double (x, &e, &m);
-  return scale10_round_decimal_decoded (e, m, memory, n);
-}
-
-# endif
-
-# if NEED_PRINTF_LONG_DOUBLE
-
-/* Assuming x is finite and > 0:
-   Return an approximation for n with 10^n <= x < 10^(n+1).
-   The approximation is usually the right n, but may be off by 1 sometimes.  */
-static int
-floorlog10l (long double x)
-{
-  int exp;
-  long double y;
-  double z;
-  double l;
-
-  /* Split into exponential part and mantissa.  */
-  y = frexpl (x, &exp);
-  if (!(y >= 0.0L && y < 1.0L))
-    abort ();
-  if (y == 0.0L)
-    return INT_MIN;
-  if (y < 0.5L)
-    {
-      while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 
2))))
-        {
-          y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
-          exp -= GMP_LIMB_BITS;
-        }
-      if (y < (1.0L / (1 << 16)))
-        {
-          y *= 1.0L * (1 << 16);
-          exp -= 16;
-        }
-      if (y < (1.0L / (1 << 8)))
-        {
-          y *= 1.0L * (1 << 8);
-          exp -= 8;
-        }
-      if (y < (1.0L / (1 << 4)))
-        {
-          y *= 1.0L * (1 << 4);
-          exp -= 4;
-        }
-      if (y < (1.0L / (1 << 2)))
-        {
-          y *= 1.0L * (1 << 2);
-          exp -= 2;
-        }
-      if (y < (1.0L / (1 << 1)))
-        {
-          y *= 1.0L * (1 << 1);
-          exp -= 1;
-        }
-    }
-  if (!(y >= 0.5L && y < 1.0L))
-    abort ();
-  /* Compute an approximation for l = log2(x) = exp + log2(y).  */
-  l = exp;
-  z = y;
-  if (z < 0.70710678118654752444)
-    {
-      z *= 1.4142135623730950488;
-      l -= 0.5;
-    }
-  if (z < 0.8408964152537145431)
-    {
-      z *= 1.1892071150027210667;
-      l -= 0.25;
-    }
-  if (z < 0.91700404320467123175)
-    {
-      z *= 1.0905077326652576592;
-      l -= 0.125;
-    }
-  if (z < 0.9576032806985736469)
-    {
-      z *= 1.0442737824274138403;
-      l -= 0.0625;
-    }
-  /* Now 0.95 <= z <= 1.01.  */
-  z = 1 - z;
-  /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...)
-     Four terms are enough to get an approximation with error < 10^-7.  */
-  l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 
0.25)));
-  /* Finally multiply with log(2)/log(10), yields an approximation for
-     log10(x).  */
-  l *= 0.30102999566398119523;
-  /* Round down to the next integer.  */
-  return (int) l + (l < 0 ? -1 : 0);
-}
-
-# endif
-
-# if NEED_PRINTF_DOUBLE
-
-/* Assuming x is finite and > 0:
-   Return an approximation for n with 10^n <= x < 10^(n+1).
-   The approximation is usually the right n, but may be off by 1 sometimes.  */
-static int
-floorlog10 (double x)
-{
-  int exp;
-  double y;
-  double z;
-  double l;
-
-  /* Split into exponential part and mantissa.  */
-  y = frexp (x, &exp);
-  if (!(y >= 0.0 && y < 1.0))
-    abort ();
-  if (y == 0.0)
-    return INT_MIN;
-  if (y < 0.5)
-    {
-      while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 
2))))
-        {
-          y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
-          exp -= GMP_LIMB_BITS;
-        }
-      if (y < (1.0 / (1 << 16)))
-        {
-          y *= 1.0 * (1 << 16);
-          exp -= 16;
-        }
-      if (y < (1.0 / (1 << 8)))
-        {
-          y *= 1.0 * (1 << 8);
-          exp -= 8;
-        }
-      if (y < (1.0 / (1 << 4)))
-        {
-          y *= 1.0 * (1 << 4);
-          exp -= 4;
-        }
-      if (y < (1.0 / (1 << 2)))
-        {
-          y *= 1.0 * (1 << 2);
-          exp -= 2;
-        }
-      if (y < (1.0 / (1 << 1)))
-        {
-          y *= 1.0 * (1 << 1);
-          exp -= 1;
-        }
-    }
-  if (!(y >= 0.5 && y < 1.0))
-    abort ();
-  /* Compute an approximation for l = log2(x) = exp + log2(y).  */
-  l = exp;
-  z = y;
-  if (z < 0.70710678118654752444)
-    {
-      z *= 1.4142135623730950488;
-      l -= 0.5;
-    }
-  if (z < 0.8408964152537145431)
-    {
-      z *= 1.1892071150027210667;
-      l -= 0.25;
-    }
-  if (z < 0.91700404320467123175)
-    {
-      z *= 1.0905077326652576592;
-      l -= 0.125;
-    }
-  if (z < 0.9576032806985736469)
-    {
-      z *= 1.0442737824274138403;
-      l -= 0.0625;
-    }
-  /* Now 0.95 <= z <= 1.01.  */
-  z = 1 - z;
-  /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...)
-     Four terms are enough to get an approximation with error < 10^-7.  */
-  l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 
0.25)));
-  /* Finally multiply with log(2)/log(10), yields an approximation for
-     log10(x).  */
-  l *= 0.30102999566398119523;
-  /* Round down to the next integer.  */
-  return (int) l + (l < 0 ? -1 : 0);
-}
-
-# endif
-
-/* Tests whether a string of digits consists of exactly PRECISION zeroes and
-   a single '1' digit.  */
-static int
-is_borderline (const char *digits, size_t precision)
-{
-  for (; precision > 0; precision--, digits++)
-    if (*digits != '0')
-      return 0;
-  if (*digits != '1')
-    return 0;
-  digits++;
-  return *digits == '\0';
-}
-
-#endif
-
-#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99
-
-/* Use a different function name, to make it possible that the 'wchar_t'
-   parametrization and the 'char' parametrization get compiled in the same
-   translation unit.  */
-# if WIDE_CHAR_VERSION
-#  define MAX_ROOM_NEEDED wmax_room_needed
-# else
-#  define MAX_ROOM_NEEDED max_room_needed
-# endif
-
-/* Returns the number of TCHAR_T units needed as temporary space for the result
-   of sprintf or SNPRINTF of a single conversion directive.  */
-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)
-{
-  size_t tmp_length;
-
-  switch (conversion)
-    {
-    case 'd': case 'i': case 'u':
-# if HAVE_LONG_LONG_INT
-      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-        tmp_length =
-          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-                          * 0.30103 /* binary -> decimal */
-                         )
-          + 1; /* turn floor into ceil */
-      else
-# endif
-      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-        tmp_length =
-          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-                          * 0.30103 /* binary -> decimal */
-                         )
-          + 1; /* turn floor into ceil */
-      else
-        tmp_length =
-          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                          * 0.30103 /* binary -> decimal */
-                         )
-          + 1; /* turn floor into ceil */
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Multiply by 2, as an estimate for FLAG_GROUP.  */
-      tmp_length = xsum (tmp_length, tmp_length);
-      /* Add 1, to account for a leading sign.  */
-      tmp_length = xsum (tmp_length, 1);
-      break;
-
-    case 'o':
-# if HAVE_LONG_LONG_INT
-      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-        tmp_length =
-          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-                          * 0.333334 /* binary -> octal */
-                         )
-          + 1; /* turn floor into ceil */
-      else
-# endif
-      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-        tmp_length =
-          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-                          * 0.333334 /* binary -> octal */
-                         )
-          + 1; /* turn floor into ceil */
-      else
-        tmp_length =
-          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                          * 0.333334 /* binary -> octal */
-                         )
-          + 1; /* turn floor into ceil */
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Add 1, to account for a leading sign.  */
-      tmp_length = xsum (tmp_length, 1);
-      break;
-
-    case 'x': case 'X':
-# if HAVE_LONG_LONG_INT
-      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-        tmp_length =
-          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-                          * 0.25 /* binary -> hexadecimal */
-                         )
-          + 1; /* turn floor into ceil */
-      else
-# endif
-      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-        tmp_length =
-          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-                          * 0.25 /* binary -> hexadecimal */
-                         )
-          + 1; /* turn floor into ceil */
-      else
-        tmp_length =
-          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                          * 0.25 /* binary -> hexadecimal */
-                         )
-          + 1; /* turn floor into ceil */
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Add 2, to account for a leading sign or alternate form.  */
-      tmp_length = xsum (tmp_length, 2);
-      break;
-
-    case 'f': case 'F':
-      if (type == TYPE_LONGDOUBLE)
-        tmp_length =
-          (unsigned int) (LDBL_MAX_EXP
-                          * 0.30103 /* binary -> decimal */
-                          * 2 /* estimate for FLAG_GROUP */
-                         )
-          + 1 /* turn floor into ceil */
-          + 10; /* sign, decimal point etc. */
-      else
-        tmp_length =
-          (unsigned int) (DBL_MAX_EXP
-                          * 0.30103 /* binary -> decimal */
-                          * 2 /* estimate for FLAG_GROUP */
-                         )
-          + 1 /* turn floor into ceil */
-          + 10; /* sign, decimal point etc. */
-      tmp_length = xsum (tmp_length, precision);
-      break;
-
-    case 'e': case 'E': case 'g': case 'G':
-      tmp_length =
-        12; /* sign, decimal point, exponent etc. */
-      tmp_length = xsum (tmp_length, precision);
-      break;
-
-    case 'a': case 'A':
-      if (type == TYPE_LONGDOUBLE)
-        tmp_length =
-          (unsigned int) (LDBL_DIG
-                          * 0.831 /* decimal -> hexadecimal */
-                         )
-          + 1; /* turn floor into ceil */
-      else
-        tmp_length =
-          (unsigned int) (DBL_DIG
-                          * 0.831 /* decimal -> hexadecimal */
-                         )
-          + 1; /* turn floor into ceil */
-      if (tmp_length < precision)
-        tmp_length = precision;
-      /* Account for sign, decimal point etc. */
-      tmp_length = xsum (tmp_length, 12);
-      break;
-
-    case 'c':
-# if HAVE_WINT_T && !WIDE_CHAR_VERSION
-      if (type == TYPE_WIDE_CHAR)
-        tmp_length = MB_CUR_MAX;
-      else
-# endif
-        tmp_length = 1;
-      break;
-
-    case 's':
-# if HAVE_WCHAR_T
-      if (type == TYPE_WIDE_STRING)
-        {
-#  if WIDE_CHAR_VERSION
-          /* ISO C says about %ls in fwprintf:
-               "If the precision is not specified or is greater than the size
-                of the array, the array shall contain a null wide character."
-             So if there is a precision, we must not use wcslen.  */
-          const wchar_t *arg = ap->arg[arg_index].a.a_wide_string;
-
-          if (has_precision)
-            tmp_length = local_wcsnlen (arg, precision);
-          else
-            tmp_length = local_wcslen (arg);
-#  else
-          /* ISO C says about %ls in fprintf:
-               "If a precision is specified, no more than that many bytes are
-                written (including shift sequences, if any), and the array
-                shall contain a null wide character if, to equal the multibyte
-                character sequence length given by the precision, the function
-                would need to access a wide character one past the end of the
-                array."
-             So if there is a precision, we must not use wcslen.  */
-          /* This case has already been handled separately in VASNPRINTF.  */
-          abort ();
-#  endif
-        }
-      else
-# endif
-        {
-# if WIDE_CHAR_VERSION
-          /* ISO C says about %s in fwprintf:
-               "If the precision is not specified or is greater than the size
-                of the converted array, the converted array shall contain a
-                null wide character."
-             So if there is a precision, we must not use strlen.  */
-          /* This case has already been handled separately in VASNPRINTF.  */
-          abort ();
-# else
-          /* ISO C says about %s in fprintf:
-               "If the precision is not specified or greater than the size of
-                the array, the array shall contain a null character."
-             So if there is a precision, we must not use strlen.  */
-          const char *arg = ap->arg[arg_index].a.a_string;
-
-          if (has_precision)
-            tmp_length = local_strnlen (arg, precision);
-          else
-            tmp_length = strlen (arg);
-# endif
-        }
-      break;
-
-    case 'p':
-      tmp_length =
-        (unsigned int) (sizeof (void *) * CHAR_BIT
-                        * 0.25 /* binary -> hexadecimal */
-                       )
-          + 1 /* turn floor into ceil */
-          + 2; /* account for leading 0x */
-      break;
-
-    default:
-      abort ();
-    }
-
-  if (!pad_ourselves)
-    {
-# if ENABLE_UNISTDIO
-      /* Padding considers the number of characters, therefore the number of
-         elements after padding may be
-           > max (tmp_length, width)
-         but is certainly
-           <= tmp_length + width.  */
-      tmp_length = xsum (tmp_length, width);
-# else
-      /* Padding considers the number of elements, says POSIX.  */
-      if (tmp_length < width)
-        tmp_length = width;
-# endif
-    }
-
-  tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
-
-  return tmp_length;
-}
-
-#endif
-
-DCHAR_T *
-VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
-            const FCHAR_T *format, va_list args)
-{
-  DIRECTIVES d;
-  arguments a;
-
-  if (PRINTF_PARSE (format, &d, &a) < 0)
-    /* errno is already set.  */
-    return NULL;
-
-#define CLEANUP() \
-  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)
-    {
-      CLEANUP ();
-      errno = EINVAL;
-      return NULL;
-    }
-
-  {
-    size_t buf_neededlength;
-    TCHAR_T *buf;
-    TCHAR_T *buf_malloced;
-    const FCHAR_T *cp;
-    size_t i;
-    DIRECTIVE *dp;
-    /* Output string accumulator.  */
-    DCHAR_T *result;
-    size_t allocated;
-    size_t length;
-
-    /* Allocate a small buffer that will hold a directive passed to
-       sprintf or snprintf.  */
-    buf_neededlength =
-      xsum4 (7, d.max_width_length, d.max_precision_length, 6);
-#if HAVE_ALLOCA
-    if (buf_neededlength < 4000 / sizeof (TCHAR_T))
-      {
-        buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T));
-        buf_malloced = NULL;
-      }
-    else
-#endif
-      {
-        size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T));
-        if (size_overflow_p (buf_memsize))
-          goto out_of_memory_1;
-        buf = (TCHAR_T *) malloc (buf_memsize);
-        if (buf == NULL)
-          goto out_of_memory_1;
-        buf_malloced = buf;
-      }
-
-    if (resultbuf != NULL)
-      {
-        result = resultbuf;
-        allocated = *lengthp;
-      }
-    else
-      {
-        result = NULL;
-        allocated = 0;
-      }
-    length = 0;
-    /* Invariants:
-       result is either == resultbuf or == NULL or malloc-allocated.
-       If length > 0, then result != NULL.  */
-
-    /* Ensures that allocated >= needed.  Aborts through a jump to
-       out_of_memory if needed is SIZE_MAX or otherwise too big.  */
-#define ENSURE_ALLOCATION(needed) \
-    if ((needed) > allocated)                                                \
-      {                                                                      \
-        size_t memory_size;                                                  \
-        DCHAR_T *memory;                                                     \
-                                                                             \
-        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
-        if ((needed) > allocated)                                            \
-          allocated = (needed);                                              \
-        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
-        if (size_overflow_p (memory_size))                                   \
-          goto out_of_memory;                                                \
-        if (result == resultbuf || result == NULL)                           \
-          memory = (DCHAR_T *) malloc (memory_size);                         \
-        else                                                                 \
-          memory = (DCHAR_T *) realloc (result, memory_size);                \
-        if (memory == NULL)                                                  \
-          goto out_of_memory;                                                \
-        if (result == resultbuf && length > 0)                               \
-          DCHAR_CPY (memory, result, length);                                \
-        result = memory;                                                     \
-      }
-
-    for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
-      {
-        if (cp != dp->dir_start)
-          {
-            size_t n = dp->dir_start - cp;
-            size_t augmented_length = xsum (length, n);
-
-            ENSURE_ALLOCATION (augmented_length);
-            /* This copies a piece of FCHAR_T[] into a DCHAR_T[].  Here we
-               need that the format string contains only ASCII characters
-               if FCHAR_T and DCHAR_T are not the same type.  */
-            if (sizeof (FCHAR_T) == sizeof (DCHAR_T))
-              {
-                DCHAR_CPY (result + length, (const DCHAR_T *) cp, n);
-                length = augmented_length;
-              }
-            else
-              {
-                do
-                  result[length++] = (unsigned char) *cp++;
-                while (--n > 0);
-              }
-          }
-        if (i == d.count)
-          break;
-
-        /* Execute a single directive.  */
-        if (dp->conversion == '%')
-          {
-            size_t augmented_length;
-
-            if (!(dp->arg_index == ARG_NONE))
-              abort ();
-            augmented_length = xsum (length, 1);
-            ENSURE_ALLOCATION (augmented_length);
-            result[length] = '%';
-            length = augmented_length;
-          }
-        else
-          {
-            if (!(dp->arg_index != ARG_NONE))
-              abort ();
-
-            if (dp->conversion == 'n')
-              {
-                switch (a.arg[dp->arg_index].type)
-                  {
-                  case TYPE_COUNT_SCHAR_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
-                    break;
-                  case TYPE_COUNT_SHORT_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_short_pointer = length;
-                    break;
-                  case TYPE_COUNT_INT_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_int_pointer = length;
-                    break;
-                  case TYPE_COUNT_LONGINT_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
-                    break;
-#if HAVE_LONG_LONG_INT
-                  case TYPE_COUNT_LONGLONGINT_POINTER:
-                    *a.arg[dp->arg_index].a.a_count_longlongint_pointer = 
length;
-                    break;
-#endif
-                  default:
-                    abort ();
-                  }
-              }
-#if ENABLE_UNISTDIO
-            /* The unistdio extensions.  */
-            else if (dp->conversion == 'U')
-              {
-                arg_type type = a.arg[dp->arg_index].type;
-                int flags = dp->flags;
-                int has_width;
-                size_t width;
-                int has_precision;
-                size_t precision;
-
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = (unsigned int) (-arg);
-                          }
-                        else
-                          width = arg;
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-
-                has_precision = 0;
-                precision = 0;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-                switch (type)
-                  {
-                  case TYPE_U8_STRING:
-                    {
-                      const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string;
-                      const uint8_t *arg_end;
-                      size_t characters;
-
-                      if (has_precision)
-                        {
-                          /* Use only PRECISION characters, from the left.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (; precision > 0; precision--)
-                            {
-                              int count = u8_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                {
-                                  if (!(result == resultbuf || result == NULL))
-                                    free (result);
-                                  if (buf_malloced != NULL)
-                                    free (buf_malloced);
-                                  CLEANUP ();
-                                  errno = EILSEQ;
-                                  return NULL;
-                                }
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else if (has_width)
-                        {
-                          /* Use the entire string, and count the number of
-                             characters.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (;;)
-                            {
-                              int count = u8_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                {
-                                  if (!(result == resultbuf || result == NULL))
-                                    free (result);
-                                  if (buf_malloced != NULL)
-                                    free (buf_malloced);
-                                  CLEANUP ();
-                                  errno = EILSEQ;
-                                  return NULL;
-                                }
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else
-                        {
-                          /* Use the entire string.  */
-                          arg_end = arg + u8_strlen (arg);
-                          /* The number of characters doesn't matter.  */
-                          characters = 0;
-                        }
-
-                      if (has_width && width > characters
-                          && !(dp->flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-
-# if DCHAR_IS_UINT8_T
-                      {
-                        size_t n = arg_end - arg;
-                        ENSURE_ALLOCATION (xsum (length, n));
-                        DCHAR_CPY (result + length, arg, n);
-                        length += n;
-                      }
-# else
-                      { /* Convert.  */
-                        DCHAR_T *converted = result + length;
-                        size_t converted_len = allocated - length;
-#  if DCHAR_IS_TCHAR
-                        /* Convert from UTF-8 to locale encoding.  */
-                        converted =
-                          u8_conv_to_encoding (locale_charset (),
-                                               iconveh_question_mark,
-                                               arg, arg_end - arg, NULL,
-                                               converted, &converted_len);
-#  else
-                        /* Convert from UTF-8 to UTF-16/UTF-32.  */
-                        converted =
-                          U8_TO_DCHAR (arg, arg_end - arg,
-                                       converted, &converted_len);
-#  endif
-                        if (converted == NULL)
-                          {
-                            int saved_errno = errno;
-                            if (!(result == resultbuf || result == NULL))
-                              free (result);
-                            if (buf_malloced != NULL)
-                              free (buf_malloced);
-                            CLEANUP ();
-                            errno = saved_errno;
-                            return NULL;
-                          }
-                        if (converted != result + length)
-                          {
-                            ENSURE_ALLOCATION (xsum (length, converted_len));
-                            DCHAR_CPY (result + length, converted, 
converted_len);
-                            free (converted);
-                          }
-                        length += converted_len;
-                      }
-# endif
-
-                      if (has_width && width > characters
-                          && (dp->flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-                    }
-                    break;
-
-                  case TYPE_U16_STRING:
-                    {
-                      const uint16_t *arg = 
a.arg[dp->arg_index].a.a_u16_string;
-                      const uint16_t *arg_end;
-                      size_t characters;
-
-                      if (has_precision)
-                        {
-                          /* Use only PRECISION characters, from the left.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (; precision > 0; precision--)
-                            {
-                              int count = u16_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                {
-                                  if (!(result == resultbuf || result == NULL))
-                                    free (result);
-                                  if (buf_malloced != NULL)
-                                    free (buf_malloced);
-                                  CLEANUP ();
-                                  errno = EILSEQ;
-                                  return NULL;
-                                }
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else if (has_width)
-                        {
-                          /* Use the entire string, and count the number of
-                             characters.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (;;)
-                            {
-                              int count = u16_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                {
-                                  if (!(result == resultbuf || result == NULL))
-                                    free (result);
-                                  if (buf_malloced != NULL)
-                                    free (buf_malloced);
-                                  CLEANUP ();
-                                  errno = EILSEQ;
-                                  return NULL;
-                                }
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else
-                        {
-                          /* Use the entire string.  */
-                          arg_end = arg + u16_strlen (arg);
-                          /* The number of characters doesn't matter.  */
-                          characters = 0;
-                        }
-
-                      if (has_width && width > characters
-                          && !(dp->flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-
-# if DCHAR_IS_UINT16_T
-                      {
-                        size_t n = arg_end - arg;
-                        ENSURE_ALLOCATION (xsum (length, n));
-                        DCHAR_CPY (result + length, arg, n);
-                        length += n;
-                      }
-# else
-                      { /* Convert.  */
-                        DCHAR_T *converted = result + length;
-                        size_t converted_len = allocated - length;
-#  if DCHAR_IS_TCHAR
-                        /* Convert from UTF-16 to locale encoding.  */
-                        converted =
-                          u16_conv_to_encoding (locale_charset (),
-                                                iconveh_question_mark,
-                                                arg, arg_end - arg, NULL,
-                                                converted, &converted_len);
-#  else
-                        /* Convert from UTF-16 to UTF-8/UTF-32.  */
-                        converted =
-                          U16_TO_DCHAR (arg, arg_end - arg,
-                                        converted, &converted_len);
-#  endif
-                        if (converted == NULL)
-                          {
-                            int saved_errno = errno;
-                            if (!(result == resultbuf || result == NULL))
-                              free (result);
-                            if (buf_malloced != NULL)
-                              free (buf_malloced);
-                            CLEANUP ();
-                            errno = saved_errno;
-                            return NULL;
-                          }
-                        if (converted != result + length)
-                          {
-                            ENSURE_ALLOCATION (xsum (length, converted_len));
-                            DCHAR_CPY (result + length, converted, 
converted_len);
-                            free (converted);
-                          }
-                        length += converted_len;
-                      }
-# endif
-
-                      if (has_width && width > characters
-                          && (dp->flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-                    }
-                    break;
-
-                  case TYPE_U32_STRING:
-                    {
-                      const uint32_t *arg = 
a.arg[dp->arg_index].a.a_u32_string;
-                      const uint32_t *arg_end;
-                      size_t characters;
-
-                      if (has_precision)
-                        {
-                          /* Use only PRECISION characters, from the left.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (; precision > 0; precision--)
-                            {
-                              int count = u32_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                {
-                                  if (!(result == resultbuf || result == NULL))
-                                    free (result);
-                                  if (buf_malloced != NULL)
-                                    free (buf_malloced);
-                                  CLEANUP ();
-                                  errno = EILSEQ;
-                                  return NULL;
-                                }
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else if (has_width)
-                        {
-                          /* Use the entire string, and count the number of
-                             characters.  */
-                          arg_end = arg;
-                          characters = 0;
-                          for (;;)
-                            {
-                              int count = u32_strmblen (arg_end);
-                              if (count == 0)
-                                break;
-                              if (count < 0)
-                                {
-                                  if (!(result == resultbuf || result == NULL))
-                                    free (result);
-                                  if (buf_malloced != NULL)
-                                    free (buf_malloced);
-                                  CLEANUP ();
-                                  errno = EILSEQ;
-                                  return NULL;
-                                }
-                              arg_end += count;
-                              characters++;
-                            }
-                        }
-                      else
-                        {
-                          /* Use the entire string.  */
-                          arg_end = arg + u32_strlen (arg);
-                          /* The number of characters doesn't matter.  */
-                          characters = 0;
-                        }
-
-                      if (has_width && width > characters
-                          && !(dp->flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-
-# if DCHAR_IS_UINT32_T
-                      {
-                        size_t n = arg_end - arg;
-                        ENSURE_ALLOCATION (xsum (length, n));
-                        DCHAR_CPY (result + length, arg, n);
-                        length += n;
-                      }
-# else
-                      { /* Convert.  */
-                        DCHAR_T *converted = result + length;
-                        size_t converted_len = allocated - length;
-#  if DCHAR_IS_TCHAR
-                        /* Convert from UTF-32 to locale encoding.  */
-                        converted =
-                          u32_conv_to_encoding (locale_charset (),
-                                                iconveh_question_mark,
-                                                arg, arg_end - arg, NULL,
-                                                converted, &converted_len);
-#  else
-                        /* Convert from UTF-32 to UTF-8/UTF-16.  */
-                        converted =
-                          U32_TO_DCHAR (arg, arg_end - arg,
-                                        converted, &converted_len);
-#  endif
-                        if (converted == NULL)
-                          {
-                            int saved_errno = errno;
-                            if (!(result == resultbuf || result == NULL))
-                              free (result);
-                            if (buf_malloced != NULL)
-                              free (buf_malloced);
-                            CLEANUP ();
-                            errno = saved_errno;
-                            return NULL;
-                          }
-                        if (converted != result + length)
-                          {
-                            ENSURE_ALLOCATION (xsum (length, converted_len));
-                            DCHAR_CPY (result + length, converted, 
converted_len);
-                            free (converted);
-                          }
-                        length += converted_len;
-                      }
-# endif
-
-                      if (has_width && width > characters
-                          && (dp->flags & FLAG_LEFT))
-                        {
-                          size_t n = width - characters;
-                          ENSURE_ALLOCATION (xsum (length, n));
-                          DCHAR_SET (result + length, ' ', n);
-                          length += n;
-                        }
-                    }
-                    break;
-
-                  default:
-                    abort ();
-                  }
-              }
-#endif
-#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS 
&& !defined IN_LIBINTL)) && HAVE_WCHAR_T
-            else if (dp->conversion == 's'
-# if WIDE_CHAR_VERSION
-                     && a.arg[dp->arg_index].type != TYPE_WIDE_STRING
-# else
-                     && a.arg[dp->arg_index].type == TYPE_WIDE_STRING
-# endif
-                    )
-              {
-                /* The normal handling of the 's' directive below requires
-                   allocating a temporary buffer.  The determination of its
-                   length (tmp_length), in the case when a precision is
-                   specified, below requires a conversion between a char[]
-                   string and a wchar_t[] wide string.  It could be done, but
-                   we have no guarantee that the implementation of sprintf will
-                   use the exactly same algorithm.  Without this guarantee, it
-                   is possible to have buffer overrun bugs.  In order to avoid
-                   such bugs, we implement the entire processing of the 's'
-                   directive ourselves.  */
-                int flags = dp->flags;
-                int has_width;
-                size_t width;
-                int has_precision;
-                size_t precision;
-
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = (unsigned int) (-arg);
-                          }
-                        else
-                          width = arg;
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-
-                has_precision = 0;
-                precision = 6;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-# if WIDE_CHAR_VERSION
-                /* %s in vasnwprintf.  See the specification of fwprintf.  */
-                {
-                  const char *arg = a.arg[dp->arg_index].a.a_string;
-                  const char *arg_end;
-                  size_t characters;
-
-                  if (has_precision)
-                    {
-                      /* Use only as many bytes as needed to produce PRECISION
-                         wide characters, from the left.  */
-#  if HAVE_MBRTOWC
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      arg_end = arg;
-                      characters = 0;
-                      for (; precision > 0; precision--)
-                        {
-                          int count;
-#  if HAVE_MBRTOWC
-                          count = mbrlen (arg_end, MB_CUR_MAX, &state);
-#  else
-                          count = mblen (arg_end, MB_CUR_MAX);
-#  endif
-                          if (count == 0)
-                            /* Found the terminating NUL.  */
-                            break;
-                          if (count < 0)
-                            {
-                              /* Invalid or incomplete multibyte character.  */
-                              if (!(result == resultbuf || result == NULL))
-                                free (result);
-                              if (buf_malloced != NULL)
-                                free (buf_malloced);
-                              CLEANUP ();
-                              errno = EILSEQ;
-                              return NULL;
-                            }
-                          arg_end += count;
-                          characters++;
-                        }
-                    }
-                  else if (has_width)
-                    {
-                      /* Use the entire string, and count the number of wide
-                         characters.  */
-#  if HAVE_MBRTOWC
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      arg_end = arg;
-                      characters = 0;
-                      for (;;)
-                        {
-                          int count;
-#  if HAVE_MBRTOWC
-                          count = mbrlen (arg_end, MB_CUR_MAX, &state);
-#  else
-                          count = mblen (arg_end, MB_CUR_MAX);
-#  endif
-                          if (count == 0)
-                            /* Found the terminating NUL.  */
-                            break;
-                          if (count < 0)
-                            {
-                              /* Invalid or incomplete multibyte character.  */
-                              if (!(result == resultbuf || result == NULL))
-                                free (result);
-                              if (buf_malloced != NULL)
-                                free (buf_malloced);
-                              CLEANUP ();
-                              errno = EILSEQ;
-                              return NULL;
-                            }
-                          arg_end += count;
-                          characters++;
-                        }
-                    }
-                  else
-                    {
-                      /* Use the entire string.  */
-                      arg_end = arg + strlen (arg);
-                      /* The number of characters doesn't matter.  */
-                      characters = 0;
-                    }
-
-                  if (has_width && width > characters
-                      && !(dp->flags & FLAG_LEFT))
-                    {
-                      size_t n = width - characters;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-
-                  if (has_precision || has_width)
-                    {
-                      /* We know the number of wide characters in advance.  */
-                      size_t remaining;
-#  if HAVE_MBRTOWC
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      ENSURE_ALLOCATION (xsum (length, characters));
-                      for (remaining = characters; remaining > 0; remaining--)
-                        {
-                          wchar_t wc;
-                          int count;
-#  if HAVE_MBRTOWC
-                          count = mbrtowc (&wc, arg, arg_end - arg, &state);
-#  else
-                          count = mbtowc (&wc, arg, arg_end - arg);
-#  endif
-                          if (count <= 0)
-                            /* mbrtowc not consistent with mbrlen, or mbtowc
-                               not consistent with mblen.  */
-                            abort ();
-                          result[length++] = wc;
-                          arg += count;
-                        }
-                      if (!(arg == arg_end))
-                        abort ();
-                    }
-                  else
-                    {
-#  if HAVE_MBRTOWC
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      while (arg < arg_end)
-                        {
-                          wchar_t wc;
-                          int count;
-#  if HAVE_MBRTOWC
-                          count = mbrtowc (&wc, arg, arg_end - arg, &state);
-#  else
-                          count = mbtowc (&wc, arg, arg_end - arg);
-#  endif
-                          if (count <= 0)
-                            /* mbrtowc not consistent with mbrlen, or mbtowc
-                               not consistent with mblen.  */
-                            abort ();
-                          ENSURE_ALLOCATION (xsum (length, 1));
-                          result[length++] = wc;
-                          arg += count;
-                        }
-                    }
-
-                  if (has_width && width > characters
-                      && (dp->flags & FLAG_LEFT))
-                    {
-                      size_t n = width - characters;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-                }
-# else
-                /* %ls in vasnprintf.  See the specification of fprintf.  */
-                {
-                  const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
-                  const wchar_t *arg_end;
-                  size_t characters;
-#  if !DCHAR_IS_TCHAR
-                  /* This code assumes that TCHAR_T is 'char'.  */
-                  verify (sizeof (TCHAR_T) == 1);
-                  TCHAR_T *tmpsrc;
-                  DCHAR_T *tmpdst;
-                  size_t tmpdst_len;
-#  endif
-                  size_t w;
-
-                  if (has_precision)
-                    {
-                      /* Use only as many wide characters as needed to produce
-                         at most PRECISION bytes, from the left.  */
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      arg_end = arg;
-                      characters = 0;
-                      while (precision > 0)
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-
-                          if (*arg_end == 0)
-                            /* Found the terminating null wide character.  */
-                            break;
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                          count = wcrtomb (cbuf, *arg_end, &state);
-#  else
-                          count = wctomb (cbuf, *arg_end);
-#  endif
-                          if (count < 0)
-                            {
-                              /* Cannot convert.  */
-                              if (!(result == resultbuf || result == NULL))
-                                free (result);
-                              if (buf_malloced != NULL)
-                                free (buf_malloced);
-                              CLEANUP ();
-                              errno = EILSEQ;
-                              return NULL;
-                            }
-                          if (precision < count)
-                            break;
-                          arg_end++;
-                          characters += count;
-                          precision -= count;
-                        }
-                    }
-#  if DCHAR_IS_TCHAR
-                  else if (has_width)
-#  else
-                  else
-#  endif
-                    {
-                      /* Use the entire string, and count the number of
-                         bytes.  */
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#  endif
-                      arg_end = arg;
-                      characters = 0;
-                      for (;;)
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-
-                          if (*arg_end == 0)
-                            /* Found the terminating null wide character.  */
-                            break;
-#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                          count = wcrtomb (cbuf, *arg_end, &state);
-#  else
-                          count = wctomb (cbuf, *arg_end);
-#  endif
-                          if (count < 0)
-                            {
-                              /* Cannot convert.  */
-                              if (!(result == resultbuf || result == NULL))
-                                free (result);
-                              if (buf_malloced != NULL)
-                                free (buf_malloced);
-                              CLEANUP ();
-                              errno = EILSEQ;
-                              return NULL;
-                            }
-                          arg_end++;
-                          characters += count;
-                        }
-                    }
-#  if DCHAR_IS_TCHAR
-                  else
-                    {
-                      /* Use the entire string.  */
-                      arg_end = arg + local_wcslen (arg);
-                      /* The number of bytes doesn't matter.  */
-                      characters = 0;
-                    }
-#  endif
-
-#  if !DCHAR_IS_TCHAR
-                  /* Convert the string into a piece of temporary memory.  */
-                  tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T));
-                  if (tmpsrc == NULL)
-                    goto out_of_memory;
-                  {
-                    TCHAR_T *tmpptr = tmpsrc;
-                    size_t remaining;
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                    mbstate_t state;
-                    memset (&state, '\0', sizeof (mbstate_t));
-#   endif
-                    for (remaining = characters; remaining > 0; )
-                      {
-                        char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                        int count;
-
-                        if (*arg == 0)
-                          abort ();
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                        count = wcrtomb (cbuf, *arg, &state);
-#   else
-                        count = wctomb (cbuf, *arg);
-#   endif
-                        if (count <= 0)
-                          /* Inconsistency.  */
-                          abort ();
-                        memcpy (tmpptr, cbuf, count);
-                        tmpptr += count;
-                        arg++;
-                        remaining -= count;
-                      }
-                    if (!(arg == arg_end))
-                      abort ();
-                  }
-
-                  /* Convert from TCHAR_T[] to DCHAR_T[].  */
-                  tmpdst =
-                    DCHAR_CONV_FROM_ENCODING (locale_charset (),
-                                              iconveh_question_mark,
-                                              tmpsrc, characters,
-                                              NULL,
-                                              NULL, &tmpdst_len);
-                  if (tmpdst == NULL)
-                    {
-                      int saved_errno = errno;
-                      free (tmpsrc);
-                      if (!(result == resultbuf || result == NULL))
-                        free (result);
-                      if (buf_malloced != NULL)
-                        free (buf_malloced);
-                      CLEANUP ();
-                      errno = saved_errno;
-                      return NULL;
-                    }
-                  free (tmpsrc);
-#  endif
-
-                  if (has_width)
-                    {
-#  if ENABLE_UNISTDIO
-                      /* Outside POSIX, it's preferable to compare the width
-                         against the number of _characters_ of the converted
-                         value.  */
-                      w = DCHAR_MBSNLEN (result + length, characters);
-#  else
-                      /* The width is compared against the number of _bytes_
-                         of the converted value, says POSIX.  */
-                      w = characters;
-#  endif
-                    }
-                  else
-                    /* w doesn't matter.  */
-                    w = 0;
-
-                  if (has_width && width > w
-                      && !(dp->flags & FLAG_LEFT))
-                    {
-                      size_t n = width - w;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-
-#  if DCHAR_IS_TCHAR
-                  if (has_precision || has_width)
-                    {
-                      /* We know the number of bytes in advance.  */
-                      size_t remaining;
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#   endif
-                      ENSURE_ALLOCATION (xsum (length, characters));
-                      for (remaining = characters; remaining > 0; )
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-
-                          if (*arg == 0)
-                            abort ();
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                          count = wcrtomb (cbuf, *arg, &state);
-#   else
-                          count = wctomb (cbuf, *arg);
-#   endif
-                          if (count <= 0)
-                            /* Inconsistency.  */
-                            abort ();
-                          memcpy (result + length, cbuf, count);
-                          length += count;
-                          arg++;
-                          remaining -= count;
-                        }
-                      if (!(arg == arg_end))
-                        abort ();
-                    }
-                  else
-                    {
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                      mbstate_t state;
-                      memset (&state, '\0', sizeof (mbstate_t));
-#   endif
-                      while (arg < arg_end)
-                        {
-                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
-                          int count;
-
-                          if (*arg == 0)
-                            abort ();
-#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
-                          count = wcrtomb (cbuf, *arg, &state);
-#   else
-                          count = wctomb (cbuf, *arg);
-#   endif
-                          if (count <= 0)
-                            {
-                              /* Cannot convert.  */
-                              if (!(result == resultbuf || result == NULL))
-                                free (result);
-                              if (buf_malloced != NULL)
-                                free (buf_malloced);
-                              CLEANUP ();
-                              errno = EILSEQ;
-                              return NULL;
-                            }
-                          ENSURE_ALLOCATION (xsum (length, count));
-                          memcpy (result + length, cbuf, count);
-                          length += count;
-                          arg++;
-                        }
-                    }
-#  else
-                  ENSURE_ALLOCATION (xsum (length, tmpdst_len));
-                  DCHAR_CPY (result + length, tmpdst, tmpdst_len);
-                  free (tmpdst);
-                  length += tmpdst_len;
-#  endif
-
-                  if (has_width && width > w
-                      && (dp->flags & FLAG_LEFT))
-                    {
-                      size_t n = width - w;
-                      ENSURE_ALLOCATION (xsum (length, n));
-                      DCHAR_SET (result + length, ' ', n);
-                      length += n;
-                    }
-                }
-# endif
-              }
-#endif
-#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) 
&& !defined IN_LIBINTL
-            else if ((dp->conversion == 'a' || dp->conversion == 'A')
-# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && 
NEED_PRINTF_DOUBLE))
-                     && (0
-#  if NEED_PRINTF_DOUBLE
-                         || a.arg[dp->arg_index].type == TYPE_DOUBLE
-#  endif
-#  if NEED_PRINTF_LONG_DOUBLE
-                         || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
-#  endif
-                        )
-# endif
-                    )
-              {
-                arg_type type = a.arg[dp->arg_index].type;
-                int flags = dp->flags;
-                int has_width;
-                size_t width;
-                int has_precision;
-                size_t precision;
-                size_t tmp_length;
-                DCHAR_T tmpbuf[700];
-                DCHAR_T *tmp;
-                DCHAR_T *pad_ptr;
-                DCHAR_T *p;
-
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = (unsigned int) (-arg);
-                          }
-                        else
-                          width = arg;
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-
-                has_precision = 0;
-                precision = 0;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-                /* Allocate a temporary buffer of sufficient size.  */
-                if (type == TYPE_LONGDOUBLE)
-                  tmp_length =
-                    (unsigned int) ((LDBL_DIG + 1)
-                                    * 0.831 /* decimal -> hexadecimal */
-                                   )
-                    + 1; /* turn floor into ceil */
-                else
-                  tmp_length =
-                    (unsigned int) ((DBL_DIG + 1)
-                                    * 0.831 /* decimal -> hexadecimal */
-                                   )
-                    + 1; /* turn floor into ceil */
-                if (tmp_length < precision)
-                  tmp_length = precision;
-                /* Account for sign, decimal point etc. */
-                tmp_length = xsum (tmp_length, 12);
-
-                if (tmp_length < width)
-                  tmp_length = width;
-
-                tmp_length = xsum (tmp_length, 1); /* account for trailing NUL 
*/
-
-                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
-                  tmp = tmpbuf;
-                else
-                  {
-                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
-
-                    if (size_overflow_p (tmp_memsize))
-                      /* Overflow, would lead to out of memory.  */
-                      goto out_of_memory;
-                    tmp = (DCHAR_T *) malloc (tmp_memsize);
-                    if (tmp == NULL)
-                      /* Out of memory.  */
-                      goto out_of_memory;
-                  }
-
-                pad_ptr = NULL;
-                p = tmp;
-                if (type == TYPE_LONGDOUBLE)
-                  {
-# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE
-                    long double arg = a.arg[dp->arg_index].a.a_longdouble;
-
-                    if (isnanl (arg))
-                      {
-                        if (dp->conversion == 'A')
-                          {
-                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
-                          }
-                        else
-                          {
-                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
-                          }
-                      }
-                    else
-                      {
-                        int sign = 0;
-                        DECL_LONG_DOUBLE_ROUNDING
-
-                        BEGIN_LONG_DOUBLE_ROUNDING ();
-
-                        if (signbit (arg)) /* arg < 0.0L or negative zero */
-                          {
-                            sign = -1;
-                            arg = -arg;
-                          }
-
-                        if (sign < 0)
-                          *p++ = '-';
-                        else if (flags & FLAG_SHOWSIGN)
-                          *p++ = '+';
-                        else if (flags & FLAG_SPACE)
-                          *p++ = ' ';
-
-                        if (arg > 0.0L && arg + arg == arg)
-                          {
-                            if (dp->conversion == 'A')
-                              {
-                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
-                              }
-                            else
-                              {
-                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
-                              }
-                          }
-                        else
-                          {
-                            int exponent;
-                            long double mantissa;
-
-                            if (arg > 0.0L)
-                              mantissa = printf_frexpl (arg, &exponent);
-                            else
-                              {
-                                exponent = 0;
-                                mantissa = 0.0L;
-                              }
-
-                            if (has_precision
-                                && precision < (unsigned int) ((LDBL_DIG + 1) 
* 0.831) + 1)
-                              {
-                                /* Round the mantissa.  */
-                                long double tail = mantissa;
-                                size_t q;
-
-                                for (q = precision; ; q--)
-                                  {
-                                    int digit = (int) tail;
-                                    tail -= digit;
-                                    if (q == 0)
-                                      {
-                                        if (digit & 1 ? tail >= 0.5L : tail > 
0.5L)
-                                          tail = 1 - tail;
-                                        else
-                                          tail = - tail;
-                                        break;
-                                      }
-                                    tail *= 16.0L;
-                                  }
-                                if (tail != 0.0L)
-                                  for (q = precision; q > 0; q--)
-                                    tail *= 0.0625L;
-                                mantissa += tail;
-                              }
-
-                            *p++ = '0';
-                            *p++ = dp->conversion - 'A' + 'X';
-                            pad_ptr = p;
-                            {
-                              int digit;
-
-                              digit = (int) mantissa;
-                              mantissa -= digit;
-                              *p++ = '0' + digit;
-                              if ((flags & FLAG_ALT)
-                                  || mantissa > 0.0L || precision > 0)
-                                {
-                                  *p++ = decimal_point_char ();
-                                  /* This loop terminates because we assume
-                                     that FLT_RADIX is a power of 2.  */
-                                  while (mantissa > 0.0L)
-                                    {
-                                      mantissa *= 16.0L;
-                                      digit = (int) mantissa;
-                                      mantissa -= digit;
-                                      *p++ = digit
-                                             + (digit < 10
-                                                ? '0'
-                                                : dp->conversion - 10);
-                                      if (precision > 0)
-                                        precision--;
-                                    }
-                                  while (precision > 0)
-                                    {
-                                      *p++ = '0';
-                                      precision--;
-                                    }
-                                }
-                              }
-                              *p++ = dp->conversion - 'A' + 'P';
-#  if WIDE_CHAR_VERSION
-                              {
-                                static const wchar_t decimal_format[] =
-                                  { '%', '+', 'd', '\0' };
-                                SNPRINTF (p, 6 + 1, decimal_format, exponent);
-                              }
-                              while (*p != '\0')
-                                p++;
-#  else
-                              if (sizeof (DCHAR_T) == 1)
-                                {
-                                  sprintf ((char *) p, "%+d", exponent);
-                                  while (*p != '\0')
-                                    p++;
-                                }
-                              else
-                                {
-                                  char expbuf[6 + 1];
-                                  const char *ep;
-                                  sprintf (expbuf, "%+d", exponent);
-                                  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
-                                    p++;
-                                }
-#  endif
-                          }
-
-                        END_LONG_DOUBLE_ROUNDING ();
-                      }
-# else
-                    abort ();
-# endif
-                  }
-                else
-                  {
-# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE
-                    double arg = a.arg[dp->arg_index].a.a_double;
-
-                    if (isnand (arg))
-                      {
-                        if (dp->conversion == 'A')
-                          {
-                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
-                          }
-                        else
-                          {
-                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
-                          }
-                      }
-                    else
-                      {
-                        int sign = 0;
-
-                        if (signbit (arg)) /* arg < 0.0 or negative zero */
-                          {
-                            sign = -1;
-                            arg = -arg;
-                          }
-
-                        if (sign < 0)
-                          *p++ = '-';
-                        else if (flags & FLAG_SHOWSIGN)
-                          *p++ = '+';
-                        else if (flags & FLAG_SPACE)
-                          *p++ = ' ';
-
-                        if (arg > 0.0 && arg + arg == arg)
-                          {
-                            if (dp->conversion == 'A')
-                              {
-                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
-                              }
-                            else
-                              {
-                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
-                              }
-                          }
-                        else
-                          {
-                            int exponent;
-                            double mantissa;
-
-                            if (arg > 0.0)
-                              mantissa = printf_frexp (arg, &exponent);
-                            else
-                              {
-                                exponent = 0;
-                                mantissa = 0.0;
-                              }
-
-                            if (has_precision
-                                && precision < (unsigned int) ((DBL_DIG + 1) * 
0.831) + 1)
-                              {
-                                /* Round the mantissa.  */
-                                double tail = mantissa;
-                                size_t q;
-
-                                for (q = precision; ; q--)
-                                  {
-                                    int digit = (int) tail;
-                                    tail -= digit;
-                                    if (q == 0)
-                                      {
-                                        if (digit & 1 ? tail >= 0.5 : tail > 
0.5)
-                                          tail = 1 - tail;
-                                        else
-                                          tail = - tail;
-                                        break;
-                                      }
-                                    tail *= 16.0;
-                                  }
-                                if (tail != 0.0)
-                                  for (q = precision; q > 0; q--)
-                                    tail *= 0.0625;
-                                mantissa += tail;
-                              }
-
-                            *p++ = '0';
-                            *p++ = dp->conversion - 'A' + 'X';
-                            pad_ptr = p;
-                            {
-                              int digit;
-
-                              digit = (int) mantissa;
-                              mantissa -= digit;
-                              *p++ = '0' + digit;
-                              if ((flags & FLAG_ALT)
-                                  || mantissa > 0.0 || precision > 0)
-                                {
-                                  *p++ = decimal_point_char ();
-                                  /* This loop terminates because we assume
-                                     that FLT_RADIX is a power of 2.  */
-                                  while (mantissa > 0.0)
-                                    {
-                                      mantissa *= 16.0;
-                                      digit = (int) mantissa;
-                                      mantissa -= digit;
-                                      *p++ = digit
-                                             + (digit < 10
-                                                ? '0'
-                                                : dp->conversion - 10);
-                                      if (precision > 0)
-                                        precision--;
-                                    }
-                                  while (precision > 0)
-                                    {
-                                      *p++ = '0';
-                                      precision--;
-                                    }
-                                }
-                              }
-                              *p++ = dp->conversion - 'A' + 'P';
-#  if WIDE_CHAR_VERSION
-                              {
-                                static const wchar_t decimal_format[] =
-                                  { '%', '+', 'd', '\0' };
-                                SNPRINTF (p, 6 + 1, decimal_format, exponent);
-                              }
-                              while (*p != '\0')
-                                p++;
-#  else
-                              if (sizeof (DCHAR_T) == 1)
-                                {
-                                  sprintf ((char *) p, "%+d", exponent);
-                                  while (*p != '\0')
-                                    p++;
-                                }
-                              else
-                                {
-                                  char expbuf[6 + 1];
-                                  const char *ep;
-                                  sprintf (expbuf, "%+d", exponent);
-                                  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
-                                    p++;
-                                }
-#  endif
-                          }
-                      }
-# else
-                    abort ();
-# endif
-                  }
-                /* The generated string now extends from tmp to p, with the
-                   zero padding insertion point being at pad_ptr.  */
-                if (has_width && p - tmp < width)
-                  {
-                    size_t pad = width - (p - tmp);
-                    DCHAR_T *end = p + pad;
-
-                    if (flags & FLAG_LEFT)
-                      {
-                        /* Pad with spaces on the right.  */
-                        for (; pad > 0; pad--)
-                          *p++ = ' ';
-                      }
-                    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
-                      {
-                        /* Pad with zeroes.  */
-                        DCHAR_T *q = end;
-
-                        while (p > pad_ptr)
-                          *--q = *--p;
-                        for (; pad > 0; pad--)
-                          *p++ = '0';
-                      }
-                    else
-                      {
-                        /* Pad with spaces on the left.  */
-                        DCHAR_T *q = end;
-
-                        while (p > tmp)
-                          *--q = *--p;
-                        for (; pad > 0; pad--)
-                          *p++ = ' ';
-                      }
-
-                    p = end;
-                  }
-
-                {
-                  size_t count = p - tmp;
-
-                  if (count >= tmp_length)
-                    /* tmp_length was incorrectly calculated - fix the
-                       code above!  */
-                    abort ();
-
-                  /* Make room for the result.  */
-                  if (count >= allocated - length)
-                    {
-                      size_t n = xsum (length, count);
-
-                      ENSURE_ALLOCATION (n);
-                    }
-
-                  /* Append the result.  */
-                  memcpy (result + length, tmp, count * sizeof (DCHAR_T));
-                  if (tmp != tmpbuf)
-                    free (tmp);
-                  length += count;
-                }
-              }
-#endif
-#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || 
NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined 
IN_LIBINTL
-            else if ((dp->conversion == 'f' || dp->conversion == 'F'
-                      || dp->conversion == 'e' || dp->conversion == 'E'
-                      || dp->conversion == 'g' || dp->conversion == 'G'
-                      || dp->conversion == 'a' || dp->conversion == 'A')
-                     && (0
-# if NEED_PRINTF_DOUBLE
-                         || a.arg[dp->arg_index].type == TYPE_DOUBLE
-# elif NEED_PRINTF_INFINITE_DOUBLE
-                         || (a.arg[dp->arg_index].type == TYPE_DOUBLE
-                             /* The systems (mingw) which produce wrong output
-                                for Inf, -Inf, and NaN also do so for -0.0.
-                                Therefore we treat this case here as well.  */
-                             && is_infinite_or_zero 
(a.arg[dp->arg_index].a.a_double))
-# endif
-# if NEED_PRINTF_LONG_DOUBLE
-                         || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
-# elif NEED_PRINTF_INFINITE_LONG_DOUBLE
-                         || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
-                             /* Some systems produce wrong output for Inf,
-                                -Inf, and NaN.  Some systems in this category
-                                (IRIX 5.3) also do so for -0.0.  Therefore we
-                                treat this case here as well.  */
-                             && is_infinite_or_zerol 
(a.arg[dp->arg_index].a.a_longdouble))
-# endif
-                        ))
-              {
-# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && 
(NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE)
-                arg_type type = a.arg[dp->arg_index].type;
-# endif
-                int flags = dp->flags;
-                int has_width;
-                size_t width;
-                int has_precision;
-                size_t precision;
-                size_t tmp_length;
-                DCHAR_T tmpbuf[700];
-                DCHAR_T *tmp;
-                DCHAR_T *pad_ptr;
-                DCHAR_T *p;
-
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = (unsigned int) (-arg);
-                          }
-                        else
-                          width = arg;
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-
-                has_precision = 0;
-                precision = 0;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-
-                /* POSIX specifies the default precision to be 6 for %f, %F,
-                   %e, %E, but not for %g, %G.  Implementations appear to use
-                   the same default precision also for %g, %G.  But for %a, %A,
-                   the default precision is 0.  */
-                if (!has_precision)
-                  if (!(dp->conversion == 'a' || dp->conversion == 'A'))
-                    precision = 6;
-
-                /* Allocate a temporary buffer of sufficient size.  */
-# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE
-                tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG 
+ 1);
-# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE
-                tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0);
-# elif NEED_PRINTF_LONG_DOUBLE
-                tmp_length = LDBL_DIG + 1;
-# elif NEED_PRINTF_DOUBLE
-                tmp_length = DBL_DIG + 1;
-# else
-                tmp_length = 0;
-# endif
-                if (tmp_length < precision)
-                  tmp_length = precision;
-# if NEED_PRINTF_LONG_DOUBLE
-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-                if (type == TYPE_LONGDOUBLE)
-#  endif
-                  if (dp->conversion == 'f' || dp->conversion == 'F')
-                    {
-                      long double arg = a.arg[dp->arg_index].a.a_longdouble;
-                      if (!(isnanl (arg) || arg + arg == arg))
-                        {
-                          /* arg is finite and nonzero.  */
-                          int exponent = floorlog10l (arg < 0 ? -arg : arg);
-                          if (exponent >= 0 && tmp_length < exponent + 
precision)
-                            tmp_length = exponent + precision;
-                        }
-                    }
-# endif
-# if NEED_PRINTF_DOUBLE
-#  if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
-                if (type == TYPE_DOUBLE)
-#  endif
-                  if (dp->conversion == 'f' || dp->conversion == 'F')
-                    {
-                      double arg = a.arg[dp->arg_index].a.a_double;
-                      if (!(isnand (arg) || arg + arg == arg))
-                        {
-                          /* arg is finite and nonzero.  */
-                          int exponent = floorlog10 (arg < 0 ? -arg : arg);
-                          if (exponent >= 0 && tmp_length < exponent + 
precision)
-                            tmp_length = exponent + precision;
-                        }
-                    }
-# endif
-                /* Account for sign, decimal point etc. */
-                tmp_length = xsum (tmp_length, 12);
-
-                if (tmp_length < width)
-                  tmp_length = width;
-
-                tmp_length = xsum (tmp_length, 1); /* account for trailing NUL 
*/
-
-                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
-                  tmp = tmpbuf;
-                else
-                  {
-                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
-
-                    if (size_overflow_p (tmp_memsize))
-                      /* Overflow, would lead to out of memory.  */
-                      goto out_of_memory;
-                    tmp = (DCHAR_T *) malloc (tmp_memsize);
-                    if (tmp == NULL)
-                      /* Out of memory.  */
-                      goto out_of_memory;
-                  }
-
-                pad_ptr = NULL;
-                p = tmp;
-
-# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-                if (type == TYPE_LONGDOUBLE)
-#  endif
-                  {
-                    long double arg = a.arg[dp->arg_index].a.a_longdouble;
-
-                    if (isnanl (arg))
-                      {
-                        if (dp->conversion >= 'A' && dp->conversion <= 'Z')
-                          {
-                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
-                          }
-                        else
-                          {
-                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
-                          }
-                      }
-                    else
-                      {
-                        int sign = 0;
-                        DECL_LONG_DOUBLE_ROUNDING
-
-                        BEGIN_LONG_DOUBLE_ROUNDING ();
-
-                        if (signbit (arg)) /* arg < 0.0L or negative zero */
-                          {
-                            sign = -1;
-                            arg = -arg;
-                          }
-
-                        if (sign < 0)
-                          *p++ = '-';
-                        else if (flags & FLAG_SHOWSIGN)
-                          *p++ = '+';
-                        else if (flags & FLAG_SPACE)
-                          *p++ = ' ';
-
-                        if (arg > 0.0L && arg + arg == arg)
-                          {
-                            if (dp->conversion >= 'A' && dp->conversion <= 'Z')
-                              {
-                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
-                              }
-                            else
-                              {
-                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
-                              }
-                          }
-                        else
-                          {
-#  if NEED_PRINTF_LONG_DOUBLE
-                            pad_ptr = p;
-
-                            if (dp->conversion == 'f' || dp->conversion == 'F')
-                              {
-                                char *digits;
-                                size_t ndigits;
-
-                                digits =
-                                  scale10_round_decimal_long_double (arg, 
precision);
-                                if (digits == NULL)
-                                  {
-                                    END_LONG_DOUBLE_ROUNDING ();
-                                    goto out_of_memory;
-                                  }
-                                ndigits = strlen (digits);
-
-                                if (ndigits > precision)
-                                  do
-                                    {
-                                      --ndigits;
-                                      *p++ = digits[ndigits];
-                                    }
-                                  while (ndigits > precision);
-                                else
-                                  *p++ = '0';
-                                /* Here ndigits <= precision.  */
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > ndigits; precision--)
-                                      *p++ = '0';
-                                    while (ndigits > 0)
-                                      {
-                                        --ndigits;
-                                        *p++ = digits[ndigits];
-                                      }
-                                  }
-
-                                free (digits);
-                              }
-                            else if (dp->conversion == 'e' || dp->conversion 
== 'E')
-                              {
-                                int exponent;
-
-                                if (arg == 0.0L)
-                                  {
-                                    exponent = 0;
-                                    *p++ = '0';
-                                    if ((flags & FLAG_ALT) || precision > 0)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        for (; precision > 0; precision--)
-                                          *p++ = '0';
-                                      }
-                                  }
-                                else
-                                  {
-                                    /* arg > 0.0L.  */
-                                    int adjusted;
-                                    char *digits;
-                                    size_t ndigits;
-
-                                    exponent = floorlog10l (arg);
-                                    adjusted = 0;
-                                    for (;;)
-                                      {
-                                        digits =
-                                          scale10_round_decimal_long_double 
(arg,
-                                                                             
(int)precision - exponent);
-                                        if (digits == NULL)
-                                          {
-                                            END_LONG_DOUBLE_ROUNDING ();
-                                            goto out_of_memory;
-                                          }
-                                        ndigits = strlen (digits);
-
-                                        if (ndigits == precision + 1)
-                                          break;
-                                        if (ndigits < precision
-                                            || ndigits > precision + 2)
-                                          /* The exponent was not guessed
-                                             precisely enough.  */
-                                          abort ();
-                                        if (adjusted)
-                                          /* None of two values of exponent is
-                                             the right one.  Prevent an endless
-                                             loop.  */
-                                          abort ();
-                                        free (digits);
-                                        if (ndigits == precision)
-                                          exponent -= 1;
-                                        else
-                                          exponent += 1;
-                                        adjusted = 1;
-                                      }
-                                    /* Here ndigits = precision+1.  */
-                                    if (is_borderline (digits, precision))
-                                      {
-                                        /* Maybe the exponent guess was too 
high
-                                           and a smaller exponent can be 
reached
-                                           by turning a 10...0 into 9...9x.  */
-                                        char *digits2 =
-                                          scale10_round_decimal_long_double 
(arg,
-                                                                             
(int)precision - exponent + 1);
-                                        if (digits2 == NULL)
-                                          {
-                                            free (digits);
-                                            END_LONG_DOUBLE_ROUNDING ();
-                                            goto out_of_memory;
-                                          }
-                                        if (strlen (digits2) == precision + 1)
-                                          {
-                                            free (digits);
-                                            digits = digits2;
-                                            exponent -= 1;
-                                          }
-                                        else
-                                          free (digits2);
-                                      }
-                                    /* Here ndigits = precision+1.  */
-
-                                    *p++ = digits[--ndigits];
-                                    if ((flags & FLAG_ALT) || precision > 0)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        while (ndigits > 0)
-                                          {
-                                            --ndigits;
-                                            *p++ = digits[ndigits];
-                                          }
-                                      }
-
-                                    free (digits);
-                                  }
-
-                                *p++ = dp->conversion; /* 'e' or 'E' */
-#   if WIDE_CHAR_VERSION
-                                {
-                                  static const wchar_t decimal_format[] =
-                                    { '%', '+', '.', '2', 'd', '\0' };
-                                  SNPRINTF (p, 6 + 1, decimal_format, 
exponent);
-                                }
-                                while (*p != '\0')
-                                  p++;
-#   else
-                                if (sizeof (DCHAR_T) == 1)
-                                  {
-                                    sprintf ((char *) p, "%+.2d", exponent);
-                                    while (*p != '\0')
-                                      p++;
-                                  }
-                                else
-                                  {
-                                    char expbuf[6 + 1];
-                                    const char *ep;
-                                    sprintf (expbuf, "%+.2d", exponent);
-                                    for (ep = expbuf; (*p = *ep) != '\0'; ep++)
-                                      p++;
-                                  }
-#   endif
-                              }
-                            else if (dp->conversion == 'g' || dp->conversion 
== 'G')
-                              {
-                                if (precision == 0)
-                                  precision = 1;
-                                /* precision >= 1.  */
-
-                                if (arg == 0.0L)
-                                  /* The exponent is 0, >= -4, < precision.
-                                     Use fixed-point notation.  */
-                                  {
-                                    size_t ndigits = precision;
-                                    /* Number of trailing zeroes that have to 
be
-                                       dropped.  */
-                                    size_t nzeroes =
-                                      (flags & FLAG_ALT ? 0 : precision - 1);
-
-                                    --ndigits;
-                                    *p++ = '0';
-                                    if ((flags & FLAG_ALT) || ndigits > 
nzeroes)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        while (ndigits > nzeroes)
-                                          {
-                                            --ndigits;
-                                            *p++ = '0';
-                                          }
-                                      }
-                                  }
-                                else
-                                  {
-                                    /* arg > 0.0L.  */
-                                    int exponent;
-                                    int adjusted;
-                                    char *digits;
-                                    size_t ndigits;
-                                    size_t nzeroes;
-
-                                    exponent = floorlog10l (arg);
-                                    adjusted = 0;
-                                    for (;;)
-                                      {
-                                        digits =
-                                          scale10_round_decimal_long_double 
(arg,
-                                                                             
(int)(precision - 1) - exponent);
-                                        if (digits == NULL)
-                                          {
-                                            END_LONG_DOUBLE_ROUNDING ();
-                                            goto out_of_memory;
-                                          }
-                                        ndigits = strlen (digits);
-
-                                        if (ndigits == precision)
-                                          break;
-                                        if (ndigits < precision - 1
-                                            || ndigits > precision + 1)
-                                          /* The exponent was not guessed
-                                             precisely enough.  */
-                                          abort ();
-                                        if (adjusted)
-                                          /* None of two values of exponent is
-                                             the right one.  Prevent an endless
-                                             loop.  */
-                                          abort ();
-                                        free (digits);
-                                        if (ndigits < precision)
-                                          exponent -= 1;
-                                        else
-                                          exponent += 1;
-                                        adjusted = 1;
-                                      }
-                                    /* Here ndigits = precision.  */
-                                    if (is_borderline (digits, precision - 1))
-                                      {
-                                        /* Maybe the exponent guess was too 
high
-                                           and a smaller exponent can be 
reached
-                                           by turning a 10...0 into 9...9x.  */
-                                        char *digits2 =
-                                          scale10_round_decimal_long_double 
(arg,
-                                                                             
(int)(precision - 1) - exponent + 1);
-                                        if (digits2 == NULL)
-                                          {
-                                            free (digits);
-                                            END_LONG_DOUBLE_ROUNDING ();
-                                            goto out_of_memory;
-                                          }
-                                        if (strlen (digits2) == precision)
-                                          {
-                                            free (digits);
-                                            digits = digits2;
-                                            exponent -= 1;
-                                          }
-                                        else
-                                          free (digits2);
-                                      }
-                                    /* Here ndigits = precision.  */
-
-                                    /* Determine the number of trailing zeroes
-                                       that have to be dropped.  */
-                                    nzeroes = 0;
-                                    if ((flags & FLAG_ALT) == 0)
-                                      while (nzeroes < ndigits
-                                             && digits[nzeroes] == '0')
-                                        nzeroes++;
-
-                                    /* The exponent is now determined.  */
-                                    if (exponent >= -4
-                                        && exponent < (long)precision)
-                                      {
-                                        /* Fixed-point notation:
-                                           max(exponent,0)+1 digits, then the
-                                           decimal point, then the remaining
-                                           digits without trailing zeroes.  */
-                                        if (exponent >= 0)
-                                          {
-                                            size_t count = exponent + 1;
-                                            /* Note: count <= precision = 
ndigits.  */
-                                            for (; count > 0; count--)
-                                              *p++ = digits[--ndigits];
-                                            if ((flags & FLAG_ALT) || ndigits 
> nzeroes)
-                                              {
-                                                *p++ = decimal_point_char ();
-                                                while (ndigits > nzeroes)
-                                                  {
-                                                    --ndigits;
-                                                    *p++ = digits[ndigits];
-                                                  }
-                                              }
-                                          }
-                                        else
-                                          {
-                                            size_t count = -exponent - 1;
-                                            *p++ = '0';
-                                            *p++ = decimal_point_char ();
-                                            for (; count > 0; count--)
-                                              *p++ = '0';
-                                            while (ndigits > nzeroes)
-                                              {
-                                                --ndigits;
-                                                *p++ = digits[ndigits];
-                                              }
-                                          }
-                                      }
-                                    else
-                                      {
-                                        /* Exponential notation.  */
-                                        *p++ = digits[--ndigits];
-                                        if ((flags & FLAG_ALT) || ndigits > 
nzeroes)
-                                          {
-                                            *p++ = decimal_point_char ();
-                                            while (ndigits > nzeroes)
-                                              {
-                                                --ndigits;
-                                                *p++ = digits[ndigits];
-                                              }
-                                          }
-                                        *p++ = dp->conversion - 'G' + 'E'; /* 
'e' or 'E' */
-#   if WIDE_CHAR_VERSION
-                                        {
-                                          static const wchar_t 
decimal_format[] =
-                                            { '%', '+', '.', '2', 'd', '\0' };
-                                          SNPRINTF (p, 6 + 1, decimal_format, 
exponent);
-                                        }
-                                        while (*p != '\0')
-                                          p++;
-#   else
-                                        if (sizeof (DCHAR_T) == 1)
-                                          {
-                                            sprintf ((char *) p, "%+.2d", 
exponent);
-                                            while (*p != '\0')
-                                              p++;
-                                          }
-                                        else
-                                          {
-                                            char expbuf[6 + 1];
-                                            const char *ep;
-                                            sprintf (expbuf, "%+.2d", 
exponent);
-                                            for (ep = expbuf; (*p = *ep) != 
'\0'; ep++)
-                                              p++;
-                                          }
-#   endif
-                                      }
-
-                                    free (digits);
-                                  }
-                              }
-                            else
-                              abort ();
-#  else
-                            /* arg is finite.  */
-                            if (!(arg == 0.0L))
-                              abort ();
-
-                            pad_ptr = p;
-
-                            if (dp->conversion == 'f' || dp->conversion == 'F')
-                              {
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                              }
-                            else if (dp->conversion == 'e' || dp->conversion 
== 'E')
-                              {
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                                *p++ = dp->conversion; /* 'e' or 'E' */
-                                *p++ = '+';
-                                *p++ = '0';
-                                *p++ = '0';
-                              }
-                            else if (dp->conversion == 'g' || dp->conversion 
== 'G')
-                              {
-                                *p++ = '0';
-                                if (flags & FLAG_ALT)
-                                  {
-                                    size_t ndigits =
-                                      (precision > 0 ? precision - 1 : 0);
-                                    *p++ = decimal_point_char ();
-                                    for (; ndigits > 0; --ndigits)
-                                      *p++ = '0';
-                                  }
-                              }
-                            else if (dp->conversion == 'a' || dp->conversion 
== 'A')
-                              {
-                                *p++ = '0';
-                                *p++ = dp->conversion - 'A' + 'X';
-                                pad_ptr = p;
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                                *p++ = dp->conversion - 'A' + 'P';
-                                *p++ = '+';
-                                *p++ = '0';
-                              }
-                            else
-                              abort ();
-#  endif
-                          }
-
-                        END_LONG_DOUBLE_ROUNDING ();
-                      }
-                  }
-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-                else
-#  endif
-# endif
-# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
-                  {
-                    double arg = a.arg[dp->arg_index].a.a_double;
-
-                    if (isnand (arg))
-                      {
-                        if (dp->conversion >= 'A' && dp->conversion <= 'Z')
-                          {
-                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
-                          }
-                        else
-                          {
-                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
-                          }
-                      }
-                    else
-                      {
-                        int sign = 0;
-
-                        if (signbit (arg)) /* arg < 0.0 or negative zero */
-                          {
-                            sign = -1;
-                            arg = -arg;
-                          }
-
-                        if (sign < 0)
-                          *p++ = '-';
-                        else if (flags & FLAG_SHOWSIGN)
-                          *p++ = '+';
-                        else if (flags & FLAG_SPACE)
-                          *p++ = ' ';
-
-                        if (arg > 0.0 && arg + arg == arg)
-                          {
-                            if (dp->conversion >= 'A' && dp->conversion <= 'Z')
-                              {
-                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
-                              }
-                            else
-                              {
-                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
-                              }
-                          }
-                        else
-                          {
-#  if NEED_PRINTF_DOUBLE
-                            pad_ptr = p;
-
-                            if (dp->conversion == 'f' || dp->conversion == 'F')
-                              {
-                                char *digits;
-                                size_t ndigits;
-
-                                digits =
-                                  scale10_round_decimal_double (arg, 
precision);
-                                if (digits == NULL)
-                                  goto out_of_memory;
-                                ndigits = strlen (digits);
-
-                                if (ndigits > precision)
-                                  do
-                                    {
-                                      --ndigits;
-                                      *p++ = digits[ndigits];
-                                    }
-                                  while (ndigits > precision);
-                                else
-                                  *p++ = '0';
-                                /* Here ndigits <= precision.  */
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > ndigits; precision--)
-                                      *p++ = '0';
-                                    while (ndigits > 0)
-                                      {
-                                        --ndigits;
-                                        *p++ = digits[ndigits];
-                                      }
-                                  }
-
-                                free (digits);
-                              }
-                            else if (dp->conversion == 'e' || dp->conversion 
== 'E')
-                              {
-                                int exponent;
-
-                                if (arg == 0.0)
-                                  {
-                                    exponent = 0;
-                                    *p++ = '0';
-                                    if ((flags & FLAG_ALT) || precision > 0)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        for (; precision > 0; precision--)
-                                          *p++ = '0';
-                                      }
-                                  }
-                                else
-                                  {
-                                    /* arg > 0.0.  */
-                                    int adjusted;
-                                    char *digits;
-                                    size_t ndigits;
-
-                                    exponent = floorlog10 (arg);
-                                    adjusted = 0;
-                                    for (;;)
-                                      {
-                                        digits =
-                                          scale10_round_decimal_double (arg,
-                                                                        
(int)precision - exponent);
-                                        if (digits == NULL)
-                                          goto out_of_memory;
-                                        ndigits = strlen (digits);
-
-                                        if (ndigits == precision + 1)
-                                          break;
-                                        if (ndigits < precision
-                                            || ndigits > precision + 2)
-                                          /* The exponent was not guessed
-                                             precisely enough.  */
-                                          abort ();
-                                        if (adjusted)
-                                          /* None of two values of exponent is
-                                             the right one.  Prevent an endless
-                                             loop.  */
-                                          abort ();
-                                        free (digits);
-                                        if (ndigits == precision)
-                                          exponent -= 1;
-                                        else
-                                          exponent += 1;
-                                        adjusted = 1;
-                                      }
-                                    /* Here ndigits = precision+1.  */
-                                    if (is_borderline (digits, precision))
-                                      {
-                                        /* Maybe the exponent guess was too 
high
-                                           and a smaller exponent can be 
reached
-                                           by turning a 10...0 into 9...9x.  */
-                                        char *digits2 =
-                                          scale10_round_decimal_double (arg,
-                                                                        
(int)precision - exponent + 1);
-                                        if (digits2 == NULL)
-                                          {
-                                            free (digits);
-                                            goto out_of_memory;
-                                          }
-                                        if (strlen (digits2) == precision + 1)
-                                          {
-                                            free (digits);
-                                            digits = digits2;
-                                            exponent -= 1;
-                                          }
-                                        else
-                                          free (digits2);
-                                      }
-                                    /* Here ndigits = precision+1.  */
-
-                                    *p++ = digits[--ndigits];
-                                    if ((flags & FLAG_ALT) || precision > 0)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        while (ndigits > 0)
-                                          {
-                                            --ndigits;
-                                            *p++ = digits[ndigits];
-                                          }
-                                      }
-
-                                    free (digits);
-                                  }
-
-                                *p++ = dp->conversion; /* 'e' or 'E' */
-#   if WIDE_CHAR_VERSION
-                                {
-                                  static const wchar_t decimal_format[] =
-                                    /* Produce the same number of exponent 
digits
-                                       as the native printf implementation.  */
-#    if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-                                    { '%', '+', '.', '3', 'd', '\0' };
-#    else
-                                    { '%', '+', '.', '2', 'd', '\0' };
-#    endif
-                                  SNPRINTF (p, 6 + 1, decimal_format, 
exponent);
-                                }
-                                while (*p != '\0')
-                                  p++;
-#   else
-                                {
-                                  static const char decimal_format[] =
-                                    /* Produce the same number of exponent 
digits
-                                       as the native printf implementation.  */
-#    if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-                                    "%+.3d";
-#    else
-                                    "%+.2d";
-#    endif
-                                  if (sizeof (DCHAR_T) == 1)
-                                    {
-                                      sprintf ((char *) p, decimal_format, 
exponent);
-                                      while (*p != '\0')
-                                        p++;
-                                    }
-                                  else
-                                    {
-                                      char expbuf[6 + 1];
-                                      const char *ep;
-                                      sprintf (expbuf, decimal_format, 
exponent);
-                                      for (ep = expbuf; (*p = *ep) != '\0'; 
ep++)
-                                        p++;
-                                    }
-                                }
-#   endif
-                              }
-                            else if (dp->conversion == 'g' || dp->conversion 
== 'G')
-                              {
-                                if (precision == 0)
-                                  precision = 1;
-                                /* precision >= 1.  */
-
-                                if (arg == 0.0)
-                                  /* The exponent is 0, >= -4, < precision.
-                                     Use fixed-point notation.  */
-                                  {
-                                    size_t ndigits = precision;
-                                    /* Number of trailing zeroes that have to 
be
-                                       dropped.  */
-                                    size_t nzeroes =
-                                      (flags & FLAG_ALT ? 0 : precision - 1);
-
-                                    --ndigits;
-                                    *p++ = '0';
-                                    if ((flags & FLAG_ALT) || ndigits > 
nzeroes)
-                                      {
-                                        *p++ = decimal_point_char ();
-                                        while (ndigits > nzeroes)
-                                          {
-                                            --ndigits;
-                                            *p++ = '0';
-                                          }
-                                      }
-                                  }
-                                else
-                                  {
-                                    /* arg > 0.0.  */
-                                    int exponent;
-                                    int adjusted;
-                                    char *digits;
-                                    size_t ndigits;
-                                    size_t nzeroes;
-
-                                    exponent = floorlog10 (arg);
-                                    adjusted = 0;
-                                    for (;;)
-                                      {
-                                        digits =
-                                          scale10_round_decimal_double (arg,
-                                                                        
(int)(precision - 1) - exponent);
-                                        if (digits == NULL)
-                                          goto out_of_memory;
-                                        ndigits = strlen (digits);
-
-                                        if (ndigits == precision)
-                                          break;
-                                        if (ndigits < precision - 1
-                                            || ndigits > precision + 1)
-                                          /* The exponent was not guessed
-                                             precisely enough.  */
-                                          abort ();
-                                        if (adjusted)
-                                          /* None of two values of exponent is
-                                             the right one.  Prevent an endless
-                                             loop.  */
-                                          abort ();
-                                        free (digits);
-                                        if (ndigits < precision)
-                                          exponent -= 1;
-                                        else
-                                          exponent += 1;
-                                        adjusted = 1;
-                                      }
-                                    /* Here ndigits = precision.  */
-                                    if (is_borderline (digits, precision - 1))
-                                      {
-                                        /* Maybe the exponent guess was too 
high
-                                           and a smaller exponent can be 
reached
-                                           by turning a 10...0 into 9...9x.  */
-                                        char *digits2 =
-                                          scale10_round_decimal_double (arg,
-                                                                        
(int)(precision - 1) - exponent + 1);
-                                        if (digits2 == NULL)
-                                          {
-                                            free (digits);
-                                            goto out_of_memory;
-                                          }
-                                        if (strlen (digits2) == precision)
-                                          {
-                                            free (digits);
-                                            digits = digits2;
-                                            exponent -= 1;
-                                          }
-                                        else
-                                          free (digits2);
-                                      }
-                                    /* Here ndigits = precision.  */
-
-                                    /* Determine the number of trailing zeroes
-                                       that have to be dropped.  */
-                                    nzeroes = 0;
-                                    if ((flags & FLAG_ALT) == 0)
-                                      while (nzeroes < ndigits
-                                             && digits[nzeroes] == '0')
-                                        nzeroes++;
-
-                                    /* The exponent is now determined.  */
-                                    if (exponent >= -4
-                                        && exponent < (long)precision)
-                                      {
-                                        /* Fixed-point notation:
-                                           max(exponent,0)+1 digits, then the
-                                           decimal point, then the remaining
-                                           digits without trailing zeroes.  */
-                                        if (exponent >= 0)
-                                          {
-                                            size_t count = exponent + 1;
-                                            /* Note: count <= precision = 
ndigits.  */
-                                            for (; count > 0; count--)
-                                              *p++ = digits[--ndigits];
-                                            if ((flags & FLAG_ALT) || ndigits 
> nzeroes)
-                                              {
-                                                *p++ = decimal_point_char ();
-                                                while (ndigits > nzeroes)
-                                                  {
-                                                    --ndigits;
-                                                    *p++ = digits[ndigits];
-                                                  }
-                                              }
-                                          }
-                                        else
-                                          {
-                                            size_t count = -exponent - 1;
-                                            *p++ = '0';
-                                            *p++ = decimal_point_char ();
-                                            for (; count > 0; count--)
-                                              *p++ = '0';
-                                            while (ndigits > nzeroes)
-                                              {
-                                                --ndigits;
-                                                *p++ = digits[ndigits];
-                                              }
-                                          }
-                                      }
-                                    else
-                                      {
-                                        /* Exponential notation.  */
-                                        *p++ = digits[--ndigits];
-                                        if ((flags & FLAG_ALT) || ndigits > 
nzeroes)
-                                          {
-                                            *p++ = decimal_point_char ();
-                                            while (ndigits > nzeroes)
-                                              {
-                                                --ndigits;
-                                                *p++ = digits[ndigits];
-                                              }
-                                          }
-                                        *p++ = dp->conversion - 'G' + 'E'; /* 
'e' or 'E' */
-#   if WIDE_CHAR_VERSION
-                                        {
-                                          static const wchar_t 
decimal_format[] =
-                                            /* Produce the same number of 
exponent digits
-                                               as the native printf 
implementation.  */
-#    if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-                                            { '%', '+', '.', '3', 'd', '\0' };
-#    else
-                                            { '%', '+', '.', '2', 'd', '\0' };
-#    endif
-                                          SNPRINTF (p, 6 + 1, decimal_format, 
exponent);
-                                        }
-                                        while (*p != '\0')
-                                          p++;
-#   else
-                                        {
-                                          static const char decimal_format[] =
-                                            /* Produce the same number of 
exponent digits
-                                               as the native printf 
implementation.  */
-#    if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-                                            "%+.3d";
-#    else
-                                            "%+.2d";
-#    endif
-                                          if (sizeof (DCHAR_T) == 1)
-                                            {
-                                              sprintf ((char *) p, 
decimal_format, exponent);
-                                              while (*p != '\0')
-                                                p++;
-                                            }
-                                          else
-                                            {
-                                              char expbuf[6 + 1];
-                                              const char *ep;
-                                              sprintf (expbuf, decimal_format, 
exponent);
-                                              for (ep = expbuf; (*p = *ep) != 
'\0'; ep++)
-                                                p++;
-                                            }
-                                        }
-#   endif
-                                      }
-
-                                    free (digits);
-                                  }
-                              }
-                            else
-                              abort ();
-#  else
-                            /* arg is finite.  */
-                            if (!(arg == 0.0))
-                              abort ();
-
-                            pad_ptr = p;
-
-                            if (dp->conversion == 'f' || dp->conversion == 'F')
-                              {
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                              }
-                            else if (dp->conversion == 'e' || dp->conversion 
== 'E')
-                              {
-                                *p++ = '0';
-                                if ((flags & FLAG_ALT) || precision > 0)
-                                  {
-                                    *p++ = decimal_point_char ();
-                                    for (; precision > 0; precision--)
-                                      *p++ = '0';
-                                  }
-                                *p++ = dp->conversion; /* 'e' or 'E' */
-                                *p++ = '+';
-                                /* Produce the same number of exponent digits 
as
-                                   the native printf implementation.  */
-#   if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-                                *p++ = '0';
-#   endif
-                                *p++ = '0';
-                                *p++ = '0';
-                              }
-                            else if (dp->conversion == 'g' || dp->conversion 
== 'G')
-                              {
-                                *p++ = '0';
-                                if (flags & FLAG_ALT)
-                                  {
-                                    size_t ndigits =
-                                      (precision > 0 ? precision - 1 : 0);
-                                    *p++ = decimal_point_char ();
-                                    for (; ndigits > 0; --ndigits)
-                                      *p++ = '0';
-                                  }
-                              }
-                            else
-                              abort ();
-#  endif
-                          }
-                      }
-                  }
-# endif
-
-                /* The generated string now extends from tmp to p, with the
-                   zero padding insertion point being at pad_ptr.  */
-                if (has_width && p - tmp < width)
-                  {
-                    size_t pad = width - (p - tmp);
-                    DCHAR_T *end = p + pad;
-
-                    if (flags & FLAG_LEFT)
-                      {
-                        /* Pad with spaces on the right.  */
-                        for (; pad > 0; pad--)
-                          *p++ = ' ';
-                      }
-                    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
-                      {
-                        /* Pad with zeroes.  */
-                        DCHAR_T *q = end;
-
-                        while (p > pad_ptr)
-                          *--q = *--p;
-                        for (; pad > 0; pad--)
-                          *p++ = '0';
-                      }
-                    else
-                      {
-                        /* Pad with spaces on the left.  */
-                        DCHAR_T *q = end;
-
-                        while (p > tmp)
-                          *--q = *--p;
-                        for (; pad > 0; pad--)
-                          *p++ = ' ';
-                      }
-
-                    p = end;
-                  }
-
-                {
-                  size_t count = p - tmp;
-
-                  if (count >= tmp_length)
-                    /* tmp_length was incorrectly calculated - fix the
-                       code above!  */
-                    abort ();
-
-                  /* Make room for the result.  */
-                  if (count >= allocated - length)
-                    {
-                      size_t n = xsum (length, count);
-
-                      ENSURE_ALLOCATION (n);
-                    }
-
-                  /* Append the result.  */
-                  memcpy (result + length, tmp, count * sizeof (DCHAR_T));
-                  if (tmp != tmpbuf)
-                    free (tmp);
-                  length += count;
-                }
-              }
-#endif
-            else
-              {
-                arg_type type = a.arg[dp->arg_index].type;
-                int flags = dp->flags;
-#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || 
ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                int has_width;
-                size_t width;
-#endif
-#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                int has_precision;
-                size_t precision;
-#endif
-#if NEED_PRINTF_UNBOUNDED_PRECISION
-                int prec_ourselves;
-#else
-#               define prec_ourselves 0
-#endif
-#if NEED_PRINTF_FLAG_LEFTADJUST
-#               define pad_ourselves 1
-#elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                int pad_ourselves;
-#else
-#               define pad_ourselves 0
-#endif
-                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];
-                TCHAR_T *tmp;
-#endif
-
-#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || 
ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                has_width = 0;
-                width = 0;
-                if (dp->width_start != dp->width_end)
-                  {
-                    if (dp->width_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->width_arg_index].a.a_int;
-                        if (arg < 0)
-                          {
-                            /* "A negative field width is taken as a '-' flag
-                                followed by a positive field width."  */
-                            flags |= FLAG_LEFT;
-                            width = (unsigned int) (-arg);
-                          }
-                        else
-                          width = arg;
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->width_start;
-
-                        do
-                          width = xsum (xtimes (width, 10), *digitp++ - '0');
-                        while (digitp != dp->width_end);
-                      }
-                    has_width = 1;
-                  }
-#endif
-
-#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || 
NEED_PRINTF_UNBOUNDED_PRECISION
-                has_precision = 0;
-                precision = 6;
-                if (dp->precision_start != dp->precision_end)
-                  {
-                    if (dp->precision_arg_index != ARG_NONE)
-                      {
-                        int arg;
-
-                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                          abort ();
-                        arg = a.arg[dp->precision_arg_index].a.a_int;
-                        /* "A negative precision is taken as if the precision
-                            were omitted."  */
-                        if (arg >= 0)
-                          {
-                            precision = arg;
-                            has_precision = 1;
-                          }
-                      }
-                    else
-                      {
-                        const FCHAR_T *digitp = dp->precision_start + 1;
-
-                        precision = 0;
-                        while (digitp != dp->precision_end)
-                          precision = xsum (xtimes (precision, 10), *digitp++ 
- '0');
-                        has_precision = 1;
-                      }
-                  }
-#endif
-
-                /* Decide whether to handle the precision ourselves.  */
-#if NEED_PRINTF_UNBOUNDED_PRECISION
-                switch (dp->conversion)
-                  {
-                  case 'd': case 'i': case 'u':
-                  case 'o':
-                  case 'x': case 'X': case 'p':
-                    prec_ourselves = has_precision && (precision > 0);
-                    break;
-                  default:
-                    prec_ourselves = 0;
-                    break;
-                  }
-#endif
-
-                /* Decide whether to perform the padding ourselves.  */
-#if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || 
NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION)
-                switch (dp->conversion)
-                  {
-# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
-                  /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need
-                     to perform the padding after this conversion.  Functions
-                     with unistdio extensions perform the padding based on
-                     character count rather than element count.  */
-                  case 'c': case 's':
-# endif
-# if NEED_PRINTF_FLAG_ZERO
-                  case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
-                  case 'a': case 'A':
-# endif
-                    pad_ourselves = 1;
-                    break;
-                  default:
-                    pad_ourselves = prec_ourselves;
-                    break;
-                  }
-#endif
-
-#if !USE_SNPRINTF
-                /* Allocate a temporary buffer of sufficient size for calling
-                   sprintf.  */
-                tmp_length =
-                  MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type,
-                                   flags, width, has_precision, precision,
-                                   pad_ourselves);
-
-                if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T))
-                  tmp = tmpbuf;
-                else
-                  {
-                    size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T));
-
-                    if (size_overflow_p (tmp_memsize))
-                      /* Overflow, would lead to out of memory.  */
-                      goto out_of_memory;
-                    tmp = (TCHAR_T *) malloc (tmp_memsize);
-                    if (tmp == NULL)
-                      /* Out of memory.  */
-                      goto out_of_memory;
-                  }
-#endif
-
-                /* Construct the format string for calling snprintf or
-                   sprintf.  */
-                fbp = buf;
-                *fbp++ = '%';
-#if NEED_PRINTF_FLAG_GROUPING
-                /* The underlying implementation doesn't support the ' flag.
-                   Produce no grouping characters in this case; this is
-                   acceptable because the grouping is locale dependent.  */
-#else
-                if (flags & FLAG_GROUP)
-                  *fbp++ = '\'';
-#endif
-                if (flags & FLAG_LEFT)
-                  *fbp++ = '-';
-                if (flags & FLAG_SHOWSIGN)
-                  *fbp++ = '+';
-                if (flags & FLAG_SPACE)
-                  *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)
-                      *fbp++ = '0';
-                    if (dp->width_start != dp->width_end)
-                      {
-                        size_t n = dp->width_end - dp->width_start;
-                        /* The width specification is known to consist only
-                           of standard ASCII characters.  */
-                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
-                          {
-                            memcpy (fbp, dp->width_start, n * sizeof 
(TCHAR_T));
-                            fbp += n;
-                          }
-                        else
-                          {
-                            const FCHAR_T *mp = dp->width_start;
-                            do
-                              *fbp++ = (unsigned char) *mp++;
-                            while (--n > 0);
-                          }
-                      }
-                  }
-                if (!prec_ourselves)
-                  {
-                    if (dp->precision_start != dp->precision_end)
-                      {
-                        size_t n = dp->precision_end - dp->precision_start;
-                        /* The precision specification is known to consist only
-                           of standard ASCII characters.  */
-                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
-                          {
-                            memcpy (fbp, dp->precision_start, n * sizeof 
(TCHAR_T));
-                            fbp += n;
-                          }
-                        else
-                          {
-                            const FCHAR_T *mp = dp->precision_start;
-                            do
-                              *fbp++ = (unsigned char) *mp++;
-                            while (--n > 0);
-                          }
-                      }
-                  }
-
-                switch (type)
-                  {
-#if HAVE_LONG_LONG_INT
-                  case TYPE_LONGLONGINT:
-                  case TYPE_ULONGLONGINT:
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-                    *fbp++ = 'I';
-                    *fbp++ = '6';
-                    *fbp++ = '4';
-                    break;
-# else
-                    *fbp++ = 'l';
-                    /*FALLTHROUGH*/
-# endif
-#endif
-                  case TYPE_LONGINT:
-                  case TYPE_ULONGINT:
-#if HAVE_WINT_T
-                  case TYPE_WIDE_CHAR:
-#endif
-#if HAVE_WCHAR_T
-                  case TYPE_WIDE_STRING:
-#endif
-                    *fbp++ = 'l';
-                    break;
-                  case TYPE_LONGDOUBLE:
-                    *fbp++ = 'L';
-                    break;
-                  default:
-                    break;
-                  }
-#if NEED_PRINTF_DIRECTIVE_F
-                if (dp->conversion == 'F')
-                  *fbp = 'f';
-                else
-#endif
-                  *fbp = dp->conversion;
-#if USE_SNPRINTF
-# 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 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 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
-                       of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes
-                       '4', '5', '6' into buf, not '4', '5', '\0'.)
-                     - 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 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
-                     
<http://msdn2.microsoft.com/en-us/library/ms175782(VS.80).aspx>
-                   So we should avoid %n in this situation.  */
-                fbp[1] = '\0';
-# endif
-#else
-                fbp[1] = '\0';
-#endif
-
-                /* Construct the arguments for calling snprintf or sprintf.  */
-                prefix_count = 0;
-                if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
-                  {
-                    if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
-                      abort ();
-                    prefixes[prefix_count++] = 
a.arg[dp->width_arg_index].a.a_int;
-                  }
-                if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
-                  {
-                    if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
-                      abort ();
-                    prefixes[prefix_count++] = 
a.arg[dp->precision_arg_index].a.a_int;
-                  }
-
-#if USE_SNPRINTF
-                /* The SNPRINTF result is appended after result[0..length].
-                   The latter is an array of DCHAR_T; SNPRINTF appends an
-                   array of TCHAR_T to it.  This is possible because
-                   sizeof (TCHAR_T) divides sizeof (DCHAR_T) and
-                   alignof (TCHAR_T) <= alignof (DCHAR_T).  */
-# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T))
-                /* Ensure that maxlen below will be >= 2.  Needed on BeOS,
-                   where an snprintf() with maxlen==1 acts like sprintf().  */
-                ENSURE_ALLOCATION (xsum (length,
-                                         (2 + TCHARS_PER_DCHAR - 1)
-                                         / TCHARS_PER_DCHAR));
-                /* Prepare checking whether snprintf returns the count
-                   via %n.  */
-                *(TCHAR_T *) (result + length) = '\0';
-#endif
-
-                orig_errno = errno;
-
-                for (;;)
-                  {
-                    int count = -1;
-
-#if USE_SNPRINTF
-                    int retcount = 0;
-                    size_t maxlen = allocated - length;
-                    /* SNPRINTF can fail if its second argument is
-                       > INT_MAX.  */
-                    if (maxlen > INT_MAX / TCHARS_PER_DCHAR)
-                      maxlen = INT_MAX / TCHARS_PER_DCHAR;
-                    maxlen = maxlen * TCHARS_PER_DCHAR;
-# define SNPRINTF_BUF(arg) \
-                    switch (prefix_count)                                   \
-                      {                                                     \
-                      case 0:                                               \
-                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
-                                             maxlen, buf,                   \
-                                             arg, &count);                  \
-                        break;                                              \
-                      case 1:                                               \
-                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
-                                             maxlen, buf,                   \
-                                             prefixes[0], arg, &count);     \
-                        break;                                              \
-                      case 2:                                               \
-                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
-                                             maxlen, buf,                   \
-                                             prefixes[0], prefixes[1], arg, \
-                                             &count);                       \
-                        break;                                              \
-                      default:                                              \
-                        abort ();                                           \
-                      }
-#else
-# define SNPRINTF_BUF(arg) \
-                    switch (prefix_count)                                   \
-                      {                                                     \
-                      case 0:                                               \
-                        count = sprintf (tmp, buf, arg);                    \
-                        break;                                              \
-                      case 1:                                               \
-                        count = sprintf (tmp, buf, prefixes[0], arg);       \
-                        break;                                              \
-                      case 2:                                               \
-                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
-                                         arg);                              \
-                        break;                                              \
-                      default:                                              \
-                        abort ();                                           \
-                      }
-#endif
-
-                    errno = 0;
-                    switch (type)
-                      {
-                      case TYPE_SCHAR:
-                        {
-                          int arg = a.arg[dp->arg_index].a.a_schar;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UCHAR:
-                        {
-                          unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_SHORT:
-                        {
-                          int arg = a.arg[dp->arg_index].a.a_short;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_USHORT:
-                        {
-                          unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_INT:
-                        {
-                          int arg = a.arg[dp->arg_index].a.a_int;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_UINT:
-                        {
-                          unsigned int arg = a.arg[dp->arg_index].a.a_uint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_LONGINT:
-                        {
-                          long int arg = a.arg[dp->arg_index].a.a_longint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_ULONGINT:
-                        {
-                          unsigned long int arg = 
a.arg[dp->arg_index].a.a_ulongint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#if HAVE_LONG_LONG_INT
-                      case TYPE_LONGLONGINT:
-                        {
-                          long long int arg = 
a.arg[dp->arg_index].a.a_longlongint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_ULONGLONGINT:
-                        {
-                          unsigned long long int arg = 
a.arg[dp->arg_index].a.a_ulonglongint;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#endif
-                      case TYPE_DOUBLE:
-                        {
-                          double arg = a.arg[dp->arg_index].a.a_double;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_LONGDOUBLE:
-                        {
-                          long double arg = 
a.arg[dp->arg_index].a.a_longdouble;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      case TYPE_CHAR:
-                        {
-                          int arg = a.arg[dp->arg_index].a.a_char;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#if HAVE_WINT_T
-                      case TYPE_WIDE_CHAR:
-                        {
-                          wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#endif
-                      case TYPE_STRING:
-                        {
-                          const char *arg = a.arg[dp->arg_index].a.a_string;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#if HAVE_WCHAR_T
-                      case TYPE_WIDE_STRING:
-                        {
-                          const wchar_t *arg = 
a.arg[dp->arg_index].a.a_wide_string;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-#endif
-                      case TYPE_POINTER:
-                        {
-                          void *arg = a.arg[dp->arg_index].a.a_pointer;
-                          SNPRINTF_BUF (arg);
-                        }
-                        break;
-                      default:
-                        abort ();
-                      }
-
-#if USE_SNPRINTF
-                    /* Portability: Not all implementations of snprintf()
-                       are ISO C 99 compliant.  Determine the number of
-                       bytes that snprintf() has produced or would have
-                       produced.  */
-                    if (count >= 0)
-                      {
-                        /* Verify that snprintf() has NUL-terminated its
-                           result.  */
-                        if (count < maxlen
-                            && ((TCHAR_T *) (result + length)) [count] != '\0')
-                          abort ();
-                        /* Portability hack.  */
-                        if (retcount > count)
-                          count = retcount;
-                      }
-                    else
-                      {
-                        /* snprintf() doesn't understand the '%n'
-                           directive.  */
-                        if (fbp[1] != '\0')
-                          {
-                            /* Don't use the '%n' directive; instead, look
-                               at the snprintf() return value.  */
-                            fbp[1] = '\0';
-                            continue;
-                          }
-                        else
-                          {
-                            /* Look at the snprintf() return value.  */
-                            if (retcount < 0)
-                              {
-# if !HAVE_SNPRINTF_RETVAL_C99
-                                /* HP-UX 10.20 snprintf() is doubly deficient:
-                                   It doesn't understand the '%n' directive,
-                                   *and* it returns -1 (rather than the length
-                                   that would have been required) when the
-                                   buffer is too small.
-                                   But a failure at this point can also come
-                                   from other reasons than a too small buffer,
-                                   such as an invalid wide string argument to
-                                   the %ls directive, or possibly an invalid
-                                   floating-point argument.  */
-                                size_t tmp_length =
-                                  MAX_ROOM_NEEDED (&a, dp->arg_index,
-                                                   dp->conversion, type, flags,
-                                                   width, has_precision,
-                                                   precision, pad_ourselves);
-
-                                if (maxlen < tmp_length)
-                                  {
-                                    /* Make more room.  But try to do through
-                                       this reallocation only once.  */
-                                    size_t bigger_need =
-                                      xsum (length,
-                                            xsum (tmp_length,
-                                                  TCHARS_PER_DCHAR - 1)
-                                            / TCHARS_PER_DCHAR);
-                                    /* And always grow proportionally.
-                                       (There may be several arguments, each
-                                       needing a little more room than the
-                                       previous one.)  */
-                                    size_t bigger_need2 =
-                                      xsum (xtimes (allocated, 2), 12);
-                                    if (bigger_need < bigger_need2)
-                                      bigger_need = bigger_need2;
-                                    ENSURE_ALLOCATION (bigger_need);
-                                    continue;
-                                  }
-# endif
-                              }
-                            else
-                              count = retcount;
-                          }
-                      }
-#endif
-
-                    /* Attempt to handle failure.  */
-                    if (count < 0)
-                      {
-                        /* SNPRINTF or sprintf failed.  Save and use the errno
-                           that it has set, if any.  */
-                        int saved_errno = errno;
-
-                        if (!(result == resultbuf || result == NULL))
-                          free (result);
-                        if (buf_malloced != NULL)
-                          free (buf_malloced);
-                        CLEANUP ();
-                        errno =
-                          (saved_errno != 0
-                           ? saved_errno
-                           : (dp->conversion == 'c' || dp->conversion == 's'
-                              ? EILSEQ
-                              : EINVAL));
-                        return NULL;
-                      }
-
-#if USE_SNPRINTF
-                    /* Handle overflow of the allocated buffer.
-                       If such an overflow occurs, a C99 compliant snprintf()
-                       returns a count >= maxlen.  However, a non-compliant
-                       snprintf() function returns only count = maxlen - 1.  To
-                       cover both cases, test whether count >= maxlen - 1.  */
-                    if ((unsigned int) count + 1 >= maxlen)
-                      {
-                        /* If maxlen already has attained its allowed maximum,
-                           allocating more memory will not increase maxlen.
-                           Instead of looping, bail out.  */
-                        if (maxlen == INT_MAX / TCHARS_PER_DCHAR)
-                          goto overflow;
-                        else
-                          {
-                            /* Need at least (count + 1) * sizeof (TCHAR_T)
-                               bytes.  (The +1 is for the trailing NUL.)
-                               But ask for (count + 2) * sizeof (TCHAR_T)
-                               bytes, so that in the next round, we likely get
-                                 maxlen > (unsigned int) count + 1
-                               and so we don't get here again.
-                               And allocate proportionally, to avoid looping
-                               eternally if snprintf() reports a too small
-                               count.  */
-                            size_t n =
-                              xmax (xsum (length,
-                                          ((unsigned int) count + 2
-                                           + TCHARS_PER_DCHAR - 1)
-                                          / TCHARS_PER_DCHAR),
-                                    xtimes (allocated, 2));
-
-                            ENSURE_ALLOCATION (n);
-                            continue;
-                          }
-                      }
-#endif
-
-#if NEED_PRINTF_UNBOUNDED_PRECISION
-                    if (prec_ourselves)
-                      {
-                        /* Handle the precision.  */
-                        TCHAR_T *prec_ptr =
-# if USE_SNPRINTF
-                          (TCHAR_T *) (result + length);
-# else
-                          tmp;
-# endif
-                        size_t prefix_count;
-                        size_t move;
-
-                        prefix_count = 0;
-                        /* Put the additional zeroes after the sign.  */
-                        if (count >= 1
-                            && (*prec_ptr == '-' || *prec_ptr == '+'
-                                || *prec_ptr == ' '))
-                          prefix_count = 1;
-                        /* Put the additional zeroes after the 0x prefix if
-                           (flags & FLAG_ALT) || (dp->conversion == 'p').  */
-                        else if (count >= 2
-                                 && prec_ptr[0] == '0'
-                                 && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X'))
-                          prefix_count = 2;
-
-                        move = count - prefix_count;
-                        if (precision > move)
-                          {
-                            /* Insert zeroes.  */
-                            size_t insert = precision - move;
-                            TCHAR_T *prec_end;
-
-# if USE_SNPRINTF
-                            size_t n =
-                              xsum (length,
-                                    (count + insert + TCHARS_PER_DCHAR - 1)
-                                    / TCHARS_PER_DCHAR);
-                            length += (count + TCHARS_PER_DCHAR - 1) / 
TCHARS_PER_DCHAR;
-                            ENSURE_ALLOCATION (n);
-                            length -= (count + TCHARS_PER_DCHAR - 1) / 
TCHARS_PER_DCHAR;
-                            prec_ptr = (TCHAR_T *) (result + length);
-# endif
-
-                            prec_end = prec_ptr + count;
-                            prec_ptr += prefix_count;
-
-                            while (prec_end > prec_ptr)
-                              {
-                                prec_end--;
-                                prec_end[insert] = prec_end[0];
-                              }
-
-                            prec_end += insert;
-                            do
-                              *--prec_end = '0';
-                            while (prec_end > prec_ptr);
-
-                            count += insert;
-                          }
-                      }
-#endif
-
-#if !USE_SNPRINTF
-                    if (count >= tmp_length)
-                      /* tmp_length was incorrectly calculated - fix the
-                         code above!  */
-                      abort ();
-#endif
-
-#if !DCHAR_IS_TCHAR
-                    /* Convert from TCHAR_T[] to DCHAR_T[].  */
-                    if (dp->conversion == 'c' || dp->conversion == 's')
-                      {
-                        /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING
-                           TYPE_WIDE_STRING.
-                           The result string is not certainly ASCII.  */
-                        const TCHAR_T *tmpsrc;
-                        DCHAR_T *tmpdst;
-                        size_t tmpdst_len;
-                        /* This code assumes that TCHAR_T is 'char'.  */
-                        verify (sizeof (TCHAR_T) == 1);
-# if USE_SNPRINTF
-                        tmpsrc = (TCHAR_T *) (result + length);
-# else
-                        tmpsrc = tmp;
-# endif
-                        tmpdst =
-                          DCHAR_CONV_FROM_ENCODING (locale_charset (),
-                                                    iconveh_question_mark,
-                                                    tmpsrc, count,
-                                                    NULL,
-                                                    NULL, &tmpdst_len);
-                        if (tmpdst == NULL)
-                          {
-                            int saved_errno = errno;
-                            if (!(result == resultbuf || result == NULL))
-                              free (result);
-                            if (buf_malloced != NULL)
-                              free (buf_malloced);
-                            CLEANUP ();
-                            errno = saved_errno;
-                            return NULL;
-                          }
-                        ENSURE_ALLOCATION (xsum (length, tmpdst_len));
-                        DCHAR_CPY (result + length, tmpdst, tmpdst_len);
-                        free (tmpdst);
-                        count = tmpdst_len;
-                      }
-                    else
-                      {
-                        /* The result string is ASCII.
-                           Simple 1:1 conversion.  */
-# if USE_SNPRINTF
-                        /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a
-                           no-op conversion, in-place on the array starting
-                           at (result + length).  */
-                        if (sizeof (DCHAR_T) != sizeof (TCHAR_T))
-# endif
-                          {
-                            const TCHAR_T *tmpsrc;
-                            DCHAR_T *tmpdst;
-                            size_t n;
-
-# if USE_SNPRINTF
-                            if (result == resultbuf)
-                              {
-                                tmpsrc = (TCHAR_T *) (result + length);
-                                /* ENSURE_ALLOCATION will not move tmpsrc
-                                   (because it's part of resultbuf).  */
-                                ENSURE_ALLOCATION (xsum (length, count));
-                              }
-                            else
-                              {
-                                /* ENSURE_ALLOCATION will move the array
-                                   (because it uses realloc().  */
-                                ENSURE_ALLOCATION (xsum (length, count));
-                                tmpsrc = (TCHAR_T *) (result + length);
-                              }
-# else
-                            tmpsrc = tmp;
-                            ENSURE_ALLOCATION (xsum (length, count));
-# endif
-                            tmpdst = result + length;
-                            /* Copy backwards, because of overlapping.  */
-                            tmpsrc += count;
-                            tmpdst += count;
-                            for (n = count; n > 0; n--)
-                              *--tmpdst = (unsigned char) *--tmpsrc;
-                          }
-                      }
-#endif
-
-#if DCHAR_IS_TCHAR && !USE_SNPRINTF
-                    /* Make room for the result.  */
-                    if (count > allocated - length)
-                      {
-                        /* Need at least count elements.  But allocate
-                           proportionally.  */
-                        size_t n =
-                          xmax (xsum (length, count), xtimes (allocated, 2));
-
-                        ENSURE_ALLOCATION (n);
-                      }
-#endif
-
-                    /* Here count <= allocated - length.  */
-
-                    /* Perform padding.  */
-#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || 
NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
-                    if (pad_ourselves && has_width)
-                      {
-                        size_t w;
-# if ENABLE_UNISTDIO
-                        /* Outside POSIX, it's preferable to compare the width
-                           against the number of _characters_ of the converted
-                           value.  */
-                        w = DCHAR_MBSNLEN (result + length, count);
-# else
-                        /* The width is compared against the number of _bytes_
-                           of the converted value, says POSIX.  */
-                        w = count;
-# endif
-                        if (w < width)
-                          {
-                            size_t pad = width - w;
-
-                            /* Make room for the result.  */
-                            if (xsum (count, pad) > allocated - length)
-                              {
-                                /* Need at least count + pad elements.  But
-                                   allocate proportionally.  */
-                                size_t n =
-                                  xmax (xsum3 (length, count, pad),
-                                        xtimes (allocated, 2));
-
-# if USE_SNPRINTF
-                                length += count;
-                                ENSURE_ALLOCATION (n);
-                                length -= count;
-# else
-                                ENSURE_ALLOCATION (n);
-# endif
-                              }
-                            /* Here count + pad <= allocated - length.  */
-
-                            {
-# if !DCHAR_IS_TCHAR || USE_SNPRINTF
-                              DCHAR_T * const rp = result + length;
-# else
-                              DCHAR_T * const rp = tmp;
-# endif
-                              DCHAR_T *p = rp + count;
-                              DCHAR_T *end = p + pad;
-                              DCHAR_T *pad_ptr;
-# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
-                              if (dp->conversion == 'c'
-                                  || dp->conversion == 's')
-                                /* No zero-padding for string directives.  */
-                                pad_ptr = NULL;
-                              else
-# endif
-                                {
-                                  pad_ptr = (*rp == '-' ? rp + 1 : rp);
-                                  /* No zero-padding of "inf" and "nan".  */
-                                  if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z')
-                                      || (*pad_ptr >= 'a' && *pad_ptr <= 'z'))
-                                    pad_ptr = NULL;
-                                }
-                              /* The generated string now extends from rp to p,
-                                 with the zero padding insertion point being at
-                                 pad_ptr.  */
-
-                              count = count + pad; /* = end - rp */
-
-                              if (flags & FLAG_LEFT)
-                                {
-                                  /* Pad with spaces on the right.  */
-                                  for (; pad > 0; pad--)
-                                    *p++ = ' ';
-                                }
-                              else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
-                                {
-                                  /* Pad with zeroes.  */
-                                  DCHAR_T *q = end;
-
-                                  while (p > pad_ptr)
-                                    *--q = *--p;
-                                  for (; pad > 0; pad--)
-                                    *p++ = '0';
-                                }
-                              else
-                                {
-                                  /* Pad with spaces on the left.  */
-                                  DCHAR_T *q = end;
-
-                                  while (p > rp)
-                                    *--q = *--p;
-                                  for (; pad > 0; pad--)
-                                    *p++ = ' ';
-                                }
-                            }
-                          }
-                      }
-#endif
-
-                    /* Here still count <= allocated - length.  */
-
-#if !DCHAR_IS_TCHAR || USE_SNPRINTF
-                    /* The snprintf() result did fit.  */
-#else
-                    /* Append the sprintf() result.  */
-                    memcpy (result + length, tmp, count * sizeof (DCHAR_T));
-#endif
-#if !USE_SNPRINTF
-                    if (tmp != tmpbuf)
-                      free (tmp);
-#endif
-
-#if NEED_PRINTF_DIRECTIVE_F
-                    if (dp->conversion == 'F')
-                      {
-                        /* Convert the %f result to upper case for %F.  */
-                        DCHAR_T *rp = result + length;
-                        size_t rc;
-                        for (rc = count; rc > 0; rc--, rp++)
-                          if (*rp >= 'a' && *rp <= 'z')
-                            *rp = *rp - 'a' + 'A';
-                      }
-#endif
-
-                    length += count;
-                    break;
-                  }
-                errno = orig_errno;
-#undef pad_ourselves
-#undef prec_ourselves
-              }
-          }
-      }
-
-    /* Add the final NUL.  */
-    ENSURE_ALLOCATION (xsum (length, 1));
-    result[length] = '\0';
-
-    if (result != resultbuf && length + 1 < allocated)
-      {
-        /* Shrink the allocated memory if possible.  */
-        DCHAR_T *memory;
-
-        memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T));
-        if (memory != NULL)
-          result = memory;
-      }
-
-    if (buf_malloced != NULL)
-      free (buf_malloced);
-    CLEANUP ();
-    *lengthp = length;
-    /* Note that we can produce a big string of a length > INT_MAX.  POSIX
-       says that snprintf() fails with errno = EOVERFLOW in this case, but
-       that's only because snprintf() returns an 'int'.  This function does
-       not have this limitation.  */
-    return result;
-
-#if USE_SNPRINTF
-  overflow:
-    if (!(result == resultbuf || result == NULL))
-      free (result);
-    if (buf_malloced != NULL)
-      free (buf_malloced);
-    CLEANUP ();
-    errno = EOVERFLOW;
-    return NULL;
-#endif
-
-  out_of_memory:
-    if (!(result == resultbuf || result == NULL))
-      free (result);
-    if (buf_malloced != NULL)
-      free (buf_malloced);
-  out_of_memory_1:
-    CLEANUP ();
-    errno = ENOMEM;
-    return NULL;
-  }
-}
-
-#undef MAX_ROOM_NEEDED
-#undef TCHARS_PER_DCHAR
-#undef SNPRINTF
-#undef USE_SNPRINTF
-#undef DCHAR_SET
-#undef DCHAR_CPY
-#undef PRINTF_PARSE
-#undef DIRECTIVES
-#undef DIRECTIVE
-#undef DCHAR_IS_TCHAR
-#undef TCHAR_T
-#undef DCHAR_T
-#undef FCHAR_T
-#undef VASNPRINTF
diff --git a/grub-core/gnulib/vasnprintf.h b/grub-core/gnulib/vasnprintf.h
deleted file mode 100644
index 7658f505e..000000000
--- a/grub-core/gnulib/vasnprintf.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* vsprintf with automatic memory allocation.
-   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
-   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 _VASNPRINTF_H
-#define _VASNPRINTF_H
-
-/* Get va_list.  */
-#include <stdarg.h>
-
-/* Get size_t.  */
-#include <stddef.h>
-
-/* 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 _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 _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
-#else
-# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Write formatted output to a string dynamically allocated with malloc().
-   You can pass a preallocated buffer for the result in RESULTBUF and its
-   size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
-   If successful, return the address of the string (this may be = RESULTBUF
-   if no dynamic memory allocation was necessary) and set *LENGTHP to the
-   number of resulting bytes, excluding the trailing NUL.  Upon error, set
-   errno and return NULL.
-
-   When dynamic memory allocation occurs, the preallocated buffer is left
-   alone (with possibly modified contents).  This makes it possible to use
-   a statically allocated or stack-allocated buffer, like this:
-
-          char buf[100];
-          size_t len = sizeof (buf);
-          char *output = vasnprintf (buf, &len, format, args);
-          if (output == NULL)
-            ... error handling ...;
-          else
-            {
-              ... use the output string ...;
-              if (output != buf)
-                free (output);
-            }
-  */
-#if REPLACE_VASNPRINTF
-# define asnprintf rpl_asnprintf
-# define vasnprintf rpl_vasnprintf
-#endif
-extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, 
...)
-       _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4));
-extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char 
*format, va_list args)
-       _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 0));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _VASNPRINTF_H */
diff --git a/grub-core/gnulib/verify.h b/grub-core/gnulib/verify.h
deleted file mode 100644
index cb8e90b54..000000000
--- a/grub-core/gnulib/verify.h
+++ /dev/null
@@ -1,245 +0,0 @@
-/* Compile-time assert-like macros.
-
-   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
-   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 Paul Eggert, Bruno Haible, and Jim Meyering.  */
-
-#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.
-
-   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 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
-     expression of integral type, whose value is later verified to be
-     constant and nonnegative.
-
-   * Next this expression W is wrapped in a type
-     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.
-
-     One might think that an array size check would have the same
-     effect, that is, that the type struct { unsigned int dummy[W]; }
-     would work as well.  However, inside a function, some compilers
-     (such as C++ compilers and GNU C) allow local parameters and
-     variables inside array size expressions.  With these compilers,
-     an array size check would not properly diagnose this misuse of
-     the verify macro:
-
-       void function (int n) { verify (n < 0); }
-
-   * 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,
-     such as in
-
-       struct dummy {...};
-       typedef struct {...} dummy;
-       extern struct {...} *dummy;
-       extern void dummy (struct {...} *);
-       extern struct {...} *dummy (void);
-
-     two uses of the verify macro would yield colliding declarations
-     if the entity names are not disambiguated.  A workaround is to
-     attach the current line number to the entity name:
-
-       #define _GL_CONCAT0(x, y) x##y
-       #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
-       extern struct {...} * _GL_CONCAT (dummy, __LINE__);
-
-     But this has the problem that two invocations of verify from
-     within the same macro would collide, since the __LINE__ value
-     would be the same for both invocations.  (The GCC __COUNTER__
-     macro solves this problem, but is not portable.)
-
-     A solution is to use the sizeof operator.  It yields a number,
-     getting rid of the identity of the type.  Declarations like
-
-       extern int dummy [sizeof (struct {...})];
-       extern void dummy (int [sizeof (struct {...})]);
-       extern int (*dummy (void)) [sizeof (struct {...})];
-
-     can be repeated.
-
-   * Should the implementation use a named struct or an unnamed struct?
-     Which of the following alternatives can be used?
-
-       extern int dummy [sizeof (struct {...})];
-       extern int dummy [sizeof (struct _gl_verify_type {...})];
-       extern void dummy (int [sizeof (struct {...})]);
-       extern void dummy (int [sizeof (struct _gl_verify_type {...})]);
-       extern int (*dummy (void)) [sizeof (struct {...})];
-       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
-     about the first, third, and fourth cases.  So the only remaining
-     possibility is the fifth case:
-
-       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
-     __COUNTER__ macro that can let us generate unique identifiers for
-     each dummy function, to suppress this warning.
-
-   * 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.
-
-   * 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.  */
-
-/* Concatenate two preprocessor tokens.  */
-# define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
-# define _GL_CONCAT0(x, y) x##y
-
-/* _GL_COUNTER is an integer, preferably one that changes each time we
-   use it.  Use __COUNTER__ if it works, falling back on __LINE__
-   otherwise.  __LINE__ isn't perfect, but it's better than a
-   constant.  */
-# if defined __COUNTER__ && __COUNTER__ != __COUNTER__
-#  define _GL_COUNTER __COUNTER__
-# else
-#  define _GL_COUNTER __LINE__
-# endif
-
-/* Generate a symbol with the given prefix, making it unique if
-   possible.  */
-# define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER)
-
-/* 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 _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 _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) _GL_VERIFY (R, "verify (" #R ")")
-
-/* @assert.h omit end@  */
-
-#endif
diff --git a/grub-core/gnulib/vsnprintf.c b/grub-core/gnulib/vsnprintf.c
deleted file mode 100644
index 7d4dfbed9..000000000
--- a/grub-core/gnulib/vsnprintf.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Formatted output to strings.
-   Copyright (C) 2004, 2006-2013 Free Software Foundation, Inc.
-   Written by Simon Josefsson and Yoann Vandoorselaere <address@hidden>.
-
-   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/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification.  */
-#include <stdio.h>
-
-#include <errno.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "vasnprintf.h"
-
-/* Print formatted output to string STR.  Similar to vsprintf, but
-   additional length SIZE limit how much is written into STR.  Returns
-   string length of formatted string (which may be larger than SIZE).
-   STR may be NULL, in which case nothing will be written.  On error,
-   return a negative value.  */
-int
-vsnprintf (char *str, size_t size, const char *format, va_list args)
-{
-  char *output;
-  size_t len;
-  size_t lenbuf = size;
-
-  output = vasnprintf (str, &lenbuf, format, args);
-  len = lenbuf;
-
-  if (!output)
-    return -1;
-
-  if (output != str)
-    {
-      if (size)
-        {
-          size_t pruned_len = (len < size ? len : size - 1);
-          memcpy (str, output, pruned_len);
-          str[pruned_len] = '\0';
-        }
-
-      free (output);
-    }
-
-  if (len > INT_MAX)
-    {
-      errno = EOVERFLOW;
-      return -1;
-    }
-
-  return len;
-}
diff --git a/grub-core/gnulib/wchar.in.h b/grub-core/gnulib/wchar.in.h
deleted file mode 100644
index b6e436279..000000000
--- a/grub-core/gnulib/wchar.in.h
+++ /dev/null
@@ -1,1028 +0,0 @@
-/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
-
-   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, 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 Eric Blake.  */
-
-/*
- * ISO C 99 <wchar.h> for platforms that have issues.
- * <http://www.opengroup.org/susv3xbd/wchar.h.html>
- *
- * For now, this just ensures proper prerequisite inclusion order and
- * the declaration of wcwidth().
- */
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-#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:
-   - Inside glibc and uClibc header files.
-   - On HP-UX 11.00 we have a sequence of nested includes
-     <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
-     once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
-     and once directly.  In both situations 'wint_t' is not yet defined,
-     therefore we cannot provide the function overrides; instead include only
-     the system's <wchar.h>.
-   - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
-     the latter includes <wchar.h>.  But here, we have no way to detect whether
-     <wctype.h> is completely included or is still being included.  */
-
address@hidden@ @NEXT_WCHAR_H@
-
-#else
-/* Normal invocation convention.  */
-
-#ifndef address@hidden@_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.  */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
-# include <stddef.h>
-#endif
-#ifndef __GLIBC__
-# include <stdio.h>
-# include <time.h>
-#endif
-
-/* Include the original <wchar.h> if it exists.
-   Some builds of uClibc lack it.  */
-/* The include_next requires a split double-inclusion guard.  */
-#if @HAVE_WCHAR_H@
-# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
-#endif
-
-#undef _GL_ALREADY_INCLUDING_WCHAR_H
-
-#ifndef address@hidden@_WCHAR_H
-#define address@hidden@_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.  */
-
-/* The definition of _GL_ARG_NONNULL is copied here.  */
-
-/* The definition of _GL_WARN_ON_USE is copied here.  */
-
-
-/* Define wint_t and WEOF.  (Also done in wctype.in.h.)  */
-#if address@hidden@ && !defined wint_t
-# define wint_t int
-# ifndef WEOF
-#  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
-
-
-/* Override mbstate_t if it is too small.
-   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
-# endif
-#endif
-
-
-/* Convert a single-byte character to a wide character.  */
-#if @GNULIB_BTOWC@
-# if @REPLACE_BTOWC@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef btowc
-#   define btowc rpl_btowc
-#  endif
-_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
-_GL_CXXALIAS_RPL (btowc, wint_t, (int c));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
-#  endif
-_GL_CXXALIAS_SYS (btowc, wint_t, (int c));
-# endif
-_GL_CXXALIASWARN (btowc);
-#elif defined GNULIB_POSIXCHECK
-# undef btowc
-# if HAVE_RAW_DECL_BTOWC
-_GL_WARN_ON_USE (btowc, "btowc is unportable - "
-                 "use gnulib module btowc for portability");
-# endif
-#endif
-
-
-/* Convert a wide character to a single-byte character.  */
-#if @GNULIB_WCTOB@
-# if @REPLACE_WCTOB@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef wctob
-#   define wctob rpl_wctob
-#  endif
-_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
-_GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
-# else
-#  if !defined wctob && address@hidden@
-/* wctob is provided by gnulib, or wctob exists but is not declared.  */
-_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
-#  endif
-_GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
-# endif
-_GL_CXXALIASWARN (wctob);
-#elif defined GNULIB_POSIXCHECK
-# undef wctob
-# if HAVE_RAW_DECL_WCTOB
-_GL_WARN_ON_USE (wctob, "wctob is unportable - "
-                 "use gnulib module wctob for portability");
-# endif
-#endif
-
-
-/* Test whether *PS is in the initial state.  */
-#if @GNULIB_MBSINIT@
-# if @REPLACE_MBSINIT@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef mbsinit
-#   define mbsinit rpl_mbsinit
-#  endif
-_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
-_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
-#  endif
-_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
-# endif
-_GL_CXXALIASWARN (mbsinit);
-#elif defined GNULIB_POSIXCHECK
-# undef mbsinit
-# if HAVE_RAW_DECL_MBSINIT
-_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - "
-                 "use gnulib module mbsinit for portability");
-# endif
-#endif
-
-
-/* Convert a multibyte character to a wide character.  */
-#if @GNULIB_MBRTOWC@
-# if @REPLACE_MBRTOWC@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef mbrtowc
-#   define mbrtowc rpl_mbrtowc
-#  endif
-_GL_FUNCDECL_RPL (mbrtowc, size_t,
-                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
-_GL_CXXALIAS_RPL (mbrtowc, size_t,
-                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (mbrtowc, size_t,
-                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
-#  endif
-_GL_CXXALIAS_SYS (mbrtowc, size_t,
-                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
-# endif
-_GL_CXXALIASWARN (mbrtowc);
-#elif defined GNULIB_POSIXCHECK
-# undef mbrtowc
-# if HAVE_RAW_DECL_MBRTOWC
-_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
-                 "use gnulib module mbrtowc for portability");
-# endif
-#endif
-
-
-/* Recognize a multibyte character.  */
-#if @GNULIB_MBRLEN@
-# if @REPLACE_MBRLEN@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef mbrlen
-#   define mbrlen rpl_mbrlen
-#  endif
-_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
-_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
-#  endif
-_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
-# endif
-_GL_CXXALIASWARN (mbrlen);
-#elif defined GNULIB_POSIXCHECK
-# undef mbrlen
-# if HAVE_RAW_DECL_MBRLEN
-_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - "
-                 "use gnulib module mbrlen for portability");
-# endif
-#endif
-
-
-/* Convert a string to a wide string.  */
-#if @GNULIB_MBSRTOWCS@
-# if @REPLACE_MBSRTOWCS@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef mbsrtowcs
-#   define mbsrtowcs rpl_mbsrtowcs
-#  endif
-_GL_FUNCDECL_RPL (mbsrtowcs, size_t,
-                  (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
-                  _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (mbsrtowcs, size_t,
-                  (wchar_t *dest, const char **srcp, size_t len,
-                   mbstate_t *ps));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (mbsrtowcs, size_t,
-                  (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
-                  _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (mbsrtowcs, size_t,
-                  (wchar_t *dest, const char **srcp, size_t len,
-                   mbstate_t *ps));
-# endif
-_GL_CXXALIASWARN (mbsrtowcs);
-#elif defined GNULIB_POSIXCHECK
-# undef mbsrtowcs
-# if HAVE_RAW_DECL_MBSRTOWCS
-_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - "
-                 "use gnulib module mbsrtowcs for portability");
-# endif
-#endif
-
-
-/* Convert a string to a wide string.  */
-#if @GNULIB_MBSNRTOWCS@
-# if @REPLACE_MBSNRTOWCS@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef mbsnrtowcs
-#   define mbsnrtowcs rpl_mbsnrtowcs
-#  endif
-_GL_FUNCDECL_RPL (mbsnrtowcs, size_t,
-                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
-                   mbstate_t *ps)
-                  _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (mbsnrtowcs, size_t,
-                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
-                   mbstate_t *ps));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (mbsnrtowcs, size_t,
-                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
-                   mbstate_t *ps)
-                  _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (mbsnrtowcs, size_t,
-                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
-                   mbstate_t *ps));
-# endif
-_GL_CXXALIASWARN (mbsnrtowcs);
-#elif defined GNULIB_POSIXCHECK
-# undef mbsnrtowcs
-# if HAVE_RAW_DECL_MBSNRTOWCS
-_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
-                 "use gnulib module mbsnrtowcs for portability");
-# endif
-#endif
-
-
-/* Convert a wide character to a multibyte character.  */
-#if @GNULIB_WCRTOMB@
-# if @REPLACE_WCRTOMB@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef wcrtomb
-#   define wcrtomb rpl_wcrtomb
-#  endif
-_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
-_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
-#  endif
-_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
-# endif
-_GL_CXXALIASWARN (wcrtomb);
-#elif defined GNULIB_POSIXCHECK
-# undef wcrtomb
-# if HAVE_RAW_DECL_WCRTOMB
-_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - "
-                 "use gnulib module wcrtomb for portability");
-# endif
-#endif
-
-
-/* Convert a wide string to a string.  */
-#if @GNULIB_WCSRTOMBS@
-# if @REPLACE_WCSRTOMBS@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef wcsrtombs
-#   define wcsrtombs rpl_wcsrtombs
-#  endif
-_GL_FUNCDECL_RPL (wcsrtombs, size_t,
-                  (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
-                  _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (wcsrtombs, size_t,
-                  (char *dest, const wchar_t **srcp, size_t len,
-                   mbstate_t *ps));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (wcsrtombs, size_t,
-                  (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
-                  _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (wcsrtombs, size_t,
-                  (char *dest, const wchar_t **srcp, size_t len,
-                   mbstate_t *ps));
-# endif
-_GL_CXXALIASWARN (wcsrtombs);
-#elif defined GNULIB_POSIXCHECK
-# undef wcsrtombs
-# if HAVE_RAW_DECL_WCSRTOMBS
-_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - "
-                 "use gnulib module wcsrtombs for portability");
-# endif
-#endif
-
-
-/* Convert a wide string to a string.  */
-#if @GNULIB_WCSNRTOMBS@
-# if @REPLACE_WCSNRTOMBS@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef wcsnrtombs
-#   define wcsnrtombs rpl_wcsnrtombs
-#  endif
-_GL_FUNCDECL_RPL (wcsnrtombs, size_t,
-                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
-                   mbstate_t *ps)
-                  _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (wcsnrtombs, size_t,
-                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
-                   mbstate_t *ps));
-# else
-#  if address@hidden@
-_GL_FUNCDECL_SYS (wcsnrtombs, size_t,
-                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
-                   mbstate_t *ps)
-                  _GL_ARG_NONNULL ((2)));
-#  endif
-_GL_CXXALIAS_SYS (wcsnrtombs, size_t,
-                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
-                   mbstate_t *ps));
-# endif
-_GL_CXXALIASWARN (wcsnrtombs);
-#elif defined GNULIB_POSIXCHECK
-# undef wcsnrtombs
-# if HAVE_RAW_DECL_WCSNRTOMBS
-_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
-                 "use gnulib module wcsnrtombs for portability");
-# endif
-#endif
-
-
-/* Return the number of screen columns needed for WC.  */
-#if @GNULIB_WCWIDTH@
-# if @REPLACE_WCWIDTH@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef wcwidth
-#   define wcwidth rpl_wcwidth
-#  endif
-_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
-_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
-# else
-#  if address@hidden@
-/* wcwidth exists but is not declared.  */
-_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
-#  endif
-_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
-# endif
-_GL_CXXALIASWARN (wcwidth);
-#elif defined GNULIB_POSIXCHECK
-# undef wcwidth
-# if HAVE_RAW_DECL_WCWIDTH
-_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
-                 "use gnulib module wcwidth for portability");
-# endif
-#endif
-
-
-/* Search N wide characters of S for C.  */
-#if @GNULIB_WMEMCHR@
-# if address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 address@hidden@
-_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 /* address@hidden@_WCHAR_H */
-#endif /* address@hidden@_WCHAR_H */
-#endif
diff --git a/grub-core/gnulib/wcrtomb.c b/grub-core/gnulib/wcrtomb.c
deleted file mode 100644
index da42809bc..000000000
--- a/grub-core/gnulib/wcrtomb.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Convert wide character to multibyte character.
-   Copyright (C) 2008-2013 Free Software Foundation, Inc.
-   Written by Bruno Haible <address@hidden>, 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 <wchar.h>
-
-#include <errno.h>
-#include <stdlib.h>
-
-
-size_t
-wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
-{
-  /* This implementation of wcrtomb on top of wctomb() supports only
-     stateless encodings.  ps must be in the initial state.  */
-  if (ps != NULL && !mbsinit (ps))
-    {
-      errno = EINVAL;
-      return (size_t)(-1);
-    }
-
-  if (s == NULL)
-    /* We know the NUL wide character corresponds to the NUL character.  */
-    return 1;
-  else
-    {
-      int ret = wctomb (s, wc);
-
-      if (ret >= 0)
-        return ret;
-      else
-        {
-          errno = EILSEQ;
-          return (size_t)(-1);
-        }
-    }
-}
diff --git a/grub-core/gnulib/wctype-h.c b/grub-core/gnulib/wctype-h.c
deleted file mode 100644
index bb5f847e3..000000000
--- a/grub-core/gnulib/wctype-h.c
+++ /dev/null
@@ -1,4 +0,0 @@
-/* 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
deleted file mode 100644
index 0cd02d5a3..000000000
--- a/grub-core/gnulib/wctype.in.h
+++ /dev/null
@@ -1,504 +0,0 @@
-/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
-
-   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
-   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 Bruno Haible and Paul Eggert.  */
-
-/*
- * ISO C 99 <wctype.h> for platforms that lack it.
- * <http://www.opengroup.org/susv3xbd/wctype.h.html>
- *
- * iswctype, towctrans, towlower, towupper, wctrans, wctype,
- * wctrans_t, and wctype_t are not yet implemented.
- */
-
-#ifndef address@hidden@_WCTYPE_H
-
-#if __GNUC__ >= 3
address@hidden@
-#endif
address@hidden@
-
-#if @HAVE_WINT_T@
-/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.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>
-#endif
-
-/* Include the original <wctype.h> if it exists.
-   BeOS 5 has the functions but no <wctype.h>.  */
-/* The include_next requires a split double-inclusion guard.  */
-#if @HAVE_WCTYPE_H@
-# @INCLUDE_NEXT@ @NEXT_WCTYPE_H@
-#endif
-
-#ifndef address@hidden@_WCTYPE_H
-#define address@hidden@_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 address@hidden@ && !defined wint_t
-# define wint_t int
-# ifndef WEOF
-#  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@
-
-/* 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
-
-/* 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
-#   endif
-#  endif
-#  if @REPLACE_TOWLOWER@
-#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#    define towlower rpl_towlower
-#    define towupper rpl_towupper
-#   endif
-#  endif
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswalnum
-#  else
-iswalnum
-#  endif
-         (wint_t wc)
-{
-  return ((wc >= '0' && wc <= '9')
-          || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswalpha
-#  else
-iswalpha
-#  endif
-         (wint_t wc)
-{
-  return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswblank
-#  else
-iswblank
-#  endif
-         (wint_t wc)
-{
-  return wc == ' ' || wc == '\t';
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswcntrl
-#  else
-iswcntrl
-#  endif
-        (wint_t wc)
-{
-  return (wc & ~0x1f) == 0 || wc == 0x7f;
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswdigit
-#  else
-iswdigit
-#  endif
-         (wint_t wc)
-{
-  return wc >= '0' && wc <= '9';
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswgraph
-#  else
-iswgraph
-#  endif
-         (wint_t wc)
-{
-  return wc >= '!' && wc <= '~';
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswlower
-#  else
-iswlower
-#  endif
-         (wint_t wc)
-{
-  return wc >= 'a' && wc <= 'z';
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswprint
-#  else
-iswprint
-#  endif
-         (wint_t wc)
-{
-  return wc >= ' ' && wc <= '~';
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswpunct
-#  else
-iswpunct
-#  endif
-         (wint_t wc)
-{
-  return (wc >= '!' && wc <= '~'
-          && !((wc >= '0' && wc <= '9')
-               || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswspace
-#  else
-iswspace
-#  endif
-         (wint_t wc)
-{
-  return (wc == ' ' || wc == '\t'
-          || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswupper
-#  else
-iswupper
-#  endif
-         (wint_t wc)
-{
-  return wc >= 'A' && wc <= 'Z';
-}
-
-_GL_WCTYPE_INLINE int
-#  if @REPLACE_ISWCNTRL@
-rpl_iswxdigit
-#  else
-iswxdigit
-#  endif
-          (wint_t wc)
-{
-  return ((wc >= '0' && wc <= '9')
-          || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
-}
-
-_GL_WCTYPE_INLINE wint_t
-#  if @REPLACE_TOWLOWER@
-rpl_towlower
-#  else
-towlower
-#  endif
-         (wint_t wc)
-{
-  return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
-}
-
-_GL_WCTYPE_INLINE wint_t
-#  if @REPLACE_TOWLOWER@
-rpl_towupper
-#  else
-towupper
-#  endif
-         (wint_t wc)
-{
-  return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
-}
-
-# 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
-#   endif
-_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc));
-#  else
-_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
-#  endif
-
-# endif
-
-# 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
-   to take a wchar_t argument and return a wchar_t result.  mingw declares
-   these functions to take a wint_t argument and return a wint_t result.
-   This means that:
-   1. When the user passes an argument outside the range 0x0000..0xFFFF, the
-      function will look only at the lower 16 bits.  This is allowed according
-      to POSIX.
-   2. The return value is returned in the lower 16 bits of the result register.
-      The upper 16 bits are random: whatever happened to be in that part of the
-      result register.  We need to fix this by adding a zero-extend from
-      wchar_t to wint_t after the call.  */
-
-_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
-
-_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
-
-# 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 (iswcntrl, int, (wint_t wc));
-_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc));
-_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc));
-_GL_CXXALIAS_RPL (iswlower, int, (wint_t wc));
-_GL_CXXALIAS_RPL (iswprint, int, (wint_t wc));
-_GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc));
-_GL_CXXALIAS_RPL (iswspace, int, (wint_t wc));
-_GL_CXXALIAS_RPL (iswupper, int, (wint_t wc));
-_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));
-_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc));
-_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc));
-_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc));
-_GL_CXXALIAS_SYS (iswlower, int, (wint_t wc));
-_GL_CXXALIAS_SYS (iswprint, int, (wint_t wc));
-_GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc));
-_GL_CXXALIAS_SYS (iswspace, int, (wint_t wc));
-_GL_CXXALIAS_SYS (iswupper, int, (wint_t wc));
-_GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc));
-#endif
-_GL_CXXALIASWARN (iswalnum);
-_GL_CXXALIASWARN (iswalpha);
-_GL_CXXALIASWARN (iswcntrl);
-_GL_CXXALIASWARN (iswdigit);
-_GL_CXXALIASWARN (iswgraph);
-_GL_CXXALIASWARN (iswlower);
-_GL_CXXALIASWARN (iswprint);
-_GL_CXXALIASWARN (iswpunct);
-_GL_CXXALIASWARN (iswspace);
-_GL_CXXALIASWARN (iswupper);
-_GL_CXXALIASWARN (iswxdigit);
-
-#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 address@hidden@
-# 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 address@hidden@
-_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 address@hidden@
-_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
-_GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc));
-_GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc));
-#endif
-_GL_CXXALIASWARN (towlower);
-_GL_CXXALIASWARN (towupper);
-
-#if address@hidden@
-# 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 address@hidden@
-_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 address@hidden@
-_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 /* address@hidden@_WCTYPE_H */
-#endif /* address@hidden@_WCTYPE_H */
diff --git a/grub-core/gnulib/wcwidth.c b/grub-core/gnulib/wcwidth.c
deleted file mode 100644
index 253fcaa65..000000000
--- a/grub-core/gnulib/wcwidth.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* 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
deleted file mode 100644
index 4b4914c2c..000000000
--- a/grub-core/gnulib/xsize.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#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
deleted file mode 100644
index 2922f3530..000000000
--- a/grub-core/gnulib/xsize.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* xsize.h -- Checked size_t computations.
-
-   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
-   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 _XSIZE_H
-#define _XSIZE_H
-
-/* Get size_t.  */
-#include <stddef.h>
-
-/* Get SIZE_MAX.  */
-#include <limits.h>
-#if HAVE_STDINT_H
-# 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).
-   These computations can lead to overflow.  When this happens, malloc()
-   returns a piece of memory that is way too small, and the program then
-   crashes while attempting to fill the memory.
-   To avoid this, the functions and macros in this file check for overflow.
-   The convention is that SIZE_MAX represents overflow.
-   malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
-   implementation that uses mmap --, it's recommended to use size_overflow_p()
-   or size_in_bounds_p() before invoking malloc().
-   The example thus becomes:
-      size_t size = xsum (header_size, xtimes (n, element_size));
-      void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
-*/
-
-/* Convert an arbitrary value >= 0 to type size_t.  */
-#define xcast_size_t(N) \
-  ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
-
-/* Sum of two sizes, with overflow check.  */
-XSIZE_INLINE size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum (size_t size1, size_t size2)
-{
-  size_t sum = size1 + size2;
-  return (sum >= size1 ? sum : SIZE_MAX);
-}
-
-/* Sum of three sizes, with overflow check.  */
-XSIZE_INLINE size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum3 (size_t size1, size_t size2, size_t size3)
-{
-  return xsum (xsum (size1, size2), size3);
-}
-
-/* Sum of four sizes, with overflow check.  */
-XSIZE_INLINE size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
-{
-  return xsum (xsum (xsum (size1, size2), size3), size4);
-}
-
-/* Maximum of two sizes, with overflow check.  */
-XSIZE_INLINE size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xmax (size_t size1, size_t size2)
-{
-  /* No explicit check is needed here, because for any n:
-     max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX.  */
-  return (size1 >= size2 ? size1 : 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 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)
-
-/* Check for overflow.  */
-#define size_overflow_p(SIZE) \
-  ((SIZE) == SIZE_MAX)
-/* Check against overflow.  */
-#define size_in_bounds_p(SIZE) \
-  ((SIZE) != SIZE_MAX)
-
-_GL_INLINE_HEADER_END
-
-#endif /* _XSIZE_H */
diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4
deleted file mode 100644
index d4ad759fd..000000000
--- a/m4/00gnulib.m4
+++ /dev/null
@@ -1,30 +0,0 @@
-# 00gnulib.m4 serial 2
-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.
-
-dnl This file must be named something that sorts before all other
-dnl gnulib-provided .m4 files.  It is needed until such time as we can
-dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics.
-
-# AC_DEFUN_ONCE([NAME], VALUE)
-# ----------------------------
-# Define NAME to expand to VALUE on the first use (whether by direct
-# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses.
-# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier.  This
-# definition is slower than the version in Autoconf 2.64, because it
-# can only use interfaces that existed since 2.59; but it achieves the
-# same effect.  Quoting is necessary to avoid confusing Automake.
-m4_version_prereq([2.63.263], [],
-[m4_define([AC][_DEFUN_ONCE],
-  [AC][_DEFUN([$1],
-    [AC_REQUIRE([_gl_DEFUN_ONCE([$1])],
-      [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
-[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
-
-# gl_00GNULIB
-# -----------
-# Witness macro that this file has been included.  Needed to force
-# Automake to include this file prior to all other gnulib .m4 files.
-AC_DEFUN([gl_00GNULIB])
diff --git a/m4/alloca.m4 b/m4/alloca.m4
deleted file mode 100644
index 270abd0cd..000000000
--- a/m4/alloca.m4
+++ /dev/null
@@ -1,121 +0,0 @@
-# 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,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_ALLOCA],
-[
-  AC_REQUIRE([AC_FUNC_ALLOCA])
-  if test $ac_cv_func_alloca_works = no; then
-    gl_PREREQ_ALLOCA
-  fi
-
-  # Define an additional variable used in the Makefile substitution.
-  if test $ac_cv_working_alloca_h = yes; then
-    AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [
-      AC_EGREP_CPP([Need own alloca], [
-#if defined __GNUC__ || defined _AIX || defined _MSC_VER
-        Need own alloca
-#endif
-        ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no])
-    ])
-    if test $gl_cv_rpl_alloca = yes; then
-      dnl OK, alloca can be implemented through a compiler built-in.
-      AC_DEFINE([HAVE_ALLOCA], [1],
-        [Define to 1 if you have 'alloca' after including <alloca.h>,
-         a header that may be supplied by this distribution.])
-      ALLOCA_H=alloca.h
-    else
-      dnl alloca exists as a library function, i.e. it is slow and probably
-      dnl a memory leak. Don't define HAVE_ALLOCA in this case.
-      ALLOCA_H=
-    fi
-  else
-    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 */
address@hidden:@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
deleted file mode 100644
index 4445d8e6c..000000000
--- a/m4/argp.m4
+++ /dev/null
@@ -1,61 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_ARGP],
-[
-  AC_REQUIRE([AC_C_INLINE])
-  AC_REQUIRE([AC_C_RESTRICT])
-  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-
-  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
-  # be defined and other not, I prefer to stay on the safe side and to
-  # test each one separately.
-  AC_MSG_CHECKING([whether program_invocation_name is defined])
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <argp.h>]],
-                                  [[program_invocation_name = "test";]])],
-                 [AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], [1],
-                            [Define if program_invocation_name is defined])
-                  AC_MSG_RESULT([yes])],
-                 [AC_MSG_RESULT([no])])
-
-  AC_MSG_CHECKING([whether program_invocation_short_name is defined])
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <argp.h>]],
-                                  [[program_invocation_short_name = 
"test";]])],
-                 [AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
-                            [Define if program_invocation_short_name is 
defined])
-                  AC_MSG_RESULT([yes])],
-                 [AC_MSG_RESULT([no])])
-
-  AC_CHECK_DECLS_ONCE([clearerr_unlocked])
-  AC_CHECK_DECLS_ONCE([feof_unlocked])
-  AC_CHECK_DECLS_ONCE([ferror_unlocked])
-  AC_CHECK_DECLS_ONCE([fflush_unlocked])
-  AC_CHECK_DECLS_ONCE([fgets_unlocked])
-  AC_CHECK_DECLS_ONCE([fputc_unlocked])
-  AC_CHECK_DECLS_ONCE([fputs_unlocked])
-  AC_CHECK_DECLS_ONCE([fread_unlocked])
-  AC_CHECK_DECLS_ONCE([fwrite_unlocked])
-  AC_CHECK_DECLS_ONCE([getc_unlocked])
-  AC_CHECK_DECLS_ONCE([getchar_unlocked])
-  AC_CHECK_DECLS_ONCE([putc_unlocked])
-  AC_CHECK_DECLS_ONCE([putchar_unlocked])
-  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/btowc.m4 b/m4/btowc.m4
deleted file mode 100644
index 978a06e9a..000000000
--- a/m4/btowc.m4
+++ /dev/null
@@ -1,116 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_FUNC_BTOWC],
-[
-  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-
-  dnl Check whether <wchar.h> is usable at all, first. Otherwise the test
-  dnl program below may lead to an endless loop. See
-  dnl <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>.
-  AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
-
-  AC_CHECK_FUNCS_ONCE([btowc])
-  if test $ac_cv_func_btowc = no; then
-    HAVE_BTOWC=0
-  else
-
-    AC_REQUIRE([AC_PROG_CC])
-    AC_REQUIRE([gt_LOCALE_FR])
-    AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-
-    dnl Cygwin 1.7.2 btowc('\0') is WEOF, not 0.
-    AC_CACHE_CHECK([whether btowc(0) is correct],
-      [gl_cv_func_btowc_nul],
-      [
-        AC_RUN_IFELSE(
-          [AC_LANG_SOURCE([[
-#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 ()
-{
-  if (btowc ('\0') != 0)
-    return 1;
-  return 0;
-}]])],
-          [gl_cv_func_btowc_nul=yes],
-          [gl_cv_func_btowc_nul=no],
-          [
-changequote(,)dnl
-           case "$host_os" in
-                      # Guess no on Cygwin.
-             cygwin*) gl_cv_func_btowc_nul="guessing no" ;;
-                      # Guess yes otherwise.
-             *)       gl_cv_func_btowc_nul="guessing yes" ;;
-           esac
-changequote([,])dnl
-          ])
-      ])
-
-    dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF.
-    AC_CACHE_CHECK([whether btowc(EOF) is correct],
-      [gl_cv_func_btowc_eof],
-      [
-        dnl Initial guess, used when cross-compiling or when no suitable locale
-        dnl is present.
-changequote(,)dnl
-        case "$host_os" in
-                 # Guess no on IRIX.
-          irix*) gl_cv_func_btowc_eof="guessing no" ;;
-                 # Guess yes otherwise.
-          *)     gl_cv_func_btowc_eof="guessing yes" ;;
-        esac
-changequote([,])dnl
-        if test $LOCALE_FR != 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 ()
-{
-  if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
-    {
-      if (btowc (EOF) != WEOF)
-        return 1;
-    }
-  return 0;
-}]])],
-            [gl_cv_func_btowc_eof=yes],
-            [gl_cv_func_btowc_eof=no],
-            [:])
-        fi
-      ])
-
-    case "$gl_cv_func_btowc_nul" in
-      *yes) ;;
-      *) REPLACE_BTOWC=1 ;;
-    esac
-    case "$gl_cv_func_btowc_eof" in
-      *yes) ;;
-      *) REPLACE_BTOWC=1 ;;
-    esac
-  fi
-])
-
-# Prerequisites of lib/btowc.c.
-AC_DEFUN([gl_PREREQ_BTOWC], [
-  :
-])
diff --git a/m4/codeset.m4 b/m4/codeset.m4
deleted file mode 100644
index c2761be2a..000000000
--- a/m4/codeset.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# codeset.m4 serial 5 (gettext-0.18.2)
-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.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_LANGINFO_CODESET],
-[
-  AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
-    [AC_LINK_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <langinfo.h>]],
-          [[char* cs = nl_langinfo(CODESET); return !cs;]])],
-       [am_cv_langinfo_codeset=yes],
-       [am_cv_langinfo_codeset=no])
-    ])
-  if test $am_cv_langinfo_codeset = yes; then
-    AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
-      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
-  fi
-])
diff --git a/m4/configmake.m4 b/m4/configmake.m4
deleted file mode 100644
index 823ffc0dd..000000000
--- a/m4/configmake.m4
+++ /dev/null
@@ -1,50 +0,0 @@
-# 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
deleted file mode 100644
index 5897a2a8b..000000000
--- a/m4/dirname.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-#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.
-
-AC_DEFUN([gl_DIRNAME],
-[
-  AC_REQUIRE([gl_DIRNAME_LGPL])
-])
-
-AC_DEFUN([gl_DIRNAME_LGPL],
-[
-  dnl Prerequisites of lib/dirname.h.
-  AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
-
-  dnl No prerequisites of lib/basename-lgpl.c, lib/dirname-lgpl.c,
-  dnl lib/stripslash.c.
-])
diff --git a/m4/double-slash-root.m4 b/m4/double-slash-root.m4
deleted file mode 100644
index bd6f86714..000000000
--- a/m4/double-slash-root.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-# double-slash-root.m4 serial 4   -*- Autoconf -*-
-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.
-
-AC_DEFUN([gl_DOUBLE_SLASH_ROOT],
-[
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_CACHE_CHECK([whether // is distinct from /], [gl_cv_double_slash_root],
-    [ if test x"$cross_compiling" = xyes ; then
-        # When cross-compiling, there is no way to tell whether // is special
-        # short of a list of hosts.  However, the only known hosts to date
-        # that have a distinct // are Apollo DomainOS (too old to port to),
-        # Cygwin, and z/OS.  If anyone knows of another system for which // has
-        # special semantics and is distinct from /, please report it to
-        # <address@hidden>.
-        case $host in
-          *-cygwin | i370-ibm-openedition)
-            gl_cv_double_slash_root=yes ;;
-          *)
-            # Be optimistic and assume that / and // are the same when we
-            # don't know.
-            gl_cv_double_slash_root='unknown, assuming no' ;;
-        esac
-      else
-        set x `ls -di / // 2>/dev/null`
-        if test "$[2]" = "$[4]" && wc //dev/null >/dev/null 2>&1; then
-          gl_cv_double_slash_root=no
-        else
-          gl_cv_double_slash_root=yes
-        fi
-      fi])
-  if test "$gl_cv_double_slash_root" = yes; then
-    AC_DEFINE([DOUBLE_SLASH_IS_DISTINCT_ROOT], [1],
-      [Define to 1 if // is a file system root distinct from /.])
-  fi
-])
diff --git a/m4/eealloc.m4 b/m4/eealloc.m4
deleted file mode 100644
index c640ec129..000000000
--- a/m4/eealloc.m4
+++ /dev/null
@@ -1,31 +0,0 @@
-# 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
deleted file mode 100644
index c813ea583..000000000
--- a/m4/errno_h.m4
+++ /dev/null
@@ -1,137 +0,0 @@
-# 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.
-
-AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  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
-#if !defined EIDRM
-booboo
-#endif
-#if !defined ENOLINK
-booboo
-#endif
-#if !defined EPROTO
-booboo
-#endif
-#if !defined EMULTIHOP
-booboo
-#endif
-#if !defined EBADMSG
-booboo
-#endif
-#if !defined EOVERFLOW
-booboo
-#endif
-#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])
-  ])
-  if test $gl_cv_header_errno_h_complete = yes; then
-    ERRNO_H=''
-  else
-    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])
-])
-
-# Assuming $1 = EOVERFLOW.
-# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
-# POSIX.  But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
-# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
-# Check for the value of EOVERFLOW.
-# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
-AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
-[
-  if test -n "$ERRNO_H"; then
-    AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
-      AC_EGREP_CPP([yes],[
-#include <errno.h>
-#ifdef ]$1[
-yes
-#endif
-      ],
-      [gl_cv_header_errno_h_]$1[=yes],
-      [gl_cv_header_errno_h_]$1[=no])
-      if test $gl_cv_header_errno_h_]$1[ = no; then
-        AC_EGREP_CPP([yes],[
-#define _XOPEN_SOURCE_EXTENDED 1
-#include <errno.h>
-#ifdef ]$1[
-yes
-#endif
-          ], [gl_cv_header_errno_h_]$1[=hidden])
-        if test $gl_cv_header_errno_h_]$1[ = hidden; then
-          dnl The macro exists but is hidden.
-          dnl Define it to the same value.
-          AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
-#define _XOPEN_SOURCE_EXTENDED 1
-#include <errno.h>
-/* The following two lines are a workaround against an autoconf-2.52 bug.  */
-#include <stdio.h>
-#include <stdlib.h>
-])
-        fi
-      fi
-    ])
-    case $gl_cv_header_errno_h_]$1[ in
-      yes | no)
-        ]$1[_HIDDEN=0; ]$1[_VALUE=
-        ;;
-      *)
-        ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
-        ;;
-    esac
-    AC_SUBST($1[_HIDDEN])
-    AC_SUBST($1[_VALUE])
-  fi
-])
-
-dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
-dnl Remove this when we can assume autoconf >= 2.61.
-m4_ifdef([AC_COMPUTE_INT], [], [
-  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
-])
diff --git a/m4/error.m4 b/m4/error.m4
deleted file mode 100644
index 29e6fdc9c..000000000
--- a/m4/error.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-#serial 14
-
-# 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,
-# with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_ERROR],
-[
-  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(
-          [[#include <error.h>]],
-          [[error_at_line (0, 0, "", 0, "an error occurred");]])],
-       [ac_cv_lib_error_at_line=yes],
-       [ac_cv_lib_error_at_line=no])])
-])
-
-# Prerequisites of lib/error.c.
-AC_DEFUN([gl_PREREQ_ERROR],
-[
-  AC_REQUIRE([AC_FUNC_STRERROR_R])
-  :
-])
diff --git a/m4/exponentd.m4 b/m4/exponentd.m4
deleted file mode 100644
index 09df468c9..000000000
--- a/m4/exponentd.m4
+++ /dev/null
@@ -1,116 +0,0 @@
-# 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
deleted file mode 100644
index 07ba376c0..000000000
--- a/m4/extensions.m4
+++ /dev/null
@@ -1,138 +0,0 @@
-# serial 13  -*- Autoconf -*-
-# Enable extensions on systems that normally disable them.
-
-# 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.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.
-
-# If autoconf reports a warning
-#     warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
-# or  warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
-# the fix is
-#   1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked
-#      but always AC_REQUIREd,
-#   2) to ensure that for each occurrence of
-#        AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-#      or
-#        AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-#      the corresponding gnulib module description has 'extensions' among
-#      its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS
-#      invocation occurs in gl_EARLY, not in gl_INIT.
-
-# AC_USE_SYSTEM_EXTENSIONS
-# ------------------------
-# 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
-# cause problems on some platforms (such as __EXTENSIONS__).
-AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
-[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
-AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
-
-  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
-       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 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
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop.  */
-#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__
-#endif
-])
-  AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
-    [ac_cv_safe_to_define___extensions__],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM([[
-#         define __EXTENSIONS__ 1
-          ]AC_INCLUDES_DEFAULT])],
-       [ac_cv_safe_to_define___extensions__=yes],
-       [ac_cv_safe_to_define___extensions__=no])])
-  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
-# ------------------------
-# Enable extensions on systems that normally disable them,
-# typically due to standards-conformance issues.
-AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
-[
-  dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS.
-  dnl gnulib does not need it. But if it gets required by third-party macros
-  dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a
-  dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS".
-  dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE,
-  dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck.
-  AC_REQUIRE([AC_GNU_SOURCE])
-
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-])
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
deleted file mode 100644
index e74339a16..000000000
--- a/m4/extern-inline.m4
+++ /dev/null
@@ -1,100 +0,0 @@
-dnl 'extern inline' a la ISO C99.
-
-dnl Copyright 2012-2015 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],
-[/* Please see the Gnulib manual for how to use these macros.
-
-   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 extern inline with Sun C in standards-conformance mode, as it
-   mishandles inline functions that call each other.  E.g., for 'inline void f
-   (void) { } inline void g (void) { f (); }', c99 incorrectly complains
-   'reference to static identifier "f" in extern inline function'.
-   This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
-
-   Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
-   on configurations that mistakenly use 'static inline' to implement
-   functions or macros in standard C headers like <ctype.h>.  For example,
-   if isdigit is mistakenly implemented via a static inline function,
-   a program containing an extern inline function that calls isdigit
-   may not work since the C standard prohibits extern inline functions
-   from calling static functions.  This bug is known to occur on:
-
-     OS X 10.8 and earlier; see:
-     http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html
-
-     DragonFly; see
-     
http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log
-
-     FreeBSD; see:
-     http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html
-
-   OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
-   for clang but remains for g++; see <http://trac.macports.org/ticket/41033>.
-   Assume DragonFly and FreeBSD will be similar.  */
-#if (((defined __APPLE__ && defined __MACH__) \
-      || defined __DragonFly__ || defined __FreeBSD__) \
-     && (defined __header_inline \
-         ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
-            && ! defined __clang__) \
-         : ((! defined _DONT_USE_CTYPE_INLINE_ \
-             && (defined __GNUC__ || defined __cplusplus)) \
-            || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
-                && defined __GNUC__ && ! defined __cplusplus))))
-# define _GL_EXTERN_INLINE_STDHEADER_BUG
-#endif
-#if ((__GNUC__ \
-      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
-      : (199901L <= __STDC_VERSION__ \
-         && !defined __HP_cc \
-         && !(defined __SUNPRO_C && __STDC__))) \
-     && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
-# define _GL_INLINE inline
-# define _GL_EXTERN_INLINE extern inline
-# define _GL_EXTERN_INLINE_IN_USE
-#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
-       && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
-# if defined __GNUC_GNU_INLINE__ && __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
-# define _GL_EXTERN_INLINE_IN_USE
-#else
-# define _GL_INLINE static _GL_UNUSED
-# define _GL_EXTERN_INLINE static _GL_UNUSED
-#endif
-
-/* In GCC, suppress bogus "no previous prototype for 'FOO'"
-   and "no previous declaration for 'FOO'" diagnostics,
-   when FOO is an inline function in the header; see
-   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
-   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>.  */
-#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
deleted file mode 100644
index 87cc4bd2d..000000000
--- a/m4/fcntl-o.m4
+++ /dev/null
@@ -1,134 +0,0 @@
-# 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.
-
-dnl Written by Paul Eggert.
-
-# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
-# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
-# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
-AC_DEFUN([gl_FCNTL_O_FLAGS],
-[
-  dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
-  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
-  dnl AC_GNU_SOURCE.
-  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>
-           #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
-           #endif
-           #ifndef O_NOFOLLOW
-            #define O_NOFOLLOW 0
-           #endif
-           static int const constants[] =
-            {
-              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
-              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
-            };
-          ]],
-          [[
-            int result = !constants;
-            #if HAVE_SYMLINK
-            {
-              static char const sym[] = "conftest.sym";
-              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);
-              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 result;]])],
-       [gl_cv_header_working_fcntl_h=yes],
-       [case $? in #(
-        4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
-        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
-        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])])
-
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
-  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
-    [Define to 1 if O_NOATIME works.])
-
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
-  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
-    [Define to 1 if O_NOFOLLOW works.])
-])
diff --git a/m4/float_h.m4 b/m4/float_h.m4
deleted file mode 100644
index 397f2d1fa..000000000
--- a/m4/float_h.m4
+++ /dev/null
@@ -1,98 +0,0 @@
-# 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.
-
-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
-    aix* | beos* | openbsd* | mirbsd* | irix*)
-      FLOAT_H=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
deleted file mode 100644
index fa0ba4d22..000000000
--- a/m4/fnmatch.m4
+++ /dev/null
@@ -1,156 +0,0 @@
-# Check for fnmatch - serial 9.
-
-# 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.
-
-# Autoconf defines AC_FUNC_FNMATCH, but that is obsolescent.
-# New applications should use the macros below instead.
-
-# Request a POSIX compliant fnmatch function.
-AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
-[
-  m4_divert_text([DEFAULTS], [gl_fnmatch_required=POSIX])
-
-  dnl Persuade glibc <fnmatch.h> to declare FNM_CASEFOLD etc.
-  dnl This is only needed if gl_fnmatch_required = GNU. It would be possible
-  dnl to avoid this dependency for gl_FUNC_FNMATCH_POSIX by putting
-  dnl gl_FUNC_FNMATCH_GNU into a separate .m4 file.
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  FNMATCH_H=
-  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],
-    [dnl Some versions of Solaris, SCO, and the GNU C Library
-     dnl have a broken or incompatible fnmatch.
-     dnl So we run a test program.  If we are cross-compiling, take no chance.
-     dnl Thanks to John Oleynick, François Pinard, and Paul Eggert for this
-     dnl test.
-     if test $gl_fnmatch_required = GNU; then
-       gl_fnmatch_gnu_start=
-       gl_fnmatch_gnu_end=
-     else
-       gl_fnmatch_gnu_start='#if 0'
-       gl_fnmatch_gnu_end='#endif'
-     fi
-     AC_RUN_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <fnmatch.h>
-            static int
-            y (char const *pattern, char const *string, int flags)
-            {
-              return fnmatch (pattern, string, flags) == 0;
-            }
-            static int
-            n (char const *pattern, char const *string, int flags)
-            {
-              return fnmatch (pattern, string, flags) == FNM_NOMATCH;
-            }
-          ]],
-          [[char const *Apat = 'A' < '\\\\' ? "[A-\\\\\\\\]" : "[\\\\\\\\-A]";
-            char const *apat = 'a' < '\\\\' ? "[a-\\\\\\\\]" : "[\\\\\\\\-a]";
-            static char const A_1[] = { 'A' - 1, 0 };
-            static char const A01[] = { 'A' + 1, 0 };
-            static char const a_1[] = { 'a' - 1, 0 };
-            static char const a01[] = { 'a' + 1, 0 };
-            static char const bs_1[] = { '\\\\' - 1, 0 };
-            static char const bs01[] = { '\\\\' + 1, 0 };
-            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"],
-       [eval "$gl_fnmatch_cache_var=\"guessing no\""])
-    ])
-  eval "gl_fnmatch_result=\"\$$gl_fnmatch_cache_var\""
-  if test "$gl_fnmatch_result" = yes; then
-    dnl Not strictly necessary. Only to avoid spurious leftover files if people
-    dnl don't do "make distclean".
-    rm -f "$gl_source_base/fnmatch.h"
-  else
-    FNMATCH_H=fnmatch.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.
-AC_DEFUN([gl_FUNC_FNMATCH_GNU],
-[
-  m4_divert_text([INIT_PREPARE], [gl_fnmatch_required=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
deleted file mode 100644
index 36f66a108..000000000
--- a/m4/getdelim.m4
+++ /dev/null
@@ -1,88 +0,0 @@
-# getdelim.m4 serial 10
-
-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,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_PREREQ([2.59])
-
-AC_DEFUN([gl_FUNC_GETDELIM],
-[
-  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-
-  dnl Persuade glibc <stdio.h> to declare getdelim().
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  AC_CHECK_DECLS_ONCE([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
-    AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#    include <stdio.h>
-#    include <stdlib.h>
-#    include <string.h>
-    int main ()
-    {
-      FILE *in = fopen ("./conftest.data", "r");
-      if (!in)
-        return 1;
-      {
-        /* Test result for a NULL buffer and a zero size.
-           Based on a test program from Karl Heuer.  */
-        char *line = NULL;
-        size_t siz = 0;
-        int len = getdelim (&line, &siz, '\n', in);
-        if (!(len == 4 && line && strcmp (line, "foo\n") == 0))
-          return 2;
-      }
-      {
-        /* Test result for a NULL buffer and a non-zero size.
-           This crashes on FreeBSD 8.0.  */
-        char *line = NULL;
-        size_t siz = (size_t)(~0) / 4;
-        if (getdelim (&line, &siz, '\n', in) == -1)
-          return 3;
-      }
-      return 0;
-    }
-    ]])], [gl_cv_func_working_getdelim=yes] dnl The library version works.
-    , [gl_cv_func_working_getdelim=no] dnl The library version does NOT work.
-    , dnl We're cross compiling. Assume it works on glibc2 systems.
-      [AC_EGREP_CPP([Lucky GNU user],
-         [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ >= 2) && !defined __UCLIBC__
-  Lucky GNU user
- #endif
-#endif
-         ],
-         [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
-    HAVE_GETDELIM=0
-  fi
-
-  if test $ac_cv_have_decl_getdelim = no; then
-    HAVE_DECL_GETDELIM=0
-  fi
-])
-
-# Prerequisites of lib/getdelim.c.
-AC_DEFUN([gl_PREREQ_GETDELIM],
-[
-  AC_CHECK_FUNCS([flockfile funlockfile])
-  AC_CHECK_DECLS([getc_unlocked])
-])
diff --git a/m4/getline.m4 b/m4/getline.m4
deleted file mode 100644
index 342bc9905..000000000
--- a/m4/getline.m4
+++ /dev/null
@@ -1,96 +0,0 @@
-# getline.m4 serial 26
-
-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
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_PREREQ([2.59])
-
-dnl See if there's a working, system-supplied version of the getline function.
-dnl We can't just do AC_REPLACE_FUNCS([getline]) because some systems
-dnl have a function by that name in -linet that doesn't have anything
-dnl to do with the function we need.
-AC_DEFUN([gl_FUNC_GETLINE],
-[
-  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-
-  dnl Persuade glibc <stdio.h> to declare getline().
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  AC_CHECK_DECLS_ONCE([getline])
-
-  gl_getline_needs_run_time_check=no
-  AC_CHECK_FUNC([getline],
-                [dnl Found it in some library.  Verify that it works.
-                 gl_getline_needs_run_time_check=yes],
-                [am_cv_func_working_getline=no])
-  if test $gl_getline_needs_run_time_check = yes; then
-    AC_CACHE_CHECK([for working getline function], 
[am_cv_func_working_getline],
-    [echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
-    AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#    include <stdio.h>
-#    include <stdlib.h>
-#    include <string.h>
-    int main ()
-    {
-      FILE *in = fopen ("./conftest.data", "r");
-      if (!in)
-        return 1;
-      {
-        /* Test result for a NULL buffer and a zero size.
-           Based on a test program from Karl Heuer.  */
-        char *line = NULL;
-        size_t siz = 0;
-        int len = getline (&line, &siz, in);
-        if (!(len == 4 && line && strcmp (line, "foo\n") == 0))
-          return 2;
-      }
-      {
-        /* Test result for a NULL buffer and a non-zero size.
-           This crashes on FreeBSD 8.0.  */
-        char *line = NULL;
-        size_t siz = (size_t)(~0) / 4;
-        if (getline (&line, &siz, in) == -1)
-          return 3;
-      }
-      return 0;
-    }
-    ]])], [am_cv_func_working_getline=yes] dnl The library version works.
-    , [am_cv_func_working_getline=no] dnl The library version does NOT work.
-    , dnl We're cross compiling. Assume it works on glibc2 systems.
-      [AC_EGREP_CPP([Lucky GNU user],
-         [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ >= 2) && !defined __UCLIBC__
-  Lucky GNU user
- #endif
-#endif
-         ],
-         [am_cv_func_working_getline="guessing yes"],
-         [am_cv_func_working_getline="guessing no"])]
-    )])
-  fi
-
-  if test $ac_cv_have_decl_getline = no; then
-    HAVE_DECL_GETLINE=0
-  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],
-[
-  :
-])
diff --git a/m4/getopt.m4 b/m4/getopt.m4
deleted file mode 100644
index 50f450919..000000000
--- a/m4/getopt.m4
+++ /dev/null
@@ -1,368 +0,0 @@
-# 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.
-
-# Request a POSIX compliant getopt function.
-AC_DEFUN([gl_FUNC_GETOPT_POSIX],
-[
-  m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX])
-  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  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
-# options with optional arguments) and the functions getopt_long,
-# getopt_long_only.
-AC_DEFUN([gl_FUNC_GETOPT_GNU],
-[
-  m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU])
-
-  AC_REQUIRE([gl_FUNC_GETOPT_POSIX])
-])
-
-# Determine whether to replace the entire getopt facility.
-AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
-[
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_REQUIRE([AC_PROG_AWK]) dnl for awk that supports ENVIRON
-
-  dnl Persuade Solaris <unistd.h> to declare optarg, optind, opterr, optopt.
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  gl_CHECK_NEXT_HEADERS([getopt.h])
-  if test $ac_cv_header_getopt_h = yes; then
-    HAVE_GETOPT_H=1
-  else
-    HAVE_GETOPT_H=0
-  fi
-  AC_SUBST([HAVE_GETOPT_H])
-
-  gl_replace_getopt=
-
-  dnl Test whether <getopt.h> is available.
-  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
-    AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes])
-  fi
-
-  dnl Test whether the function getopt_long is available.
-  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
-    AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes])
-  fi
-
-  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 '+'
-  dnl behavior with getopt-gnu.
-  if test -z "$gl_replace_getopt"; then
-    AC_CACHE_CHECK([whether getopt is POSIX compatible],
-      [gl_cv_func_getopt_posix],
-      [
-        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>
-
-int
-main ()
-{
-  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 (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>
-
-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 (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])
-          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 ;;
-    esac
-  fi
-
-  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
-    AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_getopt_gnu],
-      [# Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the
-       # optstring is necessary for programs like m4 that have POSIX-mandated
-       # semantics for supporting options interspersed with files.
-       # Also, since getopt_long is a GNU extension, we require optind=0.
-       # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT;
-       # so take care to revert to the correct (non-)export state.
-dnl GNU Coding Standards currently allow awk but not env; besides, env
-dnl is ambiguous with environment values that contain newlines.
-       gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
-       case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
-         xx) gl_had_POSIXLY_CORRECT=exported ;;
-         x)  gl_had_POSIXLY_CORRECT=yes      ;;
-         *)  gl_had_POSIXLY_CORRECT=         ;;
-       esac
-       POSIXLY_CORRECT=1
-       export POSIXLY_CORRECT
-       AC_RUN_IFELSE(
-        [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 Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
-                OSF/1 5.1, Solaris 10.  */
-             {
-               static char conftest[] = "conftest";
-               static char plus[] = "-+";
-               char *argv[3] = { conftest, plus, NULL };
-               opterr = 0;
-               if (getopt (2, argv, "+a") != '?')
-                 result |= 1;
-             }
-             /* This code succeeds on glibc 2.8, mingw,
-                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.  */
-             {
-               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')
-                 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.  */
-             {
-               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)
-                 result |= 16;
-               else if (getopt (3, argv, "-p") != 'p')
-                 result |= 16;
-             }
-             /* This code fails on glibc 2.11.  */
-             {
-               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')
-                 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 result;
-           ]])],
-        [gl_cv_func_getopt_gnu=yes],
-        [gl_cv_func_getopt_gnu=no],
-        [dnl Cross compiling. Assume the worst, even on glibc platforms.
-         gl_cv_func_getopt_gnu="guessing no"
-        ])
-       case $gl_had_POSIXLY_CORRECT in
-         exported) ;;
-         yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;;
-         *) AS_UNSET([POSIXLY_CORRECT]) ;;
-       esac
-      ])
-    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
-])
-
-AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
-[
-  GETOPT_H=getopt.h
-  AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
-    [Define to rpl_ if the getopt replacement functions and variables
-     should be used.])
-  AC_SUBST([GETOPT_H])
-])
-
-# Prerequisites of lib/getopt*.
-AC_DEFUN([gl_PREREQ_GETOPT],
-[
-  AC_CHECK_DECLS_ONCE([getenv])
-])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
deleted file mode 100644
index 8d1f0665c..000000000
--- a/m4/gettext.m4
+++ /dev/null
@@ -1,401 +0,0 @@
-# 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.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-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 Authors:
-dnl   Ulrich Drepper <address@hidden>, 1995-2000.
-dnl   Bruno Haible <address@hidden>, 2000-2006, 2008-2010.
-
-dnl Macro to add for using GNU gettext.
-
-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-dnl    default (if it is not specified or empty) is 'no-libtool'.
-dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
-dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
-dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
-dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
-dnl    depending on --{enable,disable}-{shared,static} and on the presence of
-dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-dnl    $(top_builddir)/intl/libintl.a will be created.
-dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
-dnl    implementations (in libc or libintl) without the ngettext() function
-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
-dnl The result of the configuration is one of three cases:
-dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
-dnl    and used.
-dnl    Catalog format: GNU --> install in $(datadir)
-dnl    Catalog extension: .mo after installation, .gmo in source tree
-dnl 2) GNU gettext has been found in the system's C library.
-dnl    Catalog format: GNU --> install in $(datadir)
-dnl    Catalog extension: .mo after installation, .gmo in source tree
-dnl 3) No internationalization, always use English msgid.
-dnl    Catalog format: none
-dnl    Catalog extension: none
-dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
-dnl The use of .gmo is historical (it was needed to avoid overwriting the
-dnl GNU format catalogs when building on a platform with an X/Open gettext),
-dnl but we keep it in order not to force irrelevant filename changes on the
-dnl maintainers.
-dnl
-AC_DEFUN([AM_GNU_GETTEXT],
-[
-  dnl Argument checking.
-  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , 
[ifelse([$1], [use-libtool], ,
-    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
-  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
-    [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] 
argument is deprecated.])])
-  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], 
[need-formatstring-macros], ,
-    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
-])])])])
-  define([gt_included_intl],
-    ifelse([$1], [external],
-      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
-      [yes]))
-  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
-  gt_NEEDS_INIT
-  AM_GNU_GETTEXT_NEED([$2])
-
-  AC_REQUIRE([AM_PO_SUBDIRS])dnl
-  ifelse(gt_included_intl, yes, [
-    AC_REQUIRE([AM_INTL_SUBDIR])dnl
-  ])
-
-  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-
-  dnl Sometimes libintl requires libiconv, so first search for libiconv.
-  dnl Ideally we would do this search only after the
-  dnl      if test "$USE_NLS" = "yes"; then
-  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != 
"yes"; }; then
-  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
-  dnl the configure script would need to contain the same shell code
-  dnl again, outside any 'if'. There are two solutions:
-  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
-  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
-  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
-  dnl documented, we avoid it.
-  ifelse(gt_included_intl, yes, , [
-    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-  ])
-
-  dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
-  gt_INTL_MACOSX
-
-  dnl Set USE_NLS.
-  AC_REQUIRE([AM_NLS])
-
-  ifelse(gt_included_intl, yes, [
-    BUILD_INCLUDED_LIBINTL=no
-    USE_INCLUDED_LIBINTL=no
-  ])
-  LIBINTL=
-  LTLIBINTL=
-  POSUB=
-
-  dnl Add a version number to the cache macros.
-  case " $gt_needs " in
-    *" need-formatstring-macros "*) gt_api_version=3 ;;
-    *" need-ngettext "*) gt_api_version=2 ;;
-    *) gt_api_version=1 ;;
-  esac
-  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
-  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
-
-  dnl If we use NLS figure out what method
-  if test "$USE_NLS" = "yes"; then
-    gt_use_preinstalled_gnugettext=no
-    ifelse(gt_included_intl, yes, [
-      AC_MSG_CHECKING([whether included gettext is requested])
-      AC_ARG_WITH([included-gettext],
-        [  --with-included-gettext use the GNU gettext library included here],
-        nls_cv_force_use_gnu_gettext=$withval,
-        nls_cv_force_use_gnu_gettext=no)
-      AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
-
-      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
-      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-    ])
-        dnl User does not insist on using GNU NLS library.  Figure out what
-        dnl to use.  If GNU gettext is available we use this.  Else we have
-        dnl to fall back to GNU NLS library.
-
-        if test $gt_api_version -ge 3; then
-          gt_revision_test_code='
-#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-'
-        else
-          gt_revision_test_code=
-        fi
-        if test $gt_api_version -ge 2; then
-          gt_expression_test_code=' + * ngettext ("", "", 0)'
-        else
-          gt_expression_test_code=
-        fi
-
-        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
-         [AC_LINK_IFELSE(
-            [AC_LANG_PROGRAM(
-               [[
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;
-               ]],
-               [[
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + 
*_nl_domain_bindings
-               ]])],
-            [eval "$gt_func_gnugettext_libc=yes"],
-            [eval "$gt_func_gnugettext_libc=no"])])
-
-        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != 
"yes"; }; then
-          dnl Sometimes libintl requires libiconv, so first search for 
libiconv.
-          ifelse(gt_included_intl, yes, , [
-            AM_ICONV_LINK
-          ])
-          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
-          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
-          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
-          dnl even if libiconv doesn't exist.
-          AC_LIB_LINKFLAGS_BODY([intl])
-          AC_CACHE_CHECK([for GNU gettext in libintl],
-            [$gt_func_gnugettext_libintl],
-           [gt_save_CPPFLAGS="$CPPFLAGS"
-            CPPFLAGS="$CPPFLAGS $INCINTL"
-            gt_save_LIBS="$LIBS"
-            LIBS="$LIBS $LIBINTL"
-            dnl Now see whether libintl exists and does not depend on libiconv.
-            AC_LINK_IFELSE(
-              [AC_LANG_PROGRAM(
-                 [[
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);
-                 ]],
-                 [[
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + 
*_nl_expand_alias ("")
-                 ]])],
-              [eval "$gt_func_gnugettext_libintl=yes"],
-              [eval "$gt_func_gnugettext_libintl=no"])
-            dnl Now see whether libintl exists and depends on libiconv.
-            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" 
!= yes; } && test -n "$LIBICONV"; then
-              LIBS="$LIBS $LIBICONV"
-              AC_LINK_IFELSE(
-                [AC_LANG_PROGRAM(
-                   [[
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);
-                   ]],
-                   [[
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + 
*_nl_expand_alias ("")
-                   ]])],
-                [LIBINTL="$LIBINTL $LIBICONV"
-                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-                 eval "$gt_func_gnugettext_libintl=yes"
-                ])
-            fi
-            CPPFLAGS="$gt_save_CPPFLAGS"
-            LIBS="$gt_save_LIBS"])
-        fi
-
-        dnl If an already present or preinstalled GNU gettext() is found,
-        dnl use it.  But if this macro is used in GNU gettext, and GNU
-        dnl gettext is already preinstalled in libintl, we update this
-        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
-        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; 
} \
-           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" 
= "yes"; } \
-                && test "$PACKAGE" != gettext-runtime \
-                && test "$PACKAGE" != gettext-tools; }; then
-          gt_use_preinstalled_gnugettext=yes
-        else
-          dnl Reset the values set by searching for libintl.
-          LIBINTL=
-          LTLIBINTL=
-          INCINTL=
-        fi
-
-    ifelse(gt_included_intl, yes, [
-        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
-          dnl GNU gettext is not found in the C library.
-          dnl Fall back on included GNU gettext library.
-          nls_cv_use_gnu_gettext=yes
-        fi
-      fi
-
-      if test "$nls_cv_use_gnu_gettext" = "yes"; then
-        dnl Mark actions used to generate GNU NLS library.
-        BUILD_INCLUDED_LIBINTL=yes
-        USE_INCLUDED_LIBINTL=yes
-        
LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a
 $LIBICONV $LIBTHREAD"
-        
LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a
 $LTLIBICONV $LTLIBTHREAD"
-        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
-      fi
-
-      CATOBJEXT=
-      if test "$gt_use_preinstalled_gnugettext" = "yes" \
-         || test "$nls_cv_use_gnu_gettext" = "yes"; then
-        dnl Mark actions to use GNU gettext tools.
-        CATOBJEXT=.gmo
-      fi
-    ])
-
-    if test -n "$INTL_MACOSX_LIBS"; then
-      if test "$gt_use_preinstalled_gnugettext" = "yes" \
-         || test "$nls_cv_use_gnu_gettext" = "yes"; then
-        dnl Some extra flags are needed during linking.
-        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
-        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
-      fi
-    fi
-
-    if test "$gt_use_preinstalled_gnugettext" = "yes" \
-       || test "$nls_cv_use_gnu_gettext" = "yes"; then
-      AC_DEFINE([ENABLE_NLS], [1],
-        [Define to 1 if translation of program messages to the user's native 
language
-   is requested.])
-    else
-      USE_NLS=no
-    fi
-  fi
-
-  AC_MSG_CHECKING([whether to use NLS])
-  AC_MSG_RESULT([$USE_NLS])
-  if test "$USE_NLS" = "yes"; then
-    AC_MSG_CHECKING([where the gettext function comes from])
-    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = 
"yes"; }; then
-        gt_source="external libintl"
-      else
-        gt_source="libc"
-      fi
-    else
-      gt_source="included intl directory"
-    fi
-    AC_MSG_RESULT([$gt_source])
-  fi
-
-  if test "$USE_NLS" = "yes"; then
-
-    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = 
"yes"; }; then
-        AC_MSG_CHECKING([how to link with libintl])
-        AC_MSG_RESULT([$LIBINTL])
-        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
-      fi
-
-      dnl For backward compatibility. Some packages may be using this.
-      AC_DEFINE([HAVE_GETTEXT], [1],
-       [Define if the GNU gettext() function is already present or 
preinstalled.])
-      AC_DEFINE([HAVE_DCGETTEXT], [1],
-       [Define if the GNU dcgettext() function is already present or 
preinstalled.])
-    fi
-
-    dnl We need to process the po/ directory.
-    POSUB=po
-  fi
-
-  ifelse(gt_included_intl, yes, [
-    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
-    dnl to 'yes' because some of the testsuite requires it.
-    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; 
then
-      BUILD_INCLUDED_LIBINTL=yes
-    fi
-
-    dnl Make all variables we use known to autoconf.
-    AC_SUBST([BUILD_INCLUDED_LIBINTL])
-    AC_SUBST([USE_INCLUDED_LIBINTL])
-    AC_SUBST([CATOBJEXT])
-
-    dnl For backward compatibility. Some configure.ins may be using this.
-    nls_cv_header_intl=
-    nls_cv_header_libgt=
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    DATADIRNAME=share
-    AC_SUBST([DATADIRNAME])
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    INSTOBJEXT=.mo
-    AC_SUBST([INSTOBJEXT])
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    GENCAT=gencat
-    AC_SUBST([GENCAT])
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    INTLOBJS=
-    if test "$USE_INCLUDED_LIBINTL" = yes; then
-      INTLOBJS="\$(GETTOBJS)"
-    fi
-    AC_SUBST([INTLOBJS])
-
-    dnl Enable libtool support if the surrounding package wishes it.
-    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
-    AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
-  ])
-
-  dnl For backward compatibility. Some Makefiles may be using this.
-  INTLLIBS="$LIBINTL"
-  AC_SUBST([INTLLIBS])
-
-  dnl Make all documented variables known to autoconf.
-  AC_SUBST([LIBINTL])
-  AC_SUBST([LTLIBINTL])
-  AC_SUBST([POSUB])
-])
-
-
-dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
-m4_define([gt_NEEDS_INIT],
-[
-  m4_divert_text([DEFAULTS], [gt_needs=])
-  m4_define([gt_NEEDS_INIT], [])
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
-AC_DEFUN([AM_GNU_GETTEXT_NEED],
-[
-  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
-AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
diff --git a/m4/glibc2.m4 b/m4/glibc2.m4
deleted file mode 100644
index 0e5068266..000000000
--- a/m4/glibc2.m4
+++ /dev/null
@@ -1,31 +0,0 @@
-# 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.
-
-# Test for the GNU C Library, version 2.0 or newer.
-# From Bruno Haible.
-
-AC_DEFUN([gt_GLIBC2],
-  [
-    AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
-      [ac_cv_gnu_library_2],
-      [AC_EGREP_CPP([Lucky GNU user],
-        [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ >= 2) && !defined __UCLIBC__
-  Lucky GNU user
- #endif
-#endif
-        ],
-        [ac_cv_gnu_library_2=yes],
-        [ac_cv_gnu_library_2=no])
-      ]
-    )
-    AC_SUBST([GLIBC2])
-    GLIBC2="$ac_cv_gnu_library_2"
-  ]
-)
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
deleted file mode 100644
index 613fb2a41..000000000
--- a/m4/glibc21.m4
+++ /dev/null
@@ -1,34 +0,0 @@
-# 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, or uClibc.
-# From Bruno Haible.
-
-AC_DEFUN([gl_GLIBC21],
-  [
-    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],
-        [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
-  Lucky GNU user
- #endif
-#endif
-#ifdef __UCLIBC__
- Lucky user
-#endif
-        ],
-        [ac_cv_gnu_library_2_1=yes],
-        [ac_cv_gnu_library_2_1=no])
-      ]
-    )
-    AC_SUBST([GLIBC21])
-    GLIBC21="$ac_cv_gnu_library_2_1"
-  ]
-)
diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4
deleted file mode 100644
index 408918440..000000000
--- a/m4/gnulib-cache.m4
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-#
-# 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.
-#
-# This file represents the specification of how gnulib-tool is used.
-# It acts as a cache: It is written and read by gnulib-tool.
-# In projects that use version control, this file is meant to be put under
-# version control, like the configure.ac and various Makefile.am files.
-
-
-# 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-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([])
-gl_MODULES([
-  argp
-  error
-  fnmatch
-  getdelim
-  getline
-  gettext
-  progname
-  regex
-])
-gl_AVOID([])
-gl_SOURCE_BASE([grub-core/gnulib])
-gl_M4_BASE([m4])
-gl_PO_BASE([])
-gl_DOC_BASE([doc])
-gl_TESTS_BASE([tests])
-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
deleted file mode 100644
index 0ae5a9ec6..000000000
--- a/m4/gnulib-common.m4
+++ /dev/null
@@ -1,377 +0,0 @@
-# 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.
-
-# gl_COMMON
-# is expanded unconditionally through gnulib-tool magic.
-AC_DEFUN([gl_COMMON], [
-  dnl Use AC_REQUIRE here, so that the code is expanded once only.
-  AC_REQUIRE([gl_00GNULIB])
-  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 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__
-# define __GNUC_STDC_INLINE__ 1
-#endif])
-  AH_VERBATIM([unused_parameter],
-[/* Define as a marker that can be attached to declarations that might not
-    be used.  This helps to reduce warnings, such as from
-    GCC -Wunused-parameter.  */
-#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
-# define _GL_UNUSED __attribute__ ((__unused__))
-#else
-# define _GL_UNUSED
-#endif
-/* 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
-  dnl to /dev/tty, so they can be redirected to log files.  Such diagnostics
-  dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N.
-  LIBC_FATAL_STDERR_=1
-  export LIBC_FATAL_STDERR_
-])
-
-# gl_MODULE_INDICATOR_CONDITION
-# 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.
-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],
-[
-  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])
-# defines a C macro indicating the presence of the given module
-# in a location where it can be used.
-#                                             |  Value  |   Value   |
-#                                             | in lib/ | in tests/ |
-# --------------------------------------------+---------+-----------+
-# Module present among main modules:          |    1    |     1     |
-# --------------------------------------------+---------+-----------+
-# Module present among tests-related modules: |    0    |     1     |
-# --------------------------------------------+---------+-----------+
-# Module not present at all:                  |    0    |     0     |
-# --------------------------------------------+---------+-----------+
-AC_DEFUN([gl_MODULE_INDICATOR],
-[
-  AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
-      [abcdefghijklmnopqrstuvwxyz./-],
-      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
-    [gl_MODULE_INDICATOR_CONDITION],
-    [Define to a C preprocessor expression that evaluates to 1 or 0,
-     depending whether the gnulib module $1 shall be considered present.])
-])
-
-# gl_MODULE_INDICATOR_FOR_TESTS([modulename])
-# defines a C macro indicating the presence of the given module
-# in lib or tests. This is useful to determine whether the module
-# should be tested.
-#                                             |  Value  |   Value   |
-#                                             | in lib/ | in tests/ |
-# --------------------------------------------+---------+-----------+
-# Module present among main modules:          |    1    |     1     |
-# --------------------------------------------+---------+-----------+
-# Module present among tests-related modules: |    1    |     1     |
-# --------------------------------------------+---------+-----------+
-# Module not present at all:                  |    0    |     0     |
-# --------------------------------------------+---------+-----------+
-AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
-[
-  AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
-      [abcdefghijklmnopqrstuvwxyz./-],
-      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
-    [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.
-m4_ifndef([m4_foreach_w],
-  [m4_define([m4_foreach_w],
-    [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
-
-# AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH])
-# ----------------------------------------------------
-# Backport of autoconf-2.63b's macro.
-# Remove this macro when we can assume autoconf >= 2.64.
-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],
-    m4_defn([AC_PROG_MKDIR_P])[
-    AC_SUBST([MKDIR_P])])], [
-  dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P.
-  AC_DEFUN_ONCE([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.
-# 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
-   # The order here caters to the fact that C++ does not require restrict.
-   for ac_kw in __restrict __restrict__ _Restrict restrict; do
-     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-      [[typedef int * int_ptr;
-        int foo (int_ptr $ac_kw ip) {
-        return ip[0];
-       }]],
-      [[int s[1];
-        int * $ac_kw t = s;
-        t[0] = 0;
-        return foo(t)]])],
-      [ac_cv_c_restrict=$ac_kw])
-     test "$ac_cv_c_restrict" != no && break
-   done
-  ])
- AH_VERBATIM([restrict],
-[/* Define to the equivalent of the C99 'restrict' keyword, or to
-   nothing if this is not supported.  Do not define if restrict is
-   supported directly.  */
-#undef restrict
-/* Work around a bug in Sun C++: it does not support _Restrict, even
-   though the corresponding Sun C compiler does, which causes
-   "#define restrict _Restrict" in the previous line.  Perhaps some future
-   version of Sun C++ will work with _Restrict; if so, it'll probably
-   define __RESTRICT, just as Sun C does.  */
-#if defined __SUNPRO_CC && !defined __RESTRICT
-# define _Restrict
-#endif])
- case $ac_cv_c_restrict in
-   restrict) ;;
-   no) AC_DEFINE([restrict], []) ;;
-   *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
- esac
-])
-])
-
-# gl_BIGENDIAN
-# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
-# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
-# macros invoke AC_C_BIGENDIAN with arguments.
-AC_DEFUN([gl_BIGENDIAN],
-[
-  AC_C_BIGENDIAN
-])
-
-# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
-# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
-# output a spurious "(cached)" mark in the midst of other configure output.
-# This macro should be used instead of AC_CACHE_VAL when it is not surrounded
-# by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
-AC_DEFUN([gl_CACHE_VAL_SILENT],
-[
-  saved_as_echo_n="$as_echo_n"
-  as_echo_n=':'
-  AC_CACHE_VAL([$1], [$2])
-  as_echo_n="$saved_as_echo_n"
-])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
deleted file mode 100644
index 7a19f60d8..000000000
--- a/m4/gnulib-comp.m4
+++ /dev/null
@@ -1,756 +0,0 @@
-# DO NOT EDIT! GENERATED AUTOMATICALLY!
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-#
-# 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.
-#
-# This file represents the compiled summary of the specification in
-# gnulib-cache.m4. It lists the computed macro invocations that need
-# to be invoked from configure.ac.
-# In projects that use version control, this file can be treated like
-# other built files.
-
-
-# This macro should be invoked from ./configure.ac, in the section
-# "Checks for programs", right after AC_PROG_CC, and certainly before
-# any checks for libraries, header files, types and library functions.
-AC_DEFUN([gl_EARLY],
-[
-  m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
-  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([gl_PROG_AR_RANLIB])
-  AC_REQUIRE([AM_PROG_CC_C_O])
-  # Code from module alloca:
-  # Code from module alloca-opt:
-  # Code from module argp:
-  # Code from module btowc:
-  # 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:
-  # Code from module getline:
-  # Code from module getopt-gnu:
-  # Code from module getopt-posix:
-  # Code from module gettext:
-  # Code from module gettext-h:
-  # Code from module havelib:
-  # Code from module include_next:
-  # 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:
-  # Code from module stdio:
-  # Code from module stdlib:
-  # Code from module strcase:
-  # 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_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 wchar:
-  # Code from module wcrtomb:
-  # Code from module wctype-h:
-  # Code from module wcwidth:
-  # Code from module xsize:
-])
-
-# This macro should be invoked from ./configure.ac, in the section
-# "Check for header files, types and library functions".
-AC_DEFUN([gl_INIT],
-[
-  AM_CONDITIONAL([GL_COND_LIBTOOL], [false])
-  gl_cond_libtool=false
-  gl_libdeps=
-  gl_ltlibdeps=
-  gl_m4_base='m4'
-  m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
-  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
-  m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
-  m4_pushdef([gl_LIBSOURCES_LIST], [])
-  m4_pushdef([gl_LIBSOURCES_DIR], [])
-  gl_COMMON
-  gl_source_base='grub-core/gnulib'
-  gl_FUNC_ALLOCA
-  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])])
-  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])
-  gl_CONFIGMAKE_PREP
-  gl_DIRNAME_LGPL
-  gl_DOUBLE_SLASH_ROOT
-  gl_HEADER_ERRNO_H
-  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])])
-  AC_REQUIRE([gl_EXTERN_INLINE])
-  gl_FLOAT_H
-  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
-  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])
-  gl_FUNC_GETLINE
-  if test $REPLACE_GETLINE = 1; then
-    AC_LIBOBJ([getline])
-    gl_PREREQ_GETLINE
-  fi
-  gl_STDIO_MODULE_INDICATOR([getline])
-  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])
-  gl_FUNC_GETOPT_POSIX
-  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])
-  AC_SUBST([LIBINTL])
-  AC_SUBST([LTLIBINTL])
-  gl_LANGINFO_H
-  gl_LOCALCHARSET
-  
LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
-  AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
-  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])
-  gl_FUNC_MALLOC_POSIX
-  if test $REPLACE_MALLOC = 1; then
-    AC_LIBOBJ([malloc])
-  fi
-  gl_STDLIB_MODULE_INDICATOR([malloc-posix])
-  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])
-  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])
-  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])
-  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])
-  gl_FUNC_MEMPCPY
-  if test $HAVE_MEMPCPY = 0; then
-    AC_LIBOBJ([mempcpy])
-    gl_PREREQ_MEMPCPY
-  fi
-  gl_STRING_MODULE_INDICATOR([mempcpy])
-  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
-  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])
-  AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
-  AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
-  gl_FUNC_RAWMEMCHR
-  if test $HAVE_RAWMEMCHR = 0; then
-    AC_LIBOBJ([rawmemchr])
-    gl_PREREQ_RAWMEMCHR
-  fi
-  gl_STRING_MODULE_INDICATOR([rawmemchr])
-  gl_FUNC_REALLOC_POSIX
-  if test $REPLACE_REALLOC = 1; then
-    AC_LIBOBJ([realloc])
-  fi
-  gl_STDLIB_MODULE_INDICATOR([realloc-posix])
-  gl_REGEX
-  if test $ac_use_included_regex = yes; then
-    AC_LIBOBJ([regex])
-    gl_PREREQ_REGEX
-  fi
-  gl_SIZE_MAX
-  gl_FUNC_SLEEP
-  if test $HAVE_SLEEP = 0 || test $REPLACE_SLEEP = 1; then
-    AC_LIBOBJ([sleep])
-  fi
-  gl_UNISTD_MODULE_INDICATOR([sleep])
-  gt_TYPE_SSIZE_T
-  gl_STDALIGN_H
-  AM_STDBOOL_H
-  gl_STDDEF_H
-  gl_STDINT_H
-  gl_STDIO_H
-  gl_STDLIB_H
-  gl_STRCASE
-  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])
-  gl_FUNC_STRERROR
-  if test $REPLACE_STRERROR = 1; then
-    AC_LIBOBJ([strerror])
-  fi
-  gl_MODULE_INDICATOR([strerror])
-  gl_STRING_MODULE_INDICATOR([strerror])
-  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
-  gl_HEADER_STRINGS_H
-  gl_FUNC_STRNDUP
-  if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then
-    AC_LIBOBJ([strndup])
-  fi
-  gl_STRING_MODULE_INDICATOR([strndup])
-  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])
-  gl_SYS_TYPES_H
-  AC_PROG_MKDIR_P
-  gl_SYSEXITS
-  gl_UNISTD_H
-  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
-  gl_FUNC_VSNPRINTF
-  gl_STDIO_MODULE_INDICATOR([vsnprintf])
-  gl_WCHAR_H
-  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])
-  gl_WCTYPE_H
-  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, [
-    m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
-      for gl_file in ]gl_LIBSOURCES_LIST[ ; do
-        if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
-          echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
-          exit 1
-        fi
-      done])dnl
-      m4_if(m4_sysval, [0], [],
-        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not 
found])])
-  ])
-  m4_popdef([gl_LIBSOURCES_DIR])
-  m4_popdef([gl_LIBSOURCES_LIST])
-  m4_popdef([AC_LIBSOURCES])
-  m4_popdef([AC_REPLACE_FUNCS])
-  m4_popdef([AC_LIBOBJ])
-  AC_CONFIG_COMMANDS_PRE([
-    gl_libobjs=
-    gl_ltlibobjs=
-    if test -n "$gl_LIBOBJS"; then
-      # Remove the extension.
-      sed_drop_objext='s/\.o$//;s/\.obj$//'
-      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e 
"$sed_drop_objext" | sort | uniq`; do
-        gl_libobjs="$gl_libobjs $i.$ac_objext"
-        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
-      done
-    fi
-    AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
-    AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
-  ])
-  gltests_libdeps=
-  gltests_ltlibdeps=
-  m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
-  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
-  m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
-  m4_pushdef([gltests_LIBSOURCES_LIST], [])
-  m4_pushdef([gltests_LIBSOURCES_DIR], [])
-  gl_COMMON
-  gl_source_base='tests'
-changequote(,)dnl
-  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr 
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 
's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
-changequote([, ])dnl
-  AC_SUBST([gltests_WITNESS])
-  gl_module_indicator_condition=$gltests_WITNESS
-  m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
-  m4_popdef([gl_MODULE_INDICATOR_CONDITION])
-  m4_ifval(gltests_LIBSOURCES_LIST, [
-    m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
-      for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
-        if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
-          echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
-          exit 1
-        fi
-      done])dnl
-      m4_if(m4_sysval, [0], [],
-        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not 
found])])
-  ])
-  m4_popdef([gltests_LIBSOURCES_DIR])
-  m4_popdef([gltests_LIBSOURCES_LIST])
-  m4_popdef([AC_LIBSOURCES])
-  m4_popdef([AC_REPLACE_FUNCS])
-  m4_popdef([AC_LIBOBJ])
-  AC_CONFIG_COMMANDS_PRE([
-    gltests_libobjs=
-    gltests_ltlibobjs=
-    if test -n "$gltests_LIBOBJS"; then
-      # Remove the extension.
-      sed_drop_objext='s/\.o$//;s/\.obj$//'
-      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e 
"$sed_drop_objext" | sort | uniq`; do
-        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
-        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
-      done
-    fi
-    AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
-    AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
-  ])
-  LIBGNU_LIBDEPS="$gl_libdeps"
-  AC_SUBST([LIBGNU_LIBDEPS])
-  LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
-  AC_SUBST([LIBGNU_LTLIBDEPS])
-])
-
-# Like AC_LIBOBJ, except that the module name goes
-# into gl_LIBOBJS instead of into LIBOBJS.
-AC_DEFUN([gl_LIBOBJ], [
-  AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
-  gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
-])
-
-# Like AC_REPLACE_FUNCS, except that the module name goes
-# into gl_LIBOBJS instead of into LIBOBJS.
-AC_DEFUN([gl_REPLACE_FUNCS], [
-  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
-  AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
-])
-
-# Like AC_LIBSOURCES, except the directory where the source file is
-# expected is derived from the gnulib-tool parameterization,
-# and alloca is special cased (for the alloca-opt module).
-# We could also entirely rely on EXTRA_lib..._SOURCES.
-AC_DEFUN([gl_LIBSOURCES], [
-  m4_foreach([_gl_NAME], [$1], [
-    m4_if(_gl_NAME, [alloca.c], [], [
-      m4_define([gl_LIBSOURCES_DIR], [grub-core/gnulib])
-      m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
-    ])
-  ])
-])
-
-# Like AC_LIBOBJ, except that the module name goes
-# into gltests_LIBOBJS instead of into LIBOBJS.
-AC_DEFUN([gltests_LIBOBJ], [
-  AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
-  gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
-])
-
-# Like AC_REPLACE_FUNCS, except that the module name goes
-# into gltests_LIBOBJS instead of into LIBOBJS.
-AC_DEFUN([gltests_REPLACE_FUNCS], [
-  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
-  AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
-])
-
-# Like AC_LIBSOURCES, except the directory where the source file is
-# expected is derived from the gnulib-tool parameterization,
-# and alloca is special cased (for the alloca-opt module).
-# We could also entirely rely on EXTRA_lib..._SOURCES.
-AC_DEFUN([gltests_LIBSOURCES], [
-  m4_foreach([_gl_NAME], [$1], [
-    m4_if(_gl_NAME, [alloca.c], [], [
-      m4_define([gltests_LIBSOURCES_DIR], [tests])
-      m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
-    ])
-  ])
-])
-
-# 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/config.rpath
-  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
-  lib/argp-eexst.c
-  lib/argp-fmtstream.c
-  lib/argp-fmtstream.h
-  lib/argp-fs-xinl.c
-  lib/argp-help.c
-  lib/argp-namefrob.h
-  lib/argp-parse.c
-  lib/argp-pin.c
-  lib/argp-pv.c
-  lib/argp-pvh.c
-  lib/argp-xinl.c
-  lib/argp.h
-  lib/asnprintf.c
-  lib/basename-lgpl.c
-  lib/btowc.c
-  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
-  lib/fnmatch_loop.c
-  lib/getdelim.c
-  lib/getline.c
-  lib/getopt.c
-  lib/getopt.in.h
-  lib/getopt1.c
-  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
-  lib/printf-parse.c
-  lib/printf-parse.h
-  lib/progname.c
-  lib/progname.h
-  lib/rawmemchr.c
-  lib/rawmemchr.valgrind
-  lib/realloc.c
-  lib/ref-add.sin
-  lib/ref-del.sin
-  lib/regcomp.c
-  lib/regex.c
-  lib/regex.h
-  lib/regex_internal.c
-  lib/regex_internal.h
-  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.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
-  lib/stripslash.c
-  lib/strncasecmp.c
-  lib/strndup.c
-  lib/strnlen.c
-  lib/strnlen1.c
-  lib/strnlen1.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/btowc.m4
-  m4/codeset.m4
-  m4/configmake.m4
-  m4/dirname.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
-  m4/getdelim.m4
-  m4/getline.m4
-  m4/getopt.m4
-  m4/gettext.m4
-  m4/glibc2.m4
-  m4/glibc21.m4
-  m4/gnulib-common.m4
-  m4/iconv.m4
-  m4/include_next.m4
-  m4/intdiv0.m4
-  m4/intl.m4
-  m4/intldir.m4
-  m4/intlmacosx.m4
-  m4/intmax.m4
-  m4/intmax_t.m4
-  m4/inttypes-pri.m4
-  m4/inttypes_h.m4
-  m4/langinfo_h.m4
-  m4/lcmessage.m4
-  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
-  m4/progtest.m4
-  m4/rawmemchr.m4
-  m4/realloc.m4
-  m4/regex.m4
-  m4/size_max.m4
-  m4/sleep.m4
-  m4/ssize_t.m4
-  m4/stdalign.m4
-  m4/stdbool.m4
-  m4/stddef_h.m4
-  m4/stdint.m4
-  m4/stdint_h.m4
-  m4/stdio_h.m4
-  m4/stdlib_h.m4
-  m4/strcase.m4
-  m4/strchrnul.m4
-  m4/strerror.m4
-  m4/string_h.m4
-  m4/strings_h.m4
-  m4/strndup.m4
-  m4/strnlen.m4
-  m4/sys_socket_h.m4
-  m4/sys_types_h.m4
-  m4/sysexits.m4
-  m4/threadlib.m4
-  m4/uintmax_t.m4
-  m4/unistd_h.m4
-  m4/vasnprintf.m4
-  m4/visibility.m4
-  m4/vsnprintf.m4
-  m4/warn-on-use.m4
-  m4/wchar_h.m4
-  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
deleted file mode 100644
index f3dea1a9f..000000000
--- a/m4/gnulib-tool.m4
+++ /dev/null
@@ -1,57 +0,0 @@
-# gnulib-tool.m4 serial 2
-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.
-
-dnl The following macros need not be invoked explicitly.
-dnl Invoking them does nothing except to declare default arguments
-dnl for "gnulib-tool --import".
-
-dnl Usage: gl_LOCAL_DIR([DIR])
-AC_DEFUN([gl_LOCAL_DIR], [])
-
-dnl Usage: gl_MODULES([module1 module2 ...])
-AC_DEFUN([gl_MODULES], [])
-
-dnl Usage: gl_AVOID([module1 module2 ...])
-AC_DEFUN([gl_AVOID], [])
-
-dnl Usage: gl_SOURCE_BASE([DIR])
-AC_DEFUN([gl_SOURCE_BASE], [])
-
-dnl Usage: gl_M4_BASE([DIR])
-AC_DEFUN([gl_M4_BASE], [])
-
-dnl Usage: gl_PO_BASE([DIR])
-AC_DEFUN([gl_PO_BASE], [])
-
-dnl Usage: gl_DOC_BASE([DIR])
-AC_DEFUN([gl_DOC_BASE], [])
-
-dnl Usage: gl_TESTS_BASE([DIR])
-AC_DEFUN([gl_TESTS_BASE], [])
-
-dnl Usage: gl_WITH_TESTS
-AC_DEFUN([gl_WITH_TESTS], [])
-
-dnl Usage: gl_LIB([LIBNAME])
-AC_DEFUN([gl_LIB], [])
-
-dnl Usage: gl_LGPL or gl_LGPL([VERSION])
-AC_DEFUN([gl_LGPL], [])
-
-dnl Usage: gl_MAKEFILE_NAME([FILENAME])
-AC_DEFUN([gl_MAKEFILE_NAME], [])
-
-dnl Usage: gl_LIBTOOL
-AC_DEFUN([gl_LIBTOOL], [])
-
-dnl Usage: gl_MACRO_PREFIX([PREFIX])
-AC_DEFUN([gl_MACRO_PREFIX], [])
-
-dnl Usage: gl_PO_DOMAIN([DOMAIN])
-AC_DEFUN([gl_PO_DOMAIN], [])
-
-dnl Usage: gl_VC_FILES([BOOLEAN])
-AC_DEFUN([gl_VC_FILES], [])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
deleted file mode 100644
index a50364656..000000000
--- a/m4/iconv.m4
+++ /dev/null
@@ -1,268 +0,0 @@
-# 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.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
-[
-  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-
-  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
-  dnl accordingly.
-  AC_LIB_LINKFLAGS_BODY([iconv])
-])
-
-AC_DEFUN([AM_ICONV_LINK],
-[
-  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
-  dnl those with the standalone portable GNU libiconv installed).
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-
-  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
-  dnl accordingly.
-  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-
-  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
-  dnl because if the user has installed libiconv and not disabled its use
-  dnl via --without-libiconv-prefix, he wants to use it. The first
-  dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
-  am_save_CPPFLAGS="$CPPFLAGS"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-
-  AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
-    am_cv_func_iconv="no, consider installing GNU libiconv"
-    am_cv_lib_iconv=no
-    AC_LINK_IFELSE(
-      [AC_LANG_PROGRAM(
-         [[
-#include <stdlib.h>
-#include <iconv.h>
-         ]],
-         [[iconv_t cd = iconv_open("","");
-           iconv(cd,NULL,NULL,NULL,NULL);
-           iconv_close(cd);]])],
-      [am_cv_func_iconv=yes])
-    if test "$am_cv_func_iconv" != yes; then
-      am_save_LIBS="$LIBS"
-      LIBS="$LIBS $LIBICONV"
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[
-#include <stdlib.h>
-#include <iconv.h>
-           ]],
-           [[iconv_t cd = iconv_open("","");
-             iconv(cd,NULL,NULL,NULL,NULL);
-             iconv_close(cd);]])],
-        [am_cv_lib_iconv=yes]
-        [am_cv_func_iconv=yes])
-      LIBS="$am_save_LIBS"
-    fi
-  ])
-  if test "$am_cv_func_iconv" = yes; then
-    AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
-      dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
-      dnl Solaris 10.
-      am_save_LIBS="$LIBS"
-      if test $am_cv_lib_iconv = yes; then
-        LIBS="$LIBS $LIBICONV"
-      fi
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <iconv.h>
-#include <string.h>
-int main ()
-{
-  int result = 0;
-  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
-     returns.  */
-  {
-    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
-    if (cd_utf8_to_88591 != (iconv_t)(-1))
-      {
-        static const char input[] = "\342\202\254"; /* EURO SIGN */
-        char buf[10];
-        const char *inptr = input;
-        size_t inbytesleft = strlen (input);
-        char *outptr = buf;
-        size_t outbytesleft = sizeof (buf);
-        size_t res = iconv (cd_utf8_to_88591,
-                            (char **) &inptr, &inbytesleft,
-                            &outptr, &outbytesleft);
-        if (res == 0)
-          result |= 1;
-        iconv_close (cd_utf8_to_88591);
-      }
-  }
-  /* Test against Solaris 10 bug: Failures are not distinguishable from
-     successful returns.  */
-  {
-    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
-    if (cd_ascii_to_88591 != (iconv_t)(-1))
-      {
-        static const char input[] = "\263";
-        char buf[10];
-        const char *inptr = input;
-        size_t inbytesleft = strlen (input);
-        char *outptr = buf;
-        size_t outbytesleft = sizeof (buf);
-        size_t res = iconv (cd_ascii_to_88591,
-                            (char **) &inptr, &inbytesleft,
-                            &outptr, &outbytesleft);
-        if (res == 0)
-          result |= 2;
-        iconv_close (cd_ascii_to_88591);
-      }
-  }
-  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
-  {
-    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
-    if (cd_88591_to_utf8 != (iconv_t)(-1))
-      {
-        static const char input[] = "\304";
-        static char buf[2] = { (char)0xDE, (char)0xAD };
-        const char *inptr = input;
-        size_t inbytesleft = 1;
-        char *outptr = buf;
-        size_t outbytesleft = 1;
-        size_t res = iconv (cd_88591_to_utf8,
-                            (char **) &inptr, &inbytesleft,
-                            &outptr, &outbytesleft);
-        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
-          result |= 4;
-        iconv_close (cd_88591_to_utf8);
-      }
-  }
-#if 0 /* This bug could be worked around by the caller.  */
-  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
-  {
-    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
-    if (cd_88591_to_utf8 != (iconv_t)(-1))
-      {
-        static const char input[] = "\304rger mit b\366sen B\374bchen ohne 
Augenma\337";
-        char buf[50];
-        const char *inptr = input;
-        size_t inbytesleft = strlen (input);
-        char *outptr = buf;
-        size_t outbytesleft = sizeof (buf);
-        size_t res = iconv (cd_88591_to_utf8,
-                            (char **) &inptr, &inbytesleft,
-                            &outptr, &outbytesleft);
-        if ((int)res > 0)
-          result |= 8;
-        iconv_close (cd_88591_to_utf8);
-      }
-  }
-#endif
-  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
-     provided.  */
-  if (/* Try standardized names.  */
-      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
-      /* Try IRIX, OSF/1 names.  */
-      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
-      /* Try AIX names.  */
-      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
-      /* Try HP-UX names.  */
-      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
-    result |= 16;
-  return result;
-}]])],
-        [am_cv_func_iconv_works=yes],
-        [am_cv_func_iconv_works=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
-           *)            am_cv_func_iconv_works="guessing yes" ;;
-         esac
-changequote([,])dnl
-        ])
-      LIBS="$am_save_LIBS"
-    ])
-    case "$am_cv_func_iconv_works" in
-      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
-      *)   am_func_iconv=yes ;;
-    esac
-  else
-    am_func_iconv=no am_cv_lib_iconv=no
-  fi
-  if test "$am_func_iconv" = yes; then
-    AC_DEFINE([HAVE_ICONV], [1],
-      [Define if you have the iconv() function and it works.])
-  fi
-  if test "$am_cv_lib_iconv" = yes; then
-    AC_MSG_CHECKING([how to link with libiconv])
-    AC_MSG_RESULT([$LIBICONV])
-  else
-    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
-    dnl either.
-    CPPFLAGS="$am_save_CPPFLAGS"
-    LIBICONV=
-    LTLIBICONV=
-  fi
-  AC_SUBST([LIBICONV])
-  AC_SUBST([LTLIBICONV])
-])
-
-dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
-dnl avoid warnings like
-dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
-dnl This is tricky because of the way 'aclocal' is implemented:
-dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
-dnl   Otherwise aclocal's initial scan pass would miss the macro definition.
-dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN 
expansions.
-dnl   Otherwise aclocal would emit many "Use of uninitialized value $1"
-dnl   warnings.
-m4_define([gl_iconv_AC_DEFUN],
-  m4_version_prereq([2.64],
-    [[AC_DEFUN_ONCE(
-        [$1], [$2])]],
-    [m4_ifdef([gl_00GNULIB],
-       [[AC_DEFUN_ONCE(
-           [$1], [$2])]],
-       [[AC_DEFUN(
-           [$1], [$2])]])]))
-gl_iconv_AC_DEFUN([AM_ICONV],
-[
-  AM_ICONV_LINK
-  if test "$am_cv_func_iconv" = yes; then
-    AC_MSG_CHECKING([for iconv declaration])
-    AC_CACHE_VAL([am_cv_proto_iconv], [
-      AC_COMPILE_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#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();
-#endif
-           ]],
-           [[]])],
-        [am_cv_proto_iconv_arg1=""],
-        [am_cv_proto_iconv_arg1="const"])
-      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, 
$am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, 
size_t *outbytesleft);"])
-    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( 
/(/'`
-    AC_MSG_RESULT([
-         $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
deleted file mode 100644
index 108d94567..000000000
--- a/m4/include_next.m4
+++ /dev/null
@@ -1,270 +0,0 @@
-# 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.
-
-dnl From Paul Eggert and Derek Price.
-
-dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
-dnl
-dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
-dnl 'include' otherwise.
-dnl
-dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
-dnl supports it in the special case that it is the first include directive in
-dnl the given file, or to 'include' otherwise.
-dnl
-dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
-dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
-dnl '#pragma GCC system_header' has the same effect as if the file was found
-dnl through the include search path specified with '-isystem' options (as
-dnl opposed to the search path specified with '-I' options). Namely, gcc
-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],
-[
-  AC_LANG_PREPROC_REQUIRE()
-  AC_CACHE_CHECK([whether the preprocessor supports include_next],
-    [gl_cv_have_include_next],
-    [rm -rf conftestd1a conftestd1b conftestd2
-     mkdir conftestd1a conftestd1b conftestd2
-     dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on
-     dnl AIX 6.1 support include_next when used as first preprocessor directive
-     dnl in a file, but not when preceded by another include directive. Check
-     dnl for this bug by including <stdio.h>.
-     dnl Additionally, with this same compiler, include_next is a no-op when
-     dnl used in a header file that was included by specifying its absolute
-     dnl file name. Despite these two bugs, include_next is used in the
-     dnl compiler's <math.h>. By virtue of the second bug, we need to use
-     dnl include_next as well in this case.
-     cat <<EOF > conftestd1a/conftest.h
-#define DEFINED_IN_CONFTESTD1
-#include_next <conftest.h>
-#ifdef DEFINED_IN_CONFTESTD2
-int foo;
-#else
-#error "include_next doesn't work"
-#endif
-EOF
-     cat <<EOF > conftestd1b/conftest.h
-#define DEFINED_IN_CONFTESTD1
-#include <stdio.h>
-#include_next <conftest.h>
-#ifdef DEFINED_IN_CONFTESTD2
-int foo;
-#else
-#error "include_next doesn't work"
-#endif
-EOF
-     cat <<EOF > conftestd2/conftest.h
-#ifndef DEFINED_IN_CONFTESTD1
-#error "include_next test doesn't work"
-#endif
-#define DEFINED_IN_CONFTESTD2
-EOF
-     gl_save_CPPFLAGS="$CPPFLAGS"
-     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
-dnl We intentionally avoid using AC_LANG_SOURCE here.
-     AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
-       [gl_cv_have_include_next=yes],
-       [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
-        AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
-          [gl_cv_have_include_next=buggy],
-          [gl_cv_have_include_next=no])
-       ])
-     CPPFLAGS="$gl_save_CPPFLAGS"
-     rm -rf conftestd1a conftestd1b conftestd2
-    ])
-  PRAGMA_SYSTEM_HEADER=
-  if test $gl_cv_have_include_next = yes; then
-    INCLUDE_NEXT=include_next
-    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
-    if test -n "$GCC"; then
-      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
-    fi
-  else
-    if test $gl_cv_have_include_next = buggy; then
-      INCLUDE_NEXT=include
-      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
-    else
-      INCLUDE_NEXT=include
-      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
-    fi
-  fi
-  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 ...)
-# ------------------------------------------
-# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be
-# '<foo.h>'; otherwise define it to be
-# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
-# Also, if #include_next works as first preprocessing directive in a file,
-# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to
-# be
-# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
-# That way, a header file with the following line:
-#       address@hidden@ @NEXT_FOO_H@
-# or
-#       address@hidden@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@
-# behaves (after sed substitution) as if it contained
-#       #include_next <foo.h>
-# 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.
-# 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])
-
-  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'>'])
-     else
-       AC_CACHE_CHECK(
-         [absolute name of <]m4_defn([gl_HEADER_NAME])[>],
-         m4_defn([gl_next_header]),
-         [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)])
-     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)
-     fi
-     AC_SUBST(
-       AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
-       [$gl_next_as_first_directive])
-     AS_VAR_POPDEF([gl_next_header])])
-])
-
-# Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE;
-# this fallback is safe for all earlier autoconf versions.
-m4_define_default([AC_LANG_DEFINES_PROVIDED])
diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4
deleted file mode 100644
index 74d0e80d2..000000000
--- a/m4/intdiv0.m4
+++ /dev/null
@@ -1,87 +0,0 @@
-# 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.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gt_INTDIV0],
-[
-  AC_REQUIRE([AC_PROG_CC])dnl
-  AC_REQUIRE([AC_CANONICAL_HOST])dnl
-
-  AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
-    gt_cv_int_divbyzero_sigfpe,
-    [
-      gt_cv_int_divbyzero_sigfpe=
-changequote(,)dnl
-      case "$host_os" in
-        macos* | darwin[6-9]* | darwin[1-9][0-9]*)
-          # 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
-            i[34567]86 | x86_64)
-              gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
-          esac
-          ;;
-      esac
-changequote([,])dnl
-      if test -z "$gt_cv_int_divbyzero_sigfpe"; then
-        AC_RUN_IFELSE(
-          [AC_LANG_SOURCE([[
-#include <stdlib.h>
-#include <signal.h>
-
-static void
-sigfpe_handler (int sig)
-{
-  /* Exit with code 0 if SIGFPE, with code 1 if any other signal.  */
-  exit (sig != SIGFPE);
-}
-
-int x = 1;
-int y = 0;
-int z;
-int nan;
-
-int main ()
-{
-  signal (SIGFPE, sigfpe_handler);
-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP.  */
-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
-  signal (SIGTRAP, sigfpe_handler);
-#endif
-/* Linux/SPARC yields signal SIGILL.  */
-#if defined (__sparc__) && defined (__linux__)
-  signal (SIGILL, sigfpe_handler);
-#endif
-
-  z = x / y;
-  nan = y / y;
-  exit (2);
-}
-]])],
-          [gt_cv_int_divbyzero_sigfpe=yes],
-          [gt_cv_int_divbyzero_sigfpe=no],
-          [
-            # Guess based on the CPU.
-changequote(,)dnl
-            case "$host_cpu" in
-              alpha* | i[34567]86 | x86_64 | m68k | s390*)
-                gt_cv_int_divbyzero_sigfpe="guessing yes";;
-              *)
-                gt_cv_int_divbyzero_sigfpe="guessing no";;
-            esac
-changequote([,])dnl
-          ])
-      fi
-    ])
-  case "$gt_cv_int_divbyzero_sigfpe" in
-    *yes) value=1;;
-    *) value=0;;
-  esac
-  AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
-    [Define if integer division by zero raises signal SIGFPE.])
-])
diff --git a/m4/intl.m4 b/m4/intl.m4
deleted file mode 100644
index 486b5cc64..000000000
--- a/m4/intl.m4
+++ /dev/null
@@ -1,300 +0,0 @@
-# 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.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-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 Authors:
-dnl   Ulrich Drepper <address@hidden>, 1995-2000.
-dnl   Bruno Haible <address@hidden>, 2000-2009.
-
-AC_PREREQ([2.60])
-
-dnl Checks for all prerequisites of the intl subdirectory,
-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
-dnl            USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
-AC_DEFUN([AM_INTL_SUBDIR],
-[
-  AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-  AC_REQUIRE([AC_PROG_CC])dnl
-  AC_REQUIRE([AC_CANONICAL_HOST])dnl
-  AC_REQUIRE([gt_GLIBC2])dnl
-  AC_REQUIRE([AC_PROG_RANLIB])dnl
-  AC_REQUIRE([gl_VISIBILITY])dnl
-  AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
-  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
-  AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
-  AC_REQUIRE([gt_TYPE_WINT_T])dnl
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gt_TYPE_INTMAX_T])
-  AC_REQUIRE([gt_PRINTF_POSIX])
-  AC_REQUIRE([gl_GLIBC21])dnl
-  AC_REQUIRE([gl_XSIZE])dnl
-  AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
-  AC_REQUIRE([gt_INTL_MACOSX])dnl
-
-  dnl Support for automake's --enable-silent-rules.
-  case "$enable_silent_rules" in
-    yes) INTL_DEFAULT_VERBOSITY=0;;
-    no)  INTL_DEFAULT_VERBOSITY=1;;
-    *)   INTL_DEFAULT_VERBOSITY=1;;
-  esac
-  AC_SUBST([INTL_DEFAULT_VERBOSITY])
-
-  AC_CHECK_TYPE([ptrdiff_t], ,
-    [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([features.h stddef.h stdlib.h string.h])
-  AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
-    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).
-  gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
-  gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
-
-  dnl Use the *_unlocked functions only if they are declared.
-  dnl (because some of them were defined without being declared in Solaris
-  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
-  dnl on Solaris 2.5.1 to run on Solaris 2.6).
-  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
-  gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
-
-  case $gt_cv_func_printf_posix in
-    *yes) HAVE_POSIX_PRINTF=1 ;;
-    *) HAVE_POSIX_PRINTF=0 ;;
-  esac
-  AC_SUBST([HAVE_POSIX_PRINTF])
-  if test "$ac_cv_func_asprintf" = yes; then
-    HAVE_ASPRINTF=1
-  else
-    HAVE_ASPRINTF=0
-  fi
-  AC_SUBST([HAVE_ASPRINTF])
-  if test "$ac_cv_func_snprintf" = yes; then
-    HAVE_SNPRINTF=1
-  else
-    HAVE_SNPRINTF=0
-  fi
-  AC_SUBST([HAVE_SNPRINTF])
-  if test "$ac_cv_func_newlocale" = yes; then
-    HAVE_NEWLOCALE=1
-  else
-    HAVE_NEWLOCALE=0
-  fi
-  AC_SUBST([HAVE_NEWLOCALE])
-  if test "$ac_cv_func_wprintf" = yes; then
-    HAVE_WPRINTF=1
-  else
-    HAVE_WPRINTF=0
-  fi
-  AC_SUBST([HAVE_WPRINTF])
-
-  AM_LANGINFO_CODESET
-  gt_LC_MESSAGES
-
-  dnl Compilation on mingw and Cygwin needs special Makefile rules, because
-  dnl 1. when we install a shared library, we must arrange to export
-  dnl    auxiliary pointer variables for every exported variable,
-  dnl 2. when we install a shared library and a static library simultaneously,
-  dnl    the include file specifies __declspec(dllimport) and therefore we
-  dnl    must arrange to define the auxiliary pointer variables for the
-  dnl    exported variables _also_ in the static library.
-  if test "$enable_shared" = yes; then
-    case "$host_os" in
-      mingw* | cygwin*) is_woe32dll=yes ;;
-      *) is_woe32dll=no ;;
-    esac
-  else
-    is_woe32dll=no
-  fi
-  WOE32DLL=$is_woe32dll
-  AC_SUBST([WOE32DLL])
-
-  dnl On mingw and Cygwin, we can activate special Makefile rules which add
-  dnl version information to the shared libraries and executables.
-  case "$host_os" in
-    mingw* | cygwin*) is_woe32=yes ;;
-    *) is_woe32=no ;;
-  esac
-  WOE32=$is_woe32
-  AC_SUBST([WOE32])
-  if test $WOE32 = yes; then
-    dnl Check for a program that compiles Windows resource files.
-    AC_CHECK_TOOL([WINDRES], [windres])
-  fi
-
-  dnl Determine whether when creating a library, "-lc" should be passed to
-  dnl libtool or not. On many platforms, it is required for the libtool option
-  dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
-  dnl in the *.la files - makes it impossible to create multithreaded programs,
-  dnl because libtool also reorders the -lc to come before the -pthread, and
-  dnl this disables pthread_create() 
<http://docs.hp.com/en/1896/pthreads.html>.
-  case "$host_os" in
-    hpux*) LTLIBC="" ;;
-    *)     LTLIBC="-lc" ;;
-  esac
-  AC_SUBST([LTLIBC])
-
-  dnl Rename some macros and functions used for locking.
-  AH_BOTTOM([
-#define __libc_lock_t                   gl_lock_t
-#define __libc_lock_define              gl_lock_define
-#define __libc_lock_define_initialized  gl_lock_define_initialized
-#define __libc_lock_init                gl_lock_init
-#define __libc_lock_lock                gl_lock_lock
-#define __libc_lock_unlock              gl_lock_unlock
-#define __libc_lock_recursive_t                   gl_recursive_lock_t
-#define __libc_lock_define_recursive              gl_recursive_lock_define
-#define __libc_lock_define_initialized_recursive  
gl_recursive_lock_define_initialized
-#define __libc_lock_init_recursive                gl_recursive_lock_init
-#define __libc_lock_lock_recursive                gl_recursive_lock_lock
-#define __libc_lock_unlock_recursive              gl_recursive_lock_unlock
-#define glthread_in_use  libintl_thread_in_use
-#define glthread_lock_init_func     libintl_lock_init_func
-#define glthread_lock_lock_func     libintl_lock_lock_func
-#define glthread_lock_unlock_func   libintl_lock_unlock_func
-#define glthread_lock_destroy_func  libintl_lock_destroy_func
-#define glthread_rwlock_init_multithreaded     
libintl_rwlock_init_multithreaded
-#define glthread_rwlock_init_func              libintl_rwlock_init_func
-#define glthread_rwlock_rdlock_multithreaded   
libintl_rwlock_rdlock_multithreaded
-#define glthread_rwlock_rdlock_func            libintl_rwlock_rdlock_func
-#define glthread_rwlock_wrlock_multithreaded   
libintl_rwlock_wrlock_multithreaded
-#define glthread_rwlock_wrlock_func            libintl_rwlock_wrlock_func
-#define glthread_rwlock_unlock_multithreaded   
libintl_rwlock_unlock_multithreaded
-#define glthread_rwlock_unlock_func            libintl_rwlock_unlock_func
-#define glthread_rwlock_destroy_multithreaded  
libintl_rwlock_destroy_multithreaded
-#define glthread_rwlock_destroy_func           libintl_rwlock_destroy_func
-#define glthread_recursive_lock_init_multithreaded     
libintl_recursive_lock_init_multithreaded
-#define glthread_recursive_lock_init_func              
libintl_recursive_lock_init_func
-#define glthread_recursive_lock_lock_multithreaded     
libintl_recursive_lock_lock_multithreaded
-#define glthread_recursive_lock_lock_func              
libintl_recursive_lock_lock_func
-#define glthread_recursive_lock_unlock_multithreaded   
libintl_recursive_lock_unlock_multithreaded
-#define glthread_recursive_lock_unlock_func            
libintl_recursive_lock_unlock_func
-#define glthread_recursive_lock_destroy_multithreaded  
libintl_recursive_lock_destroy_multithreaded
-#define glthread_recursive_lock_destroy_func           
libintl_recursive_lock_destroy_func
-#define glthread_once_func            libintl_once_func
-#define glthread_once_singlethreaded  libintl_once_singlethreaded
-#define glthread_once_multithreaded   libintl_once_multithreaded
-])
-])
-
-
-dnl Checks for the core files of the intl subdirectory:
-dnl   dcigettext.c
-dnl   eval-plural.h
-dnl   explodename.c
-dnl   finddomain.c
-dnl   gettextP.h
-dnl   gmo.h
-dnl   hash-string.h hash-string.c
-dnl   l10nflist.c
-dnl   libgnuintl.h.in (except the *printf stuff)
-dnl   loadinfo.h
-dnl   loadmsgcat.c
-dnl   localealias.c
-dnl   log.c
-dnl   plural-exp.h plural-exp.c
-dnl   plural.y
-dnl Used by libglocale.
-AC_DEFUN([gt_INTL_SUBDIR_CORE],
-[
-  AC_REQUIRE([AC_C_INLINE])dnl
-  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
-  AC_REQUIRE([AC_FUNC_MMAP])dnl
-  AC_REQUIRE([gt_INTDIV0])dnl
-  AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
-  AC_REQUIRE([gt_INTTYPES_PRI])dnl
-  AC_REQUIRE([gl_LOCK])dnl
-
-  AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM(
-       [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 
1; }]],
-       [[]])],
-    [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
-       [Define to 1 if the compiler understands __builtin_expect.])])
-
-  AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
-  AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
-    stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
-    argz_stringify argz_next __fsetlocking])
-
-  dnl Use the *_unlocked functions only if they are declared.
-  dnl (because some of them were defined without being declared in Solaris
-  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
-  dnl on Solaris 2.5.1 to run on Solaris 2.6).
-  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
-  gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
-  gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
-
-  AM_ICONV
-
-  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
-  dnl because plural.y uses bison specific features. It requires at least
-  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
-  dnl compile.
-  dnl bison is only needed for the maintainer (who touches plural.y). But in
-  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
-  dnl the rule in general Makefile. Now, some people carelessly touch the
-  dnl files or have a broken "make" program, hence the plural.c rule will
-  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
-  dnl present or too old.
-  AC_CHECK_PROGS([INTLBISON], [bison])
-  if test -z "$INTLBISON"; then
-    ac_verc_fail=yes
-  else
-    dnl Found it, now check the version.
-    AC_MSG_CHECKING([version of bison])
-changequote(<<,>>)dnl
-    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* 
\([0-9]*\.[0-9.]*\).*$/\1/p'`
-    case $ac_prog_version in
-      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-changequote([,])dnl
-         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-    esac
-    AC_MSG_RESULT([$ac_prog_version])
-  fi
-  if test $ac_verc_fail = yes; then
-    INTLBISON=:
-  fi
-])
-
-
-dnl gt_CHECK_DECL(FUNC, INCLUDES)
-dnl Check whether a function is declared.
-AC_DEFUN([gt_CHECK_DECL],
-[
-  AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[$2]],
-          [[
-#ifndef $1
-  char *p = (char *) $1;
-#endif
-          ]])],
-       [ac_cv_have_decl_$1=yes],
-       [ac_cv_have_decl_$1=no])])
-  if test $ac_cv_have_decl_$1 = yes; then
-    gt_value=1
-  else
-    gt_value=0
-  fi
-  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
deleted file mode 100644
index 388ecd6fd..000000000
--- a/m4/intldir.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-# intldir.m4 serial 2 (gettext-0.18)
-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.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-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.
-
-AC_PREREQ([2.52])
-
-dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
-AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
deleted file mode 100644
index ab97d39f9..000000000
--- a/m4/intlmacosx.m4
+++ /dev/null
@@ -1,56 +0,0 @@
-# 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.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-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 Mac OS X.
-dnl Defines INTL_MACOSX_LIBS.
-AC_DEFUN([gt_INTL_MACOSX],
-[
-  dnl Check for API introduced in Mac OS X 10.2.
-  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
-    [gt_cv_func_CFPreferencesCopyAppValue],
-    [gt_save_LIBS="$LIBS"
-     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
-     AC_LINK_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <CoreFoundation/CFPreferences.h>]],
-          [[CFPreferencesCopyAppValue(NULL, NULL)]])],
-       [gt_cv_func_CFPreferencesCopyAppValue=yes],
-       [gt_cv_func_CFPreferencesCopyAppValue=no])
-     LIBS="$gt_save_LIBS"])
-  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
-      [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue 
in the CoreFoundation framework.])
-  fi
-  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"
-     AC_LINK_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <CoreFoundation/CFLocale.h>]],
-          [[CFLocaleCopyCurrent();]])],
-       [gt_cv_func_CFLocaleCopyCurrent=yes],
-       [gt_cv_func_CFLocaleCopyCurrent=no])
-     LIBS="$gt_save_LIBS"])
-  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
-      [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
-    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
-  fi
-  AC_SUBST([INTL_MACOSX_LIBS])
-])
diff --git a/m4/intmax.m4 b/m4/intmax.m4
deleted file mode 100644
index 18733a52e..000000000
--- a/m4/intmax.m4
+++ /dev/null
@@ -1,36 +0,0 @@
-# intmax.m4 serial 6 (gettext-0.18.2)
-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.
-
-dnl From Bruno Haible.
-dnl Test whether the system has the 'intmax_t' type, but don't attempt to
-dnl find a replacement if it is lacking.
-
-AC_DEFUN([gt_TYPE_INTMAX_T],
-[
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[
-#include <stddef.h>
-#include <stdlib.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-#include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-#include <inttypes.h>
-#endif
-          ]],
-          [[intmax_t x = -1;
-            return !x;]])],
-       [gt_cv_c_intmax_t=yes],
-       [gt_cv_c_intmax_t=no])])
-  if test $gt_cv_c_intmax_t = yes; then
-    AC_DEFINE([HAVE_INTMAX_T], [1],
-      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
-  fi
-])
diff --git a/m4/intmax_t.m4 b/m4/intmax_t.m4
deleted file mode 100644
index 6ea70531c..000000000
--- a/m4/intmax_t.m4
+++ /dev/null
@@ -1,67 +0,0 @@
-# intmax_t.m4 serial 8
-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,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-AC_PREREQ([2.53])
-
-# Define intmax_t to 'long' or 'long long'
-# if it is not already defined in <stdint.h> or <inttypes.h>.
-
-AC_DEFUN([gl_AC_TYPE_INTMAX_T],
-[
-  dnl For simplicity, we assume that a header file defines 'intmax_t' if and
-  dnl only if it defines 'uintmax_t'.
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; 
then
-    AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
-    test $ac_cv_type_long_long_int = yes \
-      && ac_type='long long' \
-      || ac_type='long'
-    AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
-     [Define to long or long long if <inttypes.h> and <stdint.h> don't 
define.])
-  else
-    AC_DEFINE([HAVE_INTMAX_T], [1],
-      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
-  fi
-])
-
-dnl An alternative would be to explicitly test for 'intmax_t'.
-
-AC_DEFUN([gt_AC_TYPE_INTMAX_T],
-[
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[
-#include <stddef.h>
-#include <stdlib.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-#include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-#include <inttypes.h>
-#endif
-          ]],
-          [[intmax_t x = -1; return !x;]])],
-       [gt_cv_c_intmax_t=yes],
-       [gt_cv_c_intmax_t=no])])
-  if test $gt_cv_c_intmax_t = yes; then
-    AC_DEFINE([HAVE_INTMAX_T], [1],
-      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
-  else
-    AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
-    test $ac_cv_type_long_long_int = yes \
-      && ac_type='long long' \
-      || ac_type='long'
-    AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
-     [Define to long or long long if <stdint.h> and <inttypes.h> don't 
define.])
-  fi
-])
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
deleted file mode 100644
index e5a1e0571..000000000
--- a/m4/inttypes-pri.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-# inttypes-pri.m4 serial 7 (gettext-0.18.2)
-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.
-
-dnl From Bruno Haible.
-
-AC_PREREQ([2.53])
-
-# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
-# macros to non-string values.  This is the case on AIX 4.3.3.
-
-AC_DEFUN([gt_INTTYPES_PRI],
-[
-  AC_CHECK_HEADERS([inttypes.h])
-  if test $ac_cv_header_inttypes_h = yes; then
-    AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
-      [gt_cv_inttypes_pri_broken],
-      [
-        AC_COMPILE_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[
-#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-             ]],
-             [[]])],
-          [gt_cv_inttypes_pri_broken=no],
-          [gt_cv_inttypes_pri_broken=yes])
-      ])
-  fi
-  if test "$gt_cv_inttypes_pri_broken" = yes; then
-    AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
-      [Define if <inttypes.h> exists and defines unusable PRI* macros.])
-    PRI_MACROS_BROKEN=1
-  else
-    PRI_MACROS_BROKEN=0
-  fi
-  AC_SUBST([PRI_MACROS_BROKEN])
-])
diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
deleted file mode 100644
index 5f05ac58c..000000000
--- a/m4/inttypes_h.m4
+++ /dev/null
@@ -1,29 +0,0 @@
-# inttypes_h.m4 serial 10
-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.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
-[
-  AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[
-#include <sys/types.h>
-#include <inttypes.h>
-          ]],
-          [[uintmax_t i = (uintmax_t) -1; return !i;]])],
-       [gl_cv_header_inttypes_h=yes],
-       [gl_cv_header_inttypes_h=no])])
-  if test $gl_cv_header_inttypes_h = yes; then
-    AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
-      [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
-       and declares uintmax_t. ])
-  fi
-])
diff --git a/m4/langinfo_h.m4 b/m4/langinfo_h.m4
deleted file mode 100644
index 73bef8bce..000000000
--- a/m4/langinfo_h.m4
+++ /dev/null
@@ -1,105 +0,0 @@
-# langinfo_h.m4 serial 7
-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.
-
-AC_DEFUN([gl_LANGINFO_H],
-[
-  AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
-
-  dnl Persuade glibc-2.0.6 <langinfo.h> to define CODESET.
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  dnl <langinfo.h> is always overridden, because of GNULIB_POSIXCHECK.
-  gl_CHECK_NEXT_HEADERS([langinfo.h])
-
-  dnl Determine whether <langinfo.h> exists. It is missing on mingw and BeOS.
-  HAVE_LANGINFO_CODESET=0
-  HAVE_LANGINFO_T_FMT_AMPM=0
-  HAVE_LANGINFO_ERA=0
-  HAVE_LANGINFO_YESEXPR=0
-  AC_CHECK_HEADERS_ONCE([langinfo.h])
-  if test $ac_cv_header_langinfo_h = yes; then
-    HAVE_LANGINFO_H=1
-    dnl Determine what <langinfo.h> defines. CODESET and ERA etc. are missing
-    dnl on OpenBSD 3.8. T_FMT_AMPM and YESEXPR, NOEXPR are missing on IRIX 5.3.
-    AC_CACHE_CHECK([whether langinfo.h defines CODESET],
-      [gl_cv_header_langinfo_codeset],
-      [AC_COMPILE_IFELSE(
-         [AC_LANG_PROGRAM([[#include <langinfo.h>
-int a = CODESET;
-]])],
-         [gl_cv_header_langinfo_codeset=yes],
-         [gl_cv_header_langinfo_codeset=no])
-      ])
-    if test $gl_cv_header_langinfo_codeset = yes; then
-      HAVE_LANGINFO_CODESET=1
-    fi
-    AC_CACHE_CHECK([whether langinfo.h defines T_FMT_AMPM],
-      [gl_cv_header_langinfo_t_fmt_ampm],
-      [AC_COMPILE_IFELSE(
-         [AC_LANG_PROGRAM([[#include <langinfo.h>
-int a = T_FMT_AMPM;
-]])],
-         [gl_cv_header_langinfo_t_fmt_ampm=yes],
-         [gl_cv_header_langinfo_t_fmt_ampm=no])
-      ])
-    if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then
-      HAVE_LANGINFO_T_FMT_AMPM=1
-    fi
-    AC_CACHE_CHECK([whether langinfo.h defines ERA],
-      [gl_cv_header_langinfo_era],
-      [AC_COMPILE_IFELSE(
-         [AC_LANG_PROGRAM([[#include <langinfo.h>
-int a = ERA;
-]])],
-         [gl_cv_header_langinfo_era=yes],
-         [gl_cv_header_langinfo_era=no])
-      ])
-    if test $gl_cv_header_langinfo_era = yes; then
-      HAVE_LANGINFO_ERA=1
-    fi
-    AC_CACHE_CHECK([whether langinfo.h defines YESEXPR],
-      [gl_cv_header_langinfo_yesexpr],
-      [AC_COMPILE_IFELSE(
-         [AC_LANG_PROGRAM([[#include <langinfo.h>
-int a = YESEXPR;
-]])],
-         [gl_cv_header_langinfo_yesexpr=yes],
-         [gl_cv_header_langinfo_yesexpr=no])
-      ])
-    if test $gl_cv_header_langinfo_yesexpr = yes; then
-      HAVE_LANGINFO_YESEXPR=1
-    fi
-  else
-    HAVE_LANGINFO_H=0
-  fi
-  AC_SUBST([HAVE_LANGINFO_H])
-  AC_SUBST([HAVE_LANGINFO_CODESET])
-  AC_SUBST([HAVE_LANGINFO_T_FMT_AMPM])
-  AC_SUBST([HAVE_LANGINFO_ERA])
-  AC_SUBST([HAVE_LANGINFO_YESEXPR])
-
-  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 <langinfo.h>
-    ]], [nl_langinfo])
-])
-
-AC_DEFUN([gl_LANGINFO_MODULE_INDICATOR],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_LANGINFO_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_LANGINFO_H_DEFAULTS],
-[
-  GNULIB_NL_LANGINFO=0;  AC_SUBST([GNULIB_NL_LANGINFO])
-  dnl Assume proper GNU behavior unless another module says otherwise.
-  HAVE_NL_LANGINFO=1;    AC_SUBST([HAVE_NL_LANGINFO])
-  REPLACE_NL_LANGINFO=0; AC_SUBST([REPLACE_NL_LANGINFO])
-])
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
deleted file mode 100644
index d62a175fc..000000000
--- a/m4/lcmessage.m4
+++ /dev/null
@@ -1,35 +0,0 @@
-# lcmessage.m4 serial 7 (gettext-0.18.2)
-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,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-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 Authors:
-dnl   Ulrich Drepper <address@hidden>, 1995.
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-
-AC_DEFUN([gt_LC_MESSAGES],
-[
-  AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
-    [AC_LINK_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <locale.h>]],
-          [[return LC_MESSAGES]])],
-       [gt_cv_val_LC_MESSAGES=yes],
-       [gt_cv_val_LC_MESSAGES=no])])
-  if test $gt_cv_val_LC_MESSAGES = yes; then
-    AC_DEFINE([HAVE_LC_MESSAGES], [1],
-      [Define if your <locale.h> file defines LC_MESSAGES.])
-  fi
-])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
deleted file mode 100644
index c145e478e..000000000
--- a/m4/lib-ld.m4
+++ /dev/null
@@ -1,119 +0,0 @@
-# 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/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid
-dnl collision with libtool.m4.
-
-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 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=no
-  ;;
-esac])
-with_gnu_ld=$acl_cv_prog_gnu_ld
-])
-
-dnl From libtool-2.4. Sets the variable LD.
-AC_DEFUN([AC_LIB_PROG_LD],
-[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
-  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
-  # contains only /bin. Note that ksh looks also at the FPATH variable,
-  # so we have to set that as well for the test.
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
-    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
-           || 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 $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      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"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL([acl_cv_path_LD],
-[if test -z "$LD"; then
-  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 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
-      *GNU* | *'with BFD'*)
-        test "$with_gnu_ld" != no && break
-        ;;
-      *)
-        test "$with_gnu_ld" != yes && break
-        ;;
-      esac
-    fi
-  done
-  IFS="$acl_save_ifs"
-else
-  acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT([$LD])
-else
-  AC_MSG_RESULT([no])
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_LIB_PROG_LD_GNU
-])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
deleted file mode 100644
index 073f04050..000000000
--- a/m4/lib-link.m4
+++ /dev/null
@@ -1,777 +0,0 @@
-# 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.
-
-dnl From Bruno Haible.
-
-AC_PREREQ([2.54])
-
-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-dnl augments the CPPFLAGS variable.
-dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
-dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_LINKFLAGS],
-[
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-  pushdef([Name],[m4_translit([$1],[./+-], [____])])
-  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
-                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
-  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
-    AC_LIB_LINKFLAGS_BODY([$1], [$2])
-    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
-    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
-    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
-    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
-  ])
-  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
-  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
-  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
-  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-  AC_SUBST([LIB]NAME)
-  AC_SUBST([LTLIB]NAME)
-  AC_SUBST([LIB]NAME[_PREFIX])
-  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
-  dnl results of this search when this library appears as a dependency.
-  HAVE_LIB[]NAME=yes
-  popdef([NAME])
-  popdef([Name])
-])
-
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, 
[missing-message])
-dnl searches for libname and the libraries corresponding to explicit and
-dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. The missing-message
-dnl defaults to 'no' and may contain additional hints for the user.
-dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
-dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
-dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-[
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-  pushdef([Name],[m4_translit([$1],[./+-], [____])])
-  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
-                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
-
-  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
-  dnl accordingly.
-  AC_LIB_LINKFLAGS_BODY([$1], [$2])
-
-  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
-  dnl because if the user has installed lib[]Name and not disabled its use
-  dnl via --without-lib[]Name-prefix, he wants to use it.
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-
-  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
-    ac_save_LIBS="$LIBS"
-    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
-    dnl because these -l options might require -L options that are present in
-    dnl LIBS. -l options benefit only from the -L options listed before it.
-    dnl Otherwise, add it to the front of LIBS, because it may be a static
-    dnl library that depends on another static library that is present in LIBS.
-    dnl Static libraries benefit only from the static libraries listed after
-    dnl it.
-    case " $LIB[]NAME" in
-      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
-      *)       LIBS="$LIB[]NAME $LIBS" ;;
-    esac
-    AC_LINK_IFELSE(
-      [AC_LANG_PROGRAM([[$3]], [[$4]])],
-      [ac_cv_lib[]Name=yes],
-      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
-    LIBS="$ac_save_LIBS"
-  ])
-  if test "$ac_cv_lib[]Name" = yes; then
-    HAVE_LIB[]NAME=yes
-    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
-    AC_MSG_CHECKING([how to link with lib[]$1])
-    AC_MSG_RESULT([$LIB[]NAME])
-  else
-    HAVE_LIB[]NAME=no
-    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
-    dnl $INC[]NAME either.
-    CPPFLAGS="$ac_save_CPPFLAGS"
-    LIB[]NAME=
-    LTLIB[]NAME=
-    LIB[]NAME[]_PREFIX=
-  fi
-  AC_SUBST([HAVE_LIB]NAME)
-  AC_SUBST([LIB]NAME)
-  AC_SUBST([LTLIB]NAME)
-  AC_SUBST([LIB]NAME[_PREFIX])
-  popdef([NAME])
-  popdef([Name])
-])
-
-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,
-dnl   acl_hardcode_minus_L.
-AC_DEFUN([AC_LIB_RPATH],
-[
-  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
-  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
-  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
-  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
-  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
-  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
-  AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
-    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" 
\
-    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
-    . ./conftest.sh
-    rm -f ./conftest.sh
-    acl_cv_rpath=done
-  ])
-  wl="$acl_cv_wl"
-  acl_libext="$acl_cv_libext"
-  acl_shlibext="$acl_cv_shlibext"
-  acl_libname_spec="$acl_cv_libname_spec"
-  acl_library_names_spec="$acl_cv_library_names_spec"
-  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-  acl_hardcode_direct="$acl_cv_hardcode_direct"
-  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
-  dnl Determine whether the user wants rpath handling at all.
-  AC_ARG_ENABLE([rpath],
-    [  --disable-rpath         do not hardcode runtime library paths],
-    :, enable_rpath=yes)
-])
-
-dnl AC_LIB_FROMPACKAGE(name, package)
-dnl declares that libname comes from the given package. The configure file
-dnl will then not have a --with-libname-prefix option but a
-dnl --with-package-prefix option. Several libraries can come from the same
-dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
-dnl macro call that searches for libname.
-AC_DEFUN([AC_LIB_FROMPACKAGE],
-[
-  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
-                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
-  define([acl_frompackage_]NAME, [$2])
-  popdef([NAME])
-  pushdef([PACK],[$2])
-  pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
-                                     [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
-  define([acl_libsinpackage_]PACKUP,
-    m4_ifdef([acl_libsinpackage_]PACKUP, 
[m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1])
-  popdef([PACKUP])
-  popdef([PACK])
-])
-
-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
-dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-[
-  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
-  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
-                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
-  pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, 
lib[$1])])
-  pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
-                                     [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
-  pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, 
[acl_libsinpackage_]PACKUP, lib[$1])])
-  dnl Autoconf >= 2.61 supports dots in --with options.
-  
pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)])
-  dnl By default, look in $includedir and $libdir.
-  use_additional=yes
-  AC_LIB_WITH_FINAL_PREFIX([
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-  ])
-  AC_ARG_WITH(P_A_C_K[-prefix],
-[[  --with-]]P_A_C_K[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and 
DIR/lib
-  --without-]]P_A_C_K[[-prefix     don't search for ]PACKLIBS[ in includedir 
and libdir]],
-[
-    if test "X$withval" = "Xno"; then
-      use_additional=no
-    else
-      if test "X$withval" = "X"; then
-        AC_LIB_WITH_FINAL_PREFIX([
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-        ])
-      else
-        additional_includedir="$withval/include"
-        additional_libdir="$withval/$acl_libdirstem"
-        if test "$acl_libdirstem2" != "$acl_libdirstem" \
-           && ! test -d "$withval/$acl_libdirstem"; then
-          additional_libdir="$withval/$acl_libdirstem2"
-        fi
-      fi
-    fi
-])
-  dnl Search the library and its dependencies in $additional_libdir and
-  dnl $LDFLAGS. Using breadth-first-seach.
-  LIB[]NAME=
-  LTLIB[]NAME=
-  INC[]NAME=
-  LIB[]NAME[]_PREFIX=
-  dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
-  dnl computed. So it has to be reset here.
-  HAVE_LIB[]NAME=
-  rpathdirs=
-  ltrpathdirs=
-  names_already_handled=
-  names_next_round='$1 $2'
-  while test -n "$names_next_round"; do
-    names_this_round="$names_next_round"
-    names_next_round=
-    for name in $names_this_round; do
-      already_handled=
-      for n in $names_already_handled; do
-        if test "$n" = "$name"; then
-          already_handled=yes
-          break
-        fi
-      done
-      if test -z "$already_handled"; then
-        names_already_handled="$names_already_handled $name"
-        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
-        dnl or AC_LIB_HAVE_LINKFLAGS call.
-        uppername=`echo "$name" | sed -e 
'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
-        eval value=\"\$HAVE_LIB$uppername\"
-        if test -n "$value"; then
-          if test "$value" = yes; then
-            eval value=\"\$LIB$uppername\"
-            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
-            eval value=\"\$LTLIB$uppername\"
-            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ 
}$value"
-          else
-            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
-            dnl that this library doesn't exist. So just drop it.
-            :
-          fi
-        else
-          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
-          dnl and the already constructed $LIBNAME/$LTLIBNAME.
-          found_dir=
-          found_la=
-          found_so=
-          found_a=
-          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
-          if test -n "$acl_shlibext"; then
-            shrext=".$acl_shlibext"             # typically: shrext=.so
-          else
-            shrext=
-          fi
-          if test $use_additional = yes; then
-            dir="$additional_libdir"
-            dnl The same code as in the loop below:
-            dnl First look for a shared library.
-            if test -n "$acl_shlibext"; then
-              if test -f "$dir/$libname$shrext"; then
-                found_dir="$dir"
-                found_so="$dir/$libname$shrext"
-              else
-                if test "$acl_library_names_spec" = 
'$libname$shrext$versuffix'; then
-                  ver=`(cd "$dir" && \
-                        for f in "$libname$shrext".*; do echo "$f"; done \
-                        | sed -e "s,^$libname$shrext\\\\.,," \
-                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
-                        | sed 1q ) 2>/dev/null`
-                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; 
then
-                    found_dir="$dir"
-                    found_so="$dir/$libname$shrext.$ver"
-                  fi
-                else
-                  eval library_names=\"$acl_library_names_spec\"
-                  for f in $library_names; do
-                    if test -f "$dir/$f"; then
-                      found_dir="$dir"
-                      found_so="$dir/$f"
-                      break
-                    fi
-                  done
-                fi
-              fi
-            fi
-            dnl Then look for a static library.
-            if test "X$found_dir" = "X"; then
-              if test -f "$dir/$libname.$acl_libext"; then
-                found_dir="$dir"
-                found_a="$dir/$libname.$acl_libext"
-              fi
-            fi
-            if test "X$found_dir" != "X"; then
-              if test -f "$dir/$libname.la"; then
-                found_la="$dir/$libname.la"
-              fi
-            fi
-          fi
-          if test "X$found_dir" = "X"; then
-            for x in $LDFLAGS $LTLIB[]NAME; do
-              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-              case "$x" in
-                -L*)
-                  dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  dnl First look for a shared library.
-                  if test -n "$acl_shlibext"; then
-                    if test -f "$dir/$libname$shrext"; then
-                      found_dir="$dir"
-                      found_so="$dir/$libname$shrext"
-                    else
-                      if test "$acl_library_names_spec" = 
'$libname$shrext$versuffix'; then
-                        ver=`(cd "$dir" && \
-                              for f in "$libname$shrext".*; do echo "$f"; done 
\
-                              | sed -e "s,^$libname$shrext\\\\.,," \
-                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 
-k5,5 \
-                              | sed 1q ) 2>/dev/null`
-                        if test -n "$ver" && test -f 
"$dir/$libname$shrext.$ver"; then
-                          found_dir="$dir"
-                          found_so="$dir/$libname$shrext.$ver"
-                        fi
-                      else
-                        eval library_names=\"$acl_library_names_spec\"
-                        for f in $library_names; do
-                          if test -f "$dir/$f"; then
-                            found_dir="$dir"
-                            found_so="$dir/$f"
-                            break
-                          fi
-                        done
-                      fi
-                    fi
-                  fi
-                  dnl Then look for a static library.
-                  if test "X$found_dir" = "X"; then
-                    if test -f "$dir/$libname.$acl_libext"; then
-                      found_dir="$dir"
-                      found_a="$dir/$libname.$acl_libext"
-                    fi
-                  fi
-                  if test "X$found_dir" != "X"; then
-                    if test -f "$dir/$libname.la"; then
-                      found_la="$dir/$libname.la"
-                    fi
-                  fi
-                  ;;
-              esac
-              if test "X$found_dir" != "X"; then
-                break
-              fi
-            done
-          fi
-          if test "X$found_dir" != "X"; then
-            dnl Found the library.
-            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
-            if test "X$found_so" != "X"; then
-              dnl Linking with a shared library. We attempt to hardcode its
-              dnl directory into the executable's runpath, unless it's the
-              dnl standard /usr/lib.
-              if test "$enable_rpath" = no \
-                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
-                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
-                dnl No hardcoding is needed.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-              else
-                dnl Use an explicit option to hardcode DIR into the resulting
-                dnl binary.
-                dnl Potentially add DIR to ltrpathdirs.
-                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-                haveit=
-                for x in $ltrpathdirs; do
-                  if test "X$x" = "X$found_dir"; then
-                    haveit=yes
-                    break
-                  fi
-                done
-                if test -z "$haveit"; then
-                  ltrpathdirs="$ltrpathdirs $found_dir"
-                fi
-                dnl The hardcoding into $LIBNAME is system dependent.
-                if test "$acl_hardcode_direct" = yes; then
-                  dnl Using DIR/libNAME.so during linking hardcodes DIR into 
the
-                  dnl resulting binary.
-                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                else
-                  if test -n "$acl_hardcode_libdir_flag_spec" && test 
"$acl_hardcode_minus_L" = no; then
-                    dnl Use an explicit option to hardcode DIR into the 
resulting
-                    dnl binary.
-                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                    dnl Potentially add DIR to rpathdirs.
-                    dnl The rpathdirs will be appended to $LIBNAME at the end.
-                    haveit=
-                    for x in $rpathdirs; do
-                      if test "X$x" = "X$found_dir"; then
-                        haveit=yes
-                        break
-                      fi
-                    done
-                    if test -z "$haveit"; then
-                      rpathdirs="$rpathdirs $found_dir"
-                    fi
-                  else
-                    dnl Rely on "-L$found_dir".
-                    dnl But don't add it if it's already contained in the 
LDFLAGS
-                    dnl or the already constructed $LIBNAME
-                    haveit=
-                    for x in $LDFLAGS $LIB[]NAME; do
-                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                      if test "X$x" = "X-L$found_dir"; then
-                        haveit=yes
-                        break
-                      fi
-                    done
-                    if test -z "$haveit"; then
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
-                    fi
-                    if test "$acl_hardcode_minus_L" != no; then
-                      dnl FIXME: Not sure whether we should use
-                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-                      dnl here.
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                    else
-                      dnl We cannot use $acl_hardcode_runpath_var and 
LD_RUN_PATH
-                      dnl here, because this doesn't fit in flags passed to the
-                      dnl compiler. So give up. No hardcoding. This affects 
only
-                      dnl very old systems.
-                      dnl FIXME: Not sure whether we should use
-                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-                      dnl here.
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-                    fi
-                  fi
-                fi
-              fi
-            else
-              if test "X$found_a" != "X"; then
-                dnl Linking with a static library.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
-              else
-                dnl We shouldn't come here, but anyway it's good to have a
-                dnl fallback.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
-              fi
-            fi
-            dnl Assume the include files are nearby.
-            additional_includedir=
-            case "$found_dir" in
-              */$acl_libdirstem | */$acl_libdirstem/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 
"s,/$acl_libdirstem/"'*$,,'`
-                if test "$name" = '$1'; then
-                  LIB[]NAME[]_PREFIX="$basedir"
-                fi
-                additional_includedir="$basedir/include"
-                ;;
-              */$acl_libdirstem2 | */$acl_libdirstem2/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 
"s,/$acl_libdirstem2/"'*$,,'`
-                if test "$name" = '$1'; then
-                  LIB[]NAME[]_PREFIX="$basedir"
-                fi
-                additional_includedir="$basedir/include"
-                ;;
-            esac
-            if test "X$additional_includedir" != "X"; then
-              dnl Potentially add $additional_includedir to $INCNAME.
-              dnl But don't add it
-              dnl   1. if it's the standard /usr/include,
-              dnl   2. if it's /usr/local/include and we are using GCC on 
Linux,
-              dnl   3. if it's already present in $CPPFLAGS or the already
-              dnl      constructed $INCNAME,
-              dnl   4. if it doesn't exist as a directory.
-              if test "X$additional_includedir" != "X/usr/include"; then
-                haveit=
-                if test "X$additional_includedir" = "X/usr/local/include"; then
-                  if test -n "$GCC"; then
-                    case $host_os in
-                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-                    esac
-                  fi
-                fi
-                if test -z "$haveit"; then
-                  for x in $CPPFLAGS $INC[]NAME; do
-                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                    if test "X$x" = "X-I$additional_includedir"; then
-                      haveit=yes
-                      break
-                    fi
-                  done
-                  if test -z "$haveit"; then
-                    if test -d "$additional_includedir"; then
-                      dnl Really add $additional_includedir to $INCNAME.
-                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ 
}-I$additional_includedir"
-                    fi
-                  fi
-                fi
-              fi
-            fi
-            dnl Look for dependencies.
-            if test -n "$found_la"; then
-              dnl Read the .la file. It defines the variables
-              dnl dlname, library_names, old_library, dependency_libs, current,
-              dnl age, revision, installed, dlopen, dlpreopen, libdir.
-              save_libdir="$libdir"
-              case "$found_la" in
-                */* | *\\*) . "$found_la" ;;
-                *) . "./$found_la" ;;
-              esac
-              libdir="$save_libdir"
-              dnl We use only dependency_libs.
-              for dep in $dependency_libs; do
-                case "$dep" in
-                  -L*)
-                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-                    dnl Potentially add $additional_libdir to $LIBNAME and 
$LTLIBNAME.
-                    dnl But don't add it
-                    dnl   1. if it's the standard /usr/lib,
-                    dnl   2. if it's /usr/local/lib and we are using GCC on 
Linux,
-                    dnl   3. if it's already present in $LDFLAGS or the already
-                    dnl      constructed $LIBNAME,
-                    dnl   4. if it doesn't exist as a directory.
-                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
-                       && test "X$additional_libdir" != 
"X/usr/$acl_libdirstem2"; then
-                      haveit=
-                      if test "X$additional_libdir" = 
"X/usr/local/$acl_libdirstem" \
-                         || test "X$additional_libdir" = 
"X/usr/local/$acl_libdirstem2"; then
-                        if test -n "$GCC"; then
-                          case $host_os in
-                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-                          esac
-                        fi
-                      fi
-                      if test -z "$haveit"; then
-                        haveit=
-                        for x in $LDFLAGS $LIB[]NAME; do
-                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                          if test "X$x" = "X-L$additional_libdir"; then
-                            haveit=yes
-                            break
-                          fi
-                        done
-                        if test -z "$haveit"; then
-                          if test -d "$additional_libdir"; then
-                            dnl Really add $additional_libdir to $LIBNAME.
-                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ 
}-L$additional_libdir"
-                          fi
-                        fi
-                        haveit=
-                        for x in $LDFLAGS $LTLIB[]NAME; do
-                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                          if test "X$x" = "X-L$additional_libdir"; then
-                            haveit=yes
-                            break
-                          fi
-                        done
-                        if test -z "$haveit"; then
-                          if test -d "$additional_libdir"; then
-                            dnl Really add $additional_libdir to $LTLIBNAME.
-                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ 
}-L$additional_libdir"
-                          fi
-                        fi
-                      fi
-                    fi
-                    ;;
-                  -R*)
-                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
-                    if test "$enable_rpath" != no; then
-                      dnl Potentially add DIR to rpathdirs.
-                      dnl The rpathdirs will be appended to $LIBNAME at the 
end.
-                      haveit=
-                      for x in $rpathdirs; do
-                        if test "X$x" = "X$dir"; then
-                          haveit=yes
-                          break
-                        fi
-                      done
-                      if test -z "$haveit"; then
-                        rpathdirs="$rpathdirs $dir"
-                      fi
-                      dnl Potentially add DIR to ltrpathdirs.
-                      dnl The ltrpathdirs will be appended to $LTLIBNAME at 
the end.
-                      haveit=
-                      for x in $ltrpathdirs; do
-                        if test "X$x" = "X$dir"; then
-                          haveit=yes
-                          break
-                        fi
-                      done
-                      if test -z "$haveit"; then
-                        ltrpathdirs="$ltrpathdirs $dir"
-                      fi
-                    fi
-                    ;;
-                  -l*)
-                    dnl Handle this in the next round.
-                    names_next_round="$names_next_round "`echo "X$dep" | sed 
-e 's/^X-l//'`
-                    ;;
-                  *.la)
-                    dnl Handle this in the next round. Throw away the .la's
-                    dnl directory; it is already contained in a preceding -L
-                    dnl option.
-                    names_next_round="$names_next_round "`echo "X$dep" | sed 
-e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
-                    ;;
-                  *)
-                    dnl Most likely an immediate library name.
-                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
-                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
-                    ;;
-                esac
-              done
-            fi
-          else
-            dnl Didn't find the library; assume it is in the system directories
-            dnl known to the linker and runtime loader. (All the system
-            dnl directories known to the linker should also be known to the
-            dnl runtime loader, otherwise the system is severely 
misconfigured.)
-            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
-          fi
-        fi
-      fi
-    done
-  done
-  if test "X$rpathdirs" != "X"; then
-    if test -n "$acl_hardcode_libdir_separator"; then
-      dnl Weird platform: only the last -rpath option counts, the user must
-      dnl pass all path elements in one option. We can arrange that for a
-      dnl single library, but not when more than one $LIBNAMEs are used.
-      alldirs=
-      for found_dir in $rpathdirs; do
-        
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
-      done
-      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
-      acl_save_libdir="$libdir"
-      libdir="$alldirs"
-      eval flag=\"$acl_hardcode_libdir_flag_spec\"
-      libdir="$acl_save_libdir"
-      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-    else
-      dnl The -rpath options are cumulative.
-      for found_dir in $rpathdirs; do
-        acl_save_libdir="$libdir"
-        libdir="$found_dir"
-        eval flag=\"$acl_hardcode_libdir_flag_spec\"
-        libdir="$acl_save_libdir"
-        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-      done
-    fi
-  fi
-  if test "X$ltrpathdirs" != "X"; then
-    dnl When using libtool, the option that works for both libraries and
-    dnl executables is -R. The -R options are cumulative.
-    for found_dir in $ltrpathdirs; do
-      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
-    done
-  fi
-  popdef([P_A_C_K])
-  popdef([PACKLIBS])
-  popdef([PACKUP])
-  popdef([PACK])
-  popdef([NAME])
-])
-
-dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-dnl unless already present in VAR.
-dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-dnl contains two or three consecutive elements that belong together.
-AC_DEFUN([AC_LIB_APPENDTOVAR],
-[
-  for element in [$2]; do
-    haveit=
-    for x in $[$1]; do
-      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-      if test "X$x" = "X$element"; then
-        haveit=yes
-        break
-      fi
-    done
-    if test -z "$haveit"; then
-      [$1]="${[$1]}${[$1]:+ }$element"
-    fi
-  done
-])
-
-dnl For those cases where a variable contains several -L and -l options
-dnl referring to unknown libraries and directories, this macro determines the
-dnl necessary additional linker options for the runtime path.
-dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
-dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
-dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
-dnl otherwise linking without libtool is assumed.
-AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
-[
-  AC_REQUIRE([AC_LIB_RPATH])
-  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
-  $1=
-  if test "$enable_rpath" != no; then
-    if test -n "$acl_hardcode_libdir_flag_spec" && test 
"$acl_hardcode_minus_L" = no; then
-      dnl Use an explicit option to hardcode directories into the resulting
-      dnl binary.
-      rpathdirs=
-      next=
-      for opt in $2; do
-        if test -n "$next"; then
-          dir="$next"
-          dnl No need to hardcode the standard /usr/lib.
-          if test "X$dir" != "X/usr/$acl_libdirstem" \
-             && test "X$dir" != "X/usr/$acl_libdirstem2"; then
-            rpathdirs="$rpathdirs $dir"
-          fi
-          next=
-        else
-          case $opt in
-            -L) next=yes ;;
-            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
-                 dnl No need to hardcode the standard /usr/lib.
-                 if test "X$dir" != "X/usr/$acl_libdirstem" \
-                    && test "X$dir" != "X/usr/$acl_libdirstem2"; then
-                   rpathdirs="$rpathdirs $dir"
-                 fi
-                 next= ;;
-            *) next= ;;
-          esac
-        fi
-      done
-      if test "X$rpathdirs" != "X"; then
-        if test -n ""$3""; then
-          dnl libtool is used for linking. Use -R options.
-          for dir in $rpathdirs; do
-            $1="${$1}${$1:+ }-R$dir"
-          done
-        else
-          dnl The linker is used for linking directly.
-          if test -n "$acl_hardcode_libdir_separator"; then
-            dnl Weird platform: only the last -rpath option counts, the user
-            dnl must pass all path elements in one option.
-            alldirs=
-            for dir in $rpathdirs; do
-              
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
-            done
-            acl_save_libdir="$libdir"
-            libdir="$alldirs"
-            eval flag=\"$acl_hardcode_libdir_flag_spec\"
-            libdir="$acl_save_libdir"
-            $1="$flag"
-          else
-            dnl The -rpath options are cumulative.
-            for dir in $rpathdirs; do
-              acl_save_libdir="$libdir"
-              libdir="$dir"
-              eval flag=\"$acl_hardcode_libdir_flag_spec\"
-              libdir="$acl_save_libdir"
-              $1="${$1}${$1:+ }$flag"
-            done
-          fi
-        fi
-      fi
-    fi
-  fi
-  AC_SUBST([$1])
-])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
deleted file mode 100644
index 60908e8fb..000000000
--- a/m4/lib-prefix.m4
+++ /dev/null
@@ -1,224 +0,0 @@
-# lib-prefix.m4 serial 7 (gettext-0.18)
-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.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-
-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-dnl to access previously installed libraries. The basic assumption is that
-dnl a user will want packages to use other packages he previously installed
-dnl with the same --prefix option.
-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-dnl libraries, but is otherwise very convenient.
-AC_DEFUN([AC_LIB_PREFIX],
-[
-  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  dnl By default, look in $includedir and $libdir.
-  use_additional=yes
-  AC_LIB_WITH_FINAL_PREFIX([
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-  ])
-  AC_LIB_ARG_WITH([lib-prefix],
-[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
-  --without-lib-prefix    don't search for libraries in includedir and libdir],
-[
-    if test "X$withval" = "Xno"; then
-      use_additional=no
-    else
-      if test "X$withval" = "X"; then
-        AC_LIB_WITH_FINAL_PREFIX([
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-        ])
-      else
-        additional_includedir="$withval/include"
-        additional_libdir="$withval/$acl_libdirstem"
-      fi
-    fi
-])
-  if test $use_additional = yes; then
-    dnl Potentially add $additional_includedir to $CPPFLAGS.
-    dnl But don't add it
-    dnl   1. if it's the standard /usr/include,
-    dnl   2. if it's already present in $CPPFLAGS,
-    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
-    dnl   4. if it doesn't exist as a directory.
-    if test "X$additional_includedir" != "X/usr/include"; then
-      haveit=
-      for x in $CPPFLAGS; do
-        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-        if test "X$x" = "X-I$additional_includedir"; then
-          haveit=yes
-          break
-        fi
-      done
-      if test -z "$haveit"; then
-        if test "X$additional_includedir" = "X/usr/local/include"; then
-          if test -n "$GCC"; then
-            case $host_os in
-              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-            esac
-          fi
-        fi
-        if test -z "$haveit"; then
-          if test -d "$additional_includedir"; then
-            dnl Really add $additional_includedir to $CPPFLAGS.
-            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
-          fi
-        fi
-      fi
-    fi
-    dnl Potentially add $additional_libdir to $LDFLAGS.
-    dnl But don't add it
-    dnl   1. if it's the standard /usr/lib,
-    dnl   2. if it's already present in $LDFLAGS,
-    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
-    dnl   4. if it doesn't exist as a directory.
-    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
-      haveit=
-      for x in $LDFLAGS; do
-        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-        if test "X$x" = "X-L$additional_libdir"; then
-          haveit=yes
-          break
-        fi
-      done
-      if test -z "$haveit"; then
-        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
-          if test -n "$GCC"; then
-            case $host_os in
-              linux*) haveit=yes;;
-            esac
-          fi
-        fi
-        if test -z "$haveit"; then
-          if test -d "$additional_libdir"; then
-            dnl Really add $additional_libdir to $LDFLAGS.
-            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
-          fi
-        fi
-      fi
-    fi
-  fi
-])
-
-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-dnl acl_final_exec_prefix, containing the values to which $prefix and
-dnl $exec_prefix will expand at the end of the configure script.
-AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-[
-  dnl Unfortunately, prefix and exec_prefix get only finally determined
-  dnl at the end of configure.
-  if test "X$prefix" = "XNONE"; then
-    acl_final_prefix="$ac_default_prefix"
-  else
-    acl_final_prefix="$prefix"
-  fi
-  if test "X$exec_prefix" = "XNONE"; then
-    acl_final_exec_prefix='${prefix}'
-  else
-    acl_final_exec_prefix="$exec_prefix"
-  fi
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
-  prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-dnl variables prefix and exec_prefix bound to the values they will have
-dnl at the end of the configure script.
-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-[
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  $1
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_PREPARE_MULTILIB creates
-dnl - a variable acl_libdirstem, containing the basename of the libdir, either
-dnl   "lib" or "lib64" or "lib/64",
-dnl - a variable acl_libdirstem2, as a secondary possible value for
-dnl   acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
-dnl   "lib/amd64".
-AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
-[
-  dnl There is no formal standard regarding lib and lib64.
-  dnl On glibc systems, the current practice is that on a system supporting
-  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
-  dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
-  dnl the compiler's default mode by looking at the compiler's library search
-  dnl path. If at least one of its elements ends in /lib64 or points to a
-  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
-  dnl Otherwise we use the default, namely "lib".
-  dnl On Solaris systems, the current practice is that on a system supporting
-  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
-  dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
-  dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  acl_libdirstem=lib
-  acl_libdirstem2=
-  case "$host_os" in
-    solaris*)
-      dnl See Solaris 10 Software Developer Collection > Solaris 64-bit 
Developer's Guide > The Development Environment
-      dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
-      dnl "Portable Makefiles should refer to any library directories using 
the 64 symbolic link."
-      dnl But we want to recognize the sparcv9 or amd64 subdirectory also if 
the
-      dnl symlink is missing, so we set acl_libdirstem2 too.
-      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
-        [AC_EGREP_CPP([sixtyfour bits], [
-#ifdef _LP64
-sixtyfour bits
-#endif
-           ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
-        ])
-      if test $gl_cv_solaris_64bit = yes; then
-        acl_libdirstem=lib/64
-        case "$host_cpu" in
-          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
-          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
-        esac
-      fi
-      ;;
-    *)
-      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 
's,^libraries: ,,p' | sed -e 's,^=,,'`
-      if test -n "$searchpath"; then
-        acl_save_IFS="${IFS=   }"; IFS=":"
-        for searchdir in $searchpath; do
-          if test -d "$searchdir"; then
-            case "$searchdir" in
-              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
-              */../ | */.. )
-                # Better ignore directories of this form. They are misleading.
-                ;;
-              *) searchdir=`cd "$searchdir" && pwd`
-                 case "$searchdir" in
-                   */lib64 ) acl_libdirstem=lib64 ;;
-                 esac ;;
-            esac
-          fi
-        done
-        IFS="$acl_save_IFS"
-      fi
-      ;;
-  esac
-  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
-])
diff --git a/m4/libunistring-base.m4 b/m4/libunistring-base.m4
deleted file mode 100644
index d105c7217..000000000
--- a/m4/libunistring-base.m4
+++ /dev/null
@@ -1,141 +0,0 @@
-# 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
deleted file mode 100644
index 2e93e5818..000000000
--- a/m4/localcharset.m4
+++ /dev/null
@@ -1,17 +0,0 @@
-# localcharset.m4 serial 7
-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.
-
-AC_DEFUN([gl_LOCALCHARSET],
-[
-  dnl Prerequisites of lib/localcharset.c.
-  AC_REQUIRE([AM_LANGINFO_CODESET])
-  AC_REQUIRE([gl_FCNTL_O_FLAGS])
-  AC_CHECK_DECLS_ONCE([getc_unlocked])
-
-  dnl Prerequisites of the lib/Makefile.am snippet.
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([gl_GLIBC21])
-])
diff --git a/m4/locale-fr.m4 b/m4/locale-fr.m4
deleted file mode 100644
index ef199e397..000000000
--- a/m4/locale-fr.m4
+++ /dev/null
@@ -1,250 +0,0 @@
-# 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.
-
-dnl From Bruno Haible.
-
-dnl Determine the name of a french locale with traditional encoding.
-AC_DEFUN([gt_LOCALE_FR],
-[
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([AM_LANGINFO_CODESET])
-  AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
-    AC_LANG_CONFTEST([AC_LANG_SOURCE([
-changequote(,)dnl
-#include <locale.h>
-#include <time.h>
-#if HAVE_LANGINFO_CODESET
-# include <langinfo.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-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 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.
-     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
-        || strcmp (cs, "UTF-8") == 0)
-      return 1;
-  }
-#endif
-#ifdef __CYGWIN__
-  /* On Cygwin, avoid locale names without encoding suffix, because the
-     locale_charset() function relies on the encoding suffix.  Note that
-     LC_ALL is set on the command line.  */
-  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
-#endif
-  /* Check whether in the abbreviation of the second month, the second
-     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
-     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
-      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
-            # 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 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
-                # 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
-          ;;
-      esac
-    fi
-    rm -fr conftest*
-  ])
-  LOCALE_FR=$gt_cv_locale_fr
-  AC_SUBST([LOCALE_FR])
-])
-
-dnl Determine the name of a french locale with UTF-8 encoding.
-AC_DEFUN([gt_LOCALE_FR_UTF8],
-[
-  AC_REQUIRE([AM_LANGINFO_CODESET])
-  AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
-    AC_LANG_CONFTEST([AC_LANG_SOURCE([
-changequote(,)dnl
-#include <locale.h>
-#include <time.h>
-#if HAVE_LANGINFO_CODESET
-# include <langinfo.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-struct tm t;
-char buf[16];
-int main () {
-  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
-     imitates locale dependent behaviour by looking at the environment
-     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 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.  */
-# if HAVE_LANGINFO_CODESET
-  {
-    const char *cs = nl_langinfo (CODESET);
-    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
-      return 1;
-  }
-# endif
-# ifdef __CYGWIN__
-  /* On Cygwin, avoid locale names without encoding suffix, because the
-     locale_charset() function relies on the encoding suffix.  Note that
-     LC_ALL is set on the command line.  */
-  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
-# endif
-  /* Check whether in the abbreviation of the second month, the second
-     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
-     two bytes long, with UTF-8 encoding.  */
-  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
-  if (strftime (buf, sizeof (buf), "%b", &t) < 4
-      || 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
-      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
-          ;;
-        *)
-          # 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*
-  ])
-  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
-  AC_SUBST([LOCALE_FR_UTF8])
-])
diff --git a/m4/locale-ja.m4 b/m4/locale-ja.m4
deleted file mode 100644
index 132a3e779..000000000
--- a/m4/locale-ja.m4
+++ /dev/null
@@ -1,136 +0,0 @@
-# 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.
-
-dnl From Bruno Haible.
-
-dnl Determine the name of a japanese locale with EUC-JP encoding.
-AC_DEFUN([gt_LOCALE_JA],
-[
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([AM_LANGINFO_CODESET])
-  AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [
-    AC_LANG_CONFTEST([AC_LANG_SOURCE([
-changequote(,)dnl
-#include <locale.h>
-#include <time.h>
-#if HAVE_LANGINFO_CODESET
-# include <langinfo.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-struct tm t;
-char buf[16];
-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 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.
-     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
-        || strcmp (cs, "UTF-8") == 0)
-      return 1;
-  }
-#endif
-#ifdef __CYGWIN__
-  /* On Cygwin, avoid locale names without encoding suffix, because the
-     locale_charset() function relies on the encoding suffix.  Note that
-     LC_ALL is set on the command line.  */
-  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
-#endif
-  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
-     on Cygwin 1.5.x.  */
-  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 (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++)
-    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
-      return 1;
-  return 0;
-}
-changequote([,])dnl
-      ])])
-    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
-      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 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
-              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
-                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
-                  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
-          ;;
-      esac
-    fi
-    rm -fr conftest*
-  ])
-  LOCALE_JA=$gt_cv_locale_ja
-  AC_SUBST([LOCALE_JA])
-])
diff --git a/m4/locale-zh.m4 b/m4/locale-zh.m4
deleted file mode 100644
index 4eed73f40..000000000
--- a/m4/locale-zh.m4
+++ /dev/null
@@ -1,130 +0,0 @@
-# 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.
-
-dnl From Bruno Haible.
-
-dnl Determine the name of a chinese locale with GB18030 encoding.
-AC_DEFUN([gt_LOCALE_ZH_CN],
-[
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([AM_LANGINFO_CODESET])
-  AC_CACHE_CHECK([for a transitional chinese locale], [gt_cv_locale_zh_CN], [
-    AC_LANG_CONFTEST([AC_LANG_SOURCE([
-changequote(,)dnl
-#include <locale.h>
-#include <stdlib.h>
-#include <time.h>
-#if HAVE_LANGINFO_CODESET
-# include <langinfo.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-struct tm t;
-char buf[16];
-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 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.
-     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
-        || strcmp (cs, "UTF-8") == 0)
-      return 1;
-  }
-#endif
-#ifdef __CYGWIN__
-  /* On Cygwin, avoid locale names without encoding suffix, because the
-     locale_charset() function relies on the encoding suffix.  Note that
-     LC_ALL is set on the command line.  */
-  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 (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++)
-    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
-      return 1;
-  /* Check whether a typical GB18030 multibyte sequence is recognized as a
-     single wide character.  This excludes the GB2312 and GBK encodings.  */
-  if (mblen ("\203\062\332\066", 5) != 4)
-    return 1;
-  return 0;
-}
-changequote([,])dnl
-      ])])
-    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
-      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
-          ;;
-        *)
-          # 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.
-      gt_cv_locale_zh_CN=none
-    fi
-    rm -fr conftest*
-  ])
-  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
-  AC_SUBST([LOCALE_ZH_CN])
-])
diff --git a/m4/locale_h.m4 b/m4/locale_h.m4
deleted file mode 100644
index 8bd12e80e..000000000
--- a/m4/locale_h.m4
+++ /dev/null
@@ -1,122 +0,0 @@
-# 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
deleted file mode 100644
index b8bb5964b..000000000
--- a/m4/localeconv.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-# 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
deleted file mode 100644
index d3fc1eff0..000000000
--- a/m4/lock.m4
+++ /dev/null
@@ -1,39 +0,0 @@
-# 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.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gl_LOCK],
-[
-  AC_REQUIRE([gl_THREADLIB])
-  if test "$gl_threads_api" = posix; then
-    # 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],
-         [Define if the POSIX multithreading library has read/write locks.])],
-      [],
-      [#include <pthread.h>])
-    # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM(
-        [[#include <pthread.h>]],
-        [[
-#if __FreeBSD__ == 4
-error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
-#else
-int x = (int)PTHREAD_MUTEX_RECURSIVE;
-return !x;
-#endif
-        ]])],
-      [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
-         [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
-  fi
-  gl_PREREQ_LOCK
-])
-
-# Prerequisites of lib/glthread/lock.c.
-AC_DEFUN([gl_PREREQ_LOCK], [:])
diff --git a/m4/longlong.m4 b/m4/longlong.m4
deleted file mode 100644
index 3af6ab5aa..000000000
--- a/m4/longlong.m4
+++ /dev/null
@@ -1,113 +0,0 @@
-# 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.
-
-dnl From Paul Eggert.
-
-# Define HAVE_LONG_LONG_INT if 'long long int' works.
-# 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
-# defined. In this case you can treat 'long long int' like 'long int'.
-
-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_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(
-               address@hidden:@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'.])
-  fi
-])
-
-# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
-# 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
-# will not be defined. In this case you can treat 'unsigned long long int'
-# like 'unsigned long int'.
-
-AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
-[
-  AC_CACHE_CHECK([for unsigned long long int],
-    [ac_cv_type_unsigned_long_long_int],
-    [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'.])
-  fi
-])
-
-# Expands to a C program that can be used to test for simultaneous support
-# of 'long long' and 'unsigned long long'. We don't want to say that
-# 'long long' is available if 'unsigned long long' is not, or vice versa,
-# because too many programs rely on the symmetry between signed and unsigned
-# integer types (excluding 'bool').
-AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
-[
-  AC_LANG_PROGRAM(
-    [[/* For now, do not test the preprocessor; as of 2007 there are too many
-         implementations with broken preprocessors.  Perhaps this can
-         be revisited in 2012.  In the meantime, code should not expect
-         #if to work with literals wider than 32 bits.  */
-      /* Test literals.  */
-      long long int ll = 9223372036854775807ll;
-      long long int nll = -9223372036854775807LL;
-      unsigned long long int ull = 18446744073709551615ULL;
-      /* Test constant expressions.   */
-      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
-                     ? 1 : -1)];
-      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
-                     ? 1 : -1)];
-      int i = 63;]],
-    [[/* Test availability of runtime routines for shift and division.  */
-      long long int llmax = 9223372036854775807ll;
-      unsigned long long int ullmax = 18446744073709551615ull;
-      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
-              | (llmax / ll) | (llmax % ll)
-              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
-              | (ullmax / ull) | (ullmax % ull));]])
-])
diff --git a/m4/malloc.m4 b/m4/malloc.m4
deleted file mode 100644
index 4b24a0b11..000000000
--- a/m4/malloc.m4
+++ /dev/null
@@ -1,98 +0,0 @@
-# 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
-# it is not.
-AC_DEFUN([gl_FUNC_MALLOC_GNU],
-[
-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-  dnl _AC_FUNC_MALLOC_IF is defined in Autoconf.
-  _AC_FUNC_MALLOC_IF(
-    [AC_DEFINE([HAVE_MALLOC_GNU], [1],
-               [Define to 1 if your system has a GNU libc compatible 'malloc'
-                function, and to 0 otherwise.])],
-    [AC_DEFINE([HAVE_MALLOC_GNU], [0])
-     REPLACE_MALLOC=1
-    ])
-])
-
-# gl_FUNC_MALLOC_POSIX
-# --------------------
-# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
-# fails), and replace malloc if it is not.
-AC_DEFUN([gl_FUNC_MALLOC_POSIX],
-[
-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
-  if test $gl_cv_func_malloc_posix = yes; then
-    AC_DEFINE([HAVE_MALLOC_POSIX], [1],
-      [Define if the 'malloc' function is POSIX compliant.])
-  else
-    REPLACE_MALLOC=1
-  fi
-])
-
-# Test whether malloc, realloc, calloc are POSIX compliant,
-# Set gl_cv_func_malloc_posix to yes or no accordingly.
-AC_DEFUN([gl_CHECK_MALLOC_POSIX],
-[
-  AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
-    [gl_cv_func_malloc_posix],
-    [
-      dnl It is too dangerous to try to allocate a large amount of memory:
-      dnl some systems go to their knees when you do that. So assume that
-      dnl all Unix implementations of the function are POSIX compliant.
-      AC_COMPILE_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[]],
-           [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-             choke me
-             #endif
-            ]])],
-        [gl_cv_func_malloc_posix=yes],
-        [gl_cv_func_malloc_posix=no])
-    ])
-])
diff --git a/m4/math_h.m4 b/m4/math_h.m4
deleted file mode 100644
index bf0845fd1..000000000
--- a/m4/math_h.m4
+++ /dev/null
@@ -1,353 +0,0 @@
-# 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(address@hidden:@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(address@hidden:@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
deleted file mode 100644
index 4c9f38861..000000000
--- a/m4/mbrtowc.m4
+++ /dev/null
@@ -1,572 +0,0 @@
-# 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,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_MBRTOWC],
-[
-  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-
-  AC_REQUIRE([AC_TYPE_MBSTATE_T])
-  gl_MBSTATE_T_BROKEN
-
-  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_ARG1
-      gl_MBRTOWC_NULL_ARG2
-      gl_MBRTOWC_RETVAL
-      gl_MBRTOWC_NUL_RETVAL
-      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_ARG2_BUG], [1],
-             [Define if the mbrtowc function has the NULL string argument 
bug.])
-           REPLACE_MBRTOWC=1
-           ;;
-      esac
-      case "$gl_cv_func_mbrtowc_retval" in
-        *yes) ;;
-        *) AC_DEFINE([MBRTOWC_RETVAL_BUG], [1],
-             [Define if the mbrtowc function returns a wrong return value.])
-           REPLACE_MBRTOWC=1
-           ;;
-      esac
-      case "$gl_cv_func_mbrtowc_nul_retval" in
-        *yes) ;;
-        *) AC_DEFINE([MBRTOWC_NUL_RETVAL_BUG], [1],
-             [Define if the mbrtowc function does not return 0 for a NUL 
character.])
-           REPLACE_MBRTOWC=1
-           ;;
-      esac
-    fi
-  fi
-])
-
-dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that
-dnl redefines the semantics of the given mbstate_t type.
-dnl Result is REPLACE_MBSTATE_T.
-dnl When this is set to 1, we replace both mbsinit() and mbrtowc(), in order to
-dnl avoid inconsistencies.
-
-AC_DEFUN([gl_MBSTATE_T_BROKEN],
-[
-  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-
-  AC_REQUIRE([AC_TYPE_MBSTATE_T])
-  AC_CHECK_FUNCS_ONCE([mbsinit])
-  AC_CHECK_FUNCS_ONCE([mbrtowc])
-  if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
-    gl_MBRTOWC_INCOMPLETE_STATE
-    gl_MBRTOWC_SANITYCHECK
-    REPLACE_MBSTATE_T=0
-    case "$gl_cv_func_mbrtowc_incomplete_state" in
-      *yes) ;;
-      *) REPLACE_MBSTATE_T=1 ;;
-    esac
-    case "$gl_cv_func_mbrtowc_sanitycheck" in
-      *yes) ;;
-      *) REPLACE_MBSTATE_T=1 ;;
-    esac
-  else
-    REPLACE_MBSTATE_T=1
-  fi
-])
-
-dnl Test whether mbrtowc puts the state into non-initial state when parsing an
-dnl incomplete multibyte character.
-dnl Result is gl_cv_func_mbrtowc_incomplete_state.
-
-AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gt_LOCALE_JA])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether mbrtowc handles incomplete characters],
-    [gl_cv_func_mbrtowc_incomplete_state],
-    [
-      dnl Initial guess, used when cross-compiling or when no suitable locale
-      dnl is present.
-changequote(,)dnl
-      case "$host_os" in
-                     # Guess no on AIX and OSF/1.
-        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
-                     # Guess yes otherwise.
-        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
-      esac
-changequote([,])dnl
-      if test $LOCALE_JA != 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 ()
-{
-  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
-    {
-      const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
-      mbstate_t state;
-      wchar_t wc;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
-        if (mbsinit (&state))
-          return 1;
-    }
-  return 0;
-}]])],
-          [gl_cv_func_mbrtowc_incomplete_state=yes],
-          [gl_cv_func_mbrtowc_incomplete_state=no],
-          [:])
-      fi
-    ])
-])
-
-dnl Test whether mbrtowc works not worse than mbtowc.
-dnl Result is gl_cv_func_mbrtowc_sanitycheck.
-
-AC_DEFUN([gl_MBRTOWC_SANITYCHECK],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gt_LOCALE_ZH_CN])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether mbrtowc works as well as mbtowc],
-    [gl_cv_func_mbrtowc_sanitycheck],
-    [
-      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 8.
-        solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
-                    # Guess yes otherwise.
-        *)          gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
-      esac
-changequote([,])dnl
-      if test $LOCALE_ZH_CN != 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 ()
-{
-  /* This fails on Solaris 8:
-     mbrtowc returns 2, and sets wc to 0x00F0.
-     mbtowc returns 4 (correct) and sets wc to 0x5EDC.  */
-  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
-    {
-      char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
-      mbstate_t state;
-      wchar_t wc;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      if (mbrtowc (&wc, input + 3, 6, &state) != 4
-          && mbtowc (&wc, input + 3, 6) == 4)
-        return 1;
-    }
-  return 0;
-}]])],
-          [gl_cv_func_mbrtowc_sanitycheck=yes],
-          [gl_cv_func_mbrtowc_sanitycheck=no],
-          [:])
-      fi
-    ])
-])
-
-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_arg2.
-
-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_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_arg2="guessing no" ;;
-              # Guess yes otherwise.
-        *)    gl_cv_func_mbrtowc_null_arg2="guessing yes" ;;
-      esac
-changequote([,])dnl
-      if test $LOCALE_FR_UTF8 != 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 ()
-{
-  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
-    {
-      mbstate_t state;
-      wchar_t wc;
-      int ret;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      wc = (wchar_t) 0xBADFACE;
-      mbrtowc (&wc, NULL, 5, &state);
-      /* Check that wc was not modified.  */
-      if (wc != (wchar_t) 0xBADFACE)
-        return 1;
-    }
-  return 0;
-}]])],
-          [gl_cv_func_mbrtowc_null_arg2=yes],
-          [gl_cv_func_mbrtowc_null_arg2=no],
-          [:])
-      fi
-    ])
-])
-
-dnl Test whether mbrtowc, when parsing the end of a multibyte character,
-dnl correctly returns the number of bytes that were needed to complete the
-dnl character (not the total number of bytes of the multibyte character).
-dnl Result is gl_cv_func_mbrtowc_retval.
-
-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])
-  AC_CACHE_CHECK([whether mbrtowc has a correct return value],
-    [gl_cv_func_mbrtowc_retval],
-    [
-      dnl Initial guess, used when cross-compiling or when no suitable locale
-      dnl is present.
-changequote(,)dnl
-      case "$host_os" in
-                                   # 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 \
-         || { 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)
-    {
-      char input[] = "B\303\274\303\237er"; /* "Büßer" */
-      mbstate_t state;
-      wchar_t wc;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
-        {
-          input[1] = '\0';
-          if (mbrtowc (&wc, input + 2, 5, &state) != 1)
-            result |= 1;
-        }
-      found_some_locale = 1;
-    }
-  /* This fails on HP-UX 11.11.  */
-  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
-    {
-      char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
-      mbstate_t state;
-      wchar_t wc;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
-        {
-          input[1] = '\0';
-          if (mbrtowc (&wc, input + 2, 5, &state) != 2)
-            result |= 2;
-        }
-      found_some_locale = 1;
-    }
-  /* 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],
-          [if test $? != 77; then
-             gl_cv_func_mbrtowc_retval=no
-           fi
-          ],
-          [:])
-      fi
-    ])
-])
-
-dnl Test whether mbrtowc, when parsing a NUL character, correctly returns 0.
-dnl Result is gl_cv_func_mbrtowc_nul_retval.
-
-AC_DEFUN([gl_MBRTOWC_NUL_RETVAL],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gt_LOCALE_ZH_CN])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether mbrtowc returns 0 when parsing a NUL character],
-    [gl_cv_func_mbrtowc_nul_retval],
-    [
-      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 8 and 9.
-        solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;;
-                       # Guess yes otherwise.
-        *)             gl_cv_func_mbrtowc_nul_retval="guessing yes" ;;
-      esac
-changequote([,])dnl
-      if 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 ()
-{
-  /* This fails on Solaris 8 and 9.  */
-  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
-    {
-      mbstate_t state;
-      wchar_t wc;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      if (mbrtowc (&wc, "", 1, &state) != 0)
-        return 1;
-    }
-  return 0;
-}]])],
-          [gl_cv_func_mbrtowc_nul_retval=yes],
-          [gl_cv_func_mbrtowc_nul_retval=no],
-          [:])
-      fi
-    ])
-])
-
-# Prerequisites of lib/mbrtowc.c.
-AC_DEFUN([gl_PREREQ_MBRTOWC], [
-  :
-])
-
-
-dnl From Paul Eggert
-
-dnl This is an override of an autoconf macro.
-
-AC_DEFUN([AC_FUNC_MBRTOWC],
-[
-  dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60.
-  AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
-    gl_cv_func_mbrtowc,
-    [AC_LINK_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>]],
-            [[wchar_t wc;
-              char const s[] = "";
-              size_t n = 1;
-              mbstate_t state;
-              return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])],
-       gl_cv_func_mbrtowc=yes,
-       gl_cv_func_mbrtowc=no)])
-  if test $gl_cv_func_mbrtowc = yes; then
-    AC_DEFINE([HAVE_MBRTOWC], [1],
-      [Define to 1 if mbrtowc and mbstate_t are properly declared.])
-  fi
-])
diff --git a/m4/mbsinit.m4 b/m4/mbsinit.m4
deleted file mode 100644
index 2e6d0921a..000000000
--- a/m4/mbsinit.m4
+++ /dev/null
@@ -1,51 +0,0 @@
-# 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.
-
-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
-
-  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
-])
-
-# Prerequisites of lib/mbsinit.c.
-AC_DEFUN([gl_PREREQ_MBSINIT], [
-  :
-])
diff --git a/m4/mbsrtowcs.m4 b/m4/mbsrtowcs.m4
deleted file mode 100644
index c4934c281..000000000
--- a/m4/mbsrtowcs.m4
+++ /dev/null
@@ -1,155 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_FUNC_MBSRTOWCS],
-[
-  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-
-  AC_REQUIRE([AC_TYPE_MBSTATE_T])
-  gl_MBSTATE_T_BROKEN
-
-  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
-    else
-      gl_MBSRTOWCS_WORKS
-      case "$gl_cv_func_mbsrtowcs_works" in
-        *yes) ;;
-        *) REPLACE_MBSRTOWCS=1 ;;
-      esac
-    fi
-  fi
-])
-
-dnl Test whether mbsrtowcs works.
-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])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether mbsrtowcs works],
-    [gl_cv_func_mbsrtowcs_works],
-    [
-      dnl Initial guess, used when cross-compiling or when no suitable locale
-      dnl is present.
-changequote(,)dnl
-      case "$host_os" in
-                                   # 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 != 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)
-    {
-      const char input[] = "B\303\274\303\237er";
-      mbstate_t state;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      if (mbrtowc (NULL, input + 1, 1, &state) == (size_t)(-2))
-        if (!mbsinit (&state))
-          {
-            const char *src = input + 2;
-            if (mbsrtowcs (NULL, &src, 10, &state) != 4)
-              result |= 2;
-          }
-    }
-  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
-    {
-      const char input[] = "<\306\374\313\334\270\354>";
-      mbstate_t state;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      if (mbrtowc (NULL, input + 3, 1, &state) == (size_t)(-2))
-        if (!mbsinit (&state))
-          {
-            const char *src = input + 4;
-            if (mbsrtowcs (NULL, &src, 10, &state) != 3)
-              result |= 4;
-          }
-    }
-  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
-    {
-      const char input[] = "B\250\271\201\060\211\070er";
-      mbstate_t state;
-
-      memset (&state, '\0', sizeof (mbstate_t));
-      if (mbrtowc (NULL, input + 1, 1, &state) == (size_t)(-2))
-        if (!mbsinit (&state))
-          {
-            const char *src = input + 2;
-            if (mbsrtowcs (NULL, &src, 10, &state) != 4)
-              result |= 8;
-          }
-    }
-  return result;
-}]])],
-          [gl_cv_func_mbsrtowcs_works=yes],
-          [gl_cv_func_mbsrtowcs_works=no],
-          [:])
-      fi
-    ])
-])
-
-# Prerequisites of lib/mbsrtowcs.c.
-AC_DEFUN([gl_PREREQ_MBSRTOWCS], [
-  :
-])
diff --git a/m4/mbstate_t.m4 b/m4/mbstate_t.m4
deleted file mode 100644
index ed0011798..000000000
--- a/m4/mbstate_t.m4
+++ /dev/null
@@ -1,41 +0,0 @@
-# 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.
-
-# From Paul Eggert.
-
-# BeOS 5 has <wchar.h> but does not define mbstate_t,
-# so you can't declare an object of that type.
-# Check for this incompatibility with Standard C.
-
-# AC_TYPE_MBSTATE_T
-# -----------------
-AC_DEFUN([AC_TYPE_MBSTATE_T],
-[
-   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl for HP-UX 11.11
-
-   AC_CACHE_CHECK([for mbstate_t], [ac_cv_type_mbstate_t],
-     [AC_COMPILE_IFELSE(
-        [AC_LANG_PROGRAM(
-           [AC_INCLUDES_DEFAULT[
-/* 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])])
-   if test $ac_cv_type_mbstate_t = yes; then
-     AC_DEFINE([HAVE_MBSTATE_T], [1],
-               [Define to 1 if <wchar.h> declares mbstate_t.])
-   else
-     AC_DEFINE([mbstate_t], [int],
-               [Define to a type if <wchar.h> does not define.])
-   fi
-])
diff --git a/m4/mbswidth.m4 b/m4/mbswidth.m4
deleted file mode 100644
index 39760fcd2..000000000
--- a/m4/mbswidth.m4
+++ /dev/null
@@ -1,46 +0,0 @@
-# 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
deleted file mode 100644
index e47946196..000000000
--- a/m4/mbtowc.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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
deleted file mode 100644
index 2d8abe75d..000000000
--- a/m4/memchr.m4
+++ /dev/null
@@ -1,88 +0,0 @@
-# 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.
-
-AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
-[
-  dnl Check for prerequisites for memory fence checks.
-  gl_FUNC_MMAP_ANON
-  AC_CHECK_HEADERS_ONCE([sys/mman.h])
-  AC_CHECK_FUNCS_ONCE([mprotect])
-
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  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
-    # memchr should not dereference overestimated length after a match
-    #   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
-    #   http://sourceware.org/bugzilla/show_bug.cgi?id=10162
-    # Assume that memchr works on platforms that lack mprotect.
-    AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works],
-      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-#include <string.h>
-#if HAVE_SYS_MMAN_H
-# include <fcntl.h>
-# include <unistd.h>
-# include <sys/types.h>
-# include <sys/mman.h>
-# ifndef MAP_FILE
-#  define MAP_FILE 0
-# endif
-#endif
-]], [[
-  int result = 0;
-  char *fence = NULL;
-#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
-# if HAVE_MAP_ANONYMOUS
-  const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
-  const int fd = -1;
-# else /* !HAVE_MAP_ANONYMOUS */
-  const int flags = MAP_FILE | MAP_PRIVATE;
-  int fd = open ("/dev/zero", O_RDONLY, 0666);
-  if (fd >= 0)
-# endif
-    {
-      int pagesize = getpagesize ();
-      char *two_pages =
-        (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
-                       flags, fd, 0);
-      if (two_pages != (char *)(-1)
-          && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
-        fence = two_pages + pagesize;
-    }
-#endif
-  if (fence)
-    {
-      if (memchr (fence, 0, 0))
-        result |= 1;
-      strcpy (fence - 9, "12345678");
-      if (memchr (fence - 9, 0, 79) != fence - 1)
-        result |= 2;
-      if (memchr (fence - 1, 0, 3) != fence - 1)
-        result |= 4;
-    }
-  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
-  fi
-])
-
-# Prerequisites of lib/memchr.c.
-AC_DEFUN([gl_PREREQ_MEMCHR], [
-  AC_CHECK_HEADERS([bp-sym.h])
-])
diff --git a/m4/mempcpy.m4 b/m4/mempcpy.m4
deleted file mode 100644
index a48f2d107..000000000
--- a/m4/mempcpy.m4
+++ /dev/null
@@ -1,26 +0,0 @@
-# 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,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_MEMPCPY],
-[
-  dnl Persuade glibc <string.h> to declare mempcpy().
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  dnl The mempcpy() declaration in lib/string.in.h uses 'restrict'.
-  AC_REQUIRE([AC_C_RESTRICT])
-
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  AC_CHECK_FUNCS([mempcpy])
-  if test $ac_cv_func_mempcpy = no; then
-    HAVE_MEMPCPY=0
-  fi
-])
-
-# Prerequisites of lib/mempcpy.c.
-AC_DEFUN([gl_PREREQ_MEMPCPY], [
-  :
-])
diff --git a/m4/mmap-anon.m4 b/m4/mmap-anon.m4
deleted file mode 100644
index 9b60ddfa4..000000000
--- a/m4/mmap-anon.m4
+++ /dev/null
@@ -1,55 +0,0 @@
-# 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.
-
-# Detect how mmap can be used to create anonymous (not file-backed) memory
-# mappings.
-# - 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 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 Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
-  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-
-  # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
-  # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
-  # irrelevant for anonymous mappings.
-  AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no])
-
-  # Try to allow MAP_ANONYMOUS.
-  gl_have_mmap_anonymous=no
-  if test $gl_have_mmap = yes; then
-    AC_MSG_CHECKING([for MAP_ANONYMOUS])
-    AC_EGREP_CPP([I cannot identify this map], [
-#include <sys/mman.h>
-#ifdef MAP_ANONYMOUS
-    I cannot identify this map
-#endif
-],
-      [gl_have_mmap_anonymous=yes])
-    if test $gl_have_mmap_anonymous != yes; then
-      AC_EGREP_CPP([I cannot identify this map], [
-#include <sys/mman.h>
-#ifdef MAP_ANON
-    I cannot identify this map
-#endif
-],
-        [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
-          [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.])
-         gl_have_mmap_anonymous=yes])
-    fi
-    AC_MSG_RESULT([$gl_have_mmap_anonymous])
-    if test $gl_have_mmap_anonymous = yes; then
-      AC_DEFINE([HAVE_MAP_ANONYMOUS], [1],
-        [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after 
including
-         config.h and <sys/mman.h>.])
-    fi
-  fi
-])
diff --git a/m4/msvc-inval.m4 b/m4/msvc-inval.m4
deleted file mode 100644
index 9a6a47a74..000000000
--- a/m4/msvc-inval.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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
deleted file mode 100644
index a39618a41..000000000
--- a/m4/msvc-nothrow.m4
+++ /dev/null
@@ -1,10 +0,0 @@
-# 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
deleted file mode 100644
index 552ec7e71..000000000
--- a/m4/multiarch.m4
+++ /dev/null
@@ -1,62 +0,0 @@
-# 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 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
-# this:
-#
-#     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-#                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-#                 CPP="gcc -E" CXXCPP="g++ -E"
-#
-# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly.
-
-AC_DEFUN_ONCE([gl_MULTIARCH],
-[
-  dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN.
-  gl_cv_c_multiarch=no
-  AC_COMPILE_IFELSE(
-    [AC_LANG_SOURCE(
-      [[#ifndef __APPLE_CC__
-         not a universal capable compiler
-        #endif
-        typedef int dummy;
-      ]])],
-    [
-     dnl Check for potential -arch flags.  It is not universal unless
-     dnl there are at least two -arch flags with different values.
-     arch=
-     prev=
-     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
-       if test -n "$prev"; then
-         case $word in
-           i?86 | x86_64 | ppc | ppc64)
-             if test -z "$arch" || test "$arch" = "$word"; then
-               arch="$word"
-             else
-               gl_cv_c_multiarch=yes
-             fi
-             ;;
-         esac
-         prev=
-       else
-         if test "x$word" = "x-arch"; then
-           prev=arch
-         fi
-       fi
-     done
-    ])
-  if test $gl_cv_c_multiarch = yes; then
-    APPLE_UNIVERSAL_BUILD=1
-  else
-    APPLE_UNIVERSAL_BUILD=0
-  fi
-  AC_SUBST([APPLE_UNIVERSAL_BUILD])
-])
diff --git a/m4/nl_langinfo.m4 b/m4/nl_langinfo.m4
deleted file mode 100644
index 25e210155..000000000
--- a/m4/nl_langinfo.m4
+++ /dev/null
@@ -1,50 +0,0 @@
-# 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.
-
-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
-    # 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.])
-    fi
-  else
-    HAVE_NL_LANGINFO=0
-  fi
-])
diff --git a/m4/nls.m4 b/m4/nls.m4
deleted file mode 100644
index 8f8a147be..000000000
--- a/m4/nls.m4
+++ /dev/null
@@ -1,32 +0,0 @@
-# nls.m4 serial 5 (gettext-0.18)
-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,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-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 Authors:
-dnl   Ulrich Drepper <address@hidden>, 1995-2000.
-dnl   Bruno Haible <address@hidden>, 2000-2003.
-
-AC_PREREQ([2.50])
-
-AC_DEFUN([AM_NLS],
-[
-  AC_MSG_CHECKING([whether NLS is requested])
-  dnl Default is enabled NLS
-  AC_ARG_ENABLE([nls],
-    [  --disable-nls           do not use Native Language Support],
-    USE_NLS=$enableval, USE_NLS=yes)
-  AC_MSG_RESULT([$USE_NLS])
-  AC_SUBST([USE_NLS])
-])
diff --git a/m4/nocrash.m4 b/m4/nocrash.m4
deleted file mode 100644
index 105b884f1..000000000
--- a/m4/nocrash.m4
+++ /dev/null
@@ -1,130 +0,0 @@
-# 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
deleted file mode 100644
index d355d0131..000000000
--- a/m4/off_t.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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
deleted file mode 100644
index f39572343..000000000
--- a/m4/po.m4
+++ /dev/null
@@ -1,452 +0,0 @@
-# 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.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-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 Authors:
-dnl   Ulrich Drepper <address@hidden>, 1995-2000.
-dnl   Bruno Haible <address@hidden>, 2000-2003.
-
-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([AC_PROG_MKDIR_P])dnl
-  AC_REQUIRE([AM_NLS])dnl
-
-  dnl Release version of the gettext macros. This is used to ensure that
-  dnl the gettext macros and po/Makefile.in.in are in sync.
-  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
-
-  dnl Perform the following tests also if --disable-nls has been given,
-  dnl because they are needed for "make dist" to work.
-
-  dnl Search for GNU msgfmt in the PATH.
-  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
-  dnl The second test excludes FreeBSD msgfmt.
-  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
-    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
-     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage 
>/dev/null; then exit 1; else exit 0; fi)],
-    :)
-  AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
-
-  dnl Test whether it is GNU msgfmt >= 0.15.
-changequote(,)dnl
-  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
-    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
-    *) MSGFMT_015=$MSGFMT ;;
-  esac
-changequote([,])dnl
-  AC_SUBST([MSGFMT_015])
-changequote(,)dnl
-  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
-    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
-    *) GMSGFMT_015=$GMSGFMT ;;
-  esac
-changequote([,])dnl
-  AC_SUBST([GMSGFMT_015])
-
-  dnl Search for GNU xgettext 0.12 or newer in the PATH.
-  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
-  dnl The second test excludes FreeBSD xgettext.
-  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= 
/dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
-     (if $ac_dir/$ac_word --omit-header --copyright-holder= 
--msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then 
exit 1; else exit 0; fi)],
-    :)
-  dnl Remove leftover from FreeBSD xgettext call.
-  rm -f messages.po
-
-  dnl Test whether it is GNU xgettext >= 0.15.
-changequote(,)dnl
-  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
-    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
-    *) XGETTEXT_015=$XGETTEXT ;;
-  esac
-changequote([,])dnl
-  AC_SUBST([XGETTEXT_015])
-
-  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
-  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
-    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 
2>&1], :)
-
-  dnl Installation directories.
-  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
-  dnl have to define it here, so that it can be used in po/Makefile.
-  test -n "$localedir" || localedir='${datadir}/locale'
-  AC_SUBST([localedir])
-
-  dnl Support for AM_XGETTEXT_OPTION.
-  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
-  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
-
-  AC_CONFIG_COMMANDS([po-directories], [[
-    for ac_file in $CONFIG_FILES; do
-      # Support "outfile[:infile[:infile...]]"
-      case "$ac_file" in
-        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-      esac
-      # PO directories have a Makefile.in generated from Makefile.in.in.
-      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_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.
-        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
-        case "$ac_given_srcdir" in
-          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
-          /*) top_srcdir="$ac_given_srcdir" ;;
-          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
-        esac
-        # Treat a directory as a PO directory if and only if it has a
-        # POTFILES.in file. This allows packages to have multiple PO
-        # directories under different names or in different locations.
-        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"
-          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
-          # parameters.
-          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
-            # The LINGUAS file contains the set of available languages.
-            if test -n "$OBSOLETE_ALL_LINGUAS"; then
-              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 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 assignment from automake < 1.5.
-            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
-          fi
-          # Compute POFILES
-          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
-          # Compute UPDATEPOFILES
-          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
-          # Compute DUMMYPOFILES
-          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
-          # Compute GMOFILES
-          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
-          case "$ac_given_srcdir" in
-            .) srcdirpre= ;;
-            *) srcdirpre='$(srcdir)/' ;;
-          esac
-          POFILES=
-          UPDATEPOFILES=
-          DUMMYPOFILES=
-          GMOFILES=
-          for lang in $ALL_LINGUAS; do
-            POFILES="$POFILES $srcdirpre$lang.po"
-            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
-            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
-            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
-          done
-          # CATALOGS depends on both $ac_dir and the user's LINGUAS
-          # environment variable.
-          INST_LINGUAS=
-          if test -n "$ALL_LINGUAS"; then
-            for presentlang in $ALL_LINGUAS; do
-              useit=no
-              if test "%UNSET%" != "$LINGUAS"; then
-                desiredlanguages="$LINGUAS"
-              else
-                desiredlanguages="$ALL_LINGUAS"
-              fi
-              for desiredlang in $desiredlanguages; do
-                # Use the presentlang catalog if desiredlang is
-                #   a. equal to presentlang, or
-                #   b. a variant of presentlang (because in this case,
-                #      presentlang can be used as a fallback for messages
-                #      which are not translated in the desiredlang catalog).
-                case "$desiredlang" in
-                  "$presentlang"*) useit=yes;;
-                esac
-              done
-              if test $useit = yes; then
-                INST_LINGUAS="$INST_LINGUAS $presentlang"
-              fi
-            done
-          fi
-          CATALOGS=
-          if test -n "$INST_LINGUAS"; then
-            for lang in $INST_LINGUAS; do
-              CATALOGS="$CATALOGS $lang.gmo"
-            done
-          fi
-          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo 
"creating $ac_dir/Makefile"
-          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r 
$ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e 
"s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e 
"s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e 
"s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > 
"$ac_dir/Makefile"
-          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
-            if test -f "$f"; then
-              case "$f" in
-                *.orig | *.bak | *~) ;;
-                *) cat "$f" >> "$ac_dir/Makefile" ;;
-              esac
-            fi
-          done
-        fi
-        ;;
-      esac
-    done]],
-   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
-    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
-    # from automake < 1.5.
-    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
-    # Capture the value of LINGUAS because we need it to compute CATALOGS.
-    LINGUAS="${LINGUAS-%UNSET%}"
-   ])
-])
-
-dnl Postprocesses a Makefile in a directory containing PO files.
-AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
-[
-  # When this code is run, in config.status, two variables have already been
-  # set:
-  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
-  # - LINGUAS is the value of the environment variable LINGUAS at configure
-  #   time.
-
-changequote(,)dnl
-  # Adjust a relative srcdir.
-  ac_dir=`echo "$ac_file"|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.
-  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
-  case "$ac_given_srcdir" in
-    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
-    /*) top_srcdir="$ac_given_srcdir" ;;
-    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  # Find a way to echo strings without interpreting backslash.
-  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
-    gt_echo='echo'
-  else
-    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
-      gt_echo='printf %s\n'
-    else
-      echo_func () {
-        cat <<EOT
-$*
-EOT
-      }
-      gt_echo='echo_func'
-    fi
-  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
-s/P/P/
-x
-ta
-# Yes it was empty. Look if we have the expected variable definition.
-/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{
-  # Seen the first line of the variable definition.
-  s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=//
-  ba
-}
-bd
-:a
-# Here we are processing a line from the variable definition.
-# Remove comment, more precisely replace it with a space.
-s/#.*$/ /
-# See if the line ends in a backslash.
-tb
-:b
-s/\\$//
-# Print the line, without the trailing backslash.
-p
-tc
-# There was no trailing backslash. The end of the variable definition is
-# reached. Clear the hold space.
-s/^.*$//
-x
-bd
-:c
-# A trailing backslash means that the variable definition continues in the
-# next line. Put a nonempty string into the hold space to indicate this.
-s/^.*$/P/
-x
-:d
-'
-changequote([,])dnl
-
-  # Set POTFILES to the value of the Makefile variable POTFILES.
-  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 
's/VARIABLE/POTFILES/g'`
-  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
-  # Compute POTFILES_DEPS as
-  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
-  POTFILES_DEPS=
-  for file in $POTFILES; do
-    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
-  done
-  POMAKEFILEDEPS=""
-
-  if test -n "$OBSOLETE_ALL_LINGUAS"; then
-    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
-  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
-    # The LINGUAS file contains the set of available languages.
-    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" 
"$ac_given_srcdir/$ac_dir/LINGUAS"`
-    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
-  else
-    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
-    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 assignment from automake < 1.5.
-  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
-  # Compute POFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
-  # Compute UPDATEPOFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
-  # Compute DUMMYPOFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
-  # Compute GMOFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
-  # Compute PROPERTIESFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), 
$(top_srcdir)/$(DOMAIN)_$(lang).properties)
-  # Compute CLASSFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), 
$(top_srcdir)/$(DOMAIN)_$(lang).class)
-  # Compute QMFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
-  # Compute MSGFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
-  # Compute RESOURCESDLLFILES
-  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob 
$(lang))/$(DOMAIN).resources.dll)
-  case "$ac_given_srcdir" in
-    .) srcdirpre= ;;
-    *) srcdirpre='$(srcdir)/' ;;
-  esac
-  POFILES=
-  UPDATEPOFILES=
-  DUMMYPOFILES=
-  GMOFILES=
-  PROPERTIESFILES=
-  CLASSFILES=
-  QMFILES=
-  MSGFILES=
-  RESOURCESDLLFILES=
-  for lang in $ALL_LINGUAS; do
-    POFILES="$POFILES $srcdirpre$lang.po"
-    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
-    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
-    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
-    PROPERTIESFILES="$PROPERTIESFILES 
\$(top_srcdir)/\$(DOMAIN)_$lang.properties"
-    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
-    QMFILES="$QMFILES $srcdirpre$lang.qm"
-    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 
'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
-    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/'`
-    RESOURCESDLLFILES="$RESOURCESDLLFILES 
$srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
-  done
-  # CATALOGS depends on both $ac_dir and the user's LINGUAS
-  # environment variable.
-  INST_LINGUAS=
-  if test -n "$ALL_LINGUAS"; then
-    for presentlang in $ALL_LINGUAS; do
-      useit=no
-      if test "%UNSET%" != "$LINGUAS"; then
-        desiredlanguages="$LINGUAS"
-      else
-        desiredlanguages="$ALL_LINGUAS"
-      fi
-      for desiredlang in $desiredlanguages; do
-        # Use the presentlang catalog if desiredlang is
-        #   a. equal to presentlang, or
-        #   b. a variant of presentlang (because in this case,
-        #      presentlang can be used as a fallback for messages
-        #      which are not translated in the desiredlang catalog).
-        case "$desiredlang" in
-          "$presentlang"*) useit=yes;;
-        esac
-      done
-      if test $useit = yes; then
-        INST_LINGUAS="$INST_LINGUAS $presentlang"
-      fi
-    done
-  fi
-  CATALOGS=
-  JAVACATALOGS=
-  QTCATALOGS=
-  TCLCATALOGS=
-  CSHARPCATALOGS=
-  if test -n "$INST_LINGUAS"; then
-    for lang in $INST_LINGUAS; do
-      CATALOGS="$CATALOGS $lang.gmo"
-      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
-      QTCATALOGS="$QTCATALOGS $lang.qm"
-      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 
'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
-      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/'`
-      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
-    done
-  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
address@hidden "\$(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
-  if grep -l '@CSHARPCATALOGS@' "$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/_/-/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
address@hidden "\$(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
-  if test -n "$POMAKEFILEDEPS"; then
-    cat >> "$ac_file.tmp" <<EOF
-Makefile: $POMAKEFILEDEPS
-EOF
-  fi
-  mv "$ac_file.tmp" "$ac_file"
-])
-
-dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
-AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
-[
-  XGETTEXT_EXTRA_OPTIONS=
-])
-
-dnl Registers an option to be passed to xgettext in the po subdirectory.
-AC_DEFUN([AM_XGETTEXT_OPTION],
-[
-  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
-  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
-])
diff --git a/m4/printf-posix.m4 b/m4/printf-posix.m4
deleted file mode 100644
index d7dfb60f8..000000000
--- a/m4/printf-posix.m4
+++ /dev/null
@@ -1,48 +0,0 @@
-# printf-posix.m4 serial 6 (gettext-0.18.2)
-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.
-
-dnl From Bruno Haible.
-dnl Test whether the printf() function supports POSIX/XSI format strings with
-dnl positions.
-
-AC_DEFUN([gt_PRINTF_POSIX],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
-    gt_cv_func_printf_posix,
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-/* The string "%2$d %1$d", with dollar characters protected from the shell's
-   dollar expansion (possibly an autoconf bug).  */
-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-static char buf[100];
-int main ()
-{
-  sprintf (buf, format, 33, 55);
-  return (strcmp (buf, "55 33") != 0);
-}]])],
-        [gt_cv_func_printf_posix=yes],
-        [gt_cv_func_printf_posix=no],
-        [
-          AC_EGREP_CPP([notposix], [
-#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined 
__MINGW32__ || defined __CYGWIN__
-  notposix
-#endif
-            ],
-            [gt_cv_func_printf_posix="guessing no"],
-            [gt_cv_func_printf_posix="guessing yes"])
-        ])
-    ])
-  case $gt_cv_func_printf_posix in
-    *yes)
-      AC_DEFINE([HAVE_POSIX_PRINTF], [1],
-        [Define if your printf() function supports format strings with 
positions.])
-      ;;
-  esac
-])
diff --git a/m4/printf.m4 b/m4/printf.m4
deleted file mode 100644
index ef44f7851..000000000
--- a/m4/printf.m4
+++ /dev/null
@@ -1,1570 +0,0 @@
-# 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.
-
-dnl Test whether the *printf family of functions supports the 'j', 'z', 't',
-dnl 'L' size specifiers. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_sizes_c99.
-
-AC_DEFUN([gl_PRINTF_SIZES_C99],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports size specifiers as in C99],
-    [gl_cv_func_printf_sizes_c99],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-# include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-# include <inttypes.h>
-#endif
-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)
-    result |= 1;
-#endif
-  buf[0] = '\0';
-  if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0
-      || strcmp (buf, "12345672 33") != 0)
-    result |= 2;
-  buf[0] = '\0';
-  if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
-      || strcmp (buf, "12345673 33") != 0)
-    result |= 4;
-  buf[0] = '\0';
-  if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
-      || strcmp (buf, "1.5 33") != 0)
-    result |= 8;
-  return result;
-}]])],
-        [gl_cv_func_printf_sizes_c99=yes],
-        [gl_cv_func_printf_sizes_c99=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu*)               gl_cv_func_printf_sizes_c99="guessing yes";;
-                                 # 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 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.
-           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
-                                 gl_cv_func_printf_sizes_c99="guessing no";;
-           openbsd*)             gl_cv_func_printf_sizes_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 NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_printf_sizes_c99="guessing no";;
-           netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
-                                 # If we don't know, assume the worst.
-           *)                    gl_cv_func_printf_sizes_c99="guessing no";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports 'long double'
-dnl arguments together with the 'L' size specifier. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_long_double.
-
-AC_DEFUN([gl_PRINTF_LONG_DOUBLE],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports 'long double' arguments],
-    [gl_cv_func_printf_long_double],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-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)
-    result |= 1;
-  buf[0] = '\0';
-  if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
-      || strcmp (buf, "1.750000e+00 33") != 0)
-    result |= 2;
-  buf[0] = '\0';
-  if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
-      || strcmp (buf, "1.75 33") != 0)
-    result |= 4;
-  return result;
-}]])],
-        [gl_cv_func_printf_long_double=yes],
-        [gl_cv_func_printf_long_double=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           beos*)        gl_cv_func_printf_long_double="guessing no";;
-           mingw* | pw*) gl_cv_func_printf_long_double="guessing no";;
-           *)            gl_cv_func_printf_long_double="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports infinite and NaN
-dnl 'double' arguments and negative zero arguments in the %f, %e, %g
-dnl directives. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_infinite.
-
-AC_DEFUN([gl_PRINTF_INFINITE],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports infinite 'double' arguments],
-    [gl_cv_func_printf_infinite],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static int
-strisnan (const char *string, size_t start_index, size_t end_index)
-{
-  if (start_index < end_index)
-    {
-      if (string[start_index] == '-')
-        start_index++;
-      if (start_index + 3 <= end_index
-          && memcmp (string + start_index, "nan", 3) == 0)
-        {
-          start_index += 3;
-          if (start_index == end_index
-              || (string[start_index] == '(' && string[end_index - 1] == ')'))
-            return 1;
-        }
-    }
-  return 0;
-}
-static int
-have_minus_zero ()
-{
-  static double plus_zero = 0.0;
-  double minus_zero = - plus_zero;
-  return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
-}
-static char buf[10000];
-static double zero = 0.0;
-int main ()
-{
-  int result = 0;
-  if (sprintf (buf, "%f", 1.0 / zero) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%f", -1.0 / zero) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%f", zero / zero) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 2;
-  if (sprintf (buf, "%e", 1.0 / zero) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 4;
-  if (sprintf (buf, "%e", -1.0 / zero) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 4;
-  if (sprintf (buf, "%e", zero / zero) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 8;
-  if (sprintf (buf, "%g", 1.0 / zero) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 16;
-  if (sprintf (buf, "%g", -1.0 / zero) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 16;
-  if (sprintf (buf, "%g", zero / zero) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 32;
-  /* This test fails on HP-UX 10.20.  */
-  if (have_minus_zero ())
-    if (sprintf (buf, "%g", - zero) < 0
-        || strcmp (buf, "-0") != 0)
-    result |= 64;
-  return result;
-}]])],
-        [gl_cv_func_printf_infinite=yes],
-        [gl_cv_func_printf_infinite=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu*)               gl_cv_func_printf_infinite="guessing yes";;
-                                 # 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 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.
-           hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
-           hpux*)                gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_printf_infinite="guessing no";;
-           netbsd*)              gl_cv_func_printf_infinite="guessing yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_printf_infinite="guessing yes";;
-                                 # If we don't know, assume the worst.
-           *)                    gl_cv_func_printf_infinite="guessing no";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports infinite and NaN
-dnl 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_infinite_long_double.
-
-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.
-  if test -n "$gl_printf_safe"; then
-    AC_DEFINE([CHECK_PRINTF_SAFE], [1],
-      [Define if you wish *printf() functions that have a safe handling of
-       non-IEEE-754 'long double' values.])
-  fi
-  case "$gl_cv_func_printf_long_double" in
-    *yes)
-      AC_CACHE_CHECK([whether printf supports infinite 'long double' 
arguments],
-        [gl_cv_func_printf_infinite_long_double],
-        [
-          AC_RUN_IFELSE(
-            [AC_LANG_SOURCE([[
-]GL_NOCRASH[
-#include <float.h>
-#include <stdio.h>
-#include <string.h>
-static int
-strisnan (const char *string, size_t start_index, size_t end_index)
-{
-  if (start_index < end_index)
-    {
-      if (string[start_index] == '-')
-        start_index++;
-      if (start_index + 3 <= end_index
-          && memcmp (string + start_index, "nan", 3) == 0)
-        {
-          start_index += 3;
-          if (start_index == end_index
-              || (string[start_index] == '(' && string[end_index - 1] == ')'))
-            return 1;
-        }
-    }
-  return 0;
-}
-static char buf[10000];
-static long double zeroL = 0.0L;
-int main ()
-{
-  int result = 0;
-  nocrash_init();
-  if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 1;
-  if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Le", zeroL / zeroL) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    result |= 1;
-  if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
-      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
-      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
-    result |= 1;
-  if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
-      || !strisnan (buf, 0, strlen (buf)))
-    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
-#  define LDBL80_WORDS(exponent,manthi,mantlo) \
-     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
-       ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16),    \
-       (unsigned int) (mantlo) << 16                                        \
-     }
-# else
-#  define LDBL80_WORDS(exponent,manthi,mantlo) \
-     { mantlo, manthi, exponent }
-# endif
-  { /* Quiet NaN.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-  }
-  {
-    /* Signalling NaN.  */
-    static union { unsigned int word[4]; long double value; } x =
-      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
-    if (sprintf (buf, "%Lf", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 2;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      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)))
-      result |= 4;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 4;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      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)))
-      result |= 8;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 8;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      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)))
-      result |= 16;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 16;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      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)))
-      result |= 32;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 32;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      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)))
-      result |= 64;
-    if (sprintf (buf, "%Le", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 64;
-    if (sprintf (buf, "%Lg", x.value) < 0
-        || !strisnan (buf, 0, strlen (buf)))
-      result |= 64;
-  }
-#endif
-  return result;
-}]])],
-            [gl_cv_func_printf_infinite_long_double=yes],
-            [gl_cv_func_printf_infinite_long_double=no],
-            [
-changequote(,)dnl
-             case "$host_cpu" in
-                                     # Guess no on ia64, x86_64, i386.
-               ia64 | x86_64 | i*86) 
gl_cv_func_printf_infinite_long_double="guessing no";;
-               *)
-                 case "$host_os" in
-                                         # Guess yes on glibc systems.
-                   *-gnu*)               
gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                         # 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 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";;
-                                         # If we don't know, assume the worst.
-                   *)                    
gl_cv_func_printf_infinite_long_double="guessing no";;
-                 esac
-                 ;;
-             esac
-changequote([,])dnl
-            ])
-        ])
-      ;;
-    *)
-      gl_cv_func_printf_infinite_long_double="irrelevant"
-      ;;
-  esac
-])
-
-dnl Test whether the *printf family of functions supports the 'a' and 'A'
-dnl conversion specifier for hexadecimal output of floating-point numbers.
-dnl (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_directive_a.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives],
-    [gl_cv_func_printf_directive_a],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#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))
-    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))
-    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))
-    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 / zero, 33, 44, 55) < 0
-      || buf[0] == '0')
-    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))
-    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))
-    result |= 32;
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_a=yes],
-        [gl_cv_func_printf_directive_a=no],
-        [
-         case "$host_os" in
-                                 # Guess yes on glibc >= 2.5 systems.
-           *-gnu*)
-             AC_EGREP_CPP([BZ2908], [
-               #include <features.h>
-               #ifdef __GNU_LIBRARY__
-                #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 
2)) && !defined __UCLIBC__
-                 BZ2908
-                #endif
-               #endif
-               ],
-               [gl_cv_func_printf_directive_a="guessing yes"],
-               [gl_cv_func_printf_directive_a="guessing no"])
-             ;;
-                                 # If we don't know, assume the worst.
-           *)                    gl_cv_func_printf_directive_a="guessing no";;
-         esac
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the %F format
-dnl directive. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_directive_f.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'F' directive],
-    [gl_cv_func_printf_directive_f],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#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)
-    result |= 1;
-  if (sprintf (buf, "%F", 1.0 / zero) < 0
-      || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
-    result |= 2;
-  /* This catches a Cygwin 1.5.x bug.  */
-  if (sprintf (buf, "%.F", 1234.0) < 0
-      || strcmp (buf, "1234") != 0)
-    result |= 4;
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_f=yes],
-        [gl_cv_func_printf_directive_f=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu*)               gl_cv_func_printf_directive_f="guessing yes";;
-                                 # 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 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.[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
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the %n format
-dnl directive. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_directive_n.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'n' directive],
-    [gl_cv_func_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.  */
-  strcpy (fmtstring, "%d %n");
-  if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0
-      || strcmp (buf, "123 ") != 0
-      || count != 4)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_printf_directive_n=yes],
-        [gl_cv_func_printf_directive_n=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           mingw*) gl_cv_func_printf_directive_n="guessing no";;
-           *)      gl_cv_func_printf_directive_n="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the %ls format
-dnl directive and in particular, when a precision is specified, whether
-dnl the functions stop converting the wide string argument when the number
-dnl of bytes that have been produced by this conversion equals or exceeds
-dnl the precision.
-dnl Result is gl_cv_func_printf_directive_ls.
-
-AC_DEFUN([gl_PRINTF_DIRECTIVE_LS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the 'ls' directive],
-    [gl_cv_func_printf_directive_ls],
-    [
-      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 <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
-     Cygwin 1.5.  */
-  {
-    static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
-    buf[0] = '\0';
-    if (sprintf (buf, "%ls", wstring) < 0
-        || strcmp (buf, "abc") != 0)
-      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.  */
-  {
-    static const wchar_t wstring[] = { 'a', 0 };
-    buf[0] = '\0';
-    if (sprintf (buf, "%ls", wstring) < 0
-        || strcmp (buf, "a") != 0)
-      result |= 2;
-  }
-  /* Test whether precisions in %ls are supported as specified in ISO C 99
-     section 7.19.6.1:
-       "If a precision is specified, no more than that many bytes are written
-        (including shift sequences, if any), and the array shall contain a
-        null wide character if, to equal the multibyte character sequence
-        length given by the precision, the function would need to access a
-        wide character one past the end of the array."
-     This test fails on Solaris 10.  */
-  {
-    static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
-    buf[0] = '\0';
-    if (sprintf (buf, "%.2ls", wstring) < 0
-        || strcmp (buf, "ab") != 0)
-      result |= 8;
-  }
-  return result;
-}]])],
-        [gl_cv_func_printf_directive_ls=yes],
-        [gl_cv_func_printf_directive_ls=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           openbsd*)        gl_cv_func_printf_directive_ls="guessing no";;
-           irix*)           gl_cv_func_printf_directive_ls="guessing no";;
-           solaris*)        gl_cv_func_printf_directive_ls="guessing no";;
-           cygwin*)         gl_cv_func_printf_directive_ls="guessing no";;
-           beos* | haiku*)  gl_cv_func_printf_directive_ls="guessing no";;
-           *)               gl_cv_func_printf_directive_ls="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports POSIX/XSI format
-dnl strings with positions. (POSIX:2001)
-dnl Result is gl_cv_func_printf_positions.
-
-AC_DEFUN([gl_PRINTF_POSITIONS],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with 
positions],
-    [gl_cv_func_printf_positions],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-/* The string "%2$d %1$d", with dollar characters protected from the shell's
-   dollar expansion (possibly an autoconf bug).  */
-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-static char buf[100];
-int main ()
-{
-  sprintf (buf, format, 33, 55);
-  return (strcmp (buf, "55 33") != 0);
-}]])],
-        [gl_cv_func_printf_positions=yes],
-        [gl_cv_func_printf_positions=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | 
netbsdcoff[1-3]*)
-                         gl_cv_func_printf_positions="guessing no";;
-           beos*)        gl_cv_func_printf_positions="guessing no";;
-           mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
-           *)            gl_cv_func_printf_positions="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports POSIX/XSI format
-dnl strings with the ' flag for grouping of decimal digits. (POSIX:2001)
-dnl Result is gl_cv_func_printf_flag_grouping.
-
-AC_DEFUN([gl_PRINTF_FLAG_GROUPING],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the grouping flag],
-    [gl_cv_func_printf_flag_grouping],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-int main ()
-{
-  if (sprintf (buf, "%'d %d", 1234567, 99) < 0
-      || buf[strlen (buf) - 1] != '9')
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_printf_flag_grouping=yes],
-        [gl_cv_func_printf_flag_grouping=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           cygwin*)      gl_cv_func_printf_flag_grouping="guessing no";;
-           netbsd*)      gl_cv_func_printf_flag_grouping="guessing no";;
-           mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";;
-           *)            gl_cv_func_printf_flag_grouping="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports the - flag correctly.
-dnl (ISO C99.) See
-dnl <http://lists.gnu.org/archive/html/bug-coreutils/2008-02/msg00035.html>
-dnl Result is gl_cv_func_printf_flag_leftadjust.
-
-AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly],
-    [gl_cv_func_printf_flag_leftadjust],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-int main ()
-{
-  /* Check that a '-' flag is not annihilated by a negative width.  */
-  if (sprintf (buf, "a%-*sc", -3, "b") < 0
-      || strcmp (buf, "ab  c") != 0)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_printf_flag_leftadjust=yes],
-        [gl_cv_func_printf_flag_leftadjust=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                    # Guess yes on HP-UX 11.
-           hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";;
-                    # Guess no on HP-UX 10 and older.
-           hpux*)   gl_cv_func_printf_flag_leftadjust="guessing no";;
-                    # Guess yes otherwise.
-           *)       gl_cv_func_printf_flag_leftadjust="guessing yes";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions supports padding of non-finite
-dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See
-dnl <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html>
-dnl Result is gl_cv_func_printf_flag_zero.
-
-AC_DEFUN([gl_PRINTF_FLAG_ZERO],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports the zero flag correctly],
-    [gl_cv_func_printf_flag_zero],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-static char buf[100];
-static double zero = 0.0;
-int main ()
-{
-  if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
-      || (strcmp (buf, "       inf") != 0
-          && strcmp (buf, "  infinity") != 0))
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_printf_flag_zero=yes],
-        [gl_cv_func_printf_flag_zero=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                   # Guess yes on glibc systems.
-           *-gnu*) gl_cv_func_printf_flag_zero="guessing yes";;
-                   # Guess yes on BeOS.
-           beos*)  gl_cv_func_printf_flag_zero="guessing yes";;
-                   # If we don't know, assume the worst.
-           *)      gl_cv_func_printf_flag_zero="guessing no";;
-         esac
-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 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],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf supports large precisions],
-    [gl_cv_func_printf_precision],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-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)
-    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 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" ;;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the *printf family of functions recovers gracefully in case
-dnl of an out-of-memory condition, or whether it crashes the entire program.
-dnl Result is gl_cv_func_printf_enomem.
-
-AC_DEFUN([gl_PRINTF_ENOMEM],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gl_MULTIARCH])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether printf survives out-of-memory conditions],
-    [gl_cv_func_printf_enomem],
-    [
-      gl_cv_func_printf_enomem="guessing no"
-      if test "$cross_compiling" = no; then
-        if test $APPLE_UNIVERSAL_BUILD = 0; then
-          AC_LANG_CONFTEST([AC_LANG_SOURCE([
-]GL_NOCRASH[
-changequote(,)dnl
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <errno.h>
-int main()
-{
-  struct rlimit limit;
-  int ret;
-  nocrash_init ();
-  /* Some printf implementations allocate temporary space with malloc.  */
-  /* On BSD systems, malloc() is limited by RLIMIT_DATA.  */
-#ifdef RLIMIT_DATA
-  if (getrlimit (RLIMIT_DATA, &limit) < 0)
-    return 77;
-  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
-    limit.rlim_max = 5000000;
-  limit.rlim_cur = limit.rlim_max;
-  if (setrlimit (RLIMIT_DATA, &limit) < 0)
-    return 77;
-#endif
-  /* On Linux systems, malloc() is limited by RLIMIT_AS.  */
-#ifdef RLIMIT_AS
-  if (getrlimit (RLIMIT_AS, &limit) < 0)
-    return 77;
-  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
-    limit.rlim_max = 5000000;
-  limit.rlim_cur = limit.rlim_max;
-  if (setrlimit (RLIMIT_AS, &limit) < 0)
-    return 77;
-#endif
-  /* Some printf implementations allocate temporary space on the stack.  */
-#ifdef RLIMIT_STACK
-  if (getrlimit (RLIMIT_STACK, &limit) < 0)
-    return 77;
-  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
-    limit.rlim_max = 5000000;
-  limit.rlim_cur = limit.rlim_max;
-  if (setrlimit (RLIMIT_STACK, &limit) < 0)
-    return 77;
-#endif
-  ret = printf ("%.5000000f", 1.0);
-  return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
-}
-changequote([,])dnl
-          ])])
-          if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
-            (./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
-            case $? in
-              0) gl_cv_func_printf_enomem="yes" ;;
-              77) gl_cv_func_printf_enomem="guessing no" ;;
-              *) gl_cv_func_printf_enomem="no" ;;
-            esac
-          else
-            gl_cv_func_printf_enomem="guessing no"
-          fi
-          rm -fr conftest*
-        else
-          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"
-        fi
-      fi
-      if test "$gl_cv_func_printf_enomem" = "guessing no"; then
-changequote(,)dnl
-        case "$host_os" in
-                    # Guess yes on glibc systems.
-          *-gnu*)   gl_cv_func_printf_enomem="guessing yes";;
-                    # Guess yes on Solaris.
-          solaris*) gl_cv_func_printf_enomem="guessing yes";;
-                    # Guess yes on AIX.
-          aix*)     gl_cv_func_printf_enomem="guessing yes";;
-                    # Guess yes on HP-UX/hppa.
-          hpux*)    case "$host_cpu" in
-                      hppa*) gl_cv_func_printf_enomem="guessing yes";;
-                      *)     gl_cv_func_printf_enomem="guessing no";;
-                    esac
-                    ;;
-                    # Guess yes on IRIX.
-          irix*)    gl_cv_func_printf_enomem="guessing yes";;
-                    # Guess yes on OSF/1.
-          osf*)     gl_cv_func_printf_enomem="guessing yes";;
-                    # Guess yes on BeOS.
-          beos*)    gl_cv_func_printf_enomem="guessing yes";;
-                    # Guess yes on Haiku.
-          haiku*)   gl_cv_func_printf_enomem="guessing yes";;
-                    # If we don't know, assume the worst.
-          *)        gl_cv_func_printf_enomem="guessing no";;
-        esac
-changequote([,])dnl
-      fi
-    ])
-])
-
-dnl Test whether the snprintf function exists. (ISO C99, POSIX:2001)
-dnl Result is ac_cv_func_snprintf.
-
-AC_DEFUN([gl_SNPRINTF_PRESENCE],
-[
-  AC_CHECK_FUNCS_ONCE([snprintf])
-])
-
-dnl Test whether the string produced by the snprintf function is always NUL
-dnl terminated. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_snprintf_truncation_c99.
-
-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],
-    [
-      AC_RUN_IFELSE(
-        [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");
-  my_snprintf (buf, 3, "%d %d", 4567, 89);
-  if (memcmp (buf, "45\0DEF", 6) != 0)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_snprintf_truncation_c99=yes],
-        [gl_cv_func_snprintf_truncation_c99=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu*)               gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # 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 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.
-           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
-                                 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] | 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";;
-           aix*)                 gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on HP-UX >= 11.
-           hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           hpux*)                gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on IRIX >= 6.5.
-           irix6.5)              gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on OSF/1 >= 5.
-           osf[3-4]*)            gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           osf*)                 gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-           netbsd*)              gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_snprintf_truncation_c99="guessing 
yes";;
-                                 # If we don't know, assume the worst.
-           *)                    gl_cv_func_snprintf_truncation_c99="guessing 
no";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the return value of the snprintf function is the number
-dnl of bytes (excluding the terminating NUL) that would have been produced
-dnl if the buffer had been large enough. (ISO C99, POSIX:2001)
-dnl For example, this test program fails on IRIX 6.5:
-dnl     ---------------------------------------------------------------------
-dnl     #include <stdio.h>
-dnl     int main()
-dnl     {
-dnl       static char buf[8];
-dnl       int retval = snprintf (buf, 3, "%d", 12345);
-dnl       return retval >= 0 && retval < 3;
-dnl     }
-dnl     ---------------------------------------------------------------------
-dnl Result is gl_cv_func_snprintf_retval_c99.
-
-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],
-    [
-      AC_RUN_IFELSE(
-        [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 (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],
-        [gl_cv_func_snprintf_retval_c99=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu*)               gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # 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 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.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";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_snprintf_retval_c99="guessing no";;
-           netbsd*)              gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_snprintf_retval_c99="guessing 
yes";;
-                                 # If we don't know, assume the worst.
-           *)                    gl_cv_func_snprintf_retval_c99="guessing no";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the snprintf function supports the %n format directive
-dnl also in truncated portions of the format string. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_snprintf_directive_n.
-
-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],
-    [
-      AC_RUN_IFELSE(
-        [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 ()
-{
-  int count = -1;
-  /* 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.  */
-  strcpy (fmtstring, "%d %n");
-  my_snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
-  if (count != 6)
-    return 1;
-  return 0;
-}]])],
-        [gl_cv_func_snprintf_directive_n=yes],
-        [gl_cv_func_snprintf_directive_n=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu*)               gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # 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 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] | 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";;
-           aix*)                 gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on IRIX >= 6.5.
-           irix6.5)              gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on OSF/1 >= 5.
-           osf[3-4]*)            gl_cv_func_snprintf_directive_n="guessing 
no";;
-           osf*)                 gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_snprintf_directive_n="guessing 
no";;
-           netbsd*)              gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_snprintf_directive_n="guessing 
yes";;
-                                 # If we don't know, assume the worst.
-           *)                    gl_cv_func_snprintf_directive_n="guessing 
no";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl Test whether the snprintf function, when passed a size = 1, writes any
-dnl output without bounds in this case, behaving like sprintf. This is the
-dnl case on Linux libc5.
-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' };
-  my_snprintf (buf, 1, "%d", 12345);
-  return buf[1] != 'E';
-}]])],
-        [gl_cv_func_snprintf_size1=yes],
-        [gl_cv_func_snprintf_size1=no],
-        [gl_cv_func_snprintf_size1="guessing yes"])
-    ])
-])
-
-dnl Test whether the vsnprintf function, when passed a zero size, produces no
-dnl output. (ISO C99, POSIX:2001)
-dnl For example, snprintf nevertheless writes a NUL byte in this case
-dnl on OSF/1 5.1:
-dnl     ---------------------------------------------------------------------
-dnl     #include <stdio.h>
-dnl     int main()
-dnl     {
-dnl       static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
-dnl       snprintf (buf, 0, "%d", 12345);
-dnl       return buf[0] != 'D';
-dnl     }
-dnl     ---------------------------------------------------------------------
-dnl And vsnprintf writes any output without bounds in this case, behaving like
-dnl vsprintf, on HP-UX 11 and OSF/1 5.1:
-dnl     ---------------------------------------------------------------------
-dnl     #include <stdarg.h>
-dnl     #include <stdio.h>
-dnl     static int my_snprintf (char *buf, int size, const char *format, ...)
-dnl     {
-dnl       va_list args;
-dnl       int ret;
-dnl       va_start (args, format);
-dnl       ret = vsnprintf (buf, size, format, args);
-dnl       va_end (args);
-dnl       return ret;
-dnl     }
-dnl     int main()
-dnl     {
-dnl       static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
-dnl       my_snprintf (buf, 0, "%d", 12345);
-dnl       return buf[0] != 'D';
-dnl     }
-dnl     ---------------------------------------------------------------------
-dnl Result is gl_cv_func_vsnprintf_zerosize_c99.
-
-AC_DEFUN([gl_VSNPRINTF_ZEROSIZE_C99],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CACHE_CHECK([whether vsnprintf respects a zero size as in C99],
-    [gl_cv_func_vsnprintf_zerosize_c99],
-    [
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
-#include <stdarg.h>
-#include <stdio.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;
-}
-int main()
-{
-  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
-  my_snprintf (buf, 0, "%d", 12345);
-  return buf[0] != 'D';
-}]])],
-        [gl_cv_func_vsnprintf_zerosize_c99=yes],
-        [gl_cv_func_vsnprintf_zerosize_c99=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-                                 # Guess yes on glibc systems.
-           *-gnu*)               gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # 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 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] | 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";;
-           aix*)                 gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on IRIX >= 6.5.
-           irix6.5)              gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on NetBSD >= 3.
-           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | 
netbsdcoff[1-2]*)
-                                 gl_cv_func_vsnprintf_zerosize_c99="guessing 
no";;
-           netbsd*)              gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on BeOS.
-           beos*)                gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # Guess yes on mingw.
-           mingw* | pw*)         gl_cv_func_vsnprintf_zerosize_c99="guessing 
yes";;
-                                 # If we don't know, assume the worst.
-           *)                    gl_cv_func_vsnprintf_zerosize_c99="guessing 
no";;
-         esac
-changequote([,])dnl
-        ])
-    ])
-])
-
-dnl The results of these tests on various platforms are:
-dnl
-dnl 1 = gl_PRINTF_SIZES_C99
-dnl 2 = gl_PRINTF_LONG_DOUBLE
-dnl 3 = gl_PRINTF_INFINITE
-dnl 4 = gl_PRINTF_INFINITE_LONG_DOUBLE
-dnl 5 = gl_PRINTF_DIRECTIVE_A
-dnl 6 = gl_PRINTF_DIRECTIVE_F
-dnl 7 = gl_PRINTF_DIRECTIVE_N
-dnl 8 = gl_PRINTF_DIRECTIVE_LS
-dnl 9 = gl_PRINTF_POSITIONS
-dnl 10 = gl_PRINTF_FLAG_GROUPING
-dnl 11 = gl_PRINTF_FLAG_LEFTADJUST
-dnl 12 = gl_PRINTF_FLAG_ZERO
-dnl 13 = gl_PRINTF_PRECISION
-dnl 14 = gl_PRINTF_ENOMEM
-dnl 15 = gl_SNPRINTF_PRESENCE
-dnl 16 = gl_SNPRINTF_TRUNCATION_C99
-dnl 17 = gl_SNPRINTF_RETVAL_C99
-dnl 18 = gl_SNPRINTF_DIRECTIVE_N
-dnl 19 = gl_SNPRINTF_SIZE1
-dnl 20 = gl_VSNPRINTF_ZEROSIZE_C99
-dnl
-dnl 1 = checking whether printf supports size specifiers as in C99...
-dnl 2 = checking whether printf supports 'long double' arguments...
-dnl 3 = checking whether printf supports infinite 'double' arguments...
-dnl 4 = checking whether printf supports infinite 'long double' arguments...
-dnl 5 = checking whether printf supports the 'a' and 'A' directives...
-dnl 6 = checking whether printf supports the 'F' directive...
-dnl 7 = checking whether printf supports the 'n' directive...
-dnl 8 = checking whether printf supports the 'ls' directive...
-dnl 9 = checking whether printf supports POSIX/XSI format strings with 
positions...
-dnl 10 = checking whether printf supports the grouping flag...
-dnl 11 = checking whether printf supports the left-adjust flag correctly...
-dnl 12 = checking whether printf supports the zero flag correctly...
-dnl 13 = checking whether printf supports large precisions...
-dnl 14 = checking whether printf survives out-of-memory conditions...
-dnl 15 = checking for snprintf...
-dnl 16 = checking whether snprintf truncates the result as in C99...
-dnl 17 = checking whether snprintf returns a byte count as in C99...
-dnl 18 = checking whether snprintf fully supports the 'n' directive...
-dnl 19 = checking whether snprintf respects a size of 1...
-dnl 20 = checking whether vsnprintf respects a zero size as in C99...
-dnl
-dnl . = yes, # = no.
-dnl
-dnl                                  1  2  3  4  5  6  7  8  9 10 11 12 13 14 
15 16 17 18 19 20
-dnl   glibc 2.5                      .  .  .  .  .  .  .  .  .  .  .  .  .  .  
.  .  .  .  .  .
-dnl   glibc 2.3.6                    .  .  .  .  #  .  .  .  .  .  .  .  .  .  
.  .  .  .  .  .
-dnl   FreeBSD 5.4, 6.1               .  .  .  .  #  .  .  .  .  .  .  #  .  #  
.  .  .  .  .  .
-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 11 2011-11             .  .  #  #  #  .  .  #  .  .  .  #  .  .  
.  .  .  .  .  .
-dnl   Solaris 10                     .  .  #  #  #  .  .  #  .  .  .  #  #  .  
.  .  .  .  .  .
-dnl   Solaris 2.6 ... 9              #  .  #  #  #  #  .  #  .  .  .  #  #  .  
.  .  #  .  .  .
-dnl   Solaris 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   old mingw / msvcrt             #  #  #  #  #  #  .  .  #  #  .  #  #  ?  
.  #  #  #  .  .
-dnl   MSVC 9                         #  #  #  #  #  #  #  .  #  #  .  #  #  ?  
#  #  #  #  .  .
-dnl   mingw 2009-2011                .  #  .  #  .  .  .  .  #  #  .  .  .  ?  
.  .  .  .  .  .
-dnl   mingw-w64 2011                 #  #  #  #  #  #  .  .  #  #  .  #  #  ?  
.  #  #  #  .  .
diff --git a/m4/progtest.m4 b/m4/progtest.m4
deleted file mode 100644
index 7b3912329..000000000
--- a/m4/progtest.m4
+++ /dev/null
@@ -1,91 +0,0 @@
-# progtest.m4 serial 7 (gettext-0.18.2)
-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.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-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 Authors:
-dnl   Ulrich Drepper <address@hidden>, 1996.
-
-AC_PREREQ([2.50])
-
-# Search path for a program which passes the given test.
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN([AM_PATH_PROG_WITH_TEST],
-[
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
-  # contains only /bin. Note that ksh looks also at the FPATH variable,
-  # so we have to set that as well for the test.
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
-    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
-           || PATH_SEPARATOR=';'
-       }
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
-  ac_executable_p="test -x"
-else
-  ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL([ac_cv_path_$1],
-[case "[$]$1" in
-  [[\\/]]* | ?:[[\\/]]*)
-    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
-    ;;
-  *)
-    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in ifelse([$5], , $PATH, [$5]); do
-      IFS="$ac_save_IFS"
-      test -z "$ac_dir" && ac_dir=.
-      for ac_exec_ext in '' $ac_executable_extensions; do
-        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
-          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
-          if [$3]; then
-            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
-            break 2
-          fi
-        fi
-      done
-    done
-    IFS="$ac_save_IFS"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
-    ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
-  AC_MSG_RESULT([$][$1])
-else
-  AC_MSG_RESULT([no])
-fi
-AC_SUBST([$1])dnl
-])
diff --git a/m4/rawmemchr.m4 b/m4/rawmemchr.m4
deleted file mode 100644
index 8c500547c..000000000
--- a/m4/rawmemchr.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_FUNC_RAWMEMCHR],
-[
-  dnl Persuade glibc <string.h> to declare rawmemchr().
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  AC_CHECK_FUNCS([rawmemchr])
-  if test $ac_cv_func_rawmemchr = no; then
-    HAVE_RAWMEMCHR=0
-  fi
-])
-
-# Prerequisites of lib/strchrnul.c.
-AC_DEFUN([gl_PREREQ_RAWMEMCHR], [:])
diff --git a/m4/realloc.m4 b/m4/realloc.m4
deleted file mode 100644
index d477fb470..000000000
--- a/m4/realloc.m4
+++ /dev/null
@@ -1,76 +0,0 @@
-# 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
-# realloc if it is not.
-AC_DEFUN([gl_FUNC_REALLOC_GNU],
-[
-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-  dnl _AC_FUNC_REALLOC_IF is defined in Autoconf.
-  _AC_FUNC_REALLOC_IF(
-    [AC_DEFINE([HAVE_REALLOC_GNU], [1],
-               [Define to 1 if your system has a GNU libc compatible 'realloc'
-                function, and to 0 otherwise.])],
-    [AC_DEFINE([HAVE_REALLOC_GNU], [0])
-     REPLACE_REALLOC=1
-    ])
-])# gl_FUNC_REALLOC_GNU
-
-# gl_FUNC_REALLOC_POSIX
-# ---------------------
-# Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it
-# fails), and replace realloc if it is not.
-AC_DEFUN([gl_FUNC_REALLOC_POSIX],
-[
-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
-  if test $gl_cv_func_malloc_posix = yes; then
-    AC_DEFINE([HAVE_REALLOC_POSIX], [1],
-      [Define if the 'realloc' function is POSIX compliant.])
-  else
-    REPLACE_REALLOC=1
-  fi
-])
diff --git a/m4/regex.m4 b/m4/regex.m4
deleted file mode 100644
index 3334c1041..000000000
--- a/m4/regex.m4
+++ /dev/null
@@ -1,261 +0,0 @@
-# serial 64
-
-# 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,
-# with or without modifications, as long as this notice is preserved.
-
-dnl Initially derived from code in GNU grep.
-dnl Mostly written by Jim Meyering.
-
-AC_PREREQ([2.50])
-
-AC_DEFUN([gl_REGEX],
-[
-  AC_ARG_WITH([included-regex],
-    [AS_HELP_STRING([--without-included-regex],
-                    [don't compile regex; this is the default on systems
-                     with recent-enough versions of the GNU C Library
-                     (use with caution on other systems).])])
-
-  case $with_included_regex in #(
-  yes|no) ac_use_included_regex=$with_included_regex
-        ;;
-  '')
-    # If the system regex support is good enough that it passes the
-    # 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(
-          [[#include <regex.h>
-
-            #include <locale.h>
-            #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_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";
-                  re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE
-                                 | RE_ICASE);
-                  memset (&regex, 0, sizeof regex);
-                  s = re_compile_pattern (pat, sizeof pat - 1, &regex);
-                  if (s)
-                    result |= 1;
-                  else if (re_search (&regex, data, sizeof data - 1,
-                                      0, sizeof data - 1, &regs)
-                           != -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 (&regex, 0, sizeof regex);
-                  s = re_compile_pattern (pat, sizeof pat - 1, &regex);
-                  if (s)
-                    result |= 1;
-                  else if (re_search (&regex, data, sizeof data - 1,
-                                      0, sizeof data - 1, 0)
-                           != 21)
-                    result |= 1;
-                }
-
-                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 (&regex, 0, sizeof regex);
-            s = re_compile_pattern ("a[^x]b", 6, &regex);
-            if (s)
-              result |= 2;
-            /* This should fail, but succeeds for glibc-2.5.  */
-            else if (re_search (&regex, "a\nb", 3, 0, 3, &regs) != -1)
-              result |= 2;
-
-            /* This regular expression is from Spencer ere test number 75
-               in grep-2.3.  */
-            re_set_syntax (RE_SYNTAX_POSIX_EGREP);
-            memset (&regex, 0, sizeof regex);
-            for (i = 0; i <= UCHAR_MAX; i++)
-              folded_chars[i] = i;
-            regex.translate = folded_chars;
-            s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, &regex);
-            /* This should fail with _Invalid character class name_ error.  */
-            if (!s)
-              result |= 4;
-
-            /* Ensure that [b-a] is diagnosed as invalid, when
-               using RE_NO_EMPTY_RANGES. */
-            re_set_syntax (RE_SYNTAX_POSIX_EGREP | RE_NO_EMPTY_RANGES);
-            memset (&regex, 0, sizeof regex);
-            s = re_compile_pattern ("a[b-a]", 6, &regex);
-            if (s == 0)
-              result |= 8;
-
-            /* This should succeed, but does not for glibc-2.1.3.  */
-            memset (&regex, 0, sizeof regex);
-            s = re_compile_pattern ("{1", 2, &regex);
-            if (s)
-              result |= 8;
-
-            /* The following example is derived from a problem report
-               against gawk from Jorge Stolfi <address@hidden>.  */
-            memset (&regex, 0, sizeof regex);
-            s = re_compile_pattern ("[an\371]*n", 7, &regex);
-            if (s)
-              result |= 8;
-            /* This should match, but does not for glibc-2.2.1.  */
-            else if (re_match (&regex, "an", 2, 0, &regs) != 2)
-              result |= 8;
-
-            memset (&regex, 0, sizeof regex);
-            s = re_compile_pattern ("x", 1, &regex);
-            if (s)
-              result |= 8;
-            /* glibc-2.2.93 does not work with a negative RANGE argument.  */
-            else if (re_search (&regex, "wxy", 3, 2, -2, &regs) != 1)
-              result |= 8;
-
-            /* The version of regex.c in older versions of gnulib
-               ignored RE_ICASE.  Detect that problem too.  */
-            re_set_syntax (RE_SYNTAX_EMACS | RE_ICASE);
-            memset (&regex, 0, sizeof regex);
-            s = re_compile_pattern ("x", 1, &regex);
-            if (s)
-              result |= 16;
-            else if (re_search (&regex, "WXY", 3, 0, 3, &regs) < 0)
-              result |= 16;
-
-            /* Catch a bug reported by Vin Shelton in
-               
http://lists.gnu.org/archive/html/bug-coreutils/2007-06/msg00089.html
-               */
-            re_set_syntax (RE_SYNTAX_POSIX_BASIC
-                           & ~RE_CONTEXT_INVALID_DUP
-                           & ~RE_NO_EMPTY_RANGES);
-            memset (&regex, 0, sizeof regex);
-            s = re_compile_pattern ("[[:alnum:]_-]\\\\+$", 16, &regex);
-            if (s)
-              result |= 32;
-
-            /* REG_STARTEND was added to glibc on 2004-01-15.
-               Reject older versions.  */
-            if (! REG_STARTEND)
-              result |= 64;
-
-#if 0
-            /* It would be nice to reject hosts whose regoff_t values are too
-               narrow (including glibc on hosts with 64-bit ptrdiff_t and
-               32-bit int), but we should wait until glibc implements this
-               feature.  Otherwise, support for equivalence classes and
-               multibyte collation symbols would always be broken except
-               when compiling --without-included-regex.   */
-            if (sizeof (regoff_t) < sizeof (ptrdiff_t)
-                || sizeof (regoff_t) < sizeof (ssize_t))
-              result |= 64;
-#endif
-
-            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.
-       [gl_cv_func_re_compile_pattern_working=no])])
-    case $gl_cv_func_re_compile_pattern_working in #(
-    yes) ac_use_included_regex=no;; #(
-    no) ac_use_included_regex=yes;;
-    esac
-    ;;
-  *) AC_MSG_ERROR([Invalid value for --with-included-regex: 
$with_included_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],
-      [Define to rpl_re_syntax_options if the replacement should be used.])
-    AC_DEFINE([re_set_syntax], [rpl_re_set_syntax],
-      [Define to rpl_re_set_syntax if the replacement should be used.])
-    AC_DEFINE([re_compile_pattern], [rpl_re_compile_pattern],
-      [Define to rpl_re_compile_pattern if the replacement should be used.])
-    AC_DEFINE([re_compile_fastmap], [rpl_re_compile_fastmap],
-      [Define to rpl_re_compile_fastmap if the replacement should be used.])
-    AC_DEFINE([re_search], [rpl_re_search],
-      [Define to rpl_re_search if the replacement should be used.])
-    AC_DEFINE([re_search_2], [rpl_re_search_2],
-      [Define to rpl_re_search_2 if the replacement should be used.])
-    AC_DEFINE([re_match], [rpl_re_match],
-      [Define to rpl_re_match if the replacement should be used.])
-    AC_DEFINE([re_match_2], [rpl_re_match_2],
-      [Define to rpl_re_match_2 if the replacement should be used.])
-    AC_DEFINE([re_set_registers], [rpl_re_set_registers],
-      [Define to rpl_re_set_registers if the replacement should be used.])
-    AC_DEFINE([re_comp], [rpl_re_comp],
-      [Define to rpl_re_comp if the replacement should be used.])
-    AC_DEFINE([re_exec], [rpl_re_exec],
-      [Define to rpl_re_exec if the replacement should be used.])
-    AC_DEFINE([regcomp], [rpl_regcomp],
-      [Define to rpl_regcomp if the replacement should be used.])
-    AC_DEFINE([regexec], [rpl_regexec],
-      [Define to rpl_regexec if the replacement should be used.])
-    AC_DEFINE([regerror], [rpl_regerror],
-      [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.])
-  fi
-])
-
-# Prerequisites of lib/regex.c and lib/regex_internal.c.
-AC_DEFUN([gl_PREREQ_REGEX],
-[
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-  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>]])
-])
diff --git a/m4/size_max.m4 b/m4/size_max.m4
deleted file mode 100644
index 4b247abc0..000000000
--- a/m4/size_max.m4
+++ /dev/null
@@ -1,79 +0,0 @@
-# size_max.m4 serial 10
-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.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gl_SIZE_MAX],
-[
-  AC_CHECK_HEADERS([stdint.h])
-  dnl First test whether the system already has SIZE_MAX.
-  AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
-    gl_cv_size_max=
-    AC_EGREP_CPP([Found it], [
-#include <limits.h>
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#ifdef SIZE_MAX
-Found it
-#endif
-], [gl_cv_size_max=yes])
-    if test -z "$gl_cv_size_max"; then
-      dnl Define it ourselves. Here we assume that the type 'size_t' is not 
wider
-      dnl than the type 'unsigned long'. Try hard to find a definition that can
-      dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
-      AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
-        [#include <stddef.h>
-#include <limits.h>], [size_t_bits_minus_1=])
-      AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned 
int)],
-        [#include <stddef.h>], [fits_in_uint=])
-      if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
-        if test $fits_in_uint = 1; then
-          dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
-          dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned 
long'.
-          AC_COMPILE_IFELSE(
-            [AC_LANG_PROGRAM(
-               [[#include <stddef.h>
-                 extern size_t foo;
-                 extern unsigned long foo;
-               ]],
-               [[]])],
-            [fits_in_uint=0])
-        fi
-        dnl We cannot use 'expr' to simplify this expression, because 'expr'
-        dnl works only with 'long' integers in the host environment, while we
-        dnl might be cross-compiling from a 32-bit platform to a 64-bit 
platform.
-        if test $fits_in_uint = 1; then
-          gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
-        else
-          gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
-        fi
-      else
-        dnl Shouldn't happen, but who knows...
-        gl_cv_size_max='((size_t)~(size_t)0)'
-      fi
-    fi
-  ])
-  if test "$gl_cv_size_max" != yes; then
-    AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
-      [Define as the maximum value of type 'size_t', if the system doesn't 
define it.])
-  fi
-  dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
-  dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
-  dnl #define by AC_DEFINE_UNQUOTED.
-  AH_VERBATIM([SIZE_MAX],
-[/* Define as the maximum value of type 'size_t', if the system doesn't define
-   it. */
-#ifndef SIZE_MAX
-# undef SIZE_MAX
-#endif])
-])
-
-dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
-dnl Remove this when we can assume autoconf >= 2.61.
-m4_ifdef([AC_COMPUTE_INT], [], [
-  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
-])
diff --git a/m4/sleep.m4 b/m4/sleep.m4
deleted file mode 100644
index a27baa6d5..000000000
--- a/m4/sleep.m4
+++ /dev/null
@@ -1,62 +0,0 @@
-# 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.
-
-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_FUNCS_ONCE([sleep])
-  if test $ac_cv_have_decl_sleep != yes; then
-    HAVE_SLEEP=0
-  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],
-      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-#include <errno.h>
-#include <unistd.h>
-#include <signal.h>
-static void
-handle_alarm (int sig)
-{
-  if (sig != SIGALRM)
-    _exit (2);
-}
-]], [[
-    /* Failure to compile this test due to missing alarm is okay,
-       since all such platforms (mingw) also lack sleep.  */
-    unsigned int pentecost = 50 * 24 * 60 * 60; /* 50 days.  */
-    unsigned int remaining;
-    signal (SIGALRM, handle_alarm);
-    alarm (1);
-    remaining = sleep (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],
-      [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
deleted file mode 100644
index 633813434..000000000
--- a/m4/ssize_t.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# ssize_t.m4 serial 5 (gettext-0.18.2)
-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.
-
-dnl From Bruno Haible.
-dnl Test whether ssize_t is defined.
-
-AC_DEFUN([gt_TYPE_SSIZE_T],
-[
-  AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <sys/types.h>]],
-          [[int x = sizeof (ssize_t *) + sizeof (ssize_t);
-            return !x;]])],
-       [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
-  if test $gt_cv_ssize_t = no; then
-    AC_DEFINE([ssize_t], [int],
-              [Define as a signed type of the same size as size_t.])
-  fi
-])
diff --git a/m4/stdalign.m4 b/m4/stdalign.m4
deleted file mode 100644
index a866ff670..000000000
--- a/m4/stdalign.m4
+++ /dev/null
@@ -1,52 +0,0 @@
-# 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
deleted file mode 100644
index 80d5559ab..000000000
--- a/m4/stdbool.m4
+++ /dev/null
@@ -1,100 +0,0 @@
-# Check for stdbool.h that conforms to C99.
-
-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 5
-
-# Prepare for substituting <stdbool.h> if it is not supported.
-
-AC_DEFUN([AM_STDBOOL_H],
-[
-  AC_REQUIRE([AC_CHECK_HEADER_STDBOOL])
-
-  # Define two additional variables used in the Makefile substitution.
-
-  if test "$ac_cv_header_stdbool_h" = yes; then
-    STDBOOL_H=''
-  else
-    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
-  else
-    HAVE__BOOL=0
-  fi
-  AC_SUBST([HAVE__BOOL])
-])
-
-# 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.68.
-
-AC_DEFUN([AC_CHECK_HEADER_STDBOOL],
-  [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
-     [ac_cv_header_stdbool_h],
-     [AC_COMPILE_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[
-             #include <stdbool.h>
-             #ifndef bool
-              "error: bool is not defined"
-             #endif
-             #ifndef false
-              "error: false is not defined"
-             #endif
-             #if false
-              "error: false is not 0"
-             #endif
-             #ifndef true
-              "error: true is not defined"
-             #endif
-             #if true != 1
-              "error: true is not 1"
-             #endif
-             #ifndef __bool_true_false_are_defined
-              "error: __bool_true_false_are_defined is not defined"
-             #endif
-
-             struct s { _Bool s: 1; _Bool t; } s;
-
-             char a[true == 1 ? 1 : -1];
-             char b[false == 0 ? 1 : -1];
-             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-             char d[(bool) 0.5 == true ? 1 : -1];
-             /* See body of main program for 'e'.  */
-             char f[(_Bool) 0.0 == false ? 1 : -1];
-             char g[true];
-             char h[sizeof (_Bool)];
-             char i[sizeof s.t];
-             enum { j = false, k = true, l = false * true, m = true * 256 };
-             /* The following fails for
-                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
-             _Bool n[m];
-             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
-             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-             /* Catch a bug in an HP-UX C compiler.  See
-                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-                
http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-              */
-             _Bool q = true;
-             _Bool *pq = &q;
-           ]],
-           [[
-             bool e = &s;
-             *pq |= q;
-             *pq |= ! q;
-             /* Refer to every declared value, to avoid compiler 
optimizations.  */
-             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + 
!!l
-                     + !m + !n + !o + !p + !q + !pq);
-           ]])],
-        [ac_cv_header_stdbool_h=yes],
-        [ac_cv_header_stdbool_h=no])])
-   AC_CHECK_TYPES([_Bool])
-])
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
deleted file mode 100644
index 5da8ab1ec..000000000
--- a/m4/stddef_h.m4
+++ /dev/null
@@ -1,47 +0,0 @@
-dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
-# 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.
-
-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
-  fi
-  AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions],
-    [gl_cv_decl_null_works],
-    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
-      int test[2 * (sizeof NULL == sizeof (void *)) -1];
-]])],
-      [gl_cv_decl_null_works=yes],
-      [gl_cv_decl_null_works=no])])
-  if test $gl_cv_decl_null_works = no; then
-    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_NEXT_HEADERS([stddef.h])
-  fi
-])
-
-AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
-  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-])
-
-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])
-])
diff --git a/m4/stdint.m4 b/m4/stdint.m4
deleted file mode 100644
index 27cdcdb9a..000000000
--- a/m4/stdint.m4
+++ /dev/null
@@ -1,484 +0,0 @@
-# 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.
-
-dnl From Paul Eggert and Bruno Haible.
-dnl Test whether <stdint.h> is supported or must be substituted.
-
-AC_DEFUN_ONCE([gl_STDINT_H],
-[
-  AC_PREREQ([2.59])dnl
-
-  dnl Check for long long int and unsigned long long int.
-  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
-  if test $ac_cv_type_long_long_int = yes; then
-    HAVE_LONG_LONG_INT=1
-  else
-    HAVE_LONG_LONG_INT=0
-  fi
-  AC_SUBST([HAVE_LONG_LONG_INT])
-  AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
-  if test $ac_cv_type_unsigned_long_long_int = yes; then
-    HAVE_UNSIGNED_LONG_LONG_INT=1
-  else
-    HAVE_UNSIGNED_LONG_LONG_INT=0
-  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
-    HAVE_INTTYPES_H=1
-  else
-    HAVE_INTTYPES_H=0
-  fi
-  AC_SUBST([HAVE_INTTYPES_H])
-
-  dnl Check for <sys/types.h>.
-  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
-  if test $ac_cv_header_sys_types_h = yes; then
-    HAVE_SYS_TYPES_H=1
-  else
-    HAVE_SYS_TYPES_H=0
-  fi
-  AC_SUBST([HAVE_SYS_TYPES_H])
-
-  gl_CHECK_NEXT_HEADERS([stdint.h])
-  if test $ac_cv_header_stdint_h = yes; then
-    HAVE_STDINT_H=1
-  else
-    HAVE_STDINT_H=0
-  fi
-  AC_SUBST([HAVE_STDINT_H])
-
-  dnl Now see whether we need a substitute <stdint.h>.
-  if test $ac_cv_header_stdint_h = yes; then
-    AC_CACHE_CHECK([whether stdint.h conforms to C99],
-      [gl_cv_header_working_stdint_h],
-      [gl_cv_header_working_stdint_h=no
-       AC_COMPILE_IFELSE([
-         AC_LANG_PROGRAM([[
-#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>.  */
-#if !(defined WCHAR_MIN && defined WCHAR_MAX)
-#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
-#endif
-]
-gl_STDINT_INCLUDES
-[
-#ifdef INT8_MAX
-int8_t a1 = INT8_MAX;
-int8_t a1min = INT8_MIN;
-#endif
-#ifdef INT16_MAX
-int16_t a2 = INT16_MAX;
-int16_t a2min = INT16_MIN;
-#endif
-#ifdef INT32_MAX
-int32_t a3 = INT32_MAX;
-int32_t a3min = INT32_MIN;
-#endif
-#ifdef INT64_MAX
-int64_t a4 = INT64_MAX;
-int64_t a4min = INT64_MIN;
-#endif
-#ifdef UINT8_MAX
-uint8_t b1 = UINT8_MAX;
-#else
-typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
-#endif
-#ifdef UINT16_MAX
-uint16_t b2 = UINT16_MAX;
-#endif
-#ifdef UINT32_MAX
-uint32_t b3 = UINT32_MAX;
-#endif
-#ifdef UINT64_MAX
-uint64_t b4 = UINT64_MAX;
-#endif
-int_least8_t c1 = INT8_C (0x7f);
-int_least8_t c1max = INT_LEAST8_MAX;
-int_least8_t c1min = INT_LEAST8_MIN;
-int_least16_t c2 = INT16_C (0x7fff);
-int_least16_t c2max = INT_LEAST16_MAX;
-int_least16_t c2min = INT_LEAST16_MIN;
-int_least32_t c3 = INT32_C (0x7fffffff);
-int_least32_t c3max = INT_LEAST32_MAX;
-int_least32_t c3min = INT_LEAST32_MIN;
-int_least64_t c4 = INT64_C (0x7fffffffffffffff);
-int_least64_t c4max = INT_LEAST64_MAX;
-int_least64_t c4min = INT_LEAST64_MIN;
-uint_least8_t d1 = UINT8_C (0xff);
-uint_least8_t d1max = UINT_LEAST8_MAX;
-uint_least16_t d2 = UINT16_C (0xffff);
-uint_least16_t d2max = UINT_LEAST16_MAX;
-uint_least32_t d3 = UINT32_C (0xffffffff);
-uint_least32_t d3max = UINT_LEAST32_MAX;
-uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
-uint_least64_t d4max = UINT_LEAST64_MAX;
-int_fast8_t e1 = INT_FAST8_MAX;
-int_fast8_t e1min = INT_FAST8_MIN;
-int_fast16_t e2 = INT_FAST16_MAX;
-int_fast16_t e2min = INT_FAST16_MIN;
-int_fast32_t e3 = INT_FAST32_MAX;
-int_fast32_t e3min = INT_FAST32_MIN;
-int_fast64_t e4 = INT_FAST64_MAX;
-int_fast64_t e4min = INT_FAST64_MIN;
-uint_fast8_t f1 = UINT_FAST8_MAX;
-uint_fast16_t f2 = UINT_FAST16_MAX;
-uint_fast32_t f3 = UINT_FAST32_MAX;
-uint_fast64_t f4 = UINT_FAST64_MAX;
-#ifdef INTPTR_MAX
-intptr_t g = INTPTR_MAX;
-intptr_t gmin = INTPTR_MIN;
-#endif
-#ifdef UINTPTR_MAX
-uintptr_t h = UINTPTR_MAX;
-#endif
-intmax_t i = INTMAX_MAX;
-uintmax_t j = UINTMAX_MAX;
-
-#include <limits.h> /* for CHAR_BIT */
-#define TYPE_MINIMUM(t) \
-  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
-#define TYPE_MAXIMUM(t) \
-  ((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)
-      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
-      ? 1 : -1;
-  /* Detect bug in FreeBSD 6.0 / ia64.  */
-  int check_SIG_ATOMIC:
-      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
-      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
-      ? 1 : -1;
-  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
-  int check_WCHAR:
-      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
-      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
-      ? 1 : -1;
-  /* Detect bug in mingw.  */
-  int check_WINT:
-      WINT_MIN == TYPE_MINIMUM (wint_t)
-      && WINT_MAX == TYPE_MAXIMUM (wint_t)
-      ? 1 : -1;
-
-  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
-  int check_UINT8_C:
-        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
-  int check_UINT16_C:
-        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
-
-  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
-#ifdef UINT8_MAX
-  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
-#endif
-#ifdef UINT16_MAX
-  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
-#endif
-#ifdef UINT32_MAX
-  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
-#endif
-#ifdef UINT64_MAX
-  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
-#endif
-  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
-  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
-  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
-  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
-  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
-  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
-  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
-  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
-  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
-  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
-  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
-};
-         ]])],
-         [dnl Determine whether the various *_MIN, *_MAX macros are usable
-          dnl in preprocessor expression. We could do it by compiling a test
-          dnl program for each of these macros. It is faster to run a program
-          dnl that inspects the macro expansion.
-          dnl This detects a bug on HP-UX 11.23/ia64.
-          AC_RUN_IFELSE([
-            AC_LANG_PROGRAM([[
-#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
-#include <stdint.h>
-]
-gl_STDINT_INCLUDES
-[
-#include <stdio.h>
-#include <string.h>
-#define MVAL(macro) MVAL1(macro)
-#define MVAL1(expression) #expression
-static const char *macro_values[] =
-  {
-#ifdef INT8_MAX
-    MVAL (INT8_MAX),
-#endif
-#ifdef INT16_MAX
-    MVAL (INT16_MAX),
-#endif
-#ifdef INT32_MAX
-    MVAL (INT32_MAX),
-#endif
-#ifdef INT64_MAX
-    MVAL (INT64_MAX),
-#endif
-#ifdef UINT8_MAX
-    MVAL (UINT8_MAX),
-#endif
-#ifdef UINT16_MAX
-    MVAL (UINT16_MAX),
-#endif
-#ifdef UINT32_MAX
-    MVAL (UINT32_MAX),
-#endif
-#ifdef UINT64_MAX
-    MVAL (UINT64_MAX),
-#endif
-    NULL
-  };
-]], [[
-  const char **mv;
-  for (mv = macro_values; *mv != NULL; mv++)
-    {
-      const char *value = *mv;
-      /* Test whether it looks like a cast expression.  */
-      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
-          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
-          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
-          || strncmp (value, "((int)"/*)*/, 6) == 0
-          || strncmp (value, "((signed short)"/*)*/, 15) == 0
-          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
-        return mv - macro_values + 1;
-    }
-  return 0;
-]])],
-              [gl_cv_header_working_stdint_h=yes],
-              [],
-              [dnl When cross-compiling, assume it works.
-               gl_cv_header_working_stdint_h=yes
-              ])
-         ])
-      ])
-  fi
-  if test "$gl_cv_header_working_stdint_h" = yes; then
-    STDINT_H=
-  else
-    dnl Check for <sys/inttypes.h>, and for
-    dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
-    AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
-    if test $ac_cv_header_sys_inttypes_h = yes; then
-      HAVE_SYS_INTTYPES_H=1
-    else
-      HAVE_SYS_INTTYPES_H=0
-    fi
-    AC_SUBST([HAVE_SYS_INTTYPES_H])
-    if test $ac_cv_header_sys_bitypes_h = yes; then
-      HAVE_SYS_BITYPES_H=1
-    else
-      HAVE_SYS_BITYPES_H=0
-    fi
-    AC_SUBST([HAVE_SYS_BITYPES_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)
-dnl Determine the size of each of the given types in bits.
-AC_DEFUN([gl_STDINT_BITSIZEOF],
-[
-  dnl Use a shell loop, to avoid bloating configure, and
-  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
-  dnl   config.h.in,
-  dnl - extra AC_SUBST calls, so that the right substitutions are made.
-  m4_foreach_w([gltype], [$1],
-    [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz 
],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
-       [Define to the number of bits in type ']gltype['.])])
-  for gltype in $1 ; do
-    AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
-      [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
-         [$2
-#include <limits.h>], [result=unknown])
-       eval gl_cv_bitsizeof_${gltype}=\$result
-      ])
-    eval result=\$gl_cv_bitsizeof_${gltype}
-    if test $result = unknown; then
-      dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
-      dnl do a syntax check even on unused #if conditions and give an error
-      dnl on valid C code like this:
-      dnl   #if 0
-      dnl   # if  > 32
-      dnl   # endif
-      dnl   #endif
-      result=0
-    fi
-    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 
'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
-    AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
-    eval BITSIZEOF_${GLTYPE}=\$result
-  done
-  m4_foreach_w([gltype], [$1],
-    [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz 
],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
-])
-
-dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
-dnl Determine the signedness of each of the given types.
-dnl Define HAVE_SIGNED_TYPE if type is signed.
-AC_DEFUN([gl_CHECK_TYPES_SIGNED],
-[
-  dnl Use a shell loop, to avoid bloating configure, and
-  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
-  dnl   config.h.in,
-  dnl - extra AC_SUBST calls, so that the right substitutions are made.
-  m4_foreach_w([gltype], [$1],
-    [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz 
],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
-       [Define to 1 if ']gltype[' is a signed integer type.])])
-  for gltype in $1 ; do
-    AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
-      [AC_COMPILE_IFELSE(
-         [AC_LANG_PROGRAM([$2[
-            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
-         result=yes, result=no)
-       eval gl_cv_type_${gltype}_signed=\$result
-      ])
-    eval result=\$gl_cv_type_${gltype}_signed
-    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 
'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
-    if test "$result" = yes; then
-      AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
-      eval HAVE_SIGNED_${GLTYPE}=1
-    else
-      eval HAVE_SIGNED_${GLTYPE}=0
-    fi
-  done
-  m4_foreach_w([gltype], [$1],
-    [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz 
],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
-])
-
-dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
-dnl Determine the suffix to use for integer constants of the given types.
-dnl Define t_SUFFIX for each such type.
-AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
-[
-  dnl Use a shell loop, to avoid bloating configure, and
-  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
-  dnl   config.h.in,
-  dnl - extra AC_SUBST calls, so that the right substitutions are made.
-  m4_foreach_w([gltype], [$1],
-    [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz 
],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
-       [Define to l, ll, u, ul, ull, etc., as suitable for
-        constants of type ']gltype['.])])
-  for gltype in $1 ; do
-    AC_CACHE_CHECK([for $gltype integer literal suffix],
-      [gl_cv_type_${gltype}_suffix],
-      [eval gl_cv_type_${gltype}_suffix=no
-       eval result=\$gl_cv_type_${gltype}_signed
-       if test "$result" = yes; then
-         glsufu=
-       else
-         glsufu=u
-       fi
-       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
-         case $glsuf in
-           '')  gltype1='int';;
-           l)   gltype1='long int';;
-           ll)  gltype1='long long int';;
-           i64) gltype1='__int64';;
-           u)   gltype1='unsigned int';;
-           ul)  gltype1='unsigned long int';;
-           ull) gltype1='unsigned long long int';;
-           ui64)gltype1='unsigned __int64';;
-         esac
-         AC_COMPILE_IFELSE(
-           [AC_LANG_PROGRAM([$2[
-              extern $gltype foo;
-              extern $gltype1 foo;]])],
-           [eval gl_cv_type_${gltype}_suffix=\$glsuf])
-         eval result=\$gl_cv_type_${gltype}_suffix
-         test "$result" != no && break
-       done])
-    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 
'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
-    eval result=\$gl_cv_type_${gltype}_suffix
-    test "$result" = no && result=
-    eval ${GLTYPE}_SUFFIX=\$result
-    AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
-  done
-  m4_foreach_w([gltype], [$1],
-    [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz 
],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
-])
-
-dnl gl_STDINT_INCLUDES
-AC_DEFUN([gl_STDINT_INCLUDES],
-[[
-  /* 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 <signal.h>
-  #if HAVE_WCHAR_H
-  # include <stdio.h>
-  # include <time.h>
-  # include <wchar.h>
-  #endif
-]])
-
-dnl gl_STDINT_TYPE_PROPERTIES
-dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
-dnl of interest to stdint.in.h.
-AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
-[
-  AC_REQUIRE([gl_MULTIARCH])
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
-    gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
-      [gl_STDINT_INCLUDES])
-  fi
-  gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
-    [gl_STDINT_INCLUDES])
-  gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
-    [gl_STDINT_INCLUDES])
-  gl_cv_type_ptrdiff_t_signed=yes
-  gl_cv_type_size_t_signed=no
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
-    gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
-      [gl_STDINT_INCLUDES])
-  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.
-dnl Remove this when we can assume autoconf >= 2.61.
-m4_ifdef([AC_COMPUTE_INT], [], [
-  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
-])
-
-# Hey Emacs!
-# Local Variables:
-# indent-tabs-mode: nil
-# End:
diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
deleted file mode 100644
index 511ab4e9c..000000000
--- a/m4/stdint_h.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-# stdint_h.m4 serial 9
-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.
-
-dnl From Paul Eggert.
-
-# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([gl_AC_HEADER_STDINT_H],
-[
-  AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <sys/types.h>
-            #include <stdint.h>]],
-          [[uintmax_t i = (uintmax_t) -1; return !i;]])],
-       [gl_cv_header_stdint_h=yes],
-       [gl_cv_header_stdint_h=no])])
-  if test $gl_cv_header_stdint_h = yes; then
-    AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
-      [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
-       and declares uintmax_t. ])
-  fi
-])
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
deleted file mode 100644
index ebade067d..000000000
--- a/m4/stdio_h.m4
+++ /dev/null
@@ -1,194 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_STDIO_H],
-[
-  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  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
-  GNULIB_PRINTF=1
-  GNULIB_VFPRINTF=1
-  GNULIB_VPRINTF=1
-  GNULIB_FPUTC=1
-  GNULIB_PUTC=1
-  GNULIB_PUTCHAR=1
-  GNULIB_FPUTS=1
-  GNULIB_PUTS=1
-  GNULIB_FWRITE=1
-  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
-      REPLACE_STDIO_WRITE_FUNCS=1
-      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 pclose popen
-    renameat snprintf tmpfile vdprintf vsnprintf])
-])
-
-AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_STDIO_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_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])
-  GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
-  GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
-  GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
-  GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
-  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])
-  GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
-  GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
-  GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
-  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])
-  HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
-  HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
-  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])
-  REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
-  REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
-  REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
-  REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
-  REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
-  REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
-  REPLACE_GETDELIM=0;            AC_SUBST([REPLACE_GETDELIM])
-  REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
-  REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
-  REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
-  REPLACE_POPEN=0;               AC_SUBST([REPLACE_POPEN])
-  REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
-  REPLACE_REMOVE=0;              AC_SUBST([REPLACE_REMOVE])
-  REPLACE_RENAME=0;              AC_SUBST([REPLACE_RENAME])
-  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])
-  REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
-  REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
-  REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
-  REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
-  REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
-])
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
deleted file mode 100644
index 2027ab3c1..000000000
--- a/m4/stdlib_h.m4
+++ /dev/null
@@ -1,117 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_STDLIB_H],
-[
-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-  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
-  dnl guaranteed by C89.
-  gl_WARN_ON_USE_PREPARE([[#include <stdlib.h>
-#if HAVE_SYS_LOADAVG_H
-# include <sys/loadavg.h>
-#endif
-#if HAVE_RANDOM_H
-# include <random.h>
-#endif
-    ]], [_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],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_STDLIB_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_STDLIB_H_DEFAULTS],
-[
-  GNULIB__EXIT=0;         AC_SUBST([GNULIB__EXIT])
-  GNULIB_ATOLL=0;         AC_SUBST([GNULIB_ATOLL])
-  GNULIB_CALLOC_POSIX=0;  AC_SUBST([GNULIB_CALLOC_POSIX])
-  GNULIB_CANONICALIZE_FILE_NAME=0;  AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME])
-  GNULIB_GETLOADAVG=0;    AC_SUBST([GNULIB_GETLOADAVG])
-  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])
-  HAVE_CANONICALIZE_FILE_NAME=1;  AC_SUBST([HAVE_CANONICALIZE_FILE_NAME])
-  HAVE_DECL_GETLOADAVG=1;    AC_SUBST([HAVE_DECL_GETLOADAVG])
-  HAVE_GETSUBOPT=1;          AC_SUBST([HAVE_GETSUBOPT])
-  HAVE_GRANTPT=1;            AC_SUBST([HAVE_GRANTPT])
-  HAVE_MKDTEMP=1;            AC_SUBST([HAVE_MKDTEMP])
-  HAVE_MKOSTEMP=1;           AC_SUBST([HAVE_MKOSTEMP])
-  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_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
deleted file mode 100644
index 22bf57c95..000000000
--- a/m4/strcase.m4
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_STRCASE],
-[
-  gl_FUNC_STRCASECMP
-  gl_FUNC_STRNCASECMP
-])
-
-AC_DEFUN([gl_FUNC_STRCASECMP],
-[
-  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-  AC_CHECK_FUNCS([strcasecmp])
-  if test $ac_cv_func_strcasecmp = no; then
-    HAVE_STRCASECMP=0
-  fi
-])
-
-AC_DEFUN([gl_FUNC_STRNCASECMP],
-[
-  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-  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
-    HAVE_DECL_STRNCASECMP=0
-  fi
-])
-
-# Prerequisites of lib/strcasecmp.c.
-AC_DEFUN([gl_PREREQ_STRCASECMP], [
-  :
-])
-
-# Prerequisites of lib/strncasecmp.c.
-AC_DEFUN([gl_PREREQ_STRNCASECMP], [
-  :
-])
diff --git a/m4/strchrnul.m4 b/m4/strchrnul.m4
deleted file mode 100644
index b59eda9d7..000000000
--- a/m4/strchrnul.m4
+++ /dev/null
@@ -1,50 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_FUNC_STRCHRNUL],
-[
-  dnl Persuade glibc <string.h> to declare strchrnul().
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  AC_CHECK_FUNCS([strchrnul])
-  if test $ac_cv_func_strchrnul = no; then
-    HAVE_STRCHRNUL=0
-  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
-])
-
-# Prerequisites of lib/strchrnul.c.
-AC_DEFUN([gl_PREREQ_STRCHRNUL], [:])
diff --git a/m4/strerror.m4 b/m4/strerror.m4
deleted file mode 100644
index 3989844b2..000000000
--- a/m4/strerror.m4
+++ /dev/null
@@ -1,96 +0,0 @@
-# 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_HEADER_STRING_H_DEFAULTS])
-  AC_REQUIRE([gl_HEADER_ERRNO_H])
-  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>
-           ]],
-           [[if (!*strerror (-2)) return 1;]])],
-        [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
-    ])
-  else
-    dnl The system's strerror() cannot know about the new errno values we add
-    dnl to <errno.h>, or any fix for strerror(0). Replace it.
-    REPLACE_STRERROR=1
-  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
deleted file mode 100644
index cc5fbbb32..000000000
--- a/m4/string_h.m4
+++ /dev/null
@@ -1,120 +0,0 @@
-# Configure a GNU-like replacement for <string.h>.
-
-# 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 21
-
-# Written by Paul Eggert.
-
-AC_DEFUN([gl_HEADER_STRING_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_HEADER_STRING_H_BODY])
-])
-
-AC_DEFUN([gl_HEADER_STRING_H_BODY],
-[
-  AC_REQUIRE([AC_C_RESTRICT])
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  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>
-    ]],
-    [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],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_HEADER_STRING_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_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])
-  GNULIB_MEMRCHR=0;     AC_SUBST([GNULIB_MEMRCHR])
-  GNULIB_RAWMEMCHR=0;   AC_SUBST([GNULIB_RAWMEMCHR])
-  GNULIB_STPCPY=0;      AC_SUBST([GNULIB_STPCPY])
-  GNULIB_STPNCPY=0;     AC_SUBST([GNULIB_STPNCPY])
-  GNULIB_STRCHRNUL=0;   AC_SUBST([GNULIB_STRCHRNUL])
-  GNULIB_STRDUP=0;      AC_SUBST([GNULIB_STRDUP])
-  GNULIB_STRNCAT=0;     AC_SUBST([GNULIB_STRNCAT])
-  GNULIB_STRNDUP=0;     AC_SUBST([GNULIB_STRNDUP])
-  GNULIB_STRNLEN=0;     AC_SUBST([GNULIB_STRNLEN])
-  GNULIB_STRPBRK=0;     AC_SUBST([GNULIB_STRPBRK])
-  GNULIB_STRSEP=0;      AC_SUBST([GNULIB_STRSEP])
-  GNULIB_STRSTR=0;      AC_SUBST([GNULIB_STRSTR])
-  GNULIB_STRCASESTR=0;  AC_SUBST([GNULIB_STRCASESTR])
-  GNULIB_STRTOK_R=0;    AC_SUBST([GNULIB_STRTOK_R])
-  GNULIB_MBSLEN=0;      AC_SUBST([GNULIB_MBSLEN])
-  GNULIB_MBSNLEN=0;     AC_SUBST([GNULIB_MBSNLEN])
-  GNULIB_MBSCHR=0;      AC_SUBST([GNULIB_MBSCHR])
-  GNULIB_MBSRCHR=0;     AC_SUBST([GNULIB_MBSRCHR])
-  GNULIB_MBSSTR=0;      AC_SUBST([GNULIB_MBSSTR])
-  GNULIB_MBSCASECMP=0;  AC_SUBST([GNULIB_MBSCASECMP])
-  GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
-  GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
-  GNULIB_MBSCASESTR=0;  AC_SUBST([GNULIB_MBSCASESTR])
-  GNULIB_MBSCSPN=0;     AC_SUBST([GNULIB_MBSCSPN])
-  GNULIB_MBSPBRK=0;     AC_SUBST([GNULIB_MBSPBRK])
-  GNULIB_MBSSPN=0;      AC_SUBST([GNULIB_MBSSPN])
-  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])
-  HAVE_DECL_MEMRCHR=1;          AC_SUBST([HAVE_DECL_MEMRCHR])
-  HAVE_RAWMEMCHR=1;             AC_SUBST([HAVE_RAWMEMCHR])
-  HAVE_STPCPY=1;                AC_SUBST([HAVE_STPCPY])
-  HAVE_STPNCPY=1;               AC_SUBST([HAVE_STPNCPY])
-  HAVE_STRCHRNUL=1;             AC_SUBST([HAVE_STRCHRNUL])
-  HAVE_DECL_STRDUP=1;           AC_SUBST([HAVE_DECL_STRDUP])
-  HAVE_DECL_STRNDUP=1;          AC_SUBST([HAVE_DECL_STRNDUP])
-  HAVE_DECL_STRNLEN=1;          AC_SUBST([HAVE_DECL_STRNLEN])
-  HAVE_STRPBRK=1;               AC_SUBST([HAVE_STRPBRK])
-  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])
-  REPLACE_MEMMEM=0;             AC_SUBST([REPLACE_MEMMEM])
-  REPLACE_STPNCPY=0;            AC_SUBST([REPLACE_STPNCPY])
-  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])
-  REPLACE_STRSIGNAL=0;          AC_SUBST([REPLACE_STRSIGNAL])
-  REPLACE_STRTOK_R=0;           AC_SUBST([REPLACE_STRTOK_R])
-  UNDEFINE_STRTOK_R=0;          AC_SUBST([UNDEFINE_STRTOK_R])
-])
diff --git a/m4/strings_h.m4 b/m4/strings_h.m4
deleted file mode 100644
index 76ef2424e..000000000
--- a/m4/strings_h.m4
+++ /dev/null
@@ -1,52 +0,0 @@
-# Configure a replacement for <strings.h>.
-# serial 6
-
-# 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.
-
-AC_DEFUN([gl_HEADER_STRINGS_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_HEADER_STRINGS_H_BODY])
-])
-
-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([[
-    /* 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],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-])
-
-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
deleted file mode 100644
index a1f82743f..000000000
--- a/m4/strndup.m4
+++ /dev/null
@@ -1,55 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_FUNC_STRNDUP],
-[
-  dnl Persuade glibc <string.h> to declare strndup().
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  AC_CHECK_DECLS_ONCE([strndup])
-  AC_CHECK_FUNCS_ONCE([strndup])
-  if test $ac_cv_have_decl_strndup = no; then
-    HAVE_DECL_STRNDUP=0
-  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>]], [[
-#if !HAVE_DECL_STRNDUP
-  extern
-  #ifdef __cplusplus
-  "C"
-  #endif
-  char *strndup (const char *, size_t);
-#endif
-  char *s;
-  s = strndup ("some longer string", 15);
-  free (s);
-  s = strndup ("shorter string", 13);
-  return s[13] != '\0';]])],
-         [gl_cv_func_strndup_works=yes],
-         [gl_cv_func_strndup_works=no],
-         [
-changequote(,)dnl
-          case $host_os in
-            aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";;
-            *)               gl_cv_func_strndup_works="guessing yes";;
-          esac
-changequote([,])dnl
-         ])])
-    case $gl_cv_func_strndup_works in
-      *no) REPLACE_STRNDUP=1 ;;
-    esac
-  else
-    HAVE_STRNDUP=0
-  fi
-])
diff --git a/m4/strnlen.m4 b/m4/strnlen.m4
deleted file mode 100644
index eae82b772..000000000
--- a/m4/strnlen.m4
+++ /dev/null
@@ -1,30 +0,0 @@
-# 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,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_STRNLEN],
-[
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-
-  dnl Persuade glibc <string.h> to declare strnlen().
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-
-  AC_CHECK_DECLS_ONCE([strnlen])
-  if test $ac_cv_have_decl_strnlen = no; then
-    HAVE_DECL_STRNLEN=0
-  else
-    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
-])
-
-# Prerequisites of lib/strnlen.c.
-AC_DEFUN([gl_PREREQ_STRNLEN], [:])
diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4
deleted file mode 100644
index 94863776d..000000000
--- a/m4/sys_socket_h.m4
+++ /dev/null
@@ -1,176 +0,0 @@
-# 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
deleted file mode 100644
index d15c1b370..000000000
--- a/m4/sys_types_h.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-# 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/sysexits.m4 b/m4/sysexits.m4
deleted file mode 100644
index bd8abaa0d..000000000
--- a/m4/sysexits.m4
+++ /dev/null
@@ -1,44 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_SYSEXITS],
-[
-  AC_CHECK_HEADERS_ONCE([sysexits.h])
-  if test $ac_cv_header_sysexits_h = yes; then
-    HAVE_SYSEXITS_H=1
-    gl_CHECK_NEXT_HEADERS([sysexits.h])
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sysexits.h>]],
-        [[switch (0)
-          {
-          case EX_OK:
-          case EX_USAGE:
-          case EX_DATAERR:
-          case EX_NOINPUT:
-          case EX_NOUSER:
-          case EX_NOHOST:
-          case EX_UNAVAILABLE:
-          case EX_SOFTWARE:
-          case EX_OSERR:
-          case EX_OSFILE:
-          case EX_CANTCREAT:
-          case EX_IOERR:
-          case EX_TEMPFAIL:
-          case EX_PROTOCOL:
-          case EX_NOPERM:
-          case EX_CONFIG:
-            break;
-          }
-        ]])],
-      [SYSEXITS_H=],
-      [SYSEXITS_H=sysexits.h])
-  else
-    HAVE_SYSEXITS_H=0
-    SYSEXITS_H=sysexits.h
-  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
deleted file mode 100644
index 26bdeb58a..000000000
--- a/m4/threadlib.m4
+++ /dev/null
@@ -1,371 +0,0 @@
-# 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.
-
-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_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).
-dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
-dnl programs that really need multithread functionality. The difference
-dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
-dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
-dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
-dnl multithread-safe programs.
-
-AC_DEFUN([gl_THREADLIB_EARLY],
-[
-  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
-])
-
-dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
-
-AC_DEFUN([gl_THREADLIB_EARLY_BODY],
-[
-  dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
-  dnl influences the result of the autoconf tests that test for *_unlocked
-  dnl declarations, on AIX 5 at least. Therefore it must come early.
-  AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
-  AC_BEFORE([$0], [gl_ARGP])dnl
-
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
-  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
-  dnl AC_GNU_SOURCE.
-  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
-    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
-    [AC_REQUIRE([AC_GNU_SOURCE])])
-  dnl Check for multithreading.
-  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|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"
-     else
-changequote(,)dnl
-       case "$host_os" in
-         dnl Disable multithreading by default on OSF/1, because it interferes
-         dnl with fork()/exec(): When msgexec is linked with -lpthread, its
-         dnl child process gets an endless segmentation fault inside execvp().
-         dnl Disable multithreading by default on Cygwin 1.5.x, because it has
-         dnl bugs that lead to endless loops or crashes. See
-         dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
-         osf*) gl_use_threads=no ;;
-         cygwin*)
-               case `uname -r` in
-                 1.[0-5].*) gl_use_threads=no ;;
-                 *)         gl_use_threads=yes ;;
-               esac
-               ;;
-         *)    gl_use_threads=yes ;;
-       esac
-changequote([,])dnl
-     fi
-    ])
-  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
-    # For using <pthread.h>:
-    case "$host_os" in
-      osf*)
-        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
-        # groks <pthread.h>. cc also understands the flag -pthread, but
-        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
-        # 2. putting a flag into CPPFLAGS that has an effect on the linker
-        # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
-        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
-        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
-        ;;
-    esac
-    # Some systems optimize for single-threaded programs by default, and
-    # need special flags to disable these optimizations. For example, the
-    # definition of 'errno' in <errno.h>.
-    case "$host_os" in
-      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
-      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
-    esac
-  fi
-])
-
-dnl The guts of gl_THREADLIB. Needs to be expanded only once.
-
-AC_DEFUN([gl_THREADLIB_BODY],
-[
-  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
-  gl_threads_api=none
-  LIBTHREAD=
-  LTLIBTHREAD=
-  LIBMULTITHREAD=
-  LTLIBMULTITHREAD=
-  if test "$gl_use_threads" != no; then
-    dnl Check whether the compiler and linker support weak declarations.
-    AC_CACHE_CHECK([whether imported symbols can be declared weak],
-      [gl_cv_have_weak],
-      [gl_cv_have_weak=no
-       dnl First, test whether the compiler accepts it syntactically.
-       AC_LINK_IFELSE(
-         [AC_LANG_PROGRAM(
-            [[extern void xyzzy ();
-#pragma weak xyzzy]],
-            [[xyzzy();]])],
-         [gl_cv_have_weak=maybe])
-       if test $gl_cv_have_weak = maybe; then
-         dnl Second, test whether it actually works. On Cygwin 1.7.2, with
-         dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
-         AC_RUN_IFELSE(
-           [AC_LANG_SOURCE([[
-#include <stdio.h>
-#pragma weak fputs
-int main ()
-{
-  return (fputs == NULL);
-}]])],
-           [gl_cv_have_weak=yes],
-           [gl_cv_have_weak=no],
-           [dnl When cross-compiling, assume that only ELF platforms support
-            dnl weak symbols.
-            AC_EGREP_CPP([Extensible Linking Format],
-              [#ifdef __ELF__
-               Extensible Linking Format
-               #endif
-              ],
-              [gl_cv_have_weak="guessing yes"],
-              [gl_cv_have_weak="guessing no"])
-           ])
-       fi
-      ])
-    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
-      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
-      # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
-      AC_CHECK_HEADER([pthread.h],
-        [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
-      if test "$gl_have_pthread_h" = yes; then
-        # Other possible tests:
-        #   -lpthreads (FSU threads, PCthreads)
-        #   -lgthreads
-        gl_have_pthread=
-        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
-        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
-        # the second one only in libpthread, and lock.c needs it.
-        AC_LINK_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[#include <pthread.h>]],
-             [[pthread_mutex_lock((pthread_mutex_t*)0);
-               pthread_mutexattr_init((pthread_mutexattr_t*)0);]])],
-          [gl_have_pthread=yes])
-        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
-        # since it is defined as a macro on OSF/1.)
-        if test -n "$gl_have_pthread"; then
-          # The program links fine without libpthread. But it may actually
-          # need to link with libpthread in order to create multiple threads.
-          AC_CHECK_LIB([pthread], [pthread_kill],
-            [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
-             # On Solaris and HP-UX, most pthread functions exist also in libc.
-             # Therefore pthread_in_use() needs to actually try to create a
-             # thread: pthread_create from libc will fail, whereas
-             # pthread_create will actually create a thread.
-             case "$host_os" in
-               solaris* | hpux*)
-                 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
-                   [Define if the pthread_in_use() detection is hard.])
-             esac
-            ])
-        else
-          # Some library is needed. Try libpthread and libc_r.
-          AC_CHECK_LIB([pthread], [pthread_kill],
-            [gl_have_pthread=yes
-             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
-             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
-          if test -z "$gl_have_pthread"; then
-            # For FreeBSD 4.
-            AC_CHECK_LIB([c_r], [pthread_kill],
-              [gl_have_pthread=yes
-               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
-               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
-          fi
-        fi
-        if test -n "$gl_have_pthread"; then
-          gl_threads_api=posix
-          AC_DEFINE([USE_POSIX_THREADS], [1],
-            [Define if the POSIX multithreading library can be used.])
-          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
-            if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-              AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
-                [Define if references to the POSIX multithreading library 
should be made weak.])
-              LIBTHREAD=
-              LTLIBTHREAD=
-            fi
-          fi
-        fi
-      fi
-    fi
-    if test -z "$gl_have_pthread"; then
-      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
-        gl_have_solaristhread=
-        gl_save_LIBS="$LIBS"
-        LIBS="$LIBS -lthread"
-        AC_LINK_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[
-#include <thread.h>
-#include <synch.h>
-             ]],
-             [[thr_self();]])],
-          [gl_have_solaristhread=yes])
-        LIBS="$gl_save_LIBS"
-        if test -n "$gl_have_solaristhread"; then
-          gl_threads_api=solaris
-          LIBTHREAD=-lthread
-          LTLIBTHREAD=-lthread
-          LIBMULTITHREAD="$LIBTHREAD"
-          LTLIBMULTITHREAD="$LTLIBTHREAD"
-          AC_DEFINE([USE_SOLARIS_THREADS], [1],
-            [Define if the old Solaris multithreading library can be used.])
-          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-            AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
-              [Define if references to the old Solaris multithreading library 
should be made weak.])
-            LIBTHREAD=
-            LTLIBTHREAD=
-          fi
-        fi
-      fi
-    fi
-    if test "$gl_use_threads" = pth; then
-      gl_save_CPPFLAGS="$CPPFLAGS"
-      AC_LIB_LINKFLAGS([pth])
-      gl_have_pth=
-      gl_save_LIBS="$LIBS"
-      LIBS="$LIBS $LIBPTH"
-      AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])],
-        [gl_have_pth=yes])
-      LIBS="$gl_save_LIBS"
-      if test -n "$gl_have_pth"; then
-        gl_threads_api=pth
-        LIBTHREAD="$LIBPTH"
-        LTLIBTHREAD="$LTLIBPTH"
-        LIBMULTITHREAD="$LIBTHREAD"
-        LTLIBMULTITHREAD="$LTLIBTHREAD"
-        AC_DEFINE([USE_PTH_THREADS], [1],
-          [Define if the GNU Pth multithreading library can be used.])
-        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
-          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-            AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
-              [Define if references to the GNU Pth multithreading library 
should be made weak.])
-            LIBTHREAD=
-            LTLIBTHREAD=
-          fi
-        fi
-      else
-        CPPFLAGS="$gl_save_CPPFLAGS"
-      fi
-    fi
-    if test -z "$gl_have_pthread"; then
-      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])
-  AC_MSG_RESULT([$gl_threads_api])
-  AC_SUBST([LIBTHREAD])
-  AC_SUBST([LTLIBTHREAD])
-  AC_SUBST([LIBMULTITHREAD])
-  AC_SUBST([LTLIBMULTITHREAD])
-])
-
-AC_DEFUN([gl_THREADLIB],
-[
-  AC_REQUIRE([gl_THREADLIB_EARLY])
-  AC_REQUIRE([gl_THREADLIB_BODY])
-])
-
-
-dnl gl_DISABLE_THREADS
-dnl ------------------
-dnl Sets the gl_THREADLIB default so that threads are not used by default.
-dnl The user can still override it at installation time, by using the
-dnl configure option '--enable-threads'.
-
-AC_DEFUN([gl_DISABLE_THREADS], [
-  m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
-])
-
-
-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
-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
-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
-dnl NetBSD 1.6         --
-dnl
-dnl OpenBSD 3.4        posix      -lpthread       Y      OK
-dnl
-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
-dnl HP-UX 11           posix      -lpthread       N (cc) OK
-dnl                                               Y (gcc)
-dnl
-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
-dnl OSF/1 4.0,5.1      posix      -pthread (cc)   N      OK
-dnl                               -lpthread (gcc) Y
-dnl
-dnl Cygwin             posix      -lpthread       Y      OK
-dnl
-dnl Any of the above   pth        -lpth                  0.0
-dnl
-dnl Mingw              windows                    N      OK
-dnl
-dnl BeOS 5             --
-dnl
-dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
-dnl turned off:
-dnl   OK if all three tests terminate OK,
-dnl   0.5 if the first test terminates OK but the second one loops endlessly,
-dnl   0.0 if the first test already loops endlessly.
diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4
deleted file mode 100644
index c6ff80067..000000000
--- a/m4/uintmax_t.m4
+++ /dev/null
@@ -1,30 +0,0 @@
-# uintmax_t.m4 serial 12
-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.
-
-dnl From Paul Eggert.
-
-AC_PREREQ([2.13])
-
-# Define uintmax_t to 'unsigned long' or 'unsigned long long'
-# if it is not already defined in <stdint.h> or <inttypes.h>.
-
-AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
-[
-  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
-  if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; 
then
-    AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
-    test $ac_cv_type_unsigned_long_long_int = yes \
-      && ac_type='unsigned long long' \
-      || ac_type='unsigned long'
-    AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
-      [Define to unsigned long or unsigned long long
-       if <stdint.h> and <inttypes.h> don't define.])
-  else
-    AC_DEFINE([HAVE_UINTMAX_T], [1],
-      [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
-  fi
-])
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
deleted file mode 100644
index 32dcfa582..000000000
--- a/m4/unistd_h.m4
+++ /dev/null
@@ -1,186 +0,0 @@
-# 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.
-
-dnl Written by Simon Josefsson, Bruno Haible.
-
-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])
-
-  gl_CHECK_NEXT_HEADERS([unistd.h])
-  if test $ac_cv_header_unistd_h = yes; then
-    HAVE_UNISTD_H=1
-  else
-    HAVE_UNISTD_H=0
-  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([[
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-/* Some systems declare various items in the wrong headers.  */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
-# include <fcntl.h>
-# include <stdio.h>
-# include <stdlib.h>
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-#  include <io.h>
-# endif
-#endif
-    ]], [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],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_UNISTD_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_UNISTD_H_DEFAULTS],
-[
-  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])
-  HAVE_DUP3=1;            AC_SUBST([HAVE_DUP3])
-  HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
-  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_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_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])
-  REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
-  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])
-  REPLACE_SYMLINK=0;      AC_SUBST([REPLACE_SYMLINK])
-  REPLACE_TTYNAME_R=0;    AC_SUBST([REPLACE_TTYNAME_R])
-  REPLACE_UNLINK=0;       AC_SUBST([REPLACE_UNLINK])
-  REPLACE_UNLINKAT=0;     AC_SUBST([REPLACE_UNLINKAT])
-  REPLACE_USLEEP=0;       AC_SUBST([REPLACE_USLEEP])
-  REPLACE_WRITE=0;        AC_SUBST([REPLACE_WRITE])
-  UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
-  UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
-                           AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])
-])
diff --git a/m4/vasnprintf.m4 b/m4/vasnprintf.m4
deleted file mode 100644
index d730e435a..000000000
--- a/m4/vasnprintf.m4
+++ /dev/null
@@ -1,291 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_FUNC_VASNPRINTF],
-[
-  AC_CHECK_FUNCS_ONCE([vasnprintf])
-  if test $ac_cv_func_vasnprintf = no; then
-    gl_REPLACE_VASNPRINTF
-  fi
-])
-
-AC_DEFUN([gl_REPLACE_VASNPRINTF],
-[
-  AC_CHECK_FUNCS_ONCE([vasnprintf])
-  AC_LIBOBJ([vasnprintf])
-  AC_LIBOBJ([printf-args])
-  AC_LIBOBJ([printf-parse])
-  AC_LIBOBJ([asnprintf])
-  if test $ac_cv_func_vasnprintf = yes; then
-    AC_DEFINE([REPLACE_VASNPRINTF], [1],
-      [Define if vasnprintf exists but is overridden by gnulib.])
-  fi
-  gl_PREREQ_PRINTF_ARGS
-  gl_PREREQ_PRINTF_PARSE
-  gl_PREREQ_VASNPRINTF
-  gl_PREREQ_ASNPRINTF
-])
-
-# Prerequisites of lib/printf-args.h, lib/printf-args.c.
-AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
-[
-  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
-  AC_REQUIRE([gt_TYPE_WCHAR_T])
-  AC_REQUIRE([gt_TYPE_WINT_T])
-])
-
-# 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])
-  AC_REQUIRE([AC_TYPE_SIZE_T])
-  AC_CHECK_TYPE([ptrdiff_t], ,
-    [AC_DEFINE([ptrdiff_t], [long],
-       [Define as the type of the result of subtracting two pointers, if the 
system doesn't define it.])
-    ])
-  AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
-])
-
-# Prerequisites of lib/vasnprintf.c.
-AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
-[
-  AC_REQUIRE([AC_FUNC_ALLOCA])
-  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
-  AC_REQUIRE([gt_TYPE_WCHAR_T])
-  AC_REQUIRE([gt_TYPE_WINT_T])
-  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>]])
-  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])
-  case "$gl_cv_func_snprintf_retval_c99" in
-    *yes)
-      AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1],
-        [Define if the return value of the snprintf function is the number of
-         of bytes (excluding the terminating NUL) that would have been produced
-         if the buffer had been large enough.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
-# arguments.
-AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
-[
-  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
-  case "$gl_cv_func_printf_long_double" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'long double' arguments.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
-# arguments.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
-[
-  AC_REQUIRE([gl_PRINTF_INFINITE])
-  case "$gl_cv_func_printf_infinite" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         infinite 'double' arguments.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
-# arguments.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
-[
-  AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
-  dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
-  dnl NEED_PRINTF_LONG_DOUBLE is already set.
-  AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
-  case "$gl_cv_func_printf_long_double" in
-    *yes)
-      case "$gl_cv_func_printf_infinite_long_double" in
-        *yes)
-          ;;
-        *)
-          AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
-            [Define if the vasnprintf implementation needs special code for
-             infinite 'long double' arguments.])
-          ;;
-      esac
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
-  case "$gl_cv_func_printf_directive_a" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'a' and 'A' directives.])
-      AC_CHECK_FUNCS([nl_langinfo])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
-  case "$gl_cv_func_printf_directive_f" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'F' directive.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
-[
-  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
-  case "$gl_cv_func_printf_directive_ls" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
-        [Define if the vasnprintf implementation needs special code for
-         the 'ls' directive.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
-[
-  AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
-  case "$gl_cv_func_printf_flag_grouping" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
-        [Define if the vasnprintf implementation needs special code for the
-         ' flag.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
-[
-  AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
-  case "$gl_cv_func_printf_flag_leftadjust" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
-        [Define if the vasnprintf implementation needs special code for the
-         '-' flag.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
-[
-  AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
-  case "$gl_cv_func_printf_flag_zero" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
-        [Define if the vasnprintf implementation needs special code for the
-         0 flag.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
-[
-  AC_REQUIRE([gl_PRINTF_PRECISION])
-  case "$gl_cv_func_printf_precision" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
-        [Define if the vasnprintf implementation needs special code for
-         supporting large precisions without arbitrary bounds.])
-      AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'double' arguments.])
-      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'long double' arguments.])
-      ;;
-  esac
-])
-
-# Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
-# conditions.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
-[
-  AC_REQUIRE([gl_PRINTF_ENOMEM])
-  case "$gl_cv_func_printf_enomem" in
-    *yes)
-      ;;
-    *)
-      AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
-        [Define if the vasnprintf implementation needs special code for
-         surviving out-of-memory conditions.])
-      AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'double' arguments.])
-      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
-        [Define if the vasnprintf implementation needs special code for
-         'long double' arguments.])
-      ;;
-  esac
-])
-
-# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
-AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS],
-[
-  AC_REQUIRE([gl_PREREQ_VASNPRINTF])
-  gl_PREREQ_VASNPRINTF_LONG_DOUBLE
-  gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
-  gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_A
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_F
-  gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
-  gl_PREREQ_VASNPRINTF_FLAG_GROUPING
-  gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
-  gl_PREREQ_VASNPRINTF_FLAG_ZERO
-  gl_PREREQ_VASNPRINTF_PRECISION
-  gl_PREREQ_VASNPRINTF_ENOMEM
-])
-
-# Prerequisites of lib/asnprintf.c.
-AC_DEFUN([gl_PREREQ_ASNPRINTF],
-[
-])
diff --git a/m4/visibility.m4 b/m4/visibility.m4
deleted file mode 100644
index 6cbd7e5f2..000000000
--- a/m4/visibility.m4
+++ /dev/null
@@ -1,77 +0,0 @@
-# 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.
-
-dnl From Bruno Haible.
-
-dnl Tests whether the compiler supports the command-line option
-dnl -fvisibility=hidden and the function and variable attributes
-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 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
-dnl "really only recommended for legacy code".
-dnl Set the variable CFLAG_VISIBILITY.
-dnl Defines and sets the variable HAVE_VISIBILITY.
-
-AC_DEFUN([gl_VISIBILITY],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  CFLAG_VISIBILITY=
-  HAVE_VISIBILITY=0
-  if test -n "$GCC"; then
-    dnl First, check whether -Werror can be added to the command line, or
-    dnl whether it leads to an error because of some other option that the
-    dnl user has put into $CC $CFLAGS $CPPFLAGS.
-    AC_MSG_CHECKING([whether the -Werror option is usable])
-    AC_CACHE_VAL([gl_cv_cc_vis_werror], [
-      gl_save_CFLAGS="$CFLAGS"
-      CFLAGS="$CFLAGS -Werror"
-      AC_COMPILE_IFELSE(
-        [AC_LANG_PROGRAM([[]], [[]])],
-        [gl_cv_cc_vis_werror=yes],
-        [gl_cv_cc_vis_werror=no])
-      CFLAGS="$gl_save_CFLAGS"])
-    AC_MSG_RESULT([$gl_cv_cc_vis_werror])
-    dnl Now check whether visibility declarations are supported.
-    AC_MSG_CHECKING([for simple visibility declarations])
-    AC_CACHE_VAL([gl_cv_cc_visibility], [
-      gl_save_CFLAGS="$CFLAGS"
-      CFLAGS="$CFLAGS -fvisibility=hidden"
-      dnl We use the option -Werror and a function dummyfunc, because on some
-      dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
-      dnl "visibility attribute not supported in this configuration; ignored"
-      dnl at the first function definition in every compilation unit, and we
-      dnl don't want to use the option in this case.
-      if test $gl_cv_cc_vis_werror = yes; then
-        CFLAGS="$CFLAGS -Werror"
-      fi
-      AC_COMPILE_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
-             extern __attribute__((__visibility__("default"))) int exportedvar;
-             extern __attribute__((__visibility__("hidden"))) int hiddenfunc 
(void);
-             extern __attribute__((__visibility__("default"))) int 
exportedfunc (void);
-             void dummyfunc (void) {}
-           ]],
-           [[]])],
-        [gl_cv_cc_visibility=yes],
-        [gl_cv_cc_visibility=no])
-      CFLAGS="$gl_save_CFLAGS"])
-    AC_MSG_RESULT([$gl_cv_cc_visibility])
-    if test $gl_cv_cc_visibility = yes; then
-      CFLAG_VISIBILITY="-fvisibility=hidden"
-      HAVE_VISIBILITY=1
-    fi
-  fi
-  AC_SUBST([CFLAG_VISIBILITY])
-  AC_SUBST([HAVE_VISIBILITY])
-  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
-    [Define to 1 or 0, depending whether the compiler supports simple 
visibility declarations.])
-])
diff --git a/m4/vsnprintf.m4 b/m4/vsnprintf.m4
deleted file mode 100644
index 4900764ee..000000000
--- a/m4/vsnprintf.m4
+++ /dev/null
@@ -1,54 +0,0 @@
-# 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])
-  gl_cv_func_vsnprintf_usable=no
-  AC_CHECK_FUNCS([vsnprintf])
-  if test $ac_cv_func_vsnprintf = yes; then
-    gl_SNPRINTF_SIZE1
-    case "$gl_cv_func_snprintf_size1" in
-      *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
-  if test $gl_cv_func_vsnprintf_usable = no; then
-    gl_REPLACE_VSNPRINTF
-  fi
-  AC_CHECK_DECLS_ONCE([vsnprintf])
-  if test $ac_cv_have_decl_vsnprintf = no; then
-    HAVE_DECL_VSNPRINTF=0
-  fi
-])
-
-AC_DEFUN([gl_REPLACE_VSNPRINTF],
-[
-  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  AC_LIBOBJ([vsnprintf])
-  if test $ac_cv_func_vsnprintf = yes; then
-    REPLACE_VSNPRINTF=1
-  fi
-  gl_PREREQ_VSNPRINTF
-])
-
-# Prerequisites of lib/vsnprintf.c.
-AC_DEFUN([gl_PREREQ_VSNPRINTF], [:])
diff --git a/m4/warn-on-use.m4 b/m4/warn-on-use.m4
deleted file mode 100644
index e43beebd9..000000000
--- a/m4/warn-on-use.m4
+++ /dev/null
@@ -1,47 +0,0 @@
-# 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.
-
-# gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES)
-# ---------------------------------------
-# For each whitespace-separated element in the list of NAMES, define
-# HAVE_RAW_DECL_name if the function has a declaration among INCLUDES
-# even after being undefined as a macro.
-#
-# See warn-on-use.h for some hints on how to poison function names, as
-# well as ideas on poisoning global variables and macros.  NAMES may
-# include global variables, but remember that only functions work with
-# _GL_WARN_ON_USE.  Typically, INCLUDES only needs to list a single
-# header, but if the replacement header pulls in other headers because
-# some systems declare functions in the wrong header, then INCLUDES
-# should do likewise.
-#
-# 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],
-[
-  m4_foreach_w([gl_decl], [$2],
-    [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],
-      gl_Symbol,
-      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1],
address@hidden:@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])
-       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])
-    AS_VAR_POPDEF([gl_Symbol])dnl
-  done
-])
diff --git a/m4/wchar_h.m4 b/m4/wchar_h.m4
deleted file mode 100644
index bedb15a44..000000000
--- a/m4/wchar_h.m4
+++ /dev/null
@@ -1,225 +0,0 @@
-dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
-
-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 39
-
-AC_DEFUN([gl_WCHAR_H],
-[
-  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-  AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
-  dnl Prepare for creating substitute <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.
-  gl_CHECK_NEXT_HEADERS([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])
-
-  AC_REQUIRE([gl_FEATURES_H])
-
-  AC_REQUIRE([gt_TYPE_WINT_T])
-  if test $gt_cv_c_wint_t = yes; then
-    HAVE_WINT_T=1
-  else
-    HAVE_WINT_T=0
-  fi
-  AC_SUBST([HAVE_WINT_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([[
-/* 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 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.
-AC_DEFUN([gl_WCHAR_H_INLINE_OK],
-[
-  dnl Test whether <wchar.h> suffers due to the transition from '__inline' to
-  dnl 'gnu_inline'. See <http://sourceware.org/bugzilla/show_bug.cgi?id=4022>
-  dnl and <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary,
-  dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and
-  dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>.
-  AC_CACHE_CHECK([whether <wchar.h> uses 'inline' correctly],
-    [gl_cv_header_wchar_h_correct_inline],
-    [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(); }
-]])])
-     if AC_TRY_EVAL([ac_compile]); then
-       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; }
-]])])
-       if AC_TRY_EVAL([ac_compile]); then
-         mv conftest.$ac_objext conftest2.$ac_objext
-         if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext 
conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then
-           :
-         else
-           gl_cv_header_wchar_h_correct_inline=no
-         fi
-       fi
-     fi
-     rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
-    ])
-  if test $gl_cv_header_wchar_h_correct_inline = no; then
-    AC_MSG_ERROR([<wchar.h> cannot be used with this compiler ($CC $CFLAGS 
$CPPFLAGS).
-This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
-C99 mode. You have four options:
-  - Add the flag -fgnu89-inline to CC and reconfigure, or
-  - Fix your include files, using parts of
-    
<http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>,
 or
-  - Use a gcc version older than 4.3, or
-  - Don't use the flags -std=c99 or -std=gnu99.
-Configuration aborted.])
-  fi
-])
-
-AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_WCHAR_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_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_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])
-  HAVE_MBRTOWC=1;       AC_SUBST([HAVE_MBRTOWC])
-  HAVE_MBRLEN=1;        AC_SUBST([HAVE_MBRLEN])
-  HAVE_MBSRTOWCS=1;     AC_SUBST([HAVE_MBSRTOWCS])
-  HAVE_MBSNRTOWCS=1;    AC_SUBST([HAVE_MBSNRTOWCS])
-  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])
-  REPLACE_BTOWC=0;      AC_SUBST([REPLACE_BTOWC])
-  REPLACE_WCTOB=0;      AC_SUBST([REPLACE_WCTOB])
-  REPLACE_MBSINIT=0;    AC_SUBST([REPLACE_MBSINIT])
-  REPLACE_MBRTOWC=0;    AC_SUBST([REPLACE_MBRTOWC])
-  REPLACE_MBRLEN=0;     AC_SUBST([REPLACE_MBRLEN])
-  REPLACE_MBSRTOWCS=0;  AC_SUBST([REPLACE_MBSRTOWCS])
-  REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS])
-  REPLACE_WCRTOMB=0;    AC_SUBST([REPLACE_WCRTOMB])
-  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
deleted file mode 100644
index e1e1e699d..000000000
--- a/m4/wchar_t.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-# wchar_t.m4 serial 4 (gettext-0.18.2)
-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.
-
-dnl From Bruno Haible.
-dnl Test whether <stddef.h> has the 'wchar_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WCHAR_T],
-[
-  AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <stddef.h>
-            wchar_t foo = (wchar_t)'\0';]],
-          [[]])],
-       [gt_cv_c_wchar_t=yes],
-       [gt_cv_c_wchar_t=no])])
-  if test $gt_cv_c_wchar_t = yes; then
-    AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
-  fi
-])
diff --git a/m4/wcrtomb.m4 b/m4/wcrtomb.m4
deleted file mode 100644
index f56b5bae9..000000000
--- a/m4/wcrtomb.m4
+++ /dev/null
@@ -1,112 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_FUNC_WCRTOMB],
-[
-  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-
-  AC_REQUIRE([AC_TYPE_MBSTATE_T])
-  gl_MBSTATE_T_BROKEN
-
-  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
-    else
-      dnl On AIX 4.3, OSF/1 5.1 and Solaris 10, wcrtomb (NULL, 0, NULL) 
sometimes
-      dnl returns 0 instead of 1.
-      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])
-      AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-      AC_CACHE_CHECK([whether wcrtomb return value is correct],
-        [gl_cv_func_wcrtomb_retval],
-        [
-          dnl Initial guess, used when cross-compiling or when no suitable 
locale
-          dnl is present.
-changequote(,)dnl
-          case "$host_os" in
-                                     # Guess no on AIX 4, OSF/1 and Solaris.
-            aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
-                                     # Guess yes otherwise.
-            *)                       gl_cv_func_wcrtomb_retval="guessing yes" 
;;
-          esac
-changequote([,])dnl
-          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;
-  if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
-    {
-      if (wcrtomb (NULL, 0, NULL) != 1)
-        result |= 1;
-    }
-  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
-    {
-      if (wcrtomb (NULL, 0, NULL) != 1)
-        result |= 2;
-    }
-  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
-    {
-      if (wcrtomb (NULL, 0, NULL) != 1)
-        result |= 4;
-    }
-  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
-    {
-      if (wcrtomb (NULL, 0, NULL) != 1)
-        result |= 8;
-    }
-  return result;
-}]])],
-              [gl_cv_func_wcrtomb_retval=yes],
-              [gl_cv_func_wcrtomb_retval=no],
-              [:])
-          fi
-        ])
-      case "$gl_cv_func_wcrtomb_retval" in
-        *yes) ;;
-        *) REPLACE_WCRTOMB=1 ;;
-      esac
-    fi
-  fi
-])
-
-# Prerequisites of lib/wcrtomb.c.
-AC_DEFUN([gl_PREREQ_WCRTOMB], [
-  :
-])
diff --git a/m4/wctype_h.m4 b/m4/wctype_h.m4
deleted file mode 100644
index 82ada0eee..000000000
--- a/m4/wctype_h.m4
+++ /dev/null
@@ -1,209 +0,0 @@
-# wctype_h.m4 serial 18
-
-dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
-
-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.
-
-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])
-  if test $ac_cv_func_iswcntrl = yes; then
-    HAVE_ISWCNTRL=1
-  else
-    HAVE_ISWCNTRL=0
-  fi
-  AC_SUBST([HAVE_ISWCNTRL])
-
-  AC_REQUIRE([gt_TYPE_WINT_T])
-  if test $gt_cv_c_wint_t = yes; then
-    HAVE_WINT_T=1
-  else
-    HAVE_WINT_T=0
-  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([[
-               /* 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="guessing yes"],
-              [gl_cv_func_iswcntrl_works="guessing no"])
-            ])
-        ])
-    fi
-    HAVE_WCTYPE_H=1
-  else
-    HAVE_WCTYPE_H=0
-  fi
-  AC_SUBST([HAVE_WCTYPE_H])
-
-  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
-    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_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
deleted file mode 100644
index 740f81ee1..000000000
--- a/m4/wcwidth.m4
+++ /dev/null
@@ -1,101 +0,0 @@
-# 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
deleted file mode 100644
index d7cd3db93..000000000
--- a/m4/wint_t.m4
+++ /dev/null
@@ -1,32 +0,0 @@
-# wint_t.m4 serial 5 (gettext-0.18.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.
-
-dnl From Bruno Haible.
-dnl Test whether <wchar.h> has the 'wint_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WINT_T],
-[
-  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_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>
-            wint_t foo = (wchar_t)'\0';]],
-          [[]])],
-       [gt_cv_c_wint_t=yes],
-       [gt_cv_c_wint_t=no])])
-  if test $gt_cv_c_wint_t = yes; then
-    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
-  fi
-])
diff --git a/m4/xsize.m4 b/m4/xsize.m4
deleted file mode 100644
index 8ea9f2cd3..000000000
--- a/m4/xsize.m4
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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.
-
-AC_DEFUN([gl_XSIZE],
-[
-  dnl Prerequisites of lib/xsize.h.
-  AC_REQUIRE([gl_SIZE_MAX])
-  AC_CHECK_HEADERS([stdint.h])
-])
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
deleted file mode 100644
index e68e9da84..000000000
--- a/po/Makefile.in.in
+++ /dev/null
@@ -1,469 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper 
<address@hidden>
-#
-# This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-#
-# Origin: gettext-0.18
-GETTEXT_MACRO_VERSION = 0.18
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-
-SHELL = @SHELL@
address@hidden@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-datadir = @datadir@
-localedir = @localedir@
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-# We use $(mkdir_p).
-# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
-# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
-# @install_sh@ does not start with $(SHELL), so we add it.
-# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
-# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
-# versions, $(mkinstalldirs) and $(install_sh) are unused.
-mkinstalldirs = $(SHELL) @install_sh@ -d
-install_sh = $(SHELL) @install_sh@
-MKDIR_P = @MKDIR_P@
-mkdir_p = @mkdir_p@
-
-GMSGFMT_ = @GMSGFMT@
-GMSGFMT_no = @GMSGFMT@
-GMSGFMT_yes = @GMSGFMT_015@
-GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
-MSGFMT_ = @MSGFMT@
-MSGFMT_no = @MSGFMT@
-MSGFMT_yes = @MSGFMT_015@
-MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
-XGETTEXT_ = @XGETTEXT@
-XGETTEXT_no = @XGETTEXT@
-XGETTEXT_yes = @XGETTEXT_015@
-XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = @MSGMERGE@ --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) \
-$(DISTFILES.common.extra3) $(DISTFILES.common.extra4) 
$(DISTFILES.common.extra5)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in POTFILES-shell.in \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) 
$(DISTFILES.extra4) $(DISTFILES.extra5) grub.d.sed README
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-
-# Makevars gets inserted here. (Don't remove this line!)
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
-
-.po.mo:
-       @echo "$(MSGFMT) -c -o $@ $<"; \
-       $(MSGFMT) --endianness=little -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
-       @lang=`echo $* | sed -e 's,.*/,,'`; \
-       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) --endianness=little -c 
--statistics --verbose -o $${lang}.gmo $${lang}.po"; \
-       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) --endianness=little -c 
--statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo 
$${lang}.gmo
-
-.sin.sed:
-       sed -e '/^#/d' $< > t-$@
-       mv t-$@ $@
-
-
-all: check-macro-version address@hidden@
-
-all-yes: stamp-po
-all-no:
-
-# Ensure that the gettext macros and this Makefile.in.in are in sync.
-check-macro-version:
-       @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
-         || { echo "*** error: gettext infrastructure mismatch: using a 
Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf 
macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
-              exit 1; \
-            }
-
-# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
-# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
-# we don't want to bother translators with empty POT files). We assume that
-# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
-# In this case, stamp-po is a nop (i.e. a phony target).
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
-       test ! -f $(srcdir)/$(DOMAIN).pot || \
-         test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
-       @test ! -f $(srcdir)/$(DOMAIN).pot || { \
-         echo "touch stamp-po" && \
-         echo timestamp > stamp-poT && \
-         mv stamp-poT stamp-po; \
-       }
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in 
$(srcdir)/POTFILES-shell.in remove-potcdate.sed
-       if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 
'libtool:' >/dev/null; then \
-         package_gnu='GNU '; \
-       else \
-         package_gnu=''; \
-       fi; \
-       if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = 
'@'PACKAGE_BUGREPORT'@'; then \
-         msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
-       else \
-         msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
-       fi; \
-       case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-         '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 
0.16.[0-1]*) \
-           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) 
@XGETTEXT_EXTRA_OPTIONS@ \
-             --files-from=$(srcdir)/POTFILES.in \
-             --copyright-holder='$(COPYRIGHT_HOLDER)' \
-             --msgid-bugs-address="$$msgid_bugs_address" \
-           ;; \
-         *) \
-           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) 
@XGETTEXT_EXTRA_OPTIONS@ \
-             --files-from=$(srcdir)/POTFILES.in \
-             --copyright-holder='$(COPYRIGHT_HOLDER)' \
-             --package-name="address@hidden@" \
-             --package-version='@VERSION@' \
-             --msgid-bugs-address="$$msgid_bugs_address" \
-           ;; \
-       esac; \
-       case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-         '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 
0.16.[0-1]*) \
-           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-             --add-comments=TRANSLATORS: @XGETTEXT_EXTRA_OPTIONS@ \
-             --files-from=$(srcdir)/POTFILES-shell.in \
-             --copyright-holder='$(COPYRIGHT_HOLDER)' \
-             --msgid-bugs-address="$$msgid_bugs_address" \
-             --join-existing --language=Shell \
-             --keyword=gettext_quoted --keyword=gettext_printf \
-           ;; \
-         *) \
-           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-             --add-comments=TRANSLATORS: @XGETTEXT_EXTRA_OPTIONS@ \
-             --files-from=$(srcdir)/POTFILES-shell.in \
-             --copyright-holder='$(COPYRIGHT_HOLDER)' \
-             --package-name="address@hidden@" \
-             --package-version='@VERSION@' \
-             --msgid-bugs-address="$$msgid_bugs_address" \
-             --join-existing --language=Shell \
-             --keyword=gettext_quoted --keyword=gettext_printf \
-           ;; \
-       esac ; \
-       test ! -f $(DOMAIN).po || { \
-         sed -f grub.d.sed < $(DOMAIN).po > $(DOMAIN).1po && \
-         mv $(DOMAIN).1po $(DOMAIN).po; \
-         if test -f $(srcdir)/$(DOMAIN).pot; then \
-           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > 
$(DOMAIN).1po && \
-           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
-           if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
-             rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
-           else \
-             rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
-             mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-           fi; \
-         else \
-           mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-         fi; \
-       }
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
-       $(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
-       @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
-       if test -f "$(srcdir)/$${lang}.po"; then \
-         test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-         echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} 
$${lang}.po $(DOMAIN).pot"; \
-         cd $(srcdir) \
-           && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 
's,^[^0-9]*,,'` in \
-                  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
-                    $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po 
$(DOMAIN).pot;; \
-                  *) \
-                    $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} 
$${lang}.po $(DOMAIN).pot;; \
-                esac; \
-              }; \
-       else \
-         $(MAKE) $${lang}.po-create; \
-       fi
-
-
-install: install-exec install-data
-install-exec:
-install-data: address@hidden@
-       if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
-         for file in $(DISTFILES.common) Makevars.template; do \
-           $(INSTALL_DATA) $(srcdir)/$$file \
-                           $(DESTDIR)$(gettextsrcdir)/$$file; \
-         done; \
-         for file in Makevars; do \
-           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-         done; \
-       else \
-         : ; \
-       fi
-install-data-no: all
-install-data-yes: all
-       @catalogs='$(CATALOGS)'; \
-       for cat in $$catalogs; do \
-         cat=`basename $$cat`; \
-         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-         dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkdir_p) $(DESTDIR)$$dir; \
-         if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; 
fi; \
-         $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
-         echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
-         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-           if test -n "$$lc"; then \
-             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 
2>/dev/null) | grep ' -> ' >/dev/null; then \
-               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d 
$$lc | sed -e 's/^.* -> //'`; \
-               mv $(DESTDIR)$(localedir)/$$lang/$$lc 
$(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-                for file in *; do \
-                  if test -f $$file; then \
-                    ln -s ../$$link/$$file 
$(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-                  fi; \
-                done); \
-               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-             else \
-               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-                 :; \
-               else \
-                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-               fi; \
-             fi; \
-             rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-             ln -s ../LC_MESSAGES/$(DOMAIN).mo 
$(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-             ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo 
$(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-             cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo 
$(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-             echo "installing $$realcat link as 
$(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
-           fi; \
-         done; \
-       done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: address@hidden@
-       if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
-       else \
-         : ; \
-       fi
-installdirs-data-no:
-installdirs-data-yes:
-       @catalogs='$(CATALOGS)'; \
-       for cat in $$catalogs; do \
-         cat=`basename $$cat`; \
-         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-         dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkdir_p) $(DESTDIR)$$dir; \
-         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-           if test -n "$$lc"; then \
-             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 
2>/dev/null) | grep ' -> ' >/dev/null; then \
-               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d 
$$lc | sed -e 's/^.* -> //'`; \
-               mv $(DESTDIR)$(localedir)/$$lang/$$lc 
$(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-                for file in *; do \
-                  if test -f $$file; then \
-                    ln -s ../$$link/$$file 
$(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-                  fi; \
-                done); \
-               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-             else \
-               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-                 :; \
-               else \
-                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-               fi; \
-             fi; \
-           fi; \
-         done; \
-       done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: address@hidden@
-       if test "$(PACKAGE)" = "gettext-tools"; then \
-         for file in $(DISTFILES.common) Makevars.template; do \
-           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-         done; \
-       else \
-         : ; \
-       fi
-uninstall-data-no:
-uninstall-data-yes:
-       catalogs='$(CATALOGS)'; \
-       for cat in $$catalogs; do \
-         cat=`basename $$cat`; \
-         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-         for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
-           rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-         done; \
-       done
-
-check: all
-
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
-
-mostlyclean:
-       rm -f remove-potcdate.sed
-       rm -f stamp-poT
-       rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
-       rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
-       rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
-       @echo "This command is intended for maintainers to use;"
-       @echo "it deletes files that may require special tools to rebuild."
-       rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
-       $(MAKE) update-po
-       @$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: stamp-po $(DISTFILES)
-       dists="$(DISTFILES)"; \
-       if test "$(PACKAGE)" = "gettext-tools"; then \
-         dists="$$dists Makevars.template"; \
-       fi; \
-       if test -f $(srcdir)/$(DOMAIN).pot; then \
-         dists="$$dists $(DOMAIN).pot stamp-po"; \
-       fi; \
-       if test -f $(srcdir)/ChangeLog; then \
-         dists="$$dists ChangeLog"; \
-       fi; \
-       for i in 0 1 2 3 4 5 6 7 8 9; do \
-         if test -f $(srcdir)/ChangeLog.$$i; then \
-           dists="$$dists ChangeLog.$$i"; \
-         fi; \
-       done; \
-       if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
-       for file in $$dists; do \
-         if test -f $$file; then \
-           cp -p $$file $(distdir) || exit 1; \
-         else \
-           cp -p $(srcdir)/$$file $(distdir) || exit 1; \
-         fi; \
-       done
-
-update-po: Makefile
-       $(MAKE) $(DOMAIN).pot-update
-       test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
-       $(MAKE) update-gmo
-
-# General rule for creating PO files.
-
-.nop.po-create:
-       @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
-       echo "File $$lang.po does not exist. If you are a translator, you can 
create it through 'msginit'." 1>&2; \
-       exit 1
-
-# General rule for updating PO files.
-
-.nop.po-update:
-       @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
-       if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; 
fi; \
-       tmpdir=`pwd`; \
-       echo "$$lang:"; \
-       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-       echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po 
$(DOMAIN).pot -o $$lang.new.po"; \
-       cd $(srcdir); \
-       if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-              '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
-                $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po 
$$lang.po $(DOMAIN).pot;; \
-              *) \
-                $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o 
$$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
-            esac; \
-          }; then \
-         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
-           rm -f $$tmpdir/$$lang.new.po; \
-         else \
-           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
-             :; \
-           else \
-             echo "msgmerge for $$lang.po failed: cannot move 
$$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
-             exit 1; \
-           fi; \
-         fi; \
-       else \
-         echo "msgmerge for $$lang.po failed!" 1>&2; \
-         rm -f $$tmpdir/$$lang.new.po; \
-       fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
-       @:
-
-# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
-# because execution permission bits may not work on the current file system.
-# Use @SHELL@, which is the shell determined by autoconf for the use by its
-# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
-Makefile: Makefile.in.in Makevars $(top_builddir)/config.status 
@POMAKEFILEDEPS@
-       cd $(top_builddir) \
-         && @SHELL@ ./config.status $(subdir)/address@hidden po-directories
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
deleted file mode 100644
index 44857b1b8..000000000
--- a/po/Makevars
+++ /dev/null
@@ -1,41 +0,0 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
-# package.  (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.)  Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright.  The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = Free Software Foundation, Inc.
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-#   in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-#   understood.
-# - Strings which make invalid assumptions about notation of date, time or
-#   money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS = address@hidden
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used.  It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
diff --git a/po/Rules-quot b/po/Rules-quot
deleted file mode 100644
index af5248792..000000000
--- a/po/Rules-quot
+++ /dev/null
@@ -1,47 +0,0 @@
-# Special Makefile rules for English message catalogs with quotation marks.
-
-DISTFILES.common.extra1 = quot.sed boldquot.sed address@hidden address@hidden 
insert-header.sin Rules-quot
-
-.SUFFIXES: .insert-header .po-update-en
-
address@hidden:
-       $(MAKE) address@hidden
address@hidden:
-       $(MAKE) address@hidden
-
address@hidden: address@hidden
address@hidden: address@hidden
-
-.insert-header.po-update-en:
-       @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
-       if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; 
GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
-       tmpdir=`pwd`; \
-       echo "$$lang:"; \
-       ll=`echo $$lang | sed -e 's/@.*//'`; \
-       LC_ALL=C; export LC_ALL; \
-       cd $(srcdir); \
-       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 
2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | 
$(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > 
$$tmpdir/$$lang.new.po; then \
-         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
-           rm -f $$tmpdir/$$lang.new.po; \
-         else \
-           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
-             :; \
-           else \
-             echo "creation of $$lang.po failed: cannot move 
$$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
-             exit 1; \
-           fi; \
-         fi; \
-       else \
-         echo "creation of $$lang.po failed!" 1>&2; \
-         rm -f $$tmpdir/$$lang.new.po; \
-       fi
-
address@hidden: insert-header.sin
-       sed -e '/^#/d' -e 's/HEADER/address@hidden/g' 
$(srcdir)/insert-header.sin > address@hidden
-
address@hidden: insert-header.sin
-       sed -e '/^#/d' -e 's/HEADER/address@hidden/g' 
$(srcdir)/insert-header.sin > address@hidden
-
-mostlyclean: mostlyclean-quot
-mostlyclean-quot:
-       rm -f *.insert-header
-- 
2.20.1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]