mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Use Gnulib's version-etc-fsf' for
--version' and `--help' output.
* m4/gnulib-cache.m4: Add `version-etc-fsf'. Switch to LGPLv3+. * GUILE-VERSION (PACKAGE): Change to "GNU Guile". * Makefile.am (distdir): New variable. * libguile/script.c (scm_shell_usage): Improve formatting. Use `emit_bug_reporting_address ()'. (scm_compile_shell_switches): Use `version_etc ()'.
This commit is contained in:
parent
8bcecbd302
commit
4f02b98d0e
18 changed files with 899 additions and 50 deletions
|
@ -9,7 +9,7 @@ GUILE_VERSION=${GUILE_EFFECTIVE_VERSION}.${GUILE_MICRO_VERSION}
|
||||||
|
|
||||||
# For automake.
|
# For automake.
|
||||||
VERSION=${GUILE_VERSION}
|
VERSION=${GUILE_VERSION}
|
||||||
PACKAGE=guile
|
PACKAGE="GNU Guile"
|
||||||
|
|
||||||
# All of the shared lib versioning info. Right now, for this to work
|
# All of the shared lib versioning info. Right now, for this to work
|
||||||
# properly, you'll also need to add AC_SUBST calls to the right place
|
# properly, you'll also need to add AC_SUBST calls to the right place
|
||||||
|
|
|
@ -40,6 +40,10 @@ ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
DISTCLEANFILES = check-guile.log
|
DISTCLEANFILES = check-guile.log
|
||||||
|
|
||||||
|
# Help Automake choose the right directory name (Automake 1.11 uses
|
||||||
|
# `$(PACKAGE)-$(PACKAGE_VERSION)' by default, which is wrong.)
|
||||||
|
distdir = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
|
||||||
|
|
||||||
dist-hook: gen-ChangeLog
|
dist-hook: gen-ChangeLog
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
# the same distribution terms as the rest of that program.
|
# the same distribution terms as the rest of that program.
|
||||||
#
|
#
|
||||||
# Generated by gnulib-tool.
|
# 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=build-aux --lgpl --libtool --macro-prefix=gl --no-vc-files alignof alloca-opt autobuild byteswap canonicalize-lgpl environ extensions flock fpieee full-read full-write havelib iconv_open-utf inet_ntop inet_pton lib-symbol-versions lib-symbol-visibility libunistring putenv stdlib strcase strftime striconveh string verify vsnprintf warnings
|
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=3 --libtool --macro-prefix=gl --no-vc-files alignof alloca-opt autobuild byteswap canonicalize-lgpl environ extensions flock fpieee full-read full-write havelib iconv_open-utf inet_ntop inet_pton lib-symbol-versions lib-symbol-visibility libunistring putenv stdlib strcase strftime striconveh string verify version-etc-fsf vsnprintf warnings
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
|
AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
|
||||||
|
|
||||||
|
@ -267,6 +267,12 @@ libgnu_la_SOURCES += full-write.h full-write.c
|
||||||
|
|
||||||
## end gnulib module full-write
|
## end gnulib module full-write
|
||||||
|
|
||||||
|
## begin gnulib module gettext-h
|
||||||
|
|
||||||
|
libgnu_la_SOURCES += gettext.h
|
||||||
|
|
||||||
|
## end gnulib module gettext-h
|
||||||
|
|
||||||
## begin gnulib module gperf
|
## begin gnulib module gperf
|
||||||
|
|
||||||
GPERF = gperf
|
GPERF = gperf
|
||||||
|
@ -590,6 +596,27 @@ EXTRA_libgnu_la_SOURCES += stat.c
|
||||||
|
|
||||||
## end gnulib module stat
|
## end gnulib module stat
|
||||||
|
|
||||||
|
## begin gnulib module stdarg
|
||||||
|
|
||||||
|
BUILT_SOURCES += $(STDARG_H)
|
||||||
|
|
||||||
|
# We need the following in order to create <stdarg.h> when the system
|
||||||
|
# doesn't have one that works with the given compiler.
|
||||||
|
stdarg.h: stdarg.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_STDARG_H''@|$(NEXT_STDARG_H)|g' \
|
||||||
|
< $(srcdir)/stdarg.in.h; \
|
||||||
|
} > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
MOSTLYCLEANFILES += stdarg.h stdarg.h-t
|
||||||
|
|
||||||
|
EXTRA_DIST += stdarg.in.h
|
||||||
|
|
||||||
|
## end gnulib module stdarg
|
||||||
|
|
||||||
## begin gnulib module stdbool
|
## begin gnulib module stdbool
|
||||||
|
|
||||||
BUILT_SOURCES += $(STDBOOL_H)
|
BUILT_SOURCES += $(STDBOOL_H)
|
||||||
|
@ -834,8 +861,9 @@ stdlib.h: stdlib.in.h
|
||||||
-e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
|
-e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
|
||||||
-e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
|
-e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
|
||||||
-e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
|
-e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
|
||||||
|
-e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
|
||||||
-e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
|
-e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
|
||||||
-e 's|@''VOID_UNSETENV''@|$(VOID_UNSETENV)|g' \
|
-e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
|
||||||
-e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
|
-e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
|
||||||
< $(srcdir)/stdlib.in.h; \
|
< $(srcdir)/stdlib.in.h; \
|
||||||
} > $@-t && \
|
} > $@-t && \
|
||||||
|
@ -1319,6 +1347,18 @@ libgnu_la_SOURCES += verify.h
|
||||||
|
|
||||||
## end gnulib module verify
|
## end gnulib module verify
|
||||||
|
|
||||||
|
## begin gnulib module version-etc
|
||||||
|
|
||||||
|
libgnu_la_SOURCES += version-etc.h version-etc.c
|
||||||
|
|
||||||
|
## end gnulib module version-etc
|
||||||
|
|
||||||
|
## begin gnulib module version-etc-fsf
|
||||||
|
|
||||||
|
libgnu_la_SOURCES += version-etc-fsf.c
|
||||||
|
|
||||||
|
## end gnulib module version-etc-fsf
|
||||||
|
|
||||||
## begin gnulib module vsnprintf
|
## begin gnulib module vsnprintf
|
||||||
|
|
||||||
|
|
||||||
|
|
279
lib/gettext.h
Normal file
279
lib/gettext.h
Normal file
|
@ -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 Lesser 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 Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser 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 */
|
|
@ -1,5 +1,6 @@
|
||||||
/* Decomposed printf argument list.
|
/* Decomposed printf argument list.
|
||||||
Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc.
|
Copyright (C) 1999, 2002-2003, 2005-2007, 2009 Free Software
|
||||||
|
Foundation, Inc.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -89,7 +90,7 @@ PRINTF_FETCHARGS (va_list args, arguments *a)
|
||||||
where wint_t is 'unsigned short'. */
|
where wint_t is 'unsigned short'. */
|
||||||
ap->a.a_wide_char =
|
ap->a.a_wide_char =
|
||||||
(sizeof (wint_t) < sizeof (int)
|
(sizeof (wint_t) < sizeof (int)
|
||||||
? va_arg (args, int)
|
? (wint_t) va_arg (args, int)
|
||||||
: va_arg (args, wint_t));
|
: va_arg (args, wint_t));
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
35
lib/stdarg.in.h
Normal file
35
lib/stdarg.in.h
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/* Substitute for and wrapper around <stdarg.h>.
|
||||||
|
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser 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_STDARG_H
|
||||||
|
|
||||||
|
#if __GNUC__ >= 3
|
||||||
|
@PRAGMA_SYSTEM_HEADER@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The include_next requires a split double-inclusion guard. */
|
||||||
|
#@INCLUDE_NEXT@ @NEXT_STDARG_H@
|
||||||
|
|
||||||
|
#ifndef _GL_STDARG_H
|
||||||
|
#define _GL_STDARG_H
|
||||||
|
|
||||||
|
#ifndef va_copy
|
||||||
|
# define va_copy(a,b) ((a) = (b))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _GL_STDARG_H */
|
||||||
|
#endif /* _GL_STDARG_H */
|
|
@ -384,11 +384,21 @@ extern int rpmatch (const char *response);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if @GNULIB_SETENV@
|
#if @GNULIB_SETENV@
|
||||||
# if !@HAVE_SETENV@
|
# if @REPLACE_SETENV@
|
||||||
|
# undef setenv
|
||||||
|
# define setenv rpl_setenv
|
||||||
|
# endif
|
||||||
|
# if !@HAVE_SETENV@ || @REPLACE_SETENV@
|
||||||
/* Set NAME to VALUE in the environment.
|
/* Set NAME to VALUE in the environment.
|
||||||
If REPLACE is nonzero, overwrite an existing value. */
|
If REPLACE is nonzero, overwrite an existing value. */
|
||||||
extern int setenv (const char *name, const char *value, int replace);
|
extern int setenv (const char *name, const char *value, int replace);
|
||||||
# endif
|
# endif
|
||||||
|
#elif defined GNULIB_POSIXCHECK
|
||||||
|
# undef setenv
|
||||||
|
# define setenv(n,v,o) \
|
||||||
|
(GL_LINK_WARNING ("setenv is unportable - " \
|
||||||
|
"use gnulib module setenv for portability"), \
|
||||||
|
setenv (n, v, o))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if @GNULIB_STRTOD@
|
#if @GNULIB_STRTOD@
|
||||||
|
@ -448,16 +458,20 @@ extern unsigned long long strtoull (const char *string, char **endptr, int base)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if @GNULIB_UNSETENV@
|
#if @GNULIB_UNSETENV@
|
||||||
# if @HAVE_UNSETENV@
|
# if @REPLACE_UNSETENV@
|
||||||
# if @VOID_UNSETENV@
|
# undef unsetenv
|
||||||
/* On some systems, unsetenv() returns void.
|
# define unsetenv rpl_unsetenv
|
||||||
This is the case for MacOS X 10.3, FreeBSD 4.8, NetBSD 1.6, OpenBSD 3.4. */
|
# endif
|
||||||
# define unsetenv(name) ((unsetenv)(name), 0)
|
# if !@HAVE_UNSETENV@ || @REPLACE_UNSETENV@
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
/* Remove the variable NAME from the environment. */
|
/* Remove the variable NAME from the environment. */
|
||||||
extern int unsetenv (const char *name);
|
extern int unsetenv (const char *name);
|
||||||
# endif
|
# endif
|
||||||
|
#elif defined GNULIB_POSIXCHECK
|
||||||
|
# undef unsetenv
|
||||||
|
# define unsetenv(n) \
|
||||||
|
(GL_LINK_WARNING ("unsetenv is unportable - " \
|
||||||
|
"use gnulib module unsetenv for portability"), \
|
||||||
|
unsetenv (n))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -2375,16 +2375,16 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||||
characters = 0;
|
characters = 0;
|
||||||
while (precision > 0)
|
while (precision > 0)
|
||||||
{
|
{
|
||||||
char buf[64]; /* Assume MB_CUR_MAX <= 64. */
|
char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
if (*arg_end == 0)
|
if (*arg_end == 0)
|
||||||
/* Found the terminating null wide character. */
|
/* Found the terminating null wide character. */
|
||||||
break;
|
break;
|
||||||
# if HAVE_WCRTOMB
|
# if HAVE_WCRTOMB
|
||||||
count = wcrtomb (buf, *arg_end, &state);
|
count = wcrtomb (cbuf, *arg_end, &state);
|
||||||
# else
|
# else
|
||||||
count = wctomb (buf, *arg_end);
|
count = wctomb (cbuf, *arg_end);
|
||||||
# endif
|
# endif
|
||||||
if (count < 0)
|
if (count < 0)
|
||||||
{
|
{
|
||||||
|
@ -2420,16 +2420,16 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||||
characters = 0;
|
characters = 0;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
char buf[64]; /* Assume MB_CUR_MAX <= 64. */
|
char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
if (*arg_end == 0)
|
if (*arg_end == 0)
|
||||||
/* Found the terminating null wide character. */
|
/* Found the terminating null wide character. */
|
||||||
break;
|
break;
|
||||||
# if HAVE_WCRTOMB
|
# if HAVE_WCRTOMB
|
||||||
count = wcrtomb (buf, *arg_end, &state);
|
count = wcrtomb (cbuf, *arg_end, &state);
|
||||||
# else
|
# else
|
||||||
count = wctomb (buf, *arg_end);
|
count = wctomb (cbuf, *arg_end);
|
||||||
# endif
|
# endif
|
||||||
if (count < 0)
|
if (count < 0)
|
||||||
{
|
{
|
||||||
|
@ -2470,20 +2470,20 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||||
# endif
|
# endif
|
||||||
for (remaining = characters; remaining > 0; )
|
for (remaining = characters; remaining > 0; )
|
||||||
{
|
{
|
||||||
char buf[64]; /* Assume MB_CUR_MAX <= 64. */
|
char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
if (*arg == 0)
|
if (*arg == 0)
|
||||||
abort ();
|
abort ();
|
||||||
# if HAVE_WCRTOMB
|
# if HAVE_WCRTOMB
|
||||||
count = wcrtomb (buf, *arg, &state);
|
count = wcrtomb (cbuf, *arg, &state);
|
||||||
# else
|
# else
|
||||||
count = wctomb (buf, *arg);
|
count = wctomb (cbuf, *arg);
|
||||||
# endif
|
# endif
|
||||||
if (count <= 0)
|
if (count <= 0)
|
||||||
/* Inconsistency. */
|
/* Inconsistency. */
|
||||||
abort ();
|
abort ();
|
||||||
memcpy (tmpptr, buf, count);
|
memcpy (tmpptr, cbuf, count);
|
||||||
tmpptr += count;
|
tmpptr += count;
|
||||||
arg++;
|
arg++;
|
||||||
remaining -= count;
|
remaining -= count;
|
||||||
|
@ -2552,20 +2552,20 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||||
ENSURE_ALLOCATION (xsum (length, characters));
|
ENSURE_ALLOCATION (xsum (length, characters));
|
||||||
for (remaining = characters; remaining > 0; )
|
for (remaining = characters; remaining > 0; )
|
||||||
{
|
{
|
||||||
char buf[64]; /* Assume MB_CUR_MAX <= 64. */
|
char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
if (*arg == 0)
|
if (*arg == 0)
|
||||||
abort ();
|
abort ();
|
||||||
# if HAVE_WCRTOMB
|
# if HAVE_WCRTOMB
|
||||||
count = wcrtomb (buf, *arg, &state);
|
count = wcrtomb (cbuf, *arg, &state);
|
||||||
# else
|
# else
|
||||||
count = wctomb (buf, *arg);
|
count = wctomb (cbuf, *arg);
|
||||||
# endif
|
# endif
|
||||||
if (count <= 0)
|
if (count <= 0)
|
||||||
/* Inconsistency. */
|
/* Inconsistency. */
|
||||||
abort ();
|
abort ();
|
||||||
memcpy (result + length, buf, count);
|
memcpy (result + length, cbuf, count);
|
||||||
length += count;
|
length += count;
|
||||||
arg++;
|
arg++;
|
||||||
remaining -= count;
|
remaining -= count;
|
||||||
|
@ -2581,21 +2581,21 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||||
# endif
|
# endif
|
||||||
while (arg < arg_end)
|
while (arg < arg_end)
|
||||||
{
|
{
|
||||||
char buf[64]; /* Assume MB_CUR_MAX <= 64. */
|
char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
if (*arg == 0)
|
if (*arg == 0)
|
||||||
abort ();
|
abort ();
|
||||||
# if HAVE_WCRTOMB
|
# if HAVE_WCRTOMB
|
||||||
count = wcrtomb (buf, *arg, &state);
|
count = wcrtomb (cbuf, *arg, &state);
|
||||||
# else
|
# else
|
||||||
count = wctomb (buf, *arg);
|
count = wctomb (cbuf, *arg);
|
||||||
# endif
|
# endif
|
||||||
if (count <= 0)
|
if (count <= 0)
|
||||||
/* Inconsistency. */
|
/* Inconsistency. */
|
||||||
abort ();
|
abort ();
|
||||||
ENSURE_ALLOCATION (xsum (length, count));
|
ENSURE_ALLOCATION (xsum (length, count));
|
||||||
memcpy (result + length, buf, count);
|
memcpy (result + length, cbuf, count);
|
||||||
length += count;
|
length += count;
|
||||||
arg++;
|
arg++;
|
||||||
}
|
}
|
||||||
|
|
30
lib/version-etc-fsf.c
Normal file
30
lib/version-etc-fsf.c
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/* Variable with FSF copyright information, for version-etc.
|
||||||
|
Copyright (C) 1999-2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* Written by Jim Meyering. */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
/* Specification. */
|
||||||
|
#include "version-etc.h"
|
||||||
|
|
||||||
|
/* Default copyright goes to the FSF. */
|
||||||
|
|
||||||
|
const char version_etc_copyright[] =
|
||||||
|
/* Do *not* mark this string for translation. %s is a copyright
|
||||||
|
symbol suitable for this locale, and %d is the copyright
|
||||||
|
year. */
|
||||||
|
"Copyright %s %d Free Software Foundation, Inc.";
|
252
lib/version-etc.c
Normal file
252
lib/version-etc.c
Normal file
|
@ -0,0 +1,252 @@
|
||||||
|
/* Print --version and bug-reporting information in a consistent format.
|
||||||
|
Copyright (C) 1999-2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* Written by Jim Meyering. */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
/* Specification. */
|
||||||
|
#include "version-etc.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#if USE_UNLOCKED_IO
|
||||||
|
# include "unlocked-io.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "gettext.h"
|
||||||
|
#define _(msgid) gettext (msgid)
|
||||||
|
|
||||||
|
enum { COPYRIGHT_YEAR = 2009 };
|
||||||
|
|
||||||
|
/* The three functions below display the --version information the
|
||||||
|
standard way.
|
||||||
|
|
||||||
|
If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of
|
||||||
|
the program. The formats are therefore:
|
||||||
|
|
||||||
|
PACKAGE VERSION
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
COMMAND_NAME (PACKAGE) VERSION.
|
||||||
|
|
||||||
|
The functions differ in the way they are passed author names. */
|
||||||
|
|
||||||
|
/* Display the --version information the standard way.
|
||||||
|
|
||||||
|
Author names are given in the array AUTHORS. N_AUTHORS is the
|
||||||
|
number of elements in the array. */
|
||||||
|
void
|
||||||
|
version_etc_arn (FILE *stream,
|
||||||
|
const char *command_name, const char *package,
|
||||||
|
const char *version,
|
||||||
|
const char * const * authors, size_t n_authors)
|
||||||
|
{
|
||||||
|
if (command_name)
|
||||||
|
fprintf (stream, "%s (%s) %s\n", command_name, package, version);
|
||||||
|
else
|
||||||
|
fprintf (stream, "%s %s\n", package, version);
|
||||||
|
|
||||||
|
#ifdef PACKAGE_PACKAGER
|
||||||
|
# ifdef PACKAGE_PACKAGER_VERSION
|
||||||
|
fprintf (stream, _("Packaged by %s (%s)\n"), PACKAGE_PACKAGER,
|
||||||
|
PACKAGE_PACKAGER_VERSION);
|
||||||
|
# else
|
||||||
|
fprintf (stream, _("Packaged by %s\n"), PACKAGE_PACKAGER);
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* TRANSLATORS: Translate "(C)" to the copyright symbol
|
||||||
|
(C-in-a-circle), if this symbol is available in the user's
|
||||||
|
locale. Otherwise, do not translate "(C)"; leave it as-is. */
|
||||||
|
fprintf (stream, version_etc_copyright, _("(C)"), COPYRIGHT_YEAR);
|
||||||
|
|
||||||
|
fputs (_("\
|
||||||
|
\n\
|
||||||
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\n\
|
||||||
|
This is free software: you are free to change and redistribute it.\n\
|
||||||
|
There is NO WARRANTY, to the extent permitted by law.\n\
|
||||||
|
\n\
|
||||||
|
"),
|
||||||
|
stream);
|
||||||
|
|
||||||
|
switch (n_authors)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
/* The caller must provide at least one author name. */
|
||||||
|
abort ();
|
||||||
|
case 1:
|
||||||
|
/* TRANSLATORS: %s denotes an author name. */
|
||||||
|
fprintf (stream, _("Written by %s.\n"), authors[0]);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name. */
|
||||||
|
fprintf (stream, _("Written by %s and %s.\n"), authors[0], authors[1]);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name. */
|
||||||
|
fprintf (stream, _("Written by %s, %s, and %s.\n"),
|
||||||
|
authors[0], authors[1], authors[2]);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name.
|
||||||
|
You can use line breaks, estimating that each author name occupies
|
||||||
|
ca. 16 screen columns and that a screen line has ca. 80 columns. */
|
||||||
|
fprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"),
|
||||||
|
authors[0], authors[1], authors[2], authors[3]);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name.
|
||||||
|
You can use line breaks, estimating that each author name occupies
|
||||||
|
ca. 16 screen columns and that a screen line has ca. 80 columns. */
|
||||||
|
fprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"),
|
||||||
|
authors[0], authors[1], authors[2], authors[3], authors[4]);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name.
|
||||||
|
You can use line breaks, estimating that each author name occupies
|
||||||
|
ca. 16 screen columns and that a screen line has ca. 80 columns. */
|
||||||
|
fprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"),
|
||||||
|
authors[0], authors[1], authors[2], authors[3], authors[4],
|
||||||
|
authors[5]);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name.
|
||||||
|
You can use line breaks, estimating that each author name occupies
|
||||||
|
ca. 16 screen columns and that a screen line has ca. 80 columns. */
|
||||||
|
fprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"),
|
||||||
|
authors[0], authors[1], authors[2], authors[3], authors[4],
|
||||||
|
authors[5], authors[6]);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name.
|
||||||
|
You can use line breaks, estimating that each author name occupies
|
||||||
|
ca. 16 screen columns and that a screen line has ca. 80 columns. */
|
||||||
|
fprintf (stream, _("\
|
||||||
|
Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"),
|
||||||
|
authors[0], authors[1], authors[2], authors[3], authors[4],
|
||||||
|
authors[5], authors[6], authors[7]);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name.
|
||||||
|
You can use line breaks, estimating that each author name occupies
|
||||||
|
ca. 16 screen columns and that a screen line has ca. 80 columns. */
|
||||||
|
fprintf (stream, _("\
|
||||||
|
Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"),
|
||||||
|
authors[0], authors[1], authors[2], authors[3], authors[4],
|
||||||
|
authors[5], authors[6], authors[7], authors[8]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* 10 or more authors. Use an abbreviation, since the human reader
|
||||||
|
will probably not want to read the entire list anyway. */
|
||||||
|
/* TRANSLATORS: Each %s denotes an author name.
|
||||||
|
You can use line breaks, estimating that each author name occupies
|
||||||
|
ca. 16 screen columns and that a screen line has ca. 80 columns. */
|
||||||
|
fprintf (stream, _("\
|
||||||
|
Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"),
|
||||||
|
authors[0], authors[1], authors[2], authors[3], authors[4],
|
||||||
|
authors[5], authors[6], authors[7], authors[8]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Display the --version information the standard way. See the initial
|
||||||
|
comment to this module, for more information.
|
||||||
|
|
||||||
|
Author names are given in the NULL-terminated array AUTHORS. */
|
||||||
|
void
|
||||||
|
version_etc_ar (FILE *stream,
|
||||||
|
const char *command_name, const char *package,
|
||||||
|
const char *version, const char * const * authors)
|
||||||
|
{
|
||||||
|
size_t n_authors;
|
||||||
|
|
||||||
|
for (n_authors = 0; authors[n_authors]; n_authors++)
|
||||||
|
;
|
||||||
|
version_etc_arn (stream, command_name, package, version, authors, n_authors);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Display the --version information the standard way. See the initial
|
||||||
|
comment to this module, for more information.
|
||||||
|
|
||||||
|
Author names are given in the NULL-terminated va_list AUTHORS. */
|
||||||
|
void
|
||||||
|
version_etc_va (FILE *stream,
|
||||||
|
const char *command_name, const char *package,
|
||||||
|
const char *version, va_list authors)
|
||||||
|
{
|
||||||
|
size_t n_authors;
|
||||||
|
const char *authtab[10];
|
||||||
|
|
||||||
|
for (n_authors = 0;
|
||||||
|
n_authors < 10
|
||||||
|
&& (authtab[n_authors] = va_arg (authors, const char *)) != NULL;
|
||||||
|
n_authors++)
|
||||||
|
;
|
||||||
|
version_etc_arn (stream, command_name, package, version,
|
||||||
|
authtab, n_authors);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Display the --version information the standard way.
|
||||||
|
|
||||||
|
If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of
|
||||||
|
the program. The formats are therefore:
|
||||||
|
|
||||||
|
PACKAGE VERSION
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
COMMAND_NAME (PACKAGE) VERSION.
|
||||||
|
|
||||||
|
The authors names are passed as separate arguments, with an additional
|
||||||
|
NULL argument at the end. */
|
||||||
|
void
|
||||||
|
version_etc (FILE *stream,
|
||||||
|
const char *command_name, const char *package,
|
||||||
|
const char *version, /* const char *author1, ...*/ ...)
|
||||||
|
{
|
||||||
|
va_list authors;
|
||||||
|
|
||||||
|
va_start (authors, version);
|
||||||
|
version_etc_va (stream, command_name, package, version, authors);
|
||||||
|
va_end (authors);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
emit_bug_reporting_address (void)
|
||||||
|
{
|
||||||
|
/* TRANSLATORS: The placeholder indicates the bug-reporting address
|
||||||
|
for this package. Please add _another line_ saying
|
||||||
|
"Report translation bugs to <...>\n" with the address for translation
|
||||||
|
bugs (typically your translation team's web or email address). */
|
||||||
|
printf (_("\nReport bugs to: %s\n"), PACKAGE_BUGREPORT);
|
||||||
|
#ifdef PACKAGE_PACKAGER_BUG_REPORTS
|
||||||
|
printf (_("Report %s bugs to: %s\n"), PACKAGE_PACKAGER,
|
||||||
|
PACKAGE_PACKAGER_BUG_REPORTS);
|
||||||
|
#endif
|
||||||
|
#ifdef PACKAGE_URL
|
||||||
|
printf (_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
|
||||||
|
#else
|
||||||
|
printf (_("%s home page: <http://www.gnu.org/software/%s/>\n"),
|
||||||
|
PACKAGE_NAME, PACKAGE);
|
||||||
|
#endif
|
||||||
|
fputs (_("General help using GNU software: <http://www.gnu.org/gethelp/>\n"),
|
||||||
|
stdout);
|
||||||
|
}
|
78
lib/version-etc.h
Normal file
78
lib/version-etc.h
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/* Print --version and bug-reporting information in a consistent format.
|
||||||
|
Copyright (C) 1999, 2003, 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* Written by Jim Meyering. */
|
||||||
|
|
||||||
|
#ifndef VERSION_ETC_H
|
||||||
|
# define VERSION_ETC_H 1
|
||||||
|
|
||||||
|
# include <stdarg.h>
|
||||||
|
# include <stdio.h>
|
||||||
|
|
||||||
|
/* The `sentinel' attribute was added in gcc 4.0. */
|
||||||
|
#ifndef ATTRIBUTE_SENTINEL
|
||||||
|
# if 4 <= __GNUC__
|
||||||
|
# define ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__))
|
||||||
|
# else
|
||||||
|
# define ATTRIBUTE_SENTINEL /* empty */
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern const char version_etc_copyright[];
|
||||||
|
|
||||||
|
/* The three functions below display the --version information in the
|
||||||
|
standard way: command and package names, package version, followed
|
||||||
|
by a short GPLv3+ notice and a list of up to 10 author names.
|
||||||
|
|
||||||
|
If COMMAND_NAME is NULL, the PACKAGE is asumed to be the name of
|
||||||
|
the program. The formats are therefore:
|
||||||
|
|
||||||
|
PACKAGE VERSION
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
COMMAND_NAME (PACKAGE) VERSION.
|
||||||
|
|
||||||
|
The functions differ in the way they are passed author names: */
|
||||||
|
|
||||||
|
/* N_AUTHORS names are supplied in array AUTHORS. */
|
||||||
|
extern void version_etc_arn (FILE *stream,
|
||||||
|
const char *command_name, const char *package,
|
||||||
|
const char *version,
|
||||||
|
const char * const * authors, size_t n_authors);
|
||||||
|
|
||||||
|
/* Names are passed in the NULL-terminated array AUTHORS. */
|
||||||
|
extern void version_etc_ar (FILE *stream,
|
||||||
|
const char *command_name, const char *package,
|
||||||
|
const char *version, const char * const * authors);
|
||||||
|
|
||||||
|
/* Names are passed in the NULL-terminated va_list. */
|
||||||
|
extern void version_etc_va (FILE *stream,
|
||||||
|
const char *command_name, const char *package,
|
||||||
|
const char *version, va_list authors);
|
||||||
|
|
||||||
|
/* Names are passed as separate arguments, with an additional
|
||||||
|
NULL argument at the end. */
|
||||||
|
extern void version_etc (FILE *stream,
|
||||||
|
const char *command_name, const char *package,
|
||||||
|
const char *version,
|
||||||
|
/* const char *author1, ..., NULL */ ...)
|
||||||
|
ATTRIBUTE_SENTINEL;
|
||||||
|
|
||||||
|
/* Display the usual `Report bugs to' stanza */
|
||||||
|
extern void emit_bug_reporting_address (void);
|
||||||
|
|
||||||
|
#endif /* VERSION_ETC_H */
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
/* Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public License
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
* as published by the Free Software Foundation; either version 3 of
|
* as published by the Free Software Foundation; either version 3 of
|
||||||
|
@ -26,6 +26,8 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#include <version-etc.h>
|
||||||
|
|
||||||
#include "libguile/_scm.h"
|
#include "libguile/_scm.h"
|
||||||
#include "libguile/eval.h"
|
#include "libguile/eval.h"
|
||||||
#include "libguile/feature.h"
|
#include "libguile/feature.h"
|
||||||
|
@ -358,13 +360,13 @@ scm_shell_usage (int fatal, char *message)
|
||||||
if (message)
|
if (message)
|
||||||
fprintf (fp, "%s\n", message);
|
fprintf (fp, "%s\n", message);
|
||||||
|
|
||||||
fprintf (fp,
|
fprintf (fp,
|
||||||
"Usage: %s OPTION ...\n"
|
"Usage: %s [OPTION]... [FILE]...\n"
|
||||||
"Evaluate Scheme code, interactively or from a script.\n"
|
"Evaluate Scheme code, interactively or from a script.\n"
|
||||||
"\n"
|
"\n"
|
||||||
" [-s] FILE load Scheme source code from FILE, and exit\n"
|
" [-s] FILE load Scheme source code from FILE, and exit\n"
|
||||||
" -c EXPR evalute Scheme expression EXPR, and exit\n"
|
" -c EXPR evalute Scheme expression EXPR, and exit\n"
|
||||||
" -- stop scanning arguments; run interactively\n"
|
" -- stop scanning arguments; run interactively\n\n"
|
||||||
"The above switches stop argument processing, and pass all\n"
|
"The above switches stop argument processing, and pass all\n"
|
||||||
"remaining arguments as the value of (command-line).\n"
|
"remaining arguments as the value of (command-line).\n"
|
||||||
"If FILE begins with `-' the -s switch is mandatory.\n"
|
"If FILE begins with `-' the -s switch is mandatory.\n"
|
||||||
|
@ -388,11 +390,11 @@ scm_shell_usage (int fatal, char *message)
|
||||||
" which is a list of numbers like \"2,13,14\"\n"
|
" which is a list of numbers like \"2,13,14\"\n"
|
||||||
" -h, --help display this help and exit\n"
|
" -h, --help display this help and exit\n"
|
||||||
" -v, --version display version information and exit\n"
|
" -v, --version display version information and exit\n"
|
||||||
" \\ read arguments from following script lines\n"
|
" \\ read arguments from following script lines\n",
|
||||||
"\n"
|
|
||||||
"Please report bugs to bug-guile@gnu.org\n",
|
|
||||||
scm_usage_name);
|
scm_usage_name);
|
||||||
|
|
||||||
|
emit_bug_reporting_address ();
|
||||||
|
|
||||||
if (fatal)
|
if (fatal)
|
||||||
exit (fatal);
|
exit (fatal);
|
||||||
}
|
}
|
||||||
|
@ -656,13 +658,9 @@ scm_compile_shell_switches (int argc, char **argv)
|
||||||
|| ! strcmp (argv[i], "--version"))
|
|| ! strcmp (argv[i], "--version"))
|
||||||
{
|
{
|
||||||
/* Print version number. */
|
/* Print version number. */
|
||||||
printf ("Guile %s\n"
|
version_etc (stdout, scm_usage_name, PACKAGE_NAME, PACKAGE_VERSION,
|
||||||
"Copyright (c) 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation\n"
|
/* XXX: Use gettext for the string below. */
|
||||||
"Guile may be distributed under the terms of the GNU General Public Licence;\n"
|
"the Guile developers", NULL);
|
||||||
"certain other uses are permitted as well. For details, see the file\n"
|
|
||||||
"`COPYING', which is included in the Guile distribution.\n"
|
|
||||||
"There is no warranty, to the extent permitted by law.\n",
|
|
||||||
scm_to_locale_string (scm_version ()));
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# environ.m4 serial 2
|
# environ.m4 serial 3
|
||||||
dnl Copyright (C) 2001-2004, 2006-2009 Free Software Foundation, Inc.
|
dnl Copyright (C) 2001-2004, 2006-2009 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
AC_DEFUN([gl_ENVIRON],
|
AC_DEFUN_ONCE([gl_ENVIRON],
|
||||||
[
|
[
|
||||||
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
||||||
dnl Persuade glibc <unistd.h> to declare environ.
|
dnl Persuade glibc <unistd.h> to declare environ.
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
|
|
||||||
# Specification in the form of a command-line invocation:
|
# Specification in the form of a command-line invocation:
|
||||||
# gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl --libtool --macro-prefix=gl --no-vc-files alignof alloca-opt autobuild byteswap canonicalize-lgpl environ extensions flock fpieee full-read full-write havelib iconv_open-utf inet_ntop inet_pton lib-symbol-versions lib-symbol-visibility libunistring putenv stdlib strcase strftime striconveh string verify vsnprintf warnings
|
# gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=3 --libtool --macro-prefix=gl --no-vc-files alignof alloca-opt autobuild byteswap canonicalize-lgpl environ extensions flock fpieee full-read full-write havelib iconv_open-utf inet_ntop inet_pton lib-symbol-versions lib-symbol-visibility libunistring putenv stdlib strcase strftime striconveh string verify version-etc-fsf vsnprintf warnings
|
||||||
|
|
||||||
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
||||||
gl_LOCAL_DIR([])
|
gl_LOCAL_DIR([])
|
||||||
|
@ -45,6 +45,7 @@ gl_MODULES([
|
||||||
striconveh
|
striconveh
|
||||||
string
|
string
|
||||||
verify
|
verify
|
||||||
|
version-etc-fsf
|
||||||
vsnprintf
|
vsnprintf
|
||||||
warnings
|
warnings
|
||||||
])
|
])
|
||||||
|
@ -55,7 +56,7 @@ gl_PO_BASE([])
|
||||||
gl_DOC_BASE([doc])
|
gl_DOC_BASE([doc])
|
||||||
gl_TESTS_BASE([tests])
|
gl_TESTS_BASE([tests])
|
||||||
gl_LIB([libgnu])
|
gl_LIB([libgnu])
|
||||||
gl_LGPL
|
gl_LGPL([3])
|
||||||
gl_MAKEFILE_NAME([])
|
gl_MAKEFILE_NAME([])
|
||||||
gl_LIBTOOL
|
gl_LIBTOOL
|
||||||
gl_MACRO_PREFIX([gl])
|
gl_MACRO_PREFIX([gl])
|
||||||
|
|
|
@ -29,6 +29,11 @@ AC_DEFUN([gl_EARLY],
|
||||||
AB_INIT
|
AB_INIT
|
||||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||||
AC_REQUIRE([gl_FP_IEEE])
|
AC_REQUIRE([gl_FP_IEEE])
|
||||||
|
dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
|
||||||
|
dnl for the builtin va_copy to work. With Autoconf 2.60 or later,
|
||||||
|
dnl AC_PROG_CC_STDC arranges for this. With older Autoconf AC_PROG_CC_STDC
|
||||||
|
dnl shouldn't hurt, though installers are on their own to set c99 mode.
|
||||||
|
AC_REQUIRE([AC_PROG_CC_STDC])
|
||||||
])
|
])
|
||||||
|
|
||||||
# This macro should be invoked from ./configure.ac, in the section
|
# This macro should be invoked from ./configure.ac, in the section
|
||||||
|
@ -58,6 +63,8 @@ AC_DEFUN([gl_INIT],
|
||||||
gl_FLOAT_H
|
gl_FLOAT_H
|
||||||
gl_FUNC_FLOCK
|
gl_FUNC_FLOCK
|
||||||
gl_HEADER_SYS_FILE_MODULE_INDICATOR([flock])
|
gl_HEADER_SYS_FILE_MODULE_INDICATOR([flock])
|
||||||
|
AC_SUBST([LIBINTL])
|
||||||
|
AC_SUBST([LTLIBINTL])
|
||||||
AM_ICONV
|
AM_ICONV
|
||||||
gl_ICONV_H
|
gl_ICONV_H
|
||||||
gl_FUNC_ICONV_OPEN
|
gl_FUNC_ICONV_OPEN
|
||||||
|
@ -101,6 +108,7 @@ AC_DEFUN([gl_INIT],
|
||||||
gt_TYPE_SSIZE_T
|
gt_TYPE_SSIZE_T
|
||||||
gl_FUNC_STAT
|
gl_FUNC_STAT
|
||||||
gl_SYS_STAT_MODULE_INDICATOR([stat])
|
gl_SYS_STAT_MODULE_INDICATOR([stat])
|
||||||
|
gl_STDARG_H
|
||||||
AM_STDBOOL_H
|
AM_STDBOOL_H
|
||||||
gl_STDDEF_H
|
gl_STDDEF_H
|
||||||
gl_STDINT_H
|
gl_STDINT_H
|
||||||
|
@ -128,6 +136,7 @@ AC_DEFUN([gl_INIT],
|
||||||
gl_MODULE_INDICATOR([unistr/u8-mbtoucr])
|
gl_MODULE_INDICATOR([unistr/u8-mbtoucr])
|
||||||
gl_MODULE_INDICATOR([unistr/u8-uctomb])
|
gl_MODULE_INDICATOR([unistr/u8-uctomb])
|
||||||
gl_FUNC_VASNPRINTF
|
gl_FUNC_VASNPRINTF
|
||||||
|
gl_VERSION_ETC
|
||||||
gl_FUNC_VSNPRINTF
|
gl_FUNC_VSNPRINTF
|
||||||
gl_STDIO_MODULE_INDICATOR([vsnprintf])
|
gl_STDIO_MODULE_INDICATOR([vsnprintf])
|
||||||
AC_SUBST([WARN_CFLAGS])
|
AC_SUBST([WARN_CFLAGS])
|
||||||
|
@ -286,6 +295,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
||||||
lib/full-read.h
|
lib/full-read.h
|
||||||
lib/full-write.c
|
lib/full-write.c
|
||||||
lib/full-write.h
|
lib/full-write.h
|
||||||
|
lib/gettext.h
|
||||||
lib/iconv.c
|
lib/iconv.c
|
||||||
lib/iconv.in.h
|
lib/iconv.in.h
|
||||||
lib/iconv_close.c
|
lib/iconv_close.c
|
||||||
|
@ -326,6 +336,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
||||||
lib/safe-write.h
|
lib/safe-write.h
|
||||||
lib/size_max.h
|
lib/size_max.h
|
||||||
lib/stat.c
|
lib/stat.c
|
||||||
|
lib/stdarg.in.h
|
||||||
lib/stdbool.in.h
|
lib/stdbool.in.h
|
||||||
lib/stddef.in.h
|
lib/stddef.in.h
|
||||||
lib/stdint.in.h
|
lib/stdint.in.h
|
||||||
|
@ -360,6 +371,9 @@ AC_DEFUN([gl_FILE_LIST], [
|
||||||
lib/vasnprintf.c
|
lib/vasnprintf.c
|
||||||
lib/vasnprintf.h
|
lib/vasnprintf.h
|
||||||
lib/verify.h
|
lib/verify.h
|
||||||
|
lib/version-etc-fsf.c
|
||||||
|
lib/version-etc.c
|
||||||
|
lib/version-etc.h
|
||||||
lib/vsnprintf.c
|
lib/vsnprintf.c
|
||||||
lib/wchar.in.h
|
lib/wchar.in.h
|
||||||
lib/write.c
|
lib/write.c
|
||||||
|
@ -424,6 +438,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
||||||
m4/sockpfaf.m4
|
m4/sockpfaf.m4
|
||||||
m4/ssize_t.m4
|
m4/ssize_t.m4
|
||||||
m4/stat.m4
|
m4/stat.m4
|
||||||
|
m4/stdarg.m4
|
||||||
m4/stdbool.m4
|
m4/stdbool.m4
|
||||||
m4/stddef_h.m4
|
m4/stddef_h.m4
|
||||||
m4/stdint.m4
|
m4/stdint.m4
|
||||||
|
@ -442,6 +457,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
||||||
m4/tm_gmtoff.m4
|
m4/tm_gmtoff.m4
|
||||||
m4/unistd_h.m4
|
m4/unistd_h.m4
|
||||||
m4/vasnprintf.m4
|
m4/vasnprintf.m4
|
||||||
|
m4/version-etc.m4
|
||||||
m4/visibility.m4
|
m4/visibility.m4
|
||||||
m4/vsnprintf.m4
|
m4/vsnprintf.m4
|
||||||
m4/warnings.m4
|
m4/warnings.m4
|
||||||
|
|
67
m4/stdarg.m4
Normal file
67
m4/stdarg.m4
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
# stdarg.m4 serial 3
|
||||||
|
dnl Copyright (C) 2006, 2008-2009 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl From Bruno Haible.
|
||||||
|
dnl Provide a working va_copy in combination with <stdarg.h>.
|
||||||
|
|
||||||
|
AC_DEFUN([gl_STDARG_H],
|
||||||
|
[
|
||||||
|
STDARG_H=''; AC_SUBST([STDARG_H])
|
||||||
|
NEXT_STDARG_H='<stdarg.h>'; AC_SUBST([NEXT_STDARG_H])
|
||||||
|
AC_MSG_CHECKING([for va_copy])
|
||||||
|
AC_CACHE_VAL([gl_cv_func_va_copy], [
|
||||||
|
AC_TRY_COMPILE([#include <stdarg.h>], [
|
||||||
|
#ifndef va_copy
|
||||||
|
void (*func) (va_list, va_list) = va_copy;
|
||||||
|
#endif
|
||||||
|
],
|
||||||
|
[gl_cv_func_va_copy=yes], [gl_cv_func_va_copy=no])])
|
||||||
|
AC_MSG_RESULT([$gl_cv_func_va_copy])
|
||||||
|
if test $gl_cv_func_va_copy = no; then
|
||||||
|
dnl Provide a substitute.
|
||||||
|
dnl Usually a simple definition in <config.h> is enough. Not so on AIX 5
|
||||||
|
dnl with some versions of the /usr/vac/bin/cc compiler. It has an <stdarg.h>
|
||||||
|
dnl which does '#undef va_copy', leading to a missing va_copy symbol. For
|
||||||
|
dnl this platform, we use an <stdarg.h> substitute. But we cannot use this
|
||||||
|
dnl approach on other platforms, because <stdarg.h> often defines only
|
||||||
|
dnl preprocessor macros and gl_ABSOLUTE_HEADER, gl_CHECK_NEXT_HEADERS do
|
||||||
|
dnl not work in this situation.
|
||||||
|
AC_EGREP_CPP([vaccine],
|
||||||
|
[#if defined _AIX && !defined __GNUC__
|
||||||
|
AIX vaccine
|
||||||
|
#endif
|
||||||
|
], [gl_aixcc=yes], [gl_aixcc=no])
|
||||||
|
if test $gl_aixcc = yes; then
|
||||||
|
dnl Provide a substitute <stdarg.h> file.
|
||||||
|
STDARG_H=stdarg.h
|
||||||
|
gl_CHECK_NEXT_HEADERS([stdarg.h])
|
||||||
|
dnl Fallback for the case when <stdarg.h> contains only macro definitions.
|
||||||
|
if test "$gl_cv_next_stdarg_h" = '""'; then
|
||||||
|
gl_cv_next_stdarg_h='"///usr/include/stdarg.h"'
|
||||||
|
NEXT_STDARG_H="$gl_cv_next_stdarg_h"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dnl Provide a substitute in <config.h>, either __va_copy or as a simple
|
||||||
|
dnl assignment.
|
||||||
|
gl_CACHE_VAL_SILENT([gl_cv_func___va_copy], [
|
||||||
|
AC_TRY_COMPILE([#include <stdarg.h>], [
|
||||||
|
#ifndef __va_copy
|
||||||
|
error, bail out
|
||||||
|
#endif
|
||||||
|
],
|
||||||
|
[gl_cv_func___va_copy=yes], [gl_cv_func___va_copy=no])])
|
||||||
|
if test $gl_cv_func___va_copy = yes; then
|
||||||
|
AC_DEFINE([va_copy], [__va_copy],
|
||||||
|
[Define as a macro for copying va_list variables.])
|
||||||
|
else
|
||||||
|
AH_VERBATIM([gl_VA_COPY], [/* A replacement for va_copy, if needed. */
|
||||||
|
#define gl_va_copy(a,b) ((a) = (b))])
|
||||||
|
AC_DEFINE([va_copy], [gl_va_copy],
|
||||||
|
[Define as a macro for copying va_list variables.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
|
@ -80,6 +80,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
|
||||||
REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
|
REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
|
||||||
REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
|
REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
|
||||||
REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH])
|
REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH])
|
||||||
|
REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV])
|
||||||
REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD])
|
REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD])
|
||||||
VOID_UNSETENV=0; AC_SUBST([VOID_UNSETENV])
|
REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV])
|
||||||
])
|
])
|
||||||
|
|
33
m4/version-etc.m4
Normal file
33
m4/version-etc.m4
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# version-etc.m4 serial 1
|
||||||
|
# Copyright (C) 2009 Free Software Foundation, Inc.
|
||||||
|
# This file is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl $1 - configure flag and define name
|
||||||
|
dnl $2 - human readable description
|
||||||
|
m4_define([gl_VERSION_ETC_FLAG],
|
||||||
|
[dnl
|
||||||
|
AC_ARG_WITH([$1], [AS_HELP_STRING([--with-$1], [$2])],
|
||||||
|
[dnl
|
||||||
|
case $withval in
|
||||||
|
yes|no) ;;
|
||||||
|
*) AC_DEFINE_UNQUOTED(AS_TR_CPP([PACKAGE_$1]), ["$withval"], [$2]) ;;
|
||||||
|
esac
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([gl_VERSION_ETC],
|
||||||
|
[dnl
|
||||||
|
gl_VERSION_ETC_FLAG([packager],
|
||||||
|
[String identifying the packager of this software])
|
||||||
|
gl_VERSION_ETC_FLAG([packager-version],
|
||||||
|
[Packager-specific version information])
|
||||||
|
gl_VERSION_ETC_FLAG([packager-bug-reports],
|
||||||
|
[Packager info for bug reports (URL/e-mail/...)])
|
||||||
|
if test "X$with_packager" = "X" && \
|
||||||
|
test "X$with_packager_version$with_packager_bug_reports" != "X"
|
||||||
|
then
|
||||||
|
AC_MSG_ERROR([The --with-packager-{bug-reports,version} options require --with-packager])
|
||||||
|
fi
|
||||||
|
])
|
Loading…
Add table
Add a link
Reference in a new issue