[csw-devel] SF.net SVN: gar:[7201] csw/mgar/pkg/chmlib/trunk/files/ 0001-Add-autoconf-support-from-gnulib-for-getopt.h.patch

dmichelsen at users.sourceforge.net dmichelsen at users.sourceforge.net
Tue Nov 10 12:31:47 CET 2009


Revision: 7201
          http://gar.svn.sourceforge.net/gar/?rev=7201&view=rev
Author:   dmichelsen
Date:     2009-11-10 11:31:47 +0000 (Tue, 10 Nov 2009)

Log Message:
-----------
chmlib: Remove old patch

Removed Paths:
-------------
    csw/mgar/pkg/chmlib/trunk/files/0001-Add-autoconf-support-from-gnulib-for-getopt.h.patch

Deleted: csw/mgar/pkg/chmlib/trunk/files/0001-Add-autoconf-support-from-gnulib-for-getopt.h.patch
===================================================================
--- csw/mgar/pkg/chmlib/trunk/files/0001-Add-autoconf-support-from-gnulib-for-getopt.h.patch	2009-11-10 10:21:09 UTC (rev 7200)
+++ csw/mgar/pkg/chmlib/trunk/files/0001-Add-autoconf-support-from-gnulib-for-getopt.h.patch	2009-11-10 11:31:47 UTC (rev 7201)
@@ -1,3298 +0,0 @@
-From a1225b04a6c45c2d3b923b54708ede187e760c0d Mon Sep 17 00:00:00 2001
-From: Dagobert Michelsen <dam at opencsw.org>
-Date: Wed, 30 Sep 2009 15:46:12 +0200
-Subject: [PATCH] Add autoconf support from gnulib for getopt.h
-
----
- Makefile.am        |    5 +-
- autoinit.sh        |    6 +
- configure.in       |    3 +
- lib/Makefile.am    |  206 +++++++++
- lib/dummy.c        |   42 ++
- lib/getopt.c       | 1186 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- lib/getopt.in.h    |  242 +++++++++++
- lib/getopt1.c      |  170 ++++++++
- lib/getopt_int.h   |  130 ++++++
- lib/gettext.h      |  279 ++++++++++++
- lib/stddef.in.h    |   86 ++++
- lib/unistd.in.h    |  784 ++++++++++++++++++++++++++++++++++
- m4/gnulib-cache.m4 |   35 ++
- 13 files changed, 3172 insertions(+), 2 deletions(-)
- create mode 100755 autoinit.sh
- create mode 100644 lib/Makefile.am
- create mode 100644 lib/dummy.c
- create mode 100644 lib/getopt.c
- create mode 100644 lib/getopt.in.h
- create mode 100644 lib/getopt1.c
- create mode 100644 lib/getopt_int.h
- create mode 100644 lib/gettext.h
- create mode 100644 lib/stddef.in.h
- create mode 100644 lib/unistd.in.h
- create mode 100644 m4/gnulib-cache.m4
-
-diff --git a/Makefile.am b/Makefile.am
-index 3150987..dcaa91c 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,3 +1,4 @@
- AUTOMAKE_OPTIONS=1.6 dist-bzip2 dist-zip
--SUBDIRS=src
--EXTRA_DIST=ChmLib-ce.zip ChmLib-ds6.zip contrib
-+SUBDIRS=lib src
-+EXTRA_DIST=m4_gnulib-cache.m4 ChmLib-ce.zip ChmLib-ds6.zip contrib
-+ACLOCAL_AMFLAGS=-I m4
-diff --git a/autoinit.sh b/autoinit.sh
-new file mode 100755
-index 0000000..d5d5881
---- /dev/null
-+++ b/autoinit.sh
-@@ -0,0 +1,6 @@
-+#!/bin/sh
-+
-+aclocal
-+autoconf
-+autoheader
-+automake --add-missing --foreign
-diff --git a/configure.in b/configure.in
-index b39413a..885e4a8 100644
---- a/configure.in
-+++ b/configure.in
-@@ -2,12 +2,15 @@ dnl Process this file with autoconf to produce a configure script.
- AC_INIT([chmlib],[0.40])
- dnl,[Jed Wing <jedwin at ugcs.caltech.edu>])
- AC_CONFIG_SRCDIR(src/chm_lib.c)
-+AC_CONFIG_FILES(lib/Makefile)
- AM_INIT_AUTOMAKE
- AM_MAINTAINER_MODE
- 
- 
- dnl Checks for programs.
- AC_PROG_CC
-+gl_EARLY
-+gl_INIT
- AC_PROG_LD
- AM_PROG_LIBTOOL
- AC_PROG_INSTALL
-diff --git a/lib/Makefile.am b/lib/Makefile.am
-new file mode 100644
-index 0000000..fb6ec4e
---- /dev/null
-+++ b/lib/Makefile.am
-@@ -0,0 +1,206 @@
-+## DO NOT EDIT! GENERATED AUTOMATICALLY!
-+## Process this file with automake to produce Makefile.in.
-+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
-+#
-+# This file is free software, distributed under the terms of the GNU
-+# General Public License.  As a special exception to the GNU General
-+# Public License, this file may be distributed as part of a program
-+# that contains a configuration script generated by Autoconf, under
-+# the same distribution terms as the rest of that program.
-+#
-+# Generated by gnulib-tool.
-+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --libtool --macro-prefix=gl getopt
-+
-+AUTOMAKE_OPTIONS = 1.5 gnits
-+
-+SUBDIRS =
-+noinst_HEADERS =
-+noinst_LIBRARIES =
-+noinst_LTLIBRARIES =
-+EXTRA_DIST =
-+BUILT_SOURCES =
-+SUFFIXES =
-+MOSTLYCLEANFILES = core *.stackdump
-+MOSTLYCLEANDIRS =
-+CLEANFILES =
-+DISTCLEANFILES =
-+MAINTAINERCLEANFILES =
-+
-+AM_CPPFLAGS =
-+AM_CFLAGS =
-+
-+noinst_LTLIBRARIES += libgnu.la
-+
-+libgnu_la_SOURCES =
-+libgnu_la_LIBADD = $(gl_LTLIBOBJS)
-+libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS)
-+EXTRA_libgnu_la_SOURCES =
-+libgnu_la_LDFLAGS = $(AM_LDFLAGS)
-+
-+## 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
-+	$(AM_V_GEN)rm -f $@-t $@ && \
-+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+	  sed -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|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
-+	      -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
-+	      < $(srcdir)/getopt.in.h; \
-+	} > $@-t && \
-+	mv -f $@-t $@
-+MOSTLYCLEANFILES += getopt.h getopt.h-t
-+
-+## end   gnulib module getopt-posix
-+
-+## begin gnulib module gettext-h
-+
-+libgnu_la_SOURCES += gettext.h
-+
-+## end   gnulib module gettext-h
-+
-+## begin gnulib module link-warning
-+
-+LINK_WARNING_H=$(top_srcdir)/./link-warning.h
-+
-+## end   gnulib module link-warning
-+
-+## 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.
-+stddef.h: stddef.in.h
-+	$(AM_V_GEN)rm -f $@-t $@ && \
-+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
-+	  sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-+	      -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-+	      -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
-+	      -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
-+	      -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
-+	      < $(srcdir)/stddef.in.h; \
-+	} > $@-t && \
-+	mv $@-t $@
-+MOSTLYCLEANFILES += stddef.h stddef.h-t
-+
-+## end   gnulib module stddef
-+
-+## begin gnulib module unistd
-+
-+BUILT_SOURCES += unistd.h
-+
-+# 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
-+	$(AM_V_GEN)rm -f $@-t $@ && \
-+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-+	  sed -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|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
-+	      -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
-+	      -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
-+	      -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
-+	      -e 's|@''GNULIB_DUP3''@|$(GNULIB_DUP3)|g' \
-+	      -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
-+	      -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
-+	      -e 's|@''GNULIB_FACCESSAT''@|$(GNULIB_FACCESSAT)|g' \
-+	      -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
-+	      -e 's|@''GNULIB_FCHOWNAT''@|$(GNULIB_FCHOWNAT)|g' \
-+	      -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
-+	      -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
-+	      -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
-+	      -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
-+	      -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
-+	      -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
-+	      -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
-+	      -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
-+	      -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
-+	      -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
-+	      -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
-+	      -e 's|@''GNULIB_LINKAT''@|$(GNULIB_LINKAT)|g' \
-+	      -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
-+	      -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
-+	      -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
-+	      -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
-+	      -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
-+	      -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
-+	      -e 's|@''GNULIB_SYMLINK''@|$(GNULIB_SYMLINK)|g' \
-+	      -e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
-+	      -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
-+	      -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
-+	      -e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
-+	      -e 's|@''GNULIB_UNLINKAT''@|$(GNULIB_UNLINKAT)|g' \
-+	      -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|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_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
-+	      -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
-+	      -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
-+	      -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \
-+	      -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
-+	      -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
-+	      -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
-+	      -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
-+	      -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
-+	      -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
-+	      -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
-+	      -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
-+	      -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|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_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
-+	      -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
-+	      -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
-+	      -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
-+	      -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
-+	      -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
-+	      -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
-+	      -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
-+	      -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
-+	      -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
-+	      -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
-+	      -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
-+	      -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
-+	      -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
-+	      -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
-+	      -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
-+	      -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
-+	      -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
-+	      -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
-+	      -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|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 '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
-+	      < $(srcdir)/unistd.in.h; \
-+	} > $@-t && \
-+	mv $@-t $@
-+MOSTLYCLEANFILES += unistd.h unistd.h-t
-+
-+## end   gnulib module unistd
-+
-+## begin gnulib module dummy
-+
-+libgnu_la_SOURCES += dummy.c
-+
-+## end   gnulib module dummy
-+
-+
-+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/lib/dummy.c b/lib/dummy.c
-new file mode 100644
-index 0000000..ccb5c26
---- /dev/null
-+++ b/lib/dummy.c
-@@ -0,0 +1,42 @@
-+/* A dummy file, to prevent empty libraries from breaking builds.
-+   Copyright (C) 2004, 2007 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/>.  */
-+
-+/* Some systems, reportedly OpenBSD and Mac OS X, refuse to create
-+   libraries without any object files.  You might get an error like:
-+
-+   > ar cru .libs/libgl.a
-+   > ar: no archive members specified
-+
-+   Compiling this file, and adding its object file to the library, will
-+   prevent the library from being empty.  */
-+
-+/* Some systems, such as Solaris with cc 5.0, refuse to work with libraries
-+   that don't export any symbol.  You might get an error like:
-+
-+   > cc ... libgnu.a
-+   > ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a
-+
-+   Compiling this file, and adding its object file to the library, will
-+   prevent the library from exporting no symbols.  */
-+
-+#ifdef __sun
-+/* This declaration ensures that the library will export at least 1 symbol.  */
-+int gl_dummy_symbol;
-+#else
-+/* This declaration is solely to ensure that after preprocessing
-+   this file is never empty.  */
-+typedef int dummy;
-+#endif
-diff --git a/lib/getopt.c b/lib/getopt.c
-new file mode 100644
-index 0000000..f1e6d1f
---- /dev/null
-+++ b/lib/getopt.c
-@@ -0,0 +1,1186 @@
-+/* Getopt for GNU.
-+   NOTE: getopt is now part of the C library, so if you don't know what
-+   "Keep this file name-space clean" means, talk to drepper at gnu.org
-+   before changing it!
-+   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004,2006,2008
-+	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
-+
-+#ifndef attribute_hidden
-+# define attribute_hidden
-+#endif
-+
-+/* Unlike standard Unix `getopt', functions like `getopt_long'
-+   let the user 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 application's 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, char **argv, const char *optstring,
-+		    int posixly_correct, struct _getopt_data *d)
-+{
-+  /* 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.
-+
-+   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.
-+
-+   If POSIXLY_CORRECT is nonzero, behave as if the POSIXLY_CORRECT
-+   environment variable were set.  */
-+
-+int
-+_getopt_internal_r (int argc, char **argv, const char *optstring,
-+		    const struct option *longopts, int *longind,
-+		    int long_only, int posixly_correct, struct _getopt_data *d)
-+{
-+  int print_errors = d->opterr;
-+  if (optstring[0] == ':')
-+    print_errors = 0;
-+
-+  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,
-+				      posixly_correct, d);
-+      d->__initialized = 1;
-+    }
-+
-+  /* 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;
-+      const struct option *p;
-+      const struct option *pfound = NULL;
-+      int exact = 0;
-+      int ambig = 0;
-+      int indfound = -1;
-+      int option_index;
-+
-+      for (nameend = d->__nextchar; *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)
-+		== (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.  */
-+	      ambig = 1;
-+	  }
-+
-+      if (ambig && !exact)
-+	{
-+	  if (print_errors)
-+	    {
-+#if defined _LIBC && defined USE_IN_LIBIO
-+	      char *buf;
-+
-+	      if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
-+			      argv[0], argv[d->optind]) >= 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' is ambiguous\n"),
-+		       argv[0], argv[d->optind]);
-+#endif
-+	    }
-+	  d->__nextchar += strlen (d->__nextchar);
-+	  d->optind++;
-+	  d->optopt = 0;
-+	  return '?';
-+	}
-+
-+      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], argv[d->optind - 1]) >= 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], argv[d->optind - 1]);
-+#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++;
-+    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 == ':')
-+      {
-+	if (print_errors)
-+	  {
-+#if defined _LIBC && defined USE_IN_LIBIO
-+	      char *buf;
-+	      int n;
-+#endif
-+
-+	    if (d->__posixly_correct)
-+	      {
-+		/* 1003.2 specifies the format of this message.  */
-+#if defined _LIBC && defined USE_IN_LIBIO
-+		n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
-+				argv[0], c);
-+#else
-+		fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
-+#endif
-+	      }
-+	    else
-+	      {
-+#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;
-+
-+	/* 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)
-+	      {
-+		/* 1003.2 specifies the format of this message.  */
-+#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
-+		/* 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], argv[d->optind]) >= 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], argv[d->optind]);
-+#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 `%s' requires an argument\n"),
-+					argv[0], argv[d->optind - 1]) >= 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], argv[d->optind - 1]);
-+#endif
-+		      }
-+		    d->__nextchar += strlen (d->__nextchar);
-+		    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;
-+	  }
-+	  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)
-+		  {
-+		    /* 1003.2 specifies the format of this message.  */
-+#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, posixly_correct, &getopt_data);
-+
-+  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, NULL, NULL, 0,
-+			   POSIXLY_CORRECT);
-+}
-+
-+
-+#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/lib/getopt.in.h b/lib/getopt.in.h
-new file mode 100644
-index 0000000..15c213f
---- /dev/null
-+++ b/lib/getopt.in.h
-@@ -0,0 +1,242 @@
-+/* Declarations for getopt.
-+   Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2005,2006,2007,2009
-+   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 _GL_GETOPT_H
-+
-+#if __GNUC__ >= 3
-+ at PRAGMA_SYSTEM_HEADER@
-+#endif
-+
-+/* The include_next requires a split double-inclusion guard.  */
-+#if @HAVE_GETOPT_H@
-+# @INCLUDE_NEXT@ @NEXT_GETOPT_H@
-+#endif
-+
-+#ifndef _GL_GETOPT_H
-+
-+#ifndef __need_getopt
-+# define _GL_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 !@HAVE_GETOPT_H@
-+#  include <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)
-+#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
-+
-+#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.  */
-+
-+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;
-+};
-+
-+/* 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;
-+
-+#ifndef __need_getopt
-+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
-+			const char *__shortopts,
-+		        const struct option *__longopts, int *__longind)
-+       __THROW;
-+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
-+			     const char *__shortopts,
-+		             const struct option *__longopts, int *__longind)
-+       __THROW;
-+
-+#endif
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+/* Make sure we later can get all the definitions and declarations.  */
-+#undef __need_getopt
-+
-+#endif /* getopt.h */
-+#endif /* getopt.h */
-diff --git a/lib/getopt1.c b/lib/getopt1.c
-new file mode 100644
-index 0000000..ba115c4
---- /dev/null
-+++ b/lib/getopt1.c
-@@ -0,0 +1,170 @@
-+/* getopt_long and getopt_long_only entry points for GNU getopt.
-+   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004,2006,2009
-+     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, 0, d);
-+}
-+
-+/* 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, 0, d);
-+}
-+
-+
-+#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/lib/getopt_int.h b/lib/getopt_int.h
-new file mode 100644
-index 0000000..3c6628b
---- /dev/null
-+++ b/lib/getopt_int.h
-@@ -0,0 +1,130 @@
-+/* Internal declarations for getopt.
-+   Copyright (C) 1989-1994,1996-1999,2001,2003,2004
-+   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
-+
-+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.  */
-+
-+/* 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;
-+
-+  /* 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
-+    {
-+      REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-+    } __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, int __posixly_correct,
-+			       struct _getopt_data *__data);
-+
-+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/lib/gettext.h b/lib/gettext.h
-new file mode 100644
-index 0000000..a5b85c7
---- /dev/null
-+++ b/lib/gettext.h
-@@ -0,0 +1,279 @@
-+/* Convenience header for conditional use of GNU <libintl.h>.
-+   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 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 2, or (at your option)
-+   any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License along
-+   with this program; if not, write to the Free Software Foundation,
-+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
-+
-+#ifndef _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) || _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
-+
-+/* 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>
-+
-+#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
-+  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
-+   /* || __STDC_VERSION__ >= 199901L */ )
-+
-+#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/lib/stddef.in.h b/lib/stddef.in.h
-new file mode 100644
-index 0000000..8744207
---- /dev/null
-+++ b/lib/stddef.in.h
-@@ -0,0 +1,86 @@
-+/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
-+
-+   Copyright (C) 2009 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 2, or (at your option)
-+   any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program; if not, write to the Free Software Foundation,
-+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
-+
-+/* Written by Eric Blake.  */
-+
-+/*
-+ * POSIX 2008 <stddef.h> for platforms that have issues.
-+ * <http://www.opengroup.org/susv3xbd/stddef.h.html>
-+ */
-+
-+#if __GNUC__ >= 3
-+ at PRAGMA_SYSTEM_HEADER@
-+#endif
-+
-+#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 _GL_STDDEF_H && defined _GL_STDDEF_WINT_T)
-+#  ifdef __need_wint_t
-+#   undef _GL_STDDEF_H
-+#   define _GL_STDDEF_WINT_T
-+#  endif
-+#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
-+# endif
-+
-+#else
-+/* Normal invocation convention.  */
-+
-+# ifndef _GL_STDDEF_H
-+
-+/* The include_next requires a split double-inclusion guard.  */
-+
-+#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
-+
-+#  ifndef _GL_STDDEF_H
-+#   define _GL_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 !@HAVE_WCHAR_T@
-+# define wchar_t int
-+#endif
-+
-+#  endif /* _GL_STDDEF_H */
-+# endif /* _GL_STDDEF_H */
-+#endif /* __need_XXX */
-diff --git a/lib/unistd.in.h b/lib/unistd.in.h
-new file mode 100644
-index 0000000..8a96e79
---- /dev/null
-+++ b/lib/unistd.in.h
-@@ -0,0 +1,784 @@
-+/* Substitute for and wrapper around <unistd.h>.
-+   Copyright (C) 2003-2009 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 2, or (at your option)
-+   any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program; if not, write to the Free Software Foundation,
-+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
-+
-+#ifndef _GL_UNISTD_H
-+
-+#if __GNUC__ >= 3
-+ at PRAGMA_SYSTEM_HEADER@
-+#endif
-+
-+/* The include_next requires a split double-inclusion guard.  */
-+#if @HAVE_UNISTD_H@
-+# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
-+#endif
-+
-+#ifndef _GL_UNISTD_H
-+#define _GL_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>.  */
-+#if !(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET)
-+# include <stdio.h>
-+#endif
-+
-+/* mingw fails to declare _exit in <unistd.h>.  */
-+/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>.  */
-+#include <stdlib.h>
-+
-+#if ((@GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@)   \
-+     || (@GNULIB_READLINK@ && (!@HAVE_READLINK@ || @REPLACE_READLINK@)) \
-+     || (@GNULIB_READLINKAT@ && !@HAVE_READLINKAT@))
-+/* Get ssize_t.  */
-+# include <sys/types.h>
-+#endif
-+
-+/* Get getopt(), optarg, optind, opterr, optopt.  */
-+#if @GNULIB_UNISTD_H_GETOPT@
-+# include <getopt.h>
-+#endif
-+
-+#if @GNULIB_GETHOSTNAME@
-+/* Get all possible declarations of gethostname().  */
-+# if @UNISTD_H_HAVE_WINSOCK2_H@
-+#  include <winsock2.h>
-+#  if !defined _GL_SYS_SOCKET_H
-+#   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
-+#  endif
-+#  if !defined _GL_SYS_SELECT_H
-+#   undef select
-+#   define select		select_used_without_including_sys_select_h
-+#  endif
-+# endif
-+#endif
-+
-+/* The definition of GL_LINK_WARNING is copied here.  */
-+
-+
-+/* 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.  */
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+#if @GNULIB_CHOWN@
-+# if @REPLACE_CHOWN@
-+#  ifndef REPLACE_CHOWN
-+#   define REPLACE_CHOWN 1
-+#  endif
-+#  if REPLACE_CHOWN
-+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
-+   to GID (if GID is not -1).  Follow symbolic links.
-+   Return 0 if successful, otherwise -1 and errno set.
-+   See the POSIX:2001 specification
-+   <http://www.opengroup.org/susv3xsh/chown.html>.  */
-+#   define chown rpl_chown
-+extern int chown (const char *file, uid_t uid, gid_t gid);
-+#  endif
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef chown
-+# define chown(f,u,g) \
-+    (GL_LINK_WARNING ("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"), \
-+     chown (f, u, g))
-+#endif
-+
-+
-+#if @GNULIB_CLOSE@
-+# if @REPLACE_CLOSE@
-+/* Automatically included by modules that need a replacement for close.  */
-+#  undef close
-+#  define close rpl_close
-+extern int close (int);
-+# endif
-+#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
-+# define close(f) \
-+    (GL_LINK_WARNING ("close does not portably work on sockets - " \
-+                      "use gnulib module close for portability"), \
-+     close (f))
-+#endif
-+
-+
-+#if @REPLACE_DUP@
-+# define dup rpl_dup
-+extern int dup (int);
-+#endif
-+
-+
-+#if @GNULIB_DUP2@
-+# if @REPLACE_DUP2@
-+#  define dup2 rpl_dup2
-+# endif
-+# if !@HAVE_DUP2@ || @REPLACE_DUP2@
-+/* Copy the file descriptor OLDFD into file descriptor NEWFD.  Do nothing if
-+   NEWFD = OLDFD, otherwise close NEWFD first if it is open.
-+   Return newfd if successful, otherwise -1 and errno set.
-+   See the POSIX:2001 specification
-+   <http://www.opengroup.org/susv3xsh/dup2.html>.  */
-+extern int dup2 (int oldfd, int newfd);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef dup2
-+# define dup2(o,n) \
-+    (GL_LINK_WARNING ("dup2 is unportable - " \
-+                      "use gnulib module dup2 for portability"), \
-+     dup2 (o, n))
-+#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@
-+#  define dup3 rpl_dup3
-+# endif
-+extern int dup3 (int oldfd, int newfd, int flags);
-+#elif defined GNULIB_POSIXCHECK
-+# undef dup3
-+# define dup3(o,n,f) \
-+    (GL_LINK_WARNING ("dup3 is unportable - " \
-+                      "use gnulib module dup3 for portability"), \
-+     dup3 (o, n, f))
-+#endif
-+
-+
-+#if @GNULIB_ENVIRON@
-+# if !@HAVE_DECL_ENVIRON@
-+/* 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
-+extern char **environ;
-+#  endif
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef environ
-+# define environ \
-+    (GL_LINK_WARNING ("environ is unportable - " \
-+                      "use gnulib module environ for portability"), \
-+     environ)
-+#endif
-+
-+
-+#if @GNULIB_EUIDACCESS@
-+# if !@HAVE_EUIDACCESS@
-+/* Like access(), except that is uses the effective user id and group id of
-+   the current process.  */
-+extern int euidaccess (const char *filename, int mode);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef euidaccess
-+# define euidaccess(f,m) \
-+    (GL_LINK_WARNING ("euidaccess is unportable - " \
-+                      "use gnulib module euidaccess for portability"), \
-+     euidaccess (f, m))
-+#endif
-+
-+
-+#if @GNULIB_FACCESSAT@
-+# if !@HAVE_FACCESSAT@
-+int faccessat (int fd, char const *file, int mode, int flag);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef faccessat
-+# define faccessat(d,n,m,f)			    \
-+    (GL_LINK_WARNING ("faccessat is not portable - " \
-+                      "use gnulib module faccessat for portability"), \
-+     faccessat (d, n, m, f))
-+#endif
-+
-+
-+#if @GNULIB_FCHDIR@
-+# if @REPLACE_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:2001 specification
-+   <http://www.opengroup.org/susv3xsh/fchdir.html>.  */
-+extern int fchdir (int /*fd*/);
-+
-+/* Gnulib internal hooks needed to maintain the fchdir metadata.  */
-+extern int _gl_register_fd (int fd, const char *filename);
-+extern void _gl_unregister_fd (int fd);
-+extern int _gl_register_dup (int oldfd, int newfd);
-+extern const char *_gl_directory_name (int fd);
-+
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef fchdir
-+# define fchdir(f) \
-+    (GL_LINK_WARNING ("fchdir is unportable - " \
-+                      "use gnulib module fchdir for portability"), \
-+     fchdir (f))
-+#endif
-+
-+
-+#if @GNULIB_FCHOWNAT@
-+# if @REPLACE_FCHOWNAT@
-+#  undef fchownat
-+#  define fchownat rpl_fchownat
-+# endif
-+# if !@HAVE_FCHOWNAT@ || @REPLACE_FCHOWNAT@
-+extern int fchownat (int fd, char const *file, uid_t owner, gid_t group, int flag);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef fchownat
-+# define fchownat(d,n,o,g,f)			    \
-+    (GL_LINK_WARNING ("fchownat is not portable - " \
-+                      "use gnulib module openat for portability"), \
-+     fchownat (d, n, o, g, f))
-+#endif
-+
-+
-+#if @GNULIB_FSYNC@
-+/* Synchronize changes to a file.
-+   Return 0 if successful, otherwise -1 and errno set.
-+   See POSIX:2001 specification
-+   <http://www.opengroup.org/susv3xsh/fsync.html>.  */
-+# if !@HAVE_FSYNC@
-+extern int fsync (int fd);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef fsync
-+# define fsync(fd) \
-+    (GL_LINK_WARNING ("fsync is unportable - " \
-+                      "use gnulib module fsync for portability"), \
-+     fsync (fd))
-+#endif
-+
-+
-+#if @GNULIB_FTRUNCATE@
-+# if !@HAVE_FTRUNCATE@
-+/* Change the size of the file to which FD is opened to become equal to LENGTH.
-+   Return 0 if successful, otherwise -1 and errno set.
-+   See the POSIX:2001 specification
-+   <http://www.opengroup.org/susv3xsh/ftruncate.html>.  */
-+extern int ftruncate (int fd, off_t length);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef ftruncate
-+# define ftruncate(f,l) \
-+    (GL_LINK_WARNING ("ftruncate is unportable - " \
-+                      "use gnulib module ftruncate for portability"), \
-+     ftruncate (f, l))
-+#endif
-+
-+
-+#if @GNULIB_GETCWD@
-+/* Include the headers that might declare getcwd so that they will not
-+   cause confusion if included after this file.  */
-+# include <stdlib.h>
-+# if @REPLACE_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:2001 specification
-+   <http://www.opengroup.org/susv3xsh/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.  */
-+#  define getcwd rpl_getcwd
-+extern char * getcwd (char *buf, size_t size);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef getcwd
-+# define getcwd(b,s) \
-+    (GL_LINK_WARNING ("getcwd is unportable - " \
-+                      "use gnulib module getcwd for portability"), \
-+     getcwd (b, s))
-+#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 !@HAVE_GETDOMAINNAME@
-+extern int getdomainname(char *name, size_t len);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef getdomainname
-+# define getdomainname(n,l) \
-+    (GL_LINK_WARNING ("getdomainname is unportable - " \
-+                      "use gnulib module getdomainname for portability"), \
-+     getdomainname (n, l))
-+#endif
-+
-+
-+#if @GNULIB_GETDTABLESIZE@
-+# if !@HAVE_GETDTABLESIZE@
-+/* Return the maximum number of file descriptors in the current process.
-+   In POSIX, this is same as sysconf (_SC_OPEN_MAX).  */
-+extern int getdtablesize (void);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef getdtablesize
-+# define getdtablesize() \
-+    (GL_LINK_WARNING ("getdtablesize is unportable - " \
-+                      "use gnulib module getdtablesize for portability"), \
-+     getdtablesize ())
-+#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@
-+#  undef gethostname
-+#  define gethostname rpl_gethostname
-+# endif
-+# if @UNISTD_H_HAVE_WINSOCK2_H@ || !@HAVE_GETHOSTNAME@
-+extern int gethostname(char *name, size_t len);
-+# endif
-+#elif @UNISTD_H_HAVE_WINSOCK2_H@
-+# undef gethostname
-+# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
-+#elif defined GNULIB_POSIXCHECK
-+# undef gethostname
-+# define gethostname(n,l) \
-+    (GL_LINK_WARNING ("gethostname is unportable - " \
-+                      "use gnulib module gethostname for portability"), \
-+     gethostname (n, l))
-+#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>.
-+ */
-+# if !@HAVE_DECL_GETLOGIN_R@
-+extern int getlogin_r (char *name, size_t size);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef getlogin_r
-+# define getlogin_r(n,s) \
-+    (GL_LINK_WARNING ("getlogin_r is unportable - " \
-+                      "use gnulib module getlogin_r for portability"), \
-+     getlogin_r (n, s))
-+#endif
-+
-+
-+#if @GNULIB_GETPAGESIZE@
-+# if @REPLACE_GETPAGESIZE@
-+#  define getpagesize rpl_getpagesize
-+extern int getpagesize (void);
-+# elif !@HAVE_GETPAGESIZE@
-+/* This is for POSIX systems.  */
-+#  if !defined getpagesize && defined _SC_PAGESIZE
-+#   if ! (defined __VMS && __VMS_VER < 70000000)
-+#    define getpagesize() sysconf (_SC_PAGESIZE)
-+#   endif
-+#  endif
-+/* This is for older VMS.  */
-+#  if !defined getpagesize && defined __VMS
-+#   ifdef __ALPHA
-+#    define getpagesize() 8192
-+#   else
-+#    define getpagesize() 512
-+#   endif
-+#  endif
-+/* This is for BeOS.  */
-+#  if !defined getpagesize && @HAVE_OS_H@
-+#   include <OS.h>
-+#   if defined B_PAGE_SIZE
-+#    define getpagesize() B_PAGE_SIZE
-+#   endif
-+#  endif
-+/* This is for AmigaOS4.0.  */
-+#  if !defined getpagesize && defined __amigaos4__
-+#   define getpagesize() 2048
-+#  endif
-+/* This is for older Unix systems.  */
-+#  if !defined getpagesize && @HAVE_SYS_PARAM_H@
-+#   include <sys/param.h>
-+#   ifdef EXEC_PAGESIZE
-+#    define getpagesize() EXEC_PAGESIZE
-+#   else
-+#    ifdef NBPG
-+#     ifndef CLSIZE
-+#      define CLSIZE 1
-+#     endif
-+#     define getpagesize() (NBPG * CLSIZE)
-+#    else
-+#     ifdef NBPC
-+#      define getpagesize() NBPC
-+#     endif
-+#    endif
-+#   endif
-+#  endif
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef getpagesize
-+# define getpagesize() \
-+    (GL_LINK_WARNING ("getpagesize is unportable - " \
-+                      "use gnulib module getpagesize for portability"), \
-+     getpagesize ())
-+#endif
-+
-+
-+#if @GNULIB_GETUSERSHELL@
-+# if !@HAVE_GETUSERSHELL@
-+/* Return the next valid login shell on the system, or NULL when the end of
-+   the list has been reached.  */
-+extern char *getusershell (void);
-+/* Rewind to pointer that is advanced at each getusershell() call.  */
-+extern void setusershell (void);
-+/* Free the pointer that is advanced at each getusershell() call and
-+   associated resources.  */
-+extern void endusershell (void);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef getusershell
-+# define getusershell() \
-+    (GL_LINK_WARNING ("getusershell is unportable - " \
-+                      "use gnulib module getusershell for portability"), \
-+     getusershell ())
-+# undef setusershell
-+# define setusershell() \
-+    (GL_LINK_WARNING ("setusershell is unportable - " \
-+                      "use gnulib module getusershell for portability"), \
-+     setusershell ())
-+# undef endusershell
-+# define endusershell() \
-+    (GL_LINK_WARNING ("endusershell is unportable - " \
-+                      "use gnulib module getusershell for portability"), \
-+     endusershell ())
-+#endif
-+
-+
-+#if @GNULIB_LCHOWN@
-+# if @REPLACE_LCHOWN@
-+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
-+   to GID (if GID is not -1).  Do not follow symbolic links.
-+   Return 0 if successful, otherwise -1 and errno set.
-+   See the POSIX:2001 specification
-+   <http://www.opengroup.org/susv3xsh/lchown.html>.  */
-+#  define lchown rpl_lchown
-+extern int lchown (char const *file, uid_t owner, gid_t group);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef lchown
-+# define lchown(f,u,g) \
-+    (GL_LINK_WARNING ("lchown is unportable to pre-POSIX.1-2001 " \
-+                      "systems - use gnulib module lchown for portability"), \
-+     lchown (f, u, g))
-+#endif
-+
-+
-+#if @GNULIB_LINK@
-+# if @REPLACE_LINK@
-+#  define link rpl_link
-+# endif
-+/* Create a new hard link for an existing file.
-+   Return 0 if successful, otherwise -1 and errno set.
-+   See POSIX:2001 specification
-+   <http://www.opengroup.org/susv3xsh/link.html>.  */
-+# if !@HAVE_LINK@ || @REPLACE_LINK@
-+extern int link (const char *path1, const char *path2);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef link
-+# define link(path1,path2) \
-+    (GL_LINK_WARNING ("link is unportable - " \
-+                      "use gnulib module link for portability"), \
-+     link (path1, path2))
-+#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 !@HAVE_LINKAT@
-+extern int linkat (int fd1, const char *path1, int fd2, const char *path2,
-+		   int flag);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef linkat
-+# define link(f1,path1,f2,path2,f)		\
-+    (GL_LINK_WARNING ("linkat is unportable - " \
-+                      "use gnulib module linkat for portability"), \
-+     linkat (f1, path1, f2, path2,f))
-+#endif
-+
-+#if @GNULIB_LSEEK@
-+# if @REPLACE_LSEEK@
-+/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
-+   Return the new offset if successful, otherwise -1 and errno set.
-+   See the POSIX:2001 specification
-+   <http://www.opengroup.org/susv3xsh/lseek.html>.  */
-+#  define lseek rpl_lseek
-+   extern off_t lseek (int fd, off_t offset, int whence);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef lseek
-+# define lseek(f,o,w) \
-+    (GL_LINK_WARNING ("lseek does not fail with ESPIPE on pipes on some " \
-+                      "systems - use gnulib module lseek for portability"), \
-+     lseek (f, o, w))
-+#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@
-+#  define pipe2 rpl_pipe2
-+# endif
-+extern int pipe2 (int fd[2], int flags);
-+#elif defined GNULIB_POSIXCHECK
-+# undef pipe2
-+# define pipe2(f,o) \
-+    (GL_LINK_WARNING ("pipe2 is unportable - " \
-+                      "use gnulib module pipe2 for portability"), \
-+     pipe2 (f, o))
-+#endif
-+
-+
-+#if @GNULIB_READLINK@
-+# if @REPLACE_READLINK@
-+#  define readlink rpl_readlink
-+# endif
-+/* Read the contents of the symbolic link FILE and place the first BUFSIZE
-+   bytes of it into BUF.  Return the number of bytes placed into BUF if
-+   successful, otherwise -1 and errno set.
-+   See the POSIX:2001 specification
-+   <http://www.opengroup.org/susv3xsh/readlink.html>.  */
-+# if !@HAVE_READLINK@ || @REPLACE_READLINK@
-+extern ssize_t readlink (const char *file, char *buf, size_t bufsize);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef readlink
-+# define readlink(f,b,s) \
-+    (GL_LINK_WARNING ("readlink is unportable - " \
-+                      "use gnulib module readlink for portability"), \
-+     readlink (f, b, s))
-+#endif
-+
-+
-+#if @GNULIB_READLINKAT@
-+# if !@HAVE_READLINKAT@
-+ssize_t readlinkat (int fd, char const *file, char *buf, size_t len);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef readlinkat
-+# define readlinkat(d,n,b,l)			     \
-+    (GL_LINK_WARNING ("readlinkat is not portable - " \
-+                      "use gnulib module symlinkat for portability"), \
-+     readlinkat (d, n, b, l))
-+#endif
-+
-+
-+#if @GNULIB_RMDIR@
-+# if @REPLACE_RMDIR@
-+#  define rmdir rpl_rmdir
-+/* Remove the directory DIR.  */
-+extern int rmdir (char const *name);
-+# endif
-+#elif defined GNULIB_POSIXCHECK
-+# undef rmdir
-+# define rmdir(n) \
-+    (GL_LINK_WARNING ("rmdir is unportable - " \

@@ Diff output truncated at 100000 characters. @@

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the devel mailing list