gss-commit
[Top][All Lists]
Advanced

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

[SCM] GNU gss branch, master, updated. gss-1-0-0-4-ge9f580a


From: Simon Josefsson
Subject: [SCM] GNU gss branch, master, updated. gss-1-0-0-4-ge9f580a
Date: Tue, 13 Apr 2010 08:12:05 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gss".

http://git.savannah.gnu.org/cgit/gss.git/commit/?id=e9f580ab010a3540490d676d0883357a3f72ab25

The branch, master has been updated
       via  e9f580ab010a3540490d676d0883357a3f72ab25 (commit)
       via  7e089993d839682b1e1fa09fdef4d061ccdbacb2 (commit)
      from  d0431aaca86a0564a9e14c408d89acacb4f8a2a6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e9f580ab010a3540490d676d0883357a3f72ab25
Author: Simon Josefsson <address@hidden>
Date:   Tue Apr 13 10:09:45 2010 +0200

    Update gnulib files and fix new syntax-check warnings.

commit 7e089993d839682b1e1fa09fdef4d061ccdbacb2
Author: Simon Josefsson <address@hidden>
Date:   Tue Apr 13 10:08:46 2010 +0200

    Sync with TP.

-----------------------------------------------------------------------

Summary of changes:
 .x-sc_prohibit_empty_lines_at_EOF                  |    3 +
 ...bit_cvs_keyword => .x-sc_prohibit_test_minus_ao |    0
 GNUmakefile                                        |    6 +-
 NEWS                                               |    4 +
 build-aux/c++defs.h                                |   18 +
 build-aux/warn-on-use.h                            |    9 +-
 doc/reference/Makefile.am                          |    1 -
 gl/m4/gnulib-common.m4                             |   21 +-
 gl/m4/gnulib-comp.m4                               |    5 +-
 gl/m4/gnulib-comp.m4~                              |    5 +
 gl/m4/lib-link.m4                                  |   14 +-
 lib/gl/Makefile.am                                 |    6 +-
 lib/gl/m4/gnulib-common.m4                         |   21 +-
 lib/gl/m4/gnulib-comp.m4                           |    5 +-
 lib/gl/m4/string_h.m4                              |   14 +-
 lib/gl/string.in.h                                 |   54 ++-
 maint.mk                                           |  488 +++++++++++++-------
 po/fi.po.in                                        |  122 ++++--
 po/id.po.in                                        |  109 +++--
 po/pl.po.in                                        |  173 ++++---
 po/vi.po.in                                        |  112 +++--
 src/gl/Makefile.am                                 |    3 +-
 src/gl/getopt.in.h                                 |    4 +-
 src/gl/m4/gnulib-common.m4                         |   21 +-
 src/gl/m4/gnulib-comp.m4                           |    5 +-
 src/gl/m4/unistd_h.m4                              |    5 +-
 src/gl/stdarg.in.h                                 |    4 +-
 src/gl/unistd.in.h                                 |   19 +-
 28 files changed, 829 insertions(+), 422 deletions(-)
 create mode 100644 .x-sc_prohibit_empty_lines_at_EOF
 copy .x-sc_prohibit_cvs_keyword => .x-sc_prohibit_test_minus_ao (100%)

diff --git a/.x-sc_prohibit_empty_lines_at_EOF 
b/.x-sc_prohibit_empty_lines_at_EOF
new file mode 100644
index 0000000..332f17f
--- /dev/null
+++ b/.x-sc_prohibit_empty_lines_at_EOF
@@ -0,0 +1,3 @@
+^COPYING
+^doc/fdl-1.3.texi
+^tests/krb5context.tkt
diff --git a/.x-sc_prohibit_cvs_keyword b/.x-sc_prohibit_test_minus_ao
similarity index 100%
copy from .x-sc_prohibit_cvs_keyword
copy to .x-sc_prohibit_test_minus_ao
diff --git a/GNUmakefile b/GNUmakefile
index 40ccc06..daba47a 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -49,7 +49,7 @@ include $(srcdir)/maint.mk
 
 # Allow cfg.mk to override these.
 _build-aux ?= build-aux
-_autoreconf ?= autoreconf
+_autoreconf ?= autoreconf -v
 
 # Ensure that $(VERSION) is up to date for dist-related targets, but not
 # for others: rerunning autoreconf and recompiling everything isn't cheap.
@@ -78,7 +78,8 @@ ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL))
           $(info run '$(MAKE) _version' to fix it)
         else
           $(info INFO: running autoreconf for new version string: $(_curr-ver))
-          _dummy := $(shell $(MAKE) $(AM_MAKEFLAGS) _version)
+GNUmakefile: _version
+       touch GNUmakefile
         endif
       endif
     endif
@@ -88,6 +89,7 @@ endif
 .PHONY: _version
 _version:
        cd $(srcdir) && rm -rf autom4te.cache .version && $(_autoreconf)
+       $(MAKE) $(AM_MAKEFLAGS) Makefile
 
 else
 
diff --git a/NEWS b/NEWS
index 2dc2d7e..eb0592f 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,10 @@ See the end for copying conditions.
 
 * Version 1.0.1 (unreleased)
 
+** Update gnulib files.
+
+** i18n: Translations were updated.
+
 ** API and ABI modifications.
 No changes since last version.
 
diff --git a/build-aux/c++defs.h b/build-aux/c++defs.h
index 31b29c2..7d71089 100644
--- a/build-aux/c++defs.h
+++ b/build-aux/c++defs.h
@@ -126,6 +126,24 @@
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #endif
 
+/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
+   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
+   except that the C function rpl_func may have a slightly different
+   declaration.  A cast is used to silence the "invalid conversion" error
+   that would otherwise occur.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+    namespace GNULIB_NAMESPACE                                     \
+    {                                                              \
+      rettype (*const func) parameters =                           \
+        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
+    }                                                              \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
    declares a C++ alias called GNULIB_NAMESPACE::func
    that redirects to the system provided function func, if GNULIB_NAMESPACE
diff --git a/build-aux/warn-on-use.h b/build-aux/warn-on-use.h
index 1cd5062..171e599 100644
--- a/build-aux/warn-on-use.h
+++ b/build-aux/warn-on-use.h
@@ -67,7 +67,10 @@
 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
 #  define _GL_WARN_ON_USE(function, message) \
 extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
-
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function.  */
+#  define _GL_WARN_ON_USE(function, message) \
+extern __typeof__ (function) function
 # else /* Unsupported.  */
 #  define _GL_WARN_ON_USE(function, message) \
 _GL_WARN_EXTERN_C int _gl_warn_on_use
@@ -85,6 +88,10 @@ _GL_WARN_EXTERN_C int _gl_warn_on_use
 #  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
 extern rettype function parameters_and_attributes \
      __attribute__ ((__warning__ (msg)))
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function.  */
+#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes
 # else /* Unsupported.  */
 #  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
 _GL_WARN_EXTERN_C int _gl_warn_on_use
diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am
index dd5c728..0725723 100644
--- a/doc/reference/Makefile.am
+++ b/doc/reference/Makefile.am
@@ -85,4 +85,3 @@ EXTRA_DIST +=
 
 # Comment this out if you want your docs-status tested during 'make check'
 #TESTS = $(GTKDOC_CHECK)
-
diff --git a/gl/m4/gnulib-common.m4 b/gl/m4/gnulib-common.m4
index f8e32e3..54b2517 100644
--- a/gl/m4/gnulib-common.m4
+++ b/gl/m4/gnulib-common.m4
@@ -1,4 +1,4 @@
-# gnulib-common.m4 serial 17
+# gnulib-common.m4 serial 19
 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -48,7 +48,9 @@ AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1])
 # a C preprocessor expression that will evaluate to 1.
 AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
 [
-  
GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
+  GNULIB_[]m4_translit([[$1]],
+    [abcdefghijklmnopqrstuvwxyz./-],
+    [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
 ])
 
 # gl_MODULE_INDICATOR([modulename])
@@ -65,9 +67,12 @@ AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
 # --------------------------------------------+---------+-----------+
 AC_DEFUN([gl_MODULE_INDICATOR],
 [
-  
AC_DEFINE_UNQUOTED([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
+  AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
     [gl_MODULE_INDICATOR_CONDITION],
-    [Define to a C preprocessor expression that evaluates to 1 or 0, depending 
whether the gnulib module ]$1[ shall be considered present.])
+    [Define to a C preprocessor expression that evaluates to 1 or 0,
+     depending whether the gnulib module $1 shall be considered present.])
 ])
 
 # gl_MODULE_INDICATOR_FOR_TESTS([modulename])
@@ -85,8 +90,10 @@ AC_DEFUN([gl_MODULE_INDICATOR],
 # --------------------------------------------+---------+-----------+
 AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
 [
-  
AC_DEFINE([GNULIB_TEST_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
 [1],
-    [Define to 1 when the gnulib module ]$1[ should be tested.])
+  AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+    [Define to 1 when the gnulib module $1 should be tested.])
 ])
 
 # m4_foreach_w
@@ -125,6 +132,7 @@ m4_ifdef([AC_PROG_MKDIR_P], [
 # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
 # works.
 # This definition can be removed once autoconf >= 2.62 can be assumed.
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
 AC_DEFUN([AC_C_RESTRICT],
 [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
   [ac_cv_c_restrict=no
@@ -162,6 +170,7 @@ AC_DEFUN([AC_C_RESTRICT],
    *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
  esac
 ])
+])
 
 # gl_BIGENDIAN
 # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
diff --git a/gl/m4/gnulib-comp.m4 b/gl/m4/gnulib-comp.m4
index ab99da1..8f00491 100644
--- a/gl/m4/gnulib-comp.m4
+++ b/gl/m4/gnulib-comp.m4
@@ -48,6 +48,7 @@ AC_DEFUN([gl_INIT],
 [
   AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
   gl_cond_libtool=true
+  gl_m4_base='gl/m4'
   m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
   m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
   m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
@@ -125,7 +126,9 @@ AC_DEFUN([gl_INIT],
   m4_pushdef([gltests_LIBSOURCES_DIR], [])
   gl_COMMON
   gl_source_base='gl/tests'
-  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr 'a-z' 
'A-Z' | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote(,)dnl
+  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr 
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 
's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote([, ])dnl
   AC_SUBST([gltests_WITNESS])
   gl_module_indicator_condition=$gltests_WITNESS
   m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
diff --git a/gl/m4/gnulib-comp.m4~ b/gl/m4/gnulib-comp.m4~
index ee74629..ab99da1 100644
--- a/gl/m4/gnulib-comp.m4~
+++ b/gl/m4/gnulib-comp.m4~
@@ -125,6 +125,11 @@ AC_DEFUN([gl_INIT],
   m4_pushdef([gltests_LIBSOURCES_DIR], [])
   gl_COMMON
   gl_source_base='gl/tests'
+  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr 'a-z' 
'A-Z' | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+  AC_SUBST([gltests_WITNESS])
+  gl_module_indicator_condition=$gltests_WITNESS
+  m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
+  m4_popdef([gl_MODULE_INDICATOR_CONDITION])
   m4_ifval(gltests_LIBSOURCES_LIST, [
     m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
       for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
diff --git a/gl/m4/lib-link.m4 b/gl/m4/lib-link.m4
index 90e1ac9..c73bd8e 100644
--- a/gl/m4/lib-link.m4
+++ b/gl/m4/lib-link.m4
@@ -1,4 +1,4 @@
-# lib-link.m4 serial 20 (gettext-0.18)
+# lib-link.m4 serial 21 (gettext-0.18)
 dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -74,7 +74,17 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
 
   AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
     ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIB[]NAME"
+    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+    dnl because these -l options might require -L options that are present in
+    dnl LIBS. -l options benefit only from the -L options listed before it.
+    dnl Otherwise, add it to the front of LIBS, because it may be a static
+    dnl library that depends on another static library that is present in LIBS.
+    dnl Static libraries benefit only from the static libraries listed after
+    dnl it.
+    case " $LIB[]NAME" in
+      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+      *)       LIBS="$LIB[]NAME $LIBS" ;;
+    esac
     AC_TRY_LINK([$3], [$4],
       [ac_cv_lib[]Name=yes],
       [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
diff --git a/lib/gl/Makefile.am b/lib/gl/Makefile.am
index a6d078e..6478a26 100644
--- a/lib/gl/Makefile.am
+++ b/lib/gl/Makefile.am
@@ -150,6 +150,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) 
$(WARN_ON_USE_H)
              -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
              -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
              -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNCAT''@|$(GNULIB_STRNCAT)|g' \
              -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
              -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
              -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
@@ -162,6 +163,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) 
$(WARN_ON_USE_H)
              -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
              < $(srcdir)/string.in.h | \
          sed -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+             -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
              -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
              -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
              -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
@@ -176,16 +178,18 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) 
$(WARN_ON_USE_H)
              -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
              -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
              -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
-             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
              -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
              -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
              -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
              -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
              -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
              -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
              -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
              -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
              -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+             -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
              -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
              -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
              -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
diff --git a/lib/gl/m4/gnulib-common.m4 b/lib/gl/m4/gnulib-common.m4
index f8e32e3..54b2517 100644
--- a/lib/gl/m4/gnulib-common.m4
+++ b/lib/gl/m4/gnulib-common.m4
@@ -1,4 +1,4 @@
-# gnulib-common.m4 serial 17
+# gnulib-common.m4 serial 19
 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -48,7 +48,9 @@ AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1])
 # a C preprocessor expression that will evaluate to 1.
 AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
 [
-  
GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
+  GNULIB_[]m4_translit([[$1]],
+    [abcdefghijklmnopqrstuvwxyz./-],
+    [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
 ])
 
 # gl_MODULE_INDICATOR([modulename])
@@ -65,9 +67,12 @@ AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
 # --------------------------------------------+---------+-----------+
 AC_DEFUN([gl_MODULE_INDICATOR],
 [
-  
AC_DEFINE_UNQUOTED([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
+  AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
     [gl_MODULE_INDICATOR_CONDITION],
-    [Define to a C preprocessor expression that evaluates to 1 or 0, depending 
whether the gnulib module ]$1[ shall be considered present.])
+    [Define to a C preprocessor expression that evaluates to 1 or 0,
+     depending whether the gnulib module $1 shall be considered present.])
 ])
 
 # gl_MODULE_INDICATOR_FOR_TESTS([modulename])
@@ -85,8 +90,10 @@ AC_DEFUN([gl_MODULE_INDICATOR],
 # --------------------------------------------+---------+-----------+
 AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
 [
-  
AC_DEFINE([GNULIB_TEST_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
 [1],
-    [Define to 1 when the gnulib module ]$1[ should be tested.])
+  AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+    [Define to 1 when the gnulib module $1 should be tested.])
 ])
 
 # m4_foreach_w
@@ -125,6 +132,7 @@ m4_ifdef([AC_PROG_MKDIR_P], [
 # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
 # works.
 # This definition can be removed once autoconf >= 2.62 can be assumed.
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
 AC_DEFUN([AC_C_RESTRICT],
 [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
   [ac_cv_c_restrict=no
@@ -162,6 +170,7 @@ AC_DEFUN([AC_C_RESTRICT],
    *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
  esac
 ])
+])
 
 # gl_BIGENDIAN
 # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
diff --git a/lib/gl/m4/gnulib-comp.m4 b/lib/gl/m4/gnulib-comp.m4
index 770ed4c..cb97bd3 100644
--- a/lib/gl/m4/gnulib-comp.m4
+++ b/lib/gl/m4/gnulib-comp.m4
@@ -44,6 +44,7 @@ AC_DEFUN([libgl_INIT],
 [
   AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
   gl_cond_libtool=true
+  gl_m4_base='lib/gl/m4'
   m4_pushdef([AC_LIBOBJ], m4_defn([libgl_LIBOBJ]))
   m4_pushdef([AC_REPLACE_FUNCS], m4_defn([libgl_REPLACE_FUNCS]))
   m4_pushdef([AC_LIBSOURCES], m4_defn([libgl_LIBSOURCES]))
@@ -109,7 +110,9 @@ AC_DEFUN([libgl_INIT],
   m4_pushdef([libgltests_LIBSOURCES_DIR], [])
   gl_COMMON
   gl_source_base='lib/gl/tests'
-  libgltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr 
'a-z' 'A-Z' | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote(,)dnl
+  libgltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr 
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 
's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote([, ])dnl
   AC_SUBST([libgltests_WITNESS])
   gl_module_indicator_condition=$libgltests_WITNESS
   m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
diff --git a/lib/gl/m4/string_h.m4 b/lib/gl/m4/string_h.m4
index 9ceeea9..1977aec 100644
--- a/lib/gl/m4/string_h.m4
+++ b/lib/gl/m4/string_h.m4
@@ -5,7 +5,7 @@
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 13
+# serial 17
 
 # Written by Paul Eggert.
 
@@ -26,8 +26,10 @@ AC_DEFUN([gl_HEADER_STRING_H_BODY],
   dnl corresponding gnulib module is not in use, and which is not
   dnl guaranteed by C89.
   gl_WARN_ON_USE_PREPARE([[#include <string.h>
-    ]], [memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup
-    strndup strnlen strpbrk strsep strcasestr strtok_r strsignal strverscmp])
+    ]],
+    [memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup
+     strncat strndup strnlen strpbrk strsep strcasestr strtok_r strsignal
+     strverscmp])
 ])
 
 AC_DEFUN([gl_STRING_MODULE_INDICATOR],
@@ -50,6 +52,7 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
   GNULIB_STPNCPY=0;     AC_SUBST([GNULIB_STPNCPY])
   GNULIB_STRCHRNUL=0;   AC_SUBST([GNULIB_STRCHRNUL])
   GNULIB_STRDUP=0;      AC_SUBST([GNULIB_STRDUP])
+  GNULIB_STRNCAT=0;     AC_SUBST([GNULIB_STRNCAT])
   GNULIB_STRNDUP=0;     AC_SUBST([GNULIB_STRNDUP])
   GNULIB_STRNLEN=0;     AC_SUBST([GNULIB_STRNLEN])
   GNULIB_STRPBRK=0;     AC_SUBST([GNULIB_STRPBRK])
@@ -76,6 +79,7 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
   GNULIB_STRVERSCMP=0;  AC_SUBST([GNULIB_STRVERSCMP])
   HAVE_MBSLEN=0;        AC_SUBST([HAVE_MBSLEN])
   dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_MEMCHR=1;                AC_SUBST([HAVE_MEMCHR])
   HAVE_DECL_MEMMEM=1;           AC_SUBST([HAVE_DECL_MEMMEM])
   HAVE_MEMPCPY=1;               AC_SUBST([HAVE_MEMPCPY])
   HAVE_DECL_MEMRCHR=1;          AC_SUBST([HAVE_DECL_MEMRCHR])
@@ -90,16 +94,18 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
   HAVE_STRSEP=1;                AC_SUBST([HAVE_STRSEP])
   HAVE_STRCASESTR=1;            AC_SUBST([HAVE_STRCASESTR])
   HAVE_DECL_STRTOK_R=1;         AC_SUBST([HAVE_DECL_STRTOK_R])
-  HAVE_DECL_STRERROR=1;         AC_SUBST([HAVE_DECL_STRERROR])
   HAVE_DECL_STRSIGNAL=1;        AC_SUBST([HAVE_DECL_STRSIGNAL])
   HAVE_STRVERSCMP=1;            AC_SUBST([HAVE_STRVERSCMP])
   REPLACE_MEMCHR=0;             AC_SUBST([REPLACE_MEMCHR])
   REPLACE_MEMMEM=0;             AC_SUBST([REPLACE_MEMMEM])
+  REPLACE_STPNCPY=0;            AC_SUBST([REPLACE_STPNCPY])
   REPLACE_STRDUP=0;             AC_SUBST([REPLACE_STRDUP])
   REPLACE_STRSTR=0;             AC_SUBST([REPLACE_STRSTR])
   REPLACE_STRCASESTR=0;         AC_SUBST([REPLACE_STRCASESTR])
   REPLACE_STRERROR=0;           AC_SUBST([REPLACE_STRERROR])
+  REPLACE_STRNCAT=0;            AC_SUBST([REPLACE_STRNCAT])
   REPLACE_STRNDUP=0;            AC_SUBST([REPLACE_STRNDUP])
+  REPLACE_STRNLEN=0;            AC_SUBST([REPLACE_STRNLEN])
   REPLACE_STRSIGNAL=0;          AC_SUBST([REPLACE_STRSIGNAL])
   REPLACE_STRTOK_R=0;           AC_SUBST([REPLACE_STRTOK_R])
   UNDEFINE_STRTOK_R=0;          AC_SUBST([UNDEFINE_STRTOK_R])
diff --git a/lib/gl/string.in.h b/lib/gl/string.in.h
index cd12fb5..13c0f09 100644
--- a/lib/gl/string.in.h
+++ b/lib/gl/string.in.h
@@ -16,12 +16,12 @@
    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_STRING_H
+
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
 
-#ifndef _GL_STRING_H
-
 /* The include_next requires a split double-inclusion guard.  */
 address@hidden@ @NEXT_STRING_H@
 
@@ -66,6 +66,11 @@ _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, 
size_t __n)
                                   _GL_ARG_NONNULL ((1)));
 _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n));
 # else
+#  if ! @HAVE_MEMCHR@
+_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n)
+                                  __attribute__ ((__pure__))
+                                  _GL_ARG_NONNULL ((1)));
+#  endif
   /* On some systems, this function is defined as an overloaded function:
        extern "C" { const void * std::memchr (const void *, int, size_t); }
        extern "C++" { void * std::memchr (void *, int, size_t); }  */
@@ -222,7 +227,7 @@ _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
 /* Copy no more than N bytes of SRC to DST, returning a pointer past the
    last non-NUL byte written into DST.  */
 #if @GNULIB_STPNCPY@
-# if ! @HAVE_STPNCPY@
+# if @REPLACE_STPNCPY@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define stpncpy rpl_stpncpy
 #  endif
@@ -234,6 +239,12 @@ _GL_CXXALIAS_RPL (stpncpy, char *,
                   (char *restrict __dst, char const *restrict __src,
                    size_t __n));
 # else
+#  if ! @HAVE_STPNCPY@
+_GL_FUNCDECL_SYS (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
 _GL_CXXALIAS_SYS (stpncpy, char *,
                   (char *restrict __dst, char const *restrict __src,
                    size_t __n));
@@ -309,6 +320,28 @@ _GL_WARN_ON_USE (strdup, "strdup is unportable - "
 # endif
 #endif
 
+/* Append no more than N characters from SRC onto DEST.  */
+#if @GNULIB_STRNCAT@
+# if @REPLACE_STRNCAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strncat
+#   define strncat rpl_strncat
+#  endif
+_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n)
+                                   _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n));
+# else
+_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n));
+# endif
+_GL_CXXALIASWARN (strncat);
+#elif defined GNULIB_POSIXCHECK
+# undef strncat
+# if HAVE_RAW_DECL_STRNCAT
+_GL_WARN_ON_USE (strncat, "strncat is unportable - "
+                 "use gnulib module strncat for portability");
+# endif
+#endif
+
 /* Return a newly allocated copy of at most N bytes of STRING.  */
 #if @GNULIB_STRNDUP@
 # if @REPLACE_STRNDUP@
@@ -339,12 +372,23 @@ _GL_WARN_ON_USE (strndup, "strndup is unportable - "
    MAXLEN bytes.  If no '\0' terminator is found in that many bytes,
    return MAXLEN.  */
 #if @GNULIB_STRNLEN@
-# if ! @HAVE_DECL_STRNLEN@
+# if @REPLACE_STRNLEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strnlen
+#   define strnlen rpl_strnlen
+#  endif
+_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)
+                                   __attribute__ ((__pure__))
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen));
+# else
+#  if ! @HAVE_DECL_STRNLEN@
 _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)
                                    __attribute__ ((__pure__))
                                    _GL_ARG_NONNULL ((1)));
-# endif
+#  endif
 _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen));
+# endif
 _GL_CXXALIASWARN (strnlen);
 #elif defined GNULIB_POSIXCHECK
 # undef strnlen
diff --git a/maint.mk b/maint.mk
index d633188..6942730 100644
--- a/maint.mk
+++ b/maint.mk
@@ -129,8 +129,23 @@ sc_m_rules_ = $(patsubst %, %.m, $(syntax-check-rules))
 .PHONY: $(sc_m_rules_)
 $(sc_m_rules_):
        @echo $(patsubst sc_%.m, %, $@)
-
-local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
+       @date +%s.%N > .sc-start-$(basename $@)
+
+# Compute and print the elapsed time for each syntax-check rule.
+sc_z_rules_ = $(patsubst %, %.z, $(syntax-check-rules))
+.PHONY: $(sc_z_rules_)
+$(sc_z_rules_): %.z: %
+       @end=$$(date +%s.%N);                                           \
+       start=$$(cat .sc-start-$*);                                     \
+       rm -f .sc-start-$*;                                             \
+       awk -v s=$$start -v e=$$end                                     \
+         'END {printf "%.2f $(patsubst sc_%,%,$*)\n", e - s}' < /dev/null
+
+# The patsubst here is to replace each sc_% rule with its sc_%.z wrapper
+# that computes and prints elapsed time.
+local-check :=                                                         \
+  $(patsubst sc_%, sc_%.z,                                             \
+    $(filter-out $(local-checks-to-skip), $(local-checks-available)))
 
 syntax-check: $(local-check)
 #      @grep -nE '#  *include <(limits|std(def|arg|bool))\.h>'         \
@@ -144,19 +159,104 @@ syntax-check: $(local-check)
 #          exit 1; } || :
 # FIXME: don't allow `#include .strings\.h' anywhere
 
-# By default, _prohibit_regexp does not ignore case.
+# _sc_search_regexp
+#
+# This macro searches for a given construct in the selected files and
+# then takes some action.
+#
+# Parameters (shell variables):
+#
+#  prohibit | require
+#
+#     Regular expression (ERE) denoting either a forbidden construct
+#     or a required construct.  Those arguments are exclusive.
+#
+#  in_vc_files | in_files
+#
+#     grep-E-style regexp denoting the files to check.  If no files
+#     are specified the default are all the files that are under
+#     version control.
+#
+#  containing | non_containing
+#
+#     Select the files (non) containing strings matching this regexp.
+#     If both arguments are specified then CONTAINING takes
+#     precedence.
+#
+#  with_grep_options
+#
+#     Extra options for grep.
+#
+#  ignore_case
+#
+#     Ignore case.
+#
+#  halt
+#
+#     Message to display before to halting execution.
+
+# By default, _sc_search_regexp does not ignore case.
 export ignore_case =
 _ignore_case = $$(test -n "$$ignore_case" && echo -i || :)
 
-# There are many rules below that prohibit constructs in this package.
-# If the offending construct can be matched with a grep-E-style regexp,
-# use this macro.  The shell variables "re" and "msg" must be defined.
-define _prohibit_regexp
-  dummy=; : so we do not need a semicolon before each use;             \
-  test "x$$re" != x || { echo '$(ME): re not defined' 1>&2; exit 1; }; \
-  test "x$$msg" != x || { echo '$(ME): msg not defined' 1>&2; exit 1; };\
-  grep $(_ignore_case) -nE "$$re" $$($(VC_LIST_EXCEPT)) &&             \
-    { echo '$(ME): '"$$msg" 1>&2; exit 1; } || :
+define _sc_say_and_exit
+   dummy=; : so we do not need a semicolon before each use;            \
+   { echo -e "$(ME): $$msg" 1>&2; exit 1; };
+endef
+
+# _sc_search_regexp used to be named _prohibit_regexp.  However,
+# upgrading to the new definition and leaving the old name undefined
+# would usually convert each custom rule using $(_prohibit_regexp)
+# (usually defined in cfg.mk) into a no-op.  This definition ensures
+# that people know right away if they're still using the old name.
+# FIXME: remove in 2012.
+_prohibit_regexp = \
+  $(error '*** you need to s/_prohibit_regexp/_sc_search_regexp/, and adapt')
+
+define _sc_search_regexp
+   dummy=; : so we do not need a semicolon before each use;            \
+                                                                       \
+   : Check arguments;                                                  \
+   test -n "$$prohibit" && test -n "$$require"                         \
+     && { msg='Cannot specify both prohibit and require'               \
+          $(_sc_say_and_exit) } || :;                                  \
+   test -z "$$prohibit" && test -z "$$require"                         \
+     && { msg='Should specify either prohibit or require'              \
+          $(_sc_say_and_exit) } || :;                                  \
+   test -n "$$in_vc_files" && test -n "$$in_files"                     \
+     && { msg='Cannot specify both in_vc_files and in_files'           \
+          $(_sc_say_and_exit) } || :;                                  \
+   test "x$$halt" != x                                                 \
+     || { msg='halt not defined' $(_sc_say_and_exit) };                        
\
+                                                                       \
+   : Filter by file name;                                              \
+   if test -n "$$in_files"; then                                       \
+     files=$$(find $(srcdir) | grep -E "$$in_files");                  \
+   else                                                                        
\
+     files=$$($(VC_LIST_EXCEPT));                                      \
+     if test -n "$$in_vc_files"; then                                  \
+       files=$$(echo "$$files" | grep -E "$$in_vc_files");             \
+     fi;                                                               \
+   fi;                                                                 \
+                                                                       \
+   : Filter by content;                                                        
\
+   test -n "$$files" && test -n "$$containing"                         \
+     && { files=$$(grep -l "$$containing" $$files); } || :;            \
+   test -n "$$files" && test -n "$$non_containing"                     \
+     && { files=$$(grep -vl "$$non_containing" $$files); } || :;       \
+                                                                       \
+   : Check for the construct;                                          \
+   if test -n "$$files"; then                                          \
+     if test -n "$$prohibit"; then                                     \
+       grep $$with_grep_options $(_ignore_case) -nE "$$prohibit" $$files \
+         && { msg="$$halt" $(_sc_say_and_exit) } || :;                 \
+     else                                                              \
+       grep $$with_grep_options $(_ignore_case) -LE "$$require" $$files \
+           | grep .                                                    \
+         && { msg="$$halt" $(_sc_say_and_exit) } || :;                 \
+     fi                                                                        
\
+   else :;                                                             \
+   fi || :;
 endef
 
 sc_avoid_if_before_free:
@@ -167,29 +267,31 @@ sc_avoid_if_before_free:
            exit 1; } || :
 
 sc_cast_of_argument_to_free:
-       @re='\<free *\( *\(' msg='don'\''t cast free argument'          \
-         $(_prohibit_regexp)
+       @prohibit='\<free *\( *\(' halt='don'\''t cast free argument'   \
+         $(_sc_search_regexp)
 
 sc_cast_of_x_alloc_return_value:
-       @re='\*\) *x(m|c|re)alloc\>'                                    \
-       msg='don'\''t cast x*alloc return value'                        \
-         $(_prohibit_regexp)
+       @prohibit='\*\) *x(m|c|re)alloc\>'                              \
+       halt='don'\''t cast x*alloc return value'                       \
+         $(_sc_search_regexp)
 
 sc_cast_of_alloca_return_value:
-       @re='\*\) *alloca\>' msg='don'\''t cast alloca return value'    \
-         $(_prohibit_regexp)
+       @prohibit='\*\) *alloca\>'                                      \
+       halt='don'\''t cast alloca return value'                        \
+         $(_sc_search_regexp)
 
 sc_space_tab:
-       @re='[ ]        ' msg='found SPACE-TAB sequence; remove the SPACE' \
-         $(_prohibit_regexp)
+       @prohibit='[ ]  '                                               \
+       halt='found SPACE-TAB sequence; remove the SPACE'               \
+         $(_sc_search_regexp)
 
 # Don't use *scanf or the old ato* functions in `real' code.
 # They provide no error checking mechanism.
 # Instead, use strto* functions.
 sc_prohibit_atoi_atof:
-       @re='\<([fs]?scanf|ato([filq]|ll)) *\('                         \
-       msg='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q' \
-         $(_prohibit_regexp)
+       @prohibit='\<([fs]?scanf|ato([filq]|ll)) *\('                           
\
+       halt='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q'   
\
+         $(_sc_search_regexp)
 
 # Use STREQ rather than comparing strcmp == 0, or != 0.
 sc_prohibit_strcmp:
@@ -210,28 +312,29 @@ sc_prohibit_strcmp:
 #  | xargs --no-run-if-empty \
 #      perl -pi -e 's/(^|[^.])\b(exit ?)\(0\)/$1$2(EXIT_SUCCESS)/'
 sc_prohibit_magic_number_exit:
-       @re='(^|[^.])\<(usage|exit) ?\([0-9]|\<error ?\([1-9][0-9]*,'   \
-       msg='use EXIT_* values rather than magic number'                \
-         $(_prohibit_regexp)
+       @prohibit='(^|[^.])\<(usage|exit) ?\([0-9]|\<error ?\([1-9][0-9]*,'     
\
+       halt='use EXIT_* values rather than magic number'                       
\
+         $(_sc_search_regexp)
 
 # Using EXIT_SUCCESS as the first argument to error is misleading,
 # since when that parameter is 0, error does not exit.  Use `0' instead.
 sc_error_exit_success:
-       @grep -nE 'error \(EXIT_SUCCESS,'                               \
-           $$($(VC_LIST_EXCEPT) | grep -E '\.[chly]$$') &&             \
-         { echo '$(ME): found error (EXIT_SUCCESS' 1>&2; exit 1; } || :
+       @prohibit='error *\(EXIT_SUCCESS,'                              \
+       in_vc_files='\.[chly]$$'                                        \
+       halt='found error (EXIT_SUCCESS'                                \
+        $(_sc_search_regexp)
 
 # `FATAL:' should be fully upper-cased in error messages
 # `WARNING:' should be fully upper-cased, or fully lower-cased
 sc_error_message_warn_fatal:
-       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+       @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT))              \
            | grep -E '"Warning|"Fatal|"fatal' &&                       \
          { echo '$(ME): use FATAL, WARNING or warning' 1>&2;           \
            exit 1; } || :
 
 # Error messages should not start with a capital letter
 sc_error_message_uppercase:
-       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+       @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT))              \
            | grep -E '"[A-Z]'                                          \
            | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' &&           \
          { echo '$(ME): found capitalized error message' 1>&2;         \
@@ -239,35 +342,32 @@ sc_error_message_uppercase:
 
 # Error messages should not end with a period
 sc_error_message_period:
-       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+       @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT))              \
            | grep -E '[^."]\."' &&                                     \
          { echo '$(ME): found error message ending in period' 1>&2;    \
            exit 1; } || :
 
 sc_file_system:
-       @re=file''system ignore_case=1                                  \
-       msg='found use of "file''system"; spell it "file system"'       \
-         $(_prohibit_regexp)
+       @prohibit=file''system                                          \
+       ignore_case=1                                                   \
+       halt='found use of "file''system"; spell it "file system"'      \
+         $(_sc_search_regexp)
 
 # Don't use cpp tests of this symbol.  All code assumes config.h is included.
 sc_prohibit_have_config_h:
-       @grep -n '^# *if.*HAVE''_CONFIG_H' $$($(VC_LIST_EXCEPT)) &&     \
-         { echo '$(ME): found use of HAVE''_CONFIG_H; remove'          \
-               1>&2; exit 1; } || :
+       @prohibit='^# *if.*HAVE''_CONFIG_H'                             \
+       halt='found use of HAVE''_CONFIG_H; remove'                     \
+         $(_sc_search_regexp)
 
 # Nearly all .c files must include <config.h>.  However, we also permit this
 # via inclusion of a package-specific header, if cfg.mk specified one.
 # config_h_header must be suitable for grep -E.
 config_h_header ?= <config\.h>
 sc_require_config_h:
-       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
-         grep -EL '^# *include $(config_h_header)'                     \
-               $$($(VC_LIST_EXCEPT) | grep '\.c$$')                    \
-             | grep . &&                                               \
-         { echo '$(ME): the above files do not include <config.h>'     \
-               1>&2; exit 1; } || :;                                   \
-       else :;                                                         \
-       fi
+       @require='^# *include $(config_h_header)'                       \
+       in_vc_files='\.c$$'                                             \
+       halt='the above files do not include <config.h>'                \
+         $(_sc_search_regexp)
 
 # You must include <config.h> before including any other header file.
 # This can possibly be via a package-specific header, if given by cfg.mk.
@@ -286,13 +386,14 @@ sc_require_config_h_first:
        fi
 
 sc_prohibit_HAVE_MBRTOWC:
-       @re='\bHAVE_MBRTOWC\b' msg="do not use $$re; it is always defined" \
-         $(_prohibit_regexp)
+       @prohibit='\bHAVE_MBRTOWC\b'                                    \
+       halt="do not use $$prohibit; it is always defined"              \
+         $(_sc_search_regexp)
 
 # To use this "command" macro, you must first define two shell variables:
 # h: the header, enclosed in <> or ""
 # re: a regular expression that matches IFF something provided by $h is used.
-define _header_without_use
+define _sc_header_without_use
   dummy=; : so we do not need a semicolon before each use;             \
   h_esc=`echo "$$h"|sed 's/\./\\\\./g'`;                               \
   if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then             \
@@ -307,49 +408,49 @@ endef
 
 # Prohibit the inclusion of assert.h without an actual use of assert.
 sc_prohibit_assert_without_use:
-       @h='<assert.h>' re='\<assert *\(' $(_header_without_use)
+       @h='<assert.h>' re='\<assert *\(' $(_sc_header_without_use)
 
 # Prohibit the inclusion of close-stream.h without an actual use.
 sc_prohibit_close_stream_without_use:
-       @h='"close-stream.h"' re='\<close_stream *\(' $(_header_without_use)
+       @h='"close-stream.h"' re='\<close_stream *\(' $(_sc_header_without_use)
 
 # Prohibit the inclusion of getopt.h without an actual use.
 sc_prohibit_getopt_without_use:
-       @h='<getopt.h>' re='\<getopt(_long)? *\(' $(_header_without_use)
+       @h='<getopt.h>' re='\<getopt(_long)? *\(' $(_sc_header_without_use)
 
 # Don't include quotearg.h unless you use one of its functions.
 sc_prohibit_quotearg_without_use:
-       @h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_header_without_use)
+       @h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_sc_header_without_use)
 
 # Don't include quote.h unless you use one of its functions.
 sc_prohibit_quote_without_use:
-       @h='"quote.h"' re='\<quote(_n)? *\(' $(_header_without_use)
+       @h='"quote.h"' re='\<quote(_n)? *\(' $(_sc_header_without_use)
 
 # Don't include this header unless you use one of its functions.
 sc_prohibit_long_options_without_use:
        @h='"long-options.h"' re='\<parse_long_options *\(' \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 # Don't include this header unless you use one of its functions.
 sc_prohibit_inttostr_without_use:
        @h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 # Don't include this header unless you use one of its functions.
 sc_prohibit_ignore_value_without_use:
        @h='"ignore-value.h"' re='\<ignore_(value|ptr) *\(' \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 # Don't include this header unless you use one of its functions.
 sc_prohibit_error_without_use:
        @h='"error.h"' \
        re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? 
*\('\
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 # Don't include xalloc.h unless you use one of its functions.
 # Consider these symbols:
 # perl -lne '/^# *define (\w+)\(/ and print $1' lib/xalloc.h|grep -v '^__';
-# perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) \(/ and print $1' 
lib/xalloc.h
+# perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' 
lib/xalloc.h
 # Divide into two sets on case, and filter each through this:
 # | sort | perl -MRegexp::Assemble -le \
 #  'print Regexp::Assemble->new(file => "/dev/stdin")->as_string'|sed 
's/\?://g'
@@ -367,10 +468,10 @@ _xa2 = X([CZ]|N?M)ALLOC
 sc_prohibit_xalloc_without_use:
        @h='"xalloc.h"' \
        re='\<($(_xa1)|$(_xa2)) *\('\
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 # Extract function names:
-# perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) \(/ and print $1' lib/hash.h
+# perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' lib/hash.h
 _hash_re = \
 clear|delete|free|get_(first|next)|insert|lookup|print_statistics|reset_tuning
 _hash_fn = \<($(_hash_re)) *\(
@@ -378,42 +479,43 @@ _hash_struct = (struct )?\<[Hh]ash_(table|tuning)\>
 sc_prohibit_hash_without_use:
        @h='"hash.h"' \
        re='$(_hash_fn)|$(_hash_struct)'\
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 sc_prohibit_hash_pjw_without_use:
        @h='"hash-pjw.h"' \
        re='\<hash_pjw *\(' \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 sc_prohibit_safe_read_without_use:
        @h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 sc_prohibit_argmatch_without_use:
        @h='"argmatch.h"' \
        
re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid)
 *\()' \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 sc_prohibit_canonicalize_without_use:
        @h='"canonicalize.h"' \
        
re='CAN_(EXISTING|ALL_BUT_LAST|MISSING)|canonicalize_(mode_t|filename_mode)' \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 sc_prohibit_root_dev_ino_without_use:
        @h='"root-dev-ino.h"' \
        re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 sc_prohibit_openat_without_use:
        @h='"openat.h"' \
        
re='\<(openat_(permissive|needs_fchdir|(save|restore)_fail)|l?(stat|ch(own|mod))at|(euid)?accessat)\>'
 \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 # Prohibit the inclusion of c-ctype.h without an actual use.
 ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
 |isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
 sc_prohibit_c_ctype_without_use:
-       @h='[<"]c-ctype.h[">]' re='\<c_($(ctype_re)) *\(' $(_header_without_use)
+       @h='[<"]c-ctype.h[">]' re='\<c_($(ctype_re)) *\(' \
+         $(_sc_header_without_use)
 
 _empty =
 _sp = $(_empty) $(_empty)
@@ -450,7 +552,7 @@ _sig_syms_re = $(subst $(_sp),|,$(strip $(_sig_names) 
$(_sig_types_and_consts)))
 sc_prohibit_signal_without_use:
        @h='<signal.h>'                                                 \
        re='\<($(_sig_function_re)) *\(|\<($(_sig_syms_re))\>'          \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 # Get the list of symbol names with this:
 # perl -lne '/^# *define (\w+)\(/ and print $1' lib/intprops.h|grep -v '^s'|fmt
@@ -463,35 +565,30 @@ _intprops_syms_re = $(subst $(_sp),|,$(strip 
$(_intprops_names)))
 sc_prohibit_intprops_without_use:
        @h='"intprops.h"'                                               \
        re='\<($(_intprops_syms_re)) *\('                               \
-         $(_header_without_use)
+         $(_sc_header_without_use)
 
 sc_obsolete_symbols:
-       @re='\<(HAVE''_FCNTL_H|O''_NDELAY)\>'                           \
-       msg='do not use HAVE''_FCNTL_H or O'_NDELAY                     \
-         $(_prohibit_regexp)
+       @prohibit='\<(HAVE''_FCNTL_H|O''_NDELAY)\>'                     \
+       halt='do not use HAVE''_FCNTL_H or O'_NDELAY                    \
+         $(_sc_search_regexp)
 
 # FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
 
 # Each nonempty ChangeLog line must start with a year number, or a TAB.
 sc_changelog:
-       @if $(VC_LIST_EXCEPT) | grep -l '^ChangeLog$$' >/dev/null; then \
-         grep -n '^[^12        ]'                                      \
-           $$($(VC_LIST_EXCEPT) | grep '^ChangeLog$$') &&              \
-         { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2;  \
-           exit 1; } || :;                                             \
-       fi
+       @prohibit='^[^12        ]'                                      \
+       in_vc_files='^ChangeLog$$'                                      \
+       halt='found unexpected prefix in a ChangeLog'                   \
+         $(_sc_search_regexp)
 
 # Ensure that each .c file containing a "main" function also
 # calls set_program_name.
 sc_program_name:
-       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
-         files=$$(grep -l '^main *(' $$($(VC_LIST_EXCEPT) | grep '\.c$$')); \
-         grep -LE 'set_program_name *\(m?argv\[0\]\);' $$files         \
-             | grep . &&                                               \
-         { echo '$(ME): the above files do not call set_program_name'  \
-               1>&2; exit 1; } || :;                                   \
-       else :;                                                         \
-       fi
+       @require='set_program_name *\(m?argv\[0\]\);'                   \
+       in_vc_files='\.c$$'                                             \
+       containing='^main *('                                           \
+       halt='the above files do not call set_program_name'             \
+         $(_sc_search_regexp)
 
 # Require that the final line of each test-lib.sh-using test be this one:
 # Exit $fail
@@ -513,31 +610,30 @@ sc_require_test_exit_idiom:
        fi
 
 sc_the_the:
-       @re='\<the ''the\>'                                             \
-       ignore_case=1 msg='found use of "the ''the";'                   \
-         $(_prohibit_regexp)
+       @prohibit='\<the ''the\>'                                       \
+       ignore_case=1                                                   \
+       halt='found use of "the ''the";'                                \
+         $(_sc_search_regexp)
 
 sc_trailing_blank:
-       @re='[   ]$$'                                                   \
-       msg='found trailing blank(s)'                                   \
-         $(_prohibit_regexp)
+       @prohibit='[     ]$$'                                           \
+       halt='found trailing blank(s)'                                  \
+         $(_sc_search_regexp)
 
 # Match lines like the following, but where there is only one space
 # between the options and the description:
 #   -D, --all-repeated[=delimit-method]  print all duplicate lines\n
 longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
 sc_two_space_separator_in_usage:
-       @grep -nE '^   *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$'         \
-           $$($(VC_LIST_EXCEPT)) &&                                    \
-         { echo "$(ME): help2man requires at least two spaces between"; \
-           echo "$(ME): an option and its description";                \
-               1>&2; exit 1; } || :
+       @prohibit='^   *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$'         \
+       halt='help2man requires at least two spaces between an option and its 
description'\
+         $(_sc_search_regexp)
 
 # Look for diagnostics that aren't marked for translation.
 # This won't find any for which error's format string is on a separate line.
 sc_unmarked_diagnostics:
        @grep -nE                                                       \
-           '\<error \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT))       \
+           '\<error *\([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT))      \
          | grep -v '_''(' &&                                           \
          { echo '$(ME): found unmarked diagnostic(s)' 1>&2;            \
            exit 1; } || :
@@ -545,61 +641,96 @@ sc_unmarked_diagnostics:
 # Avoid useless parentheses like those in this example:
 # #if defined (SYMBOL) || defined (SYM2)
 sc_useless_cpp_parens:
-       @grep -n '^# *if .*defined *(' $$($(VC_LIST_EXCEPT)) &&         \
-         { echo '$(ME): found useless parentheses in cpp directive'    \
-               1>&2; exit 1; } || :
+       @prohibit='^# *if .*defined *\('                                \
+       halt='found useless parentheses in cpp directive'               \
+         $(_sc_search_regexp)
 
 # Require the latest GPL.
 sc_GPL_version:
-       @re='either ''version [^3]' msg='GPL vN, N!=3'                  \
-         $(_prohibit_regexp)
+       @prohibit='either ''version [^3]'                               \
+       halt='GPL vN, N!=3'                                             \
+         $(_sc_search_regexp)
 
 # Require the latest GFDL.  Two regexp, since some .texi files end up
 # line wrapping between 'Free Documentation License,' and 'Version'.
 _GFDL_regexp = (Free ''Documentation.*Version 1\.[^3]|Version 1\.[^3] or any)
 sc_GFDL_version:
-       @re='$(_GFDL_regexp)' msg='GFDL vN, N!=3'                       \
-         $(_prohibit_regexp)
+       @prohibit='$(_GFDL_regexp)'                                     \
+       halt='GFDL vN, N!=3'                                            \
+         $(_sc_search_regexp)
 
 # Don't use Texinfo @acronym{} as it is not a good idea.
 sc_texinfo_acronym:
-       @if $(VC_LIST_EXCEPT) | grep -lE '\.texi$$' >/dev/null; then    \
-               grep -nE '@acronym{'                                    \
-                       $$($(VC_LIST_EXCEPT) | grep -E '\.texi$$') &&   \
-         { echo '$(ME): found use of Texinfo @acronym{}' 1>&2;         \
-           exit 1; } || :;                                             \
-       else :;                                                         \
-       fi
+       @prohibit='@acronym{'                                           \
+       in_vc_files='\.texi$$'                                          \
+       halt='found use of Texinfo @acronym{}'                          \
+         $(_sc_search_regexp)
 
 cvs_keywords = \
   Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State
 
 sc_prohibit_cvs_keyword:
-       @re='\$$($(cvs_keywords))\$$'                                   \
-           msg='do not use CVS keyword expansion'                      \
-         $(_prohibit_regexp)
+       @prohibit='\$$($(cvs_keywords))\$$'                             \
+       halt='do not use CVS keyword expansion'                         \
+         $(_sc_search_regexp)
+
+# This Perl code is slightly obfuscated.  Not only is each "$" doubled
+# because it's in a Makefile, but the $$c's are comments;  we cannot
+# use "#" due to the way the script ends up concatenated onto one line.
+# It would be much more concise, and would produce better output (including
+# counts) if written as:
+#   perl -ln -0777 -e '/\n(\n+)$/ and print "$ARGV: ".length $1' ...
+# but that would be far less efficient, reading the entire contents
+# of each file, rather than just the last two bytes of each.
+#
+# This is a perl script that is expected to be the single-quoted argument
+# to a command-line "-le".  The remaining arguments are file names.
+# Print the name of each file that ends in two or more newline bytes.
+# Exit nonzero if at least one such file is found, otherwise, exit 0.
+# Warn about, but otherwise ignore open failure.  Ignore seek/read failure.
+#
+# Use this if you want to remove trailing empty lines from selected files:
+#   perl -pi -0777 -e 's/\n\n+$/\n/' files...
+#
+detect_empty_lines_at_EOF_ =                                           \
+  foreach my $$f (@ARGV) {                                             \
+    open F, "<", $$f or (warn "failed to open $$f: $$!\n"), next;      \
+    my $$p = sysseek (F, -2, 2);                                       \
+    my $$c = "seek failure probably means file has < 2 bytes; ignore"; \
+    my $$two;                                                          \
+    defined $$p and $$p = sysread F, $$two, 2;                         \
+    close F;                                                           \
+    $$c = "ignore read failure";                                       \
+    $$p && $$two eq "\n\n" and (print $$f), $$fail=1;                  \
+    } END { exit defined $$fail }
+sc_prohibit_empty_lines_at_EOF:
+       @perl -le '$(detect_empty_lines_at_EOF_)' $$($(VC_LIST_EXCEPT)) \
+          || { echo '$(ME): the above files end with empty line(s)'     \
+               1>&2; exit 1; } || :;                                   \
 
 # Make sure we don't use st_blocks.  Use ST_NBLOCKS instead.
 # This is a bit of a kludge, since it prevents use of the string
 # even in comments, but for now it does the job with no false positives.
 sc_prohibit_stat_st_blocks:
-       @re='[.>]st_blocks' msg='do not use st_blocks; use ST_NBLOCKS'  \
-         $(_prohibit_regexp)
+       @prohibit='[.>]st_blocks'                                       \
+       halt='do not use st_blocks; use ST_NBLOCKS'                     \
+         $(_sc_search_regexp)
 
 # Make sure we don't define any S_IS* macros in src/*.c files.
 # They're already defined via gnulib's sys/stat.h replacement.
 sc_prohibit_S_IS_definition:
-       @re='^ *# *define  *S_IS'                                       \
-       msg='do not define S_IS* macros; include <sys/stat.h>'          \
-         $(_prohibit_regexp)
+       @prohibit='^ *# *define  *S_IS'                                 \
+       halt='do not define S_IS* macros; include <sys/stat.h>'         \
+         $(_sc_search_regexp)
 
 _ptm1 = use "test C1 && test C2", not "test C1 -''a C2"
 _ptm2 = use "test C1 || test C2", not "test C1 -''o C2"
 # Using test's -a and -o operators is not portable.
+# We prefer test over [, since the latter is spelled [[ in configure.ac.
 sc_prohibit_test_minus_ao:
-       @re='\<test .+ -[ao] '                                          \
-       msg='$(_ptm1); $(_ptm2)'                                                
\
-         $(_prohibit_regexp)
+       @prohibit='(\<test| \[+) .+ -[ao] '                             \
+       halt='$(_ptm1); $(_ptm2)'                                       \
+         $(_sc_search_regexp)
 
 # Each program that uses proper_name_utf8 must link with one of the
 # ICONV libraries.  Otherwise, some ICONV library must appear in LDADD.
@@ -627,9 +758,9 @@ sc_proper_name_utf8_requires_ICONV:
 # Warn about "c0nst struct Foo const foo[]",
 # but not about "char const *const foo" or "#define const const".
 sc_redundant_const:
-       @re='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b'                \
-       msg='redundant "const" in declarations'                         \
-         $(_prohibit_regexp)
+       @prohibit='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b'          \
+       halt='redundant "const" in declarations'                        \
+         $(_sc_search_regexp)
 
 sc_const_long_option:
        @grep '^ *static.*struct option ' $$($(VC_LIST_EXCEPT))         \
@@ -683,16 +814,16 @@ news-check: NEWS
        fi
 
 sc_makefile_TAB_only_indentation:
-       @grep -nE '^    [ ]{8}'                                         \
-           $$($(VC_LIST_EXCEPT) | grep -E 'akefile|\.mk$$')            \
-         && { echo '$(ME): found TAB-8-space indentation' 1>&2;        \
-              exit 1; } || :
+       @prohibit='^    [ ]{8}'                                         \
+       in_vc_files='akefile|\.mk$$'                                    \
+       halt='found TAB-8-space indentation'                            \
+         $(_sc_search_regexp)
 
 sc_m4_quote_check:
-       @grep -nE '(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]'              \
-           $$($(VC_LIST_EXCEPT) | grep -E '(^configure\.ac|\.m4)$$')   \
-         && { echo '$(ME): quote the first arg to AC_DEF*' 1>&2;       \
-              exit 1; } || :
+       @prohibit='(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]'              \
+       in_vc_files='(^configure\.ac|\.m4)$$'                           \
+       halt='quote the first arg to AC_DEF*'                           \
+         $(_sc_search_regexp)
 
 fix_po_file_diag = \
 'you have changed the set of files with translatable diagnostics;\n\
@@ -731,9 +862,10 @@ sc_po_check:
 # path separator of `:', but rather the automake-provided `$(PATH_SEPARATOR)'.
 msg = '$(ME): Do not use `:'\'' above; use $$(PATH_SEPARATOR) instead'
 sc_makefile_path_separator_check:
-       @grep -nE 'PATH[=].*:'                                          \
-           $$($(VC_LIST_EXCEPT) | grep -E 'akefile|\.mk$$')            \
-         && { echo $(msg) 1>&2; exit 1; } || :
+       @prohibit='PATH[=].*:'                                          \
+       in_vc_files='akefile|\.mk$$'                                    \
+       halt=$(msg)                                                     \
+         $(_sc_search_regexp)
 
 # Check that `make alpha' will not fail at the end of the process.
 writable-files:
@@ -753,23 +885,41 @@ texi = doc/$(PACKAGE).texi
 # Make sure that the copyright date in $(v_etc_file) is up to date.
 # Do the same for the $(sample-test) and the main doc/.texi file.
 sc_copyright_check:
-       @if test -f $(v_etc_file); then                                 \
-         grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
-           >/dev/null                                                  \
-         || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
-              exit 1; };                                               \
-       fi
-       @if test -f $(sample-test); then                                \
-         grep '# Copyright (C) '$$(date +%Y)' Free' $(sample-test)     \
-           >/dev/null                                                  \
-         || { echo 'out of date copyright in $(sample-test); update it' 1>&2; \
-              exit 1; };                                               \
-       fi
-       @if test -f $(texi); then                                       \
-         grep 'Copyright @copyright{} .*'$$(date +%Y)' Free' $(texi)   \
-           >/dev/null                                                  \
-         || { echo 'out of date copyright in $(texi); update it' 1>&2; \
-              exit 1; };                                               \
+       @require='enum { COPYRIGHT_YEAR = '$$(date +%Y)' };'            \
+       in_files=$(v_etc_file)                                          \
+       halt='out of date copyright in $(v_etc_file); update it'        \
+         $(_sc_search_regexp)
+       @require='# Copyright \(C\) '$$(date +%Y)' Free'                \
+       in_vc_files=$(sample-test)                                      \
+       halt='out of date copyright in $(sample-test); update it'       \
+         $(_sc_search_regexp)
+       @require='Copyright @copyright\{\} .*'$$(date +%Y)' Free'       \
+       in_vc_files=$(texi)                                             \
+       halt='out of date copyright in $(texi); update it'              \
+         $(_sc_search_regexp)
+
+# If tests/help-version exists and seems to be new enough, assume that its
+# use of init.sh and path_prepend_ is correct, and ensure that every other
+# use of init.sh is identical.
+# This is useful because help-version cross-checks prog --version
+# with $(VERSION), which verifies that its path_prepend_ invocation
+# sets PATH correctly.  This is an inexpensive way to ensure that
+# the other init.sh-using tests also get it right.
+_hv_file ?= $(srcdir)/tests/help-version
+_hv_regex ?= ^ *\. [^ ]*/init\.sh
+sc_cross_check_PATH_usage_in_tests:
+       @if test -f $(_hv_file); then                                   \
+         if grep -l 'VERSION mismatch' $(_hv_file) >/dev/null          \
+             && grep -lE '$(_hv_regex)' $(_hv_file) >/dev/null; then   \
+           good=$$(grep -E '$(_hv_regex)' < $(_hv_file));              \
+           grep -LFx "$$good"                                          \
+                 $$(grep -lE '$(_hv_regex)' $$($(VC_LIST_EXCEPT)))     \
+               | grep . &&                                             \
+             { echo "$(ME): the above files use path_prepend_ inconsistently" \
+                 1>&2; exit 1; } || :;                                 \
+         fi;                                                           \
+       else                                                            \
+         echo "$@: skipped: no such file: $(_hv_file)";                \
        fi
 
 # #if HAVE_... will evaluate to false for any non numeric string.
@@ -777,22 +927,18 @@ sc_copyright_check:
 # tests many undefined macros, and so we can't enable that option.
 # So at least preclude common boolean strings as macro values.
 sc_Wundef_boolean:
-       @test -e '$(CONFIG_INCLUDE)' &&                                 \
-          grep -Ei '^#define.*(yes|no|true|false)$$' '$(CONFIG_INCLUDE)' && \
-            { echo 'Use 0 or 1 for macro values' 1>&2; exit 1; } || :
+       @prohibit='^#define.*(yes|no|true|false)$$'                     \
+       in_files='$(CONFIG_INCLUDE)'                                    \
+       halt='Use 0 or 1 for macro values'                              \
+         $(_sc_search_regexp)
 
 sc_vulnerable_makefile_CVE-2009-4029:
-       @files=$$(find $(srcdir) -name Makefile.in);                    \
-       if test -n "$$files"; then                                      \
-         grep -E                                                       \
-           'perm -777 -exec chmod a\+rwx|chmod 777 \$$\(distdir\)'     \
-           $$files &&                                                  \
-         { echo '$(ME): the above files are vulnerable; beware of'     \
-           'running "make dist*" rules, and upgrade to fixed automake' \
-           'see http://bugzilla.redhat.com/542609 for details'         \
-               1>&2; exit 1; } || :;                                   \
-       else :;                                                         \
-       fi
+       @prohibit='perm -777 -exec chmod a\+rwx|chmod 777 \$$\(distdir\)' \
+       in_files=$$(find $(srcdir) -name Makefile.in)                   \
+       halt='the above files are vulnerable; beware of running\n'\
+'"make dist*" rules, and upgrade to fixed automake\n'\
+'see http://bugzilla.redhat.com/542609 for details'                    \
+         $(_sc_search_regexp)
 
 vc-diff-check:
        (unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || :
diff --git a/po/fi.po.in b/po/fi.po.in
index 19185fc..7406142 100644
--- a/po/fi.po.in
+++ b/po/fi.po.in
@@ -2,14 +2,14 @@
 # Copyright © 2009 Free Software Foundation, Inc.
 # Copyright © 2009 Simon Josefsson
 # This file is distributed under the same license as the gss package.
-# Jorma Karvonen <address@hidden>, 2009.
+# Jorma Karvonen <address@hidden>, 2009, 2010.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gss 0.0.24\n"
+"Project-Id-Version: gss 0.1.5\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2008-09-10 13:16+0200\n"
-"PO-Revision-Date: 2009-10-15 10:42+0200\n"
+"POT-Creation-Date: 2010-03-22 10:38+0100\n"
+"PO-Revision-Date: 2010-03-25 11:19+0200\n"
 "Last-Translator: Jorma Karvonen <address@hidden>\n"
 "Language-Team: Finnish <address@hidden>\n"
 "MIME-Version: 1.0\n"
@@ -17,6 +17,10 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: lib/meta.c:43
+msgid "Kerberos V5 GSS-API mechanism"
+msgstr "Kerberos V5 GSS-API -mekanismi"
+
 #: lib/error.c:43
 msgid "A required input parameter could not be read"
 msgstr "Vaadittua syöteparametriä ei voitu lukea"
@@ -121,99 +125,123 @@ msgstr "Jälkimmäinen merkkijono on jo prosessoitu"
 msgid "An expected per-message token was not received"
 msgstr "Odotettua merkkijonokohtaista viestiä ei ole vastaanotettu"
 
-#: lib/error.c:298
+#: lib/error.c:318
 msgid "No error"
 msgstr "Ei virhettä"
 
-#: lib/krb5/error.c:41
+#: lib/krb5/error.c:42
 msgid "No @ in SERVICE-NAME name string"
 msgstr "Ei @-merkkiä PALVELU-NIMI-nimimerkkijonossa"
 
-#: lib/krb5/error.c:43
+#: lib/krb5/error.c:44
 msgid "STRING-UID-NAME contains nondigits"
 msgstr "MERKKIJONO-UID-NIMI-merkkijono sisältää muutakin kuin numeroita"
 
-#: lib/krb5/error.c:45
+#: lib/krb5/error.c:46
 msgid "UID does not resolve to username"
 msgstr "UID ei ratkaise käyttäjänimeä"
 
-#: lib/krb5/error.c:47
+#: lib/krb5/error.c:48
 msgid "Validation error"
 msgstr "Kelpuutusvirhe"
 
-#: lib/krb5/error.c:49
+#: lib/krb5/error.c:50
 msgid "Couldn't allocate gss_buffer_t data"
 msgstr "Ei voitu varata gss_buffer_t-dataa"
 
-#: lib/krb5/error.c:51
+#: lib/krb5/error.c:52
 msgid "Message context invalid"
 msgstr "Viestikonteksi on virheellinen"
 
-#: lib/krb5/error.c:53
+#: lib/krb5/error.c:54
 msgid "Buffer is the wrong size"
 msgstr "Puskuri on väärän kokoinen"
 
-#: lib/krb5/error.c:55
+#: lib/krb5/error.c:56
 msgid "Credential usage type is unknown"
 msgstr "Valtuustiedon käyttötyyppi on tuntematon"
 
-#: lib/krb5/error.c:57
+#: lib/krb5/error.c:58
 msgid "Unknown quality of protection specified"
 msgstr "Tuntematon suojelutaso määritelty"
 
 #  security principal on entiteetti, joka on todennettu
-#: lib/krb5/error.c:60
+#: lib/krb5/error.c:61
 msgid "Principal in credential cache does not match desired name"
 msgstr "Todennettu entiteetti valtuustietovälimuistissa ei täsmännyt 
halutun nimen kanssa"
 
-#: lib/krb5/error.c:62
+#: lib/krb5/error.c:63
 msgid "No principal in keytab matches desired name"
 msgstr "Yksikään todennettu entiteetti keytab-tiedostossa ei täsmännyt 
halutun nimen kanssa"
 
 #  TGT = Ticket-Granting Ticket on sanoma B, jonka todennuspalvelin 
lähettää asiakkaalle client authentication -menettelyssä.
-#: lib/krb5/error.c:64
+#: lib/krb5/error.c:65
 msgid "Credential cache has no TGT"
 msgstr "Valtuustietovälimuistissa ei ole Ticket-Granting Ticket-sanomaa 
todennuspalvelimelta"
 
-#: lib/krb5/error.c:66
+#: lib/krb5/error.c:67
 msgid "Authenticator has no subkey"
 msgstr "Todentajalla ei ole aliavainta"
 
-#: lib/krb5/error.c:68
+#: lib/krb5/error.c:69
 msgid "Context is already fully established"
 msgstr "Konteksi on jo täysin perustettu"
 
-#: lib/krb5/error.c:70
+#: lib/krb5/error.c:71
 msgid "Unknown signature type in token"
 msgstr "Tuntematon allekirjoitustyyppi merkkijonossa"
 
-#: lib/krb5/error.c:72
+#: lib/krb5/error.c:73
 msgid "Invalid field length in token"
 msgstr "Virheellinen kenttäpituus merkkijonossa"
 
-#: lib/krb5/error.c:74
+#: lib/krb5/error.c:75
 msgid "Attempt to use incomplete security context"
 msgstr "Yritys käyttää vaillinaista turvakonteksia"
 
-#: lib/krb5/error.c:91
+#: lib/krb5/error.c:92
 msgid "No krb5 error"
 msgstr "Ei krb5-virhettä"
 
-#: lib/krb5/error.c:120
+#: lib/krb5/error.c:133
 msgid "Unknown krb5 error"
 msgstr "Tuntematon krb5-virhe"
 
-#: src/gss.c:65
-#, c-format
-msgid "%s: missing parameter\n"
-msgstr "%s: parametri puuttuu\n"
-
-#: src/gss.c:66
+#: src/gss.c:64
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Lisätietoja ”%s --help”-komennolla.\n"
 
-#: src/gss.c:73
+#: src/gss.c:68
+#, c-format
+msgid "Usage: %s OPTIONS...\n"
+msgstr "Käyttö: %s VALITSIMET...\n"
+
+#: src/gss.c:71
+msgid ""
+"Command line interface to GSS, used to explain error codes.\n"
+"\n"
+msgstr ""
+"Komentorivirajapinta GSS:ään, käytetty selittämään virhekoodeja.\n"
+"\n"
+
+#: src/gss.c:75
+msgid "Mandatory arguments to long options are mandatory for short options 
too.\n"
+msgstr "Pakolliset argumentit pitkille valitsimille ovat pakollisia myös 
lyhyille valitsimille.\n"
+
+#: src/gss.c:78
+msgid ""
+"  -h, --help        Print help and exit\n"
+"  -V, --version     Print version and exit\n"
+"  -m, --major=LONG  Describe a `major status' error code vaue in plain 
text.\n"
+"  -q, --quiet       Silent operation  (default=off)\n"
+msgstr ""
+"  -h, --help        Tulosta opaste ja poistu\n"
+"  -V, --version     Tulosta versio ja poistu\n"
+"  -m, --major=LONG  Kuvaile `päätila'-virhekoodiarvo pelkkänä 
tekstinä.\n"
+"  -q, --quiet       Hiljainen toiminta  (oletus=ei ole käytössä)\n"
+
+#: src/gss.c:119
 #, c-format
 msgid ""
 "GSS-API major status code %ld (0x%lx).\n"
@@ -222,7 +250,7 @@ msgstr ""
 "GSS-API major-tilakoodi %ld (0x%lx).\n"
 "\n"
 
-#: src/gss.c:76
+#: src/gss.c:122
 #, c-format
 msgid ""
 "   MSB                                                                 LSB\n"
@@ -235,7 +263,7 @@ msgstr ""
 "     |  Kutsuvirhe     |  Rutiinivirhe   |       Lisätietoja               
|\n"
 "     | "
 
-#: src/gss.c:90
+#: src/gss.c:136
 #, c-format
 msgid ""
 "|\n"
@@ -248,40 +276,37 @@ msgstr ""
 "Bitti 31            24  23            16  15                             0\n"
 "\n"
 
-#: src/gss.c:100
+#: src/gss.c:146
 #, c-format
 msgid "Masked routine error %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Peitetty rutiinivirhe %ld (0x%lx) on siirretty kohteeseen %ld 
(0x%lx):\n"
 
-#: src/gss.c:117 src/gss.c:152 src/gss.c:190
+#: src/gss.c:163 src/gss.c:198 src/gss.c:236
 #, c-format
 msgid "%s: displaying status code failed\n"
 msgstr "%s: tilakoodin näyttäminen epäonnistui\n"
 
-#: src/gss.c:138
+#: src/gss.c:184
 #, c-format
 msgid "Masked calling error %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Peitetty kutsuvirhe %ld (0x%lx) on siirretty kohteeseen %ld (0x%lx):\n"
 
-#: src/gss.c:172
+#: src/gss.c:218
 #, c-format
 msgid "Masked supplementary info %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Peitetty lisätieto %ld (0x%lx) on siirretty kohteeseen %ld (0x%lx):\n"
 
-#: src/gss.c:208
+#: src/gss.c:254
 #, c-format
 msgid "No error\n"
 msgstr "Ei virhettä\n"
 
-#~ msgid "Command line interface to GSS, used to explain error codes."
-#~ msgstr "Komentorivirajapinta GSS:ään, käytetty selittämään 
virhekoodeja."
+#~ msgid "%s: missing parameter\n"
+#~ msgstr "%s: parametri puuttuu\n"
 
 #~ msgid "Usage: "
 #~ msgstr "Käyttö: "
 
-#~ msgid " [OPTIONS]..."
-#~ msgstr " [VALITSIMET]..."
-
 #~ msgid "  -h, --help        Print help and exit"
 #~ msgstr "  -h, --help        Tulosta opaste ja poistu"
 
@@ -311,3 +336,14 @@ msgstr "Ei virhettä\n"
 
 #~ msgid "%s: option unknown: %c%s\n"
 #~ msgstr "%s: valitsin tuntematon: %c%s\n"
+
+#~ msgid ""
+#~ "  -h, --help        Print help and exit\n"
+#~ "  -V, --version     Print version and exit\n"
+#~ "  -m, --major=LONG  Describe a `major status' error code value in plain 
text.\n"
+#~ "  -q, --quiet       Silent operation  (default=off)\n"
+#~ msgstr ""
+#~ "  -h, --help        Tulosta opaste ja poistu\n"
+#~ "  -V, --version     Tulosta versio ja poistu\n"
+#~ "  -m, --major=LONG  Kuvaile ”päätila”-virhekoodiarvo pelkkänä 
tekstinä.\n"
+#~ "  -q, --quiet       Hiljainen toiminta  (oletus=pois käytöstä)\n"
diff --git a/po/id.po.in b/po/id.po.in
index 15c019a..d60e5ea 100644
--- a/po/id.po.in
+++ b/po/id.po.in
@@ -1,20 +1,24 @@
 # Indonesian translations for gss package.
-# Copyright (C) 2008 Free Software Foundation, Inc.
+# Copyright (C) 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gss package.
-# Andhika Padmawan <address@hidden>, 2008.
+# Andhika Padmawan <address@hidden>, 2010.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gss 0.0.24\n"
+"Project-Id-Version: gss 0.1.5\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2008-09-10 13:16+0200\n"
-"PO-Revision-Date: 2008-09-11 22:15+0700\n"
+"POT-Creation-Date: 2010-03-22 10:38+0100\n"
+"PO-Revision-Date: 2010-03-25 23:00+0700\n"
 "Last-Translator: Andhika Padmawan <address@hidden>\n"
 "Language-Team: Indonesian <address@hidden>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: lib/meta.c:43
+msgid "Kerberos V5 GSS-API mechanism"
+msgstr "Mekanisme Kerberos V5 GSS-API"
+
 #: lib/error.c:43
 msgid "A required input parameter could not be read"
 msgstr "Parameter masukan yang dibutuhkan tak bisa dibaca"
@@ -119,97 +123,121 @@ msgstr "Token selanjutnya telah diproses"
 msgid "An expected per-message token was not received"
 msgstr "Token per-pesan yang diharapkan tidak diterima"
 
-#: lib/error.c:298
+#: lib/error.c:318
 msgid "No error"
 msgstr "Tak ada galat"
 
-#: lib/krb5/error.c:41
+#: lib/krb5/error.c:42
 msgid "No @ in SERVICE-NAME name string"
 msgstr "Tak ada @ di benang nama SERVICE-NAME"
 
-#: lib/krb5/error.c:43
+#: lib/krb5/error.c:44
 msgid "STRING-UID-NAME contains nondigits"
 msgstr "STRING-UID-NAME berisi nondigit"
 
-#: lib/krb5/error.c:45
+#: lib/krb5/error.c:46
 msgid "UID does not resolve to username"
 msgstr "UID tak dapat memecahkan ke nama pengguna"
 
-#: lib/krb5/error.c:47
+#: lib/krb5/error.c:48
 msgid "Validation error"
 msgstr "Galat validasi"
 
-#: lib/krb5/error.c:49
+#: lib/krb5/error.c:50
 msgid "Couldn't allocate gss_buffer_t data"
 msgstr "Tak dapat mengalokasikan data gss_buffer_t"
 
-#: lib/krb5/error.c:51
+#: lib/krb5/error.c:52
 msgid "Message context invalid"
 msgstr "Konteks pesan tidak sah"
 
-#: lib/krb5/error.c:53
+#: lib/krb5/error.c:54
 msgid "Buffer is the wrong size"
 msgstr "Penyangga dalam ukuran yang salah"
 
-#: lib/krb5/error.c:55
+#: lib/krb5/error.c:56
 msgid "Credential usage type is unknown"
 msgstr "Tipe penggunaan kredensial tak diketahui"
 
-#: lib/krb5/error.c:57
+#: lib/krb5/error.c:58
 msgid "Unknown quality of protection specified"
 msgstr "Kualitas proteksi tak diketahui telah ditentukan"
 
-#: lib/krb5/error.c:60
+#: lib/krb5/error.c:61
 msgid "Principal in credential cache does not match desired name"
 msgstr "Prinsip dalam tembolok kredensial tidak cocok dengan nama yang 
diinginkan"
 
-#: lib/krb5/error.c:62
+#: lib/krb5/error.c:63
 msgid "No principal in keytab matches desired name"
 msgstr "Tak ada prinsip di tab kunci yang cocok dengan nama yang diinginkan"
 
-#: lib/krb5/error.c:64
+#: lib/krb5/error.c:65
 msgid "Credential cache has no TGT"
 msgstr "Tembolok kredensial tak memiliki TGT"
 
-#: lib/krb5/error.c:66
+#: lib/krb5/error.c:67
 msgid "Authenticator has no subkey"
 msgstr "Otentikator tidak memiliki subkunci"
 
-#: lib/krb5/error.c:68
+#: lib/krb5/error.c:69
 msgid "Context is already fully established"
 msgstr "Konteks telah sepenuhnya terbangun"
 
-#: lib/krb5/error.c:70
+#: lib/krb5/error.c:71
 msgid "Unknown signature type in token"
 msgstr "Tipe tanda tangan tak dikenal di token"
 
-#: lib/krb5/error.c:72
+#: lib/krb5/error.c:73
 msgid "Invalid field length in token"
 msgstr "Panjang medan tak sah di token"
 
-#: lib/krb5/error.c:74
+#: lib/krb5/error.c:75
 msgid "Attempt to use incomplete security context"
 msgstr "Coba menggunakan konteks keamanan tidak lengkap"
 
-#: lib/krb5/error.c:91
+#: lib/krb5/error.c:92
 msgid "No krb5 error"
 msgstr "Tak ada galat krb5"
 
-#: lib/krb5/error.c:120
+#: lib/krb5/error.c:133
 msgid "Unknown krb5 error"
 msgstr "Galat krb5 tak dikenal"
 
-#: src/gss.c:65
-#, c-format
-msgid "%s: missing parameter\n"
-msgstr "%s: kehilangan parameter\n"
-
-#: src/gss.c:66
+#: src/gss.c:64
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Coba `%s --help' untuk informasi lebih lanjut.\n"
 
-#: src/gss.c:73
+#: src/gss.c:68
+#, c-format
+msgid "Usage: %s OPTIONS...\n"
+msgstr "Penggunaan: %s OPSI...\n"
+
+#: src/gss.c:71
+msgid ""
+"Command line interface to GSS, used to explain error codes.\n"
+"\n"
+msgstr ""
+"Antarmuka baris perintah ke GSS, digunakan untuk menjelaskan kode galat.\n"
+"\n"
+
+#: src/gss.c:75
+msgid "Mandatory arguments to long options are mandatory for short options 
too.\n"
+msgstr "Argumen wajib untuk opsi panjang juga wajib untuk opsi pendek.\n"
+
+#: src/gss.c:78
+msgid ""
+"  -h, --help        Print help and exit\n"
+"  -V, --version     Print version and exit\n"
+"  -m, --major=LONG  Describe a `major status' error code vaue in plain 
text.\n"
+"  -q, --quiet       Silent operation  (default=off)\n"
+msgstr ""
+"  -h, --help        Cetak bantuan dan keluar\n"
+"  -V, --version     Cetak versi dan keluar\n"
+"  -m, --major=LONG  Jelaskan nilai kode galat `status utama' dalam teks 
biasa.\n"
+"  -q, --quiet       Operasi diam (standar=off)\n"
+
+#: src/gss.c:119
 #, c-format
 msgid ""
 "GSS-API major status code %ld (0x%lx).\n"
@@ -218,7 +246,7 @@ msgstr ""
 "Kode status mayor GSS-API %ld (0x%lx).\n"
 "\n"
 
-#: src/gss.c:76
+#: src/gss.c:122
 #, c-format
 msgid ""
 "   MSB                                                                 LSB\n"
@@ -231,7 +259,7 @@ msgstr ""
 "   |  Galat Memanggil  |  Galat Rutin  |       Info Tambahan             |\n"
 "   | "
 
-#: src/gss.c:90
+#: src/gss.c:136
 #, c-format
 msgid ""
 "|\n"
@@ -244,27 +272,30 @@ msgstr ""
 "Bita 31            24  23            16  15                             0\n"
 "\n"
 
-#: src/gss.c:100
+#: src/gss.c:146
 #, c-format
 msgid "Masked routine error %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Galat rutin bertopeng %ld (0x%lx) digeser ke %ld (0x%lx):\n"
 
-#: src/gss.c:117 src/gss.c:152 src/gss.c:190
+#: src/gss.c:163 src/gss.c:198 src/gss.c:236
 #, c-format
 msgid "%s: displaying status code failed\n"
 msgstr "%s: menampilkan kode status gagal\n"
 
-#: src/gss.c:138
+#: src/gss.c:184
 #, c-format
 msgid "Masked calling error %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Galat memanggil bertopeng %ld (0x%lx) digeser ke %ld (0x%lx):\n"
 
-#: src/gss.c:172
+#: src/gss.c:218
 #, c-format
 msgid "Masked supplementary info %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Info tambahan bertopeng %ld (0x%lx) digeser ke %ld (0x%lx):\n"
 
-#: src/gss.c:208
+#: src/gss.c:254
 #, c-format
 msgid "No error\n"
 msgstr "Tak ada galat\n"
+
+#~ msgid "%s: missing parameter\n"
+#~ msgstr "%s: kehilangan parameter\n"
diff --git a/po/pl.po.in b/po/pl.po.in
index 3a79e17..d9d438f 100644
--- a/po/pl.po.in
+++ b/po/pl.po.in
@@ -1,221 +1,243 @@
 # Polish translation for gss.
+# Copyright (C) 2004, 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gss package.
-# Jakub Bogusz <address@hidden>, 2004.
+# Jakub Bogusz <address@hidden>, 2004-2010.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gss 0.0.10\n"
+"Project-Id-Version: gss 0.1.5\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2004-04-18 17:16+0200\n"
-"PO-Revision-Date: 2004-02-22 23:27+0100\n"
+"POT-Creation-Date: 2010-03-22 10:38+0100\n"
+"PO-Revision-Date: 2010-03-25 19:44+0100\n"
 "Last-Translator: Jakub Bogusz <address@hidden>\n"
 "Language-Team: Polish <address@hidden>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lib/error.c:33
+#: lib/meta.c:43
+msgid "Kerberos V5 GSS-API mechanism"
+msgstr "Mechanizm Kerberos V5 GSS-API"
+
+#: lib/error.c:43
 msgid "A required input parameter could not be read"
 msgstr "Wymagany parametr wej¶ciowy nie móg³ byæ odczytany"
 
-#: lib/error.c:35
+#: lib/error.c:45
 msgid "A required output parameter could not be written"
 msgstr "Wymagany parametr wyj¶ciowy nie móg³ byæ zapisany"
 
-#: lib/error.c:37
+#: lib/error.c:47
 msgid "A parameter was malformed"
 msgstr "Parametr by³ ¼le sformu³owany"
 
-#: lib/error.c:42
+#: lib/error.c:52
 msgid "An unsupported mechanism was requested"
 msgstr "¯±dano nieobs³ugiwanego mechanizmu"
 
-#: lib/error.c:44
+#: lib/error.c:54
 msgid "An invalid name was supplied"
 msgstr "Podano b³êdn± nazwê"
 
-#: lib/error.c:46
+#: lib/error.c:56
 msgid "A supplied name was of an unsupported type"
 msgstr "Podana nazwa by³a nieobs³ugiwanego typu"
 
-#: lib/error.c:48
+#: lib/error.c:58
 msgid "Incorrect channel bindings were supplied"
 msgstr "Podano niepoprawne powi±zania kana³u"
 
-#: lib/error.c:50
+#: lib/error.c:60
 msgid "An invalid status code was supplied"
 msgstr "Podano b³êdny kod stanu"
 
-#: lib/error.c:52
+#: lib/error.c:62
 msgid "A token had an invalid MIC"
 msgstr "Token mia³ b³êdny MIC"
 
-#: lib/error.c:54
-msgid ""
-"No credentials were supplied, or the credentials were unavailable or "
-"inaccessible"
+#: lib/error.c:64
+msgid "No credentials were supplied, or the credentials were unavailable or 
inaccessible"
 msgstr "Nie podano danych uwierzytelniaj±cych lub by³y niedostêpne"
 
-#: lib/error.c:57
+#: lib/error.c:67
 msgid "No context has been established"
 msgstr "Nie ustalono kontekstu"
 
-#: lib/error.c:59
+#: lib/error.c:69
 msgid "A token was invalid"
 msgstr "Token by³ b³êdny"
 
-#: lib/error.c:61
+#: lib/error.c:71
 msgid "A credential was invalid"
 msgstr "Dane uwierzytelniaj±ce by³y niepoprawne"
 
-#: lib/error.c:63
+#: lib/error.c:73
 msgid "The referenced credentials have expired"
 msgstr "Wskazane dane uwierzytelniaj±ce wygas³y"
 
-#: lib/error.c:65
+#: lib/error.c:75
 msgid "The context has expired"
 msgstr "Kontekst wygas³"
 
-#: lib/error.c:67
+#: lib/error.c:77
 msgid "Unspecified error in underlying mechanism"
 msgstr "Nieokre¶lony b³±d w podrzêdnym mechanizmie"
 
-#: lib/error.c:69
+#: lib/error.c:79
 msgid "The quality-of-protection requested could not be provided"
 msgstr "¯±dana jako¶æ zabezpieczenia nie mog³a byæ zapewniona"
 
-#: lib/error.c:71
+#: lib/error.c:81
 msgid "The operation is forbidden by local security policy"
 msgstr "Operacja jest zabroniona przez lokaln± politykê bezpieczeñstwa"
 
-#: lib/error.c:73
+#: lib/error.c:83
 msgid "The operation or option is unavailable"
 msgstr "Operacja lub opcja jest niedostêpna"
 
-#: lib/error.c:75
+#: lib/error.c:85
 msgid "The requested credential element already exists"
 msgstr "¯±dany element danych uwierzytelniaj±cych ju¿ istnieje"
 
-#: lib/error.c:77
+#: lib/error.c:87
 msgid "The provided name was not a mechanism name"
 msgstr "Dostarczona nazwa nie by³a nazw± mechanizmu"
 
-#: lib/error.c:82
-msgid ""
-"The gss_init_sec_context() or gss_accept_sec_context() function must be "
-"called again to complete its function"
-msgstr ""
-"Funkcja gss_init_sec_context() lub gss_accept_sec_context() musi byæ "
-"wywo³ana ponownie aby dokoñczyæ funkcjê"
+#: lib/error.c:92
+msgid "The gss_init_sec_context() or gss_accept_sec_context() function must be 
called again to complete its function"
+msgstr "Funkcja gss_init_sec_context() lub gss_accept_sec_context() musi byæ 
wywo³ana ponownie aby dokoñczyæ funkcjê"
 
-#: lib/error.c:85
+#: lib/error.c:95
 msgid "The token was a duplicate of an earlier token"
 msgstr "Token by³ duplikatem wcze¶niejszego"
 
-#: lib/error.c:87
+#: lib/error.c:97
 msgid "The token's validity period has expired"
 msgstr "Okres poprawno¶ci tokenu min±³"
 
-#: lib/error.c:89
+#: lib/error.c:99
 msgid "A later token has already been processed"
 msgstr "Pó¼niejszy token by³ ju¿ przetworzony"
 
-#: lib/error.c:91
+#: lib/error.c:101
 msgid "An expected per-message token was not received"
 msgstr "Nie otrzymano oczekiwanego tokenu dla komunikatu"
 
-#: lib/error.c:288
+#: lib/error.c:318
 msgid "No error"
 msgstr "Brak b³êdu"
 
-#: lib/krb5/error.c:34
+#: lib/krb5/error.c:42
 msgid "No @ in SERVICE-NAME name string"
 msgstr "Brak @ w ³añcuchu nazwy SERVICE-NAME"
 
-#: lib/krb5/error.c:36
+#: lib/krb5/error.c:44
 msgid "STRING-UID-NAME contains nondigits"
 msgstr "STRING-UID-NAME zawiera znaki nie bêd±ce cyframi"
 
-#: lib/krb5/error.c:38
+#: lib/krb5/error.c:46
 msgid "UID does not resolve to username"
 msgstr "UID nie rozwi±zuje siê na nazwê u¿ytkownika"
 
-#: lib/krb5/error.c:40
+#: lib/krb5/error.c:48
 msgid "Validation error"
 msgstr "B³±d kontroli poprawno¶ci"
 
-#: lib/krb5/error.c:42
+#: lib/krb5/error.c:50
 msgid "Couldn't allocate gss_buffer_t data"
 msgstr "Nie mo¿na przydzieliæ danych gss_buffer_t"
 
-#: lib/krb5/error.c:44
+#: lib/krb5/error.c:52
 msgid "Message context invalid"
 msgstr "B³êdny kontekst komunikatu"
 
-#: lib/krb5/error.c:46
+#: lib/krb5/error.c:54
 msgid "Buffer is the wrong size"
 msgstr "Z³y rozmiar bufora"
 
-#: lib/krb5/error.c:48
+#: lib/krb5/error.c:56
 msgid "Credential usage type is unknown"
 msgstr "Nieznany sposób u¿ycia danych uwierzytelniaj±cych"
 
-#: lib/krb5/error.c:50
+#: lib/krb5/error.c:58
 msgid "Unknown quality of protection specified"
 msgstr "Podano nieznan± jako¶ zabezpieczenia"
 
-#: lib/krb5/error.c:53
+#: lib/krb5/error.c:61
 msgid "Principal in credential cache does not match desired name"
-msgstr ""
-"Zarz±dca w buforze danych uwierzytelniaj±cych nie pasuje do ¿±danej nazwy"
+msgstr "Zarz±dca w buforze danych uwierzytelniaj±cych nie pasuje do ¿±danej 
nazwy"
 
-#: lib/krb5/error.c:55
+#: lib/krb5/error.c:63
 msgid "No principal in keytab matches desired name"
 msgstr "¯aden zarz±dca w keytab nie pasuje do ¿±danej nazwy"
 
-#: lib/krb5/error.c:57
+#: lib/krb5/error.c:65
 msgid "Credential cache has no TGT"
 msgstr "Bufor danych uwierzytelniaj±cych nie zawiera TGT"
 
-#: lib/krb5/error.c:59
+#: lib/krb5/error.c:67
 msgid "Authenticator has no subkey"
 msgstr "Authenticator nie ma pola subkey"
 
-#: lib/krb5/error.c:61
+#: lib/krb5/error.c:69
 msgid "Context is already fully established"
 msgstr "Kontekst ju¿ zosta³ w pe³ni ustalony"
 
-#: lib/krb5/error.c:63
+#: lib/krb5/error.c:71
 msgid "Unknown signature type in token"
 msgstr "Nieznany rodzaj sygnatury w tokenie"
 
-#: lib/krb5/error.c:65
+#: lib/krb5/error.c:73
 msgid "Invalid field length in token"
 msgstr "B³êdna d³ugo¶æ pola w tokenie"
 
-#: lib/krb5/error.c:67
+#: lib/krb5/error.c:75
 msgid "Attempt to use incomplete security context"
 msgstr "Próba u¿ycia niepe³nego kontekstu bezpieczeñstwa"
 
-#: lib/krb5/error.c:84
+#: lib/krb5/error.c:92
 msgid "No krb5 error"
 msgstr "Brak b³êdu krb5"
 
-#: lib/krb5/error.c:113
+#: lib/krb5/error.c:133
 msgid "Unknown krb5 error"
 msgstr "Nieznany b³±d krb5"
 
 #: src/gss.c:64
 #, c-format
-msgid "%s: missing parameter\n"
-msgstr "%s: brakuj±cy parametr\n"
-
-#: src/gss.c:65
-#, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "`%s --help' poda wiêcej informacji.\n"
 
-#: src/gss.c:72
+#: src/gss.c:68
+#, c-format
+msgid "Usage: %s OPTIONS...\n"
+msgstr "Sk³adnia: %s OPCJE...\n"
+
+#: src/gss.c:71
+msgid ""
+"Command line interface to GSS, used to explain error codes.\n"
+"\n"
+msgstr ""
+"Interfejs linii poleceñ do GSS s³u¿±cy do wyja¶niania kodów b³êdów.\n"
+"\n"
+
+#: src/gss.c:75
+msgid "Mandatory arguments to long options are mandatory for short options 
too.\n"
+msgstr "Argumenty obowi±zkowe dla opcji d³ugich s± obowi±zkowe tak¿e dla opcji 
krótkich.\n"
+
+#: src/gss.c:78
+msgid ""
+"  -h, --help        Print help and exit\n"
+"  -V, --version     Print version and exit\n"
+"  -m, --major=LONG  Describe a `major status' error code vaue in plain 
text.\n"
+"  -q, --quiet       Silent operation  (default=off)\n"
+msgstr ""
+"  -h, --help        Wypisanie tego opisu i zakoñczenie\n"
+"  -V, --version     Wypisanie numeru wersji i zakoñczenie\n"
+"  -m, --major=LONG  Opis \"g³ównego\" kodu b³êdu w postaci tekstowej\n"
+"  -q, --quiet       Dzia³anie bez komunikatów (domy¶lnie wy³±czone)\n"
+
+#: src/gss.c:119
 #, c-format
 msgid ""
 "GSS-API major status code %ld (0x%lx).\n"
@@ -224,7 +246,7 @@ msgstr ""
 "G³ówny kod stanu GSS-API %ld (0x%lx).\n"
 "\n"
 
-#: src/gss.c:75
+#: src/gss.c:122
 #, c-format
 msgid ""
 "   MSB                                                                 LSB\n"
@@ -237,7 +259,7 @@ msgstr ""
 "   |  B³±d wywo³ania |  B³±d procedury |       Dodatkowe informacje      |\n"
 "   | "
 
-#: src/gss.c:89
+#: src/gss.c:136
 #, c-format
 msgid ""
 "|\n"
@@ -250,28 +272,27 @@ msgstr ""
 "Bit 31            24  23            16  15                             0\n"
 "\n"
 
-#: src/gss.c:99
+#: src/gss.c:146
 #, c-format
 msgid "Masked routine error %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Maskowany b³±d procedury %ld (0x%lx) przesuniêty do %ld (0x%lx):\n"
 
-#: src/gss.c:116 src/gss.c:151 src/gss.c:189
+#: src/gss.c:163 src/gss.c:198 src/gss.c:236
 #, c-format
 msgid "%s: displaying status code failed\n"
 msgstr "%s: wy¶wietlanie kodu stanu nie powiod³o siê\n"
 
-#: src/gss.c:137
+#: src/gss.c:184
 #, c-format
 msgid "Masked calling error %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Maskowany b³±d wywo³ania %ld (0x%lx) przesuniêty do %ld (0x%lx):\n"
 
-#: src/gss.c:171
+#: src/gss.c:218
 #, c-format
 msgid "Masked supplementary info %ld (0x%lx) shifted into %ld (0x%lx):\n"
-msgstr ""
-"Maskowane dodatkowe informacje %ld (0x%lx) przesuniête do %ld (0x%lx):\n"
+msgstr "Maskowane dodatkowe informacje %ld (0x%lx) przesuniête do %ld 
(0x%lx):\n"
 
-#: src/gss.c:207
+#: src/gss.c:254
 #, c-format
 msgid "No error\n"
 msgstr "Brak b³êdu\n"
diff --git a/po/vi.po.in b/po/vi.po.in
index 6dfa1c4..ba79398 100644
--- a/po/vi.po.in
+++ b/po/vi.po.in
@@ -1,22 +1,26 @@
 # Vietnamese Translation for GSS.
-# Copyright © 2008 Free Software Foundation, Inc.
-# Copyright © 2008 Simon Josefsson (msgid)
+# Copyright © 2010 Free Software Foundation, Inc.
+# Copyright © 2010 Simon Josefsson (msgid)
 # This file is distributed under the same license as the gss package.
-# Clytie Siddall <address@hidden>, 2005-2008.
+# Clytie Siddall <address@hidden>, 2005-2010.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gss 0.0.24\n"
+"Project-Id-Version: gss 0.1.5\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2008-09-10 13:16+0200\n"
-"PO-Revision-Date: 2008-09-22 19:00+0930\n"
+"POT-Creation-Date: 2010-03-22 10:38+0100\n"
+"PO-Revision-Date: 2010-03-25 22:34+0930\n"
 "Last-Translator: Clytie Siddall <address@hidden>\n"
 "Language-Team: Vietnamese <address@hidden>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: LocFactoryEditor 1.7b3\n"
+"X-Generator: LocFactoryEditor 1.8\n"
+
+#: lib/meta.c:43
+msgid "Kerberos V5 GSS-API mechanism"
+msgstr "Cơ chế GSS-API Kerberos pb5"
 
 #: lib/error.c:43
 msgid "A required input parameter could not be read"
@@ -122,97 +126,121 @@ msgstr "Một hiệu bài nằm sau đã được xử 
lý"
 msgid "An expected per-message token was not received"
 msgstr "Chưa nhận một hiệu bài từng thông điệp mong đợi"
 
-#: lib/error.c:298
+#: lib/error.c:318
 msgid "No error"
 msgstr "Không có lỗi"
 
-#: lib/krb5/error.c:41
+#: lib/krb5/error.c:42
 msgid "No @ in SERVICE-NAME name string"
 msgstr "Không có dấu @ trong chuỗi SERVICE-NAME (tên dịch vụ)"
 
-#: lib/krb5/error.c:43
+#: lib/krb5/error.c:44
 msgid "STRING-UID-NAME contains nondigits"
 msgstr "STRING-UID-NAME (chuỗi-tên-UID) chứa ký tự khác chữ số"
 
-#: lib/krb5/error.c:45
+#: lib/krb5/error.c:46
 msgid "UID does not resolve to username"
 msgstr "UID không giải quyết thành tên người dùng"
 
-#: lib/krb5/error.c:47
+#: lib/krb5/error.c:48
 msgid "Validation error"
 msgstr "Lỗi hợp lệ hoá"
 
-#: lib/krb5/error.c:49
+#: lib/krb5/error.c:50
 msgid "Couldn't allocate gss_buffer_t data"
 msgstr "Không thể phân cấp dữ liệu « gss_buffer_t »"
 
-#: lib/krb5/error.c:51
+#: lib/krb5/error.c:52
 msgid "Message context invalid"
 msgstr "Ngữ cảnh thông điệp không hợp lệ"
 
-#: lib/krb5/error.c:53
+#: lib/krb5/error.c:54
 msgid "Buffer is the wrong size"
 msgstr "Vùng đệm kích cỡ sai"
 
-#: lib/krb5/error.c:55
+#: lib/krb5/error.c:56
 msgid "Credential usage type is unknown"
 msgstr "Không rõ kiểu sử dụng thông tin xác thực"
 
-#: lib/krb5/error.c:57
+#: lib/krb5/error.c:58
 msgid "Unknown quality of protection specified"
 msgstr "Đã ghi rõ mức bảo vệ không rõ"
 
-#: lib/krb5/error.c:60
+#: lib/krb5/error.c:61
 msgid "Principal in credential cache does not match desired name"
 msgstr "Điều chính trong bộ nhớ tạm thông tin xác thực không 
tương ứng với tên yêu cầu"
 
-#: lib/krb5/error.c:62
+#: lib/krb5/error.c:63
 msgid "No principal in keytab matches desired name"
 msgstr "Không có điều chính trong keytab mà tương ứng với tên 
yêu cầu"
 
-#: lib/krb5/error.c:64
+#: lib/krb5/error.c:65
 msgid "Credential cache has no TGT"
 msgstr "Bộ nhớ tạm thông tin xác thực không có TGT"
 
-#: lib/krb5/error.c:66
+#: lib/krb5/error.c:67
 msgid "Authenticator has no subkey"
 msgstr "Nhà xác thực không có khoá phụ"
 
-#: lib/krb5/error.c:68
+#: lib/krb5/error.c:69
 msgid "Context is already fully established"
 msgstr "Ngữ cảnh đã được thiết lập đầy đủ"
 
-#: lib/krb5/error.c:70
+#: lib/krb5/error.c:71
 msgid "Unknown signature type in token"
 msgstr "Không rõ kiểu chữ ký trong hiệu bài"
 
-#: lib/krb5/error.c:72
+#: lib/krb5/error.c:73
 msgid "Invalid field length in token"
 msgstr "Chiều dài trường không hợp lệ trong hiệu bài"
 
-#: lib/krb5/error.c:74
+#: lib/krb5/error.c:75
 msgid "Attempt to use incomplete security context"
 msgstr "Đã thử sử dụng ngữ cảnh bảo mật chưa hoàn tất"
 
-#: lib/krb5/error.c:91
+#: lib/krb5/error.c:92
 msgid "No krb5 error"
 msgstr "Không có lỗi krb5"
 
-#: lib/krb5/error.c:120
+#: lib/krb5/error.c:133
 msgid "Unknown krb5 error"
 msgstr "Lỗi krb5 không rõ"
 
-#: src/gss.c:65
-#, c-format
-msgid "%s: missing parameter\n"
-msgstr "%s: thiếu tham số\n"
-
-#: src/gss.c:66
+#: src/gss.c:64
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Hãy thử câu lệnh trợ giúp « %s --help » để tìm thêm 
thông tin.\n"
 
-#: src/gss.c:73
+#: src/gss.c:68
+#, c-format
+msgid "Usage: %s OPTIONS...\n"
+msgstr "Sử dụng: %s TÙY_CHỌN...\n"
+
+#: src/gss.c:71
+msgid ""
+"Command line interface to GSS, used to explain error codes.\n"
+"\n"
+msgstr ""
+"Giao diện dòng lệnh vào GSS, dùng để giải thích mã lỗi.\n"
+"\n"
+
+#: src/gss.c:75
+msgid "Mandatory arguments to long options are mandatory for short options 
too.\n"
+msgstr "Mọi đối số bắt buộc phải sử dụng với tùy chọn dà
i cũng bắt buộc với tùy chọn ngắn.\n"
+
+#: src/gss.c:78
+msgid ""
+"  -h, --help        Print help and exit\n"
+"  -V, --version     Print version and exit\n"
+"  -m, --major=LONG  Describe a `major status' error code vaue in plain 
text.\n"
+"  -q, --quiet       Silent operation  (default=off)\n"
+msgstr ""
+"  -h, --help        Hiển thị trợ giúp, sau đó thoát\n"
+"  -V, --version     Hiển thị số thứ tự phiên bản, sau đó 
thoát\n"
+"  -m, --major=DÀI    Diễn tả một giá trị mã lỗi « trạng thái 
chính » bằng nhập thô.\n"
+"  -q, --quiet       Thao tác mà không xuất chi tiết (mặc định là 
bị tắt)\n"
+
+#: src/gss.c:119
 #, c-format
 msgid ""
 "GSS-API major status code %ld (0x%lx).\n"
@@ -221,7 +249,7 @@ msgstr ""
 "GSS-API mã trạng thái chính %ld (0x%lx).\n"
 "\n"
 
-#: src/gss.c:76
+#: src/gss.c:122
 #, c-format
 msgid ""
 "   MSB                                                                 LSB\n"
@@ -234,7 +262,7 @@ msgstr ""
 "   |    Lỗi gọi    |  Lỗi hàm  |       Thông tin bổ sung       |\n"
 "   | "
 
-#: src/gss.c:90
+#: src/gss.c:136
 #, c-format
 msgid ""
 "|\n"
@@ -247,27 +275,27 @@ msgstr ""
 "Bit 31            24  23            16  15                             0\n"
 "\n"
 
-#: src/gss.c:100
+#: src/gss.c:146
 #, c-format
 msgid "Masked routine error %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Lỗi hàm có mặt nạ %ld (0x%lx) đã rời vào %ld (0x%lx):\n"
 
-#: src/gss.c:117 src/gss.c:152 src/gss.c:190
+#: src/gss.c:163 src/gss.c:198 src/gss.c:236
 #, c-format
 msgid "%s: displaying status code failed\n"
 msgstr "%s: lỗi hiển thị mã trạng thái\n"
 
-#: src/gss.c:138
+#: src/gss.c:184
 #, c-format
 msgid "Masked calling error %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Lỗi gói có mặt nạ %ld (0x%lx) đã rời vào %ld (0x%lx):\n"
 
-#: src/gss.c:172
+#: src/gss.c:218
 #, c-format
 msgid "Masked supplementary info %ld (0x%lx) shifted into %ld (0x%lx):\n"
 msgstr "Thông tin bổ sung có mặt nạ %ld (0x%lx) đã rời vào %ld 
(0x%lx):\n"
 
-#: src/gss.c:208
+#: src/gss.c:254
 #, c-format
 msgid "No error\n"
 msgstr "Không có lỗi\n"
diff --git a/src/gl/Makefile.am b/src/gl/Makefile.am
index bddb9a3..3d0498b 100644
--- a/src/gl/Makefile.am
+++ b/src/gl/Makefile.am
@@ -225,6 +225,7 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) 
$(WARN_ON_USE_H)
              -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
              -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
              -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+             -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
              -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
              -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
              -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
@@ -249,6 +250,7 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) 
$(WARN_ON_USE_H)
              -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
              -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
              -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
              -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
              -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
              -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
@@ -256,7 +258,6 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) 
$(WARN_ON_USE_H)
              -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_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
diff --git a/src/gl/getopt.in.h b/src/gl/getopt.in.h
index c90baa5..57a8e89 100644
--- a/src/gl/getopt.in.h
+++ b/src/gl/getopt.in.h
@@ -16,12 +16,12 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#ifndef _GL_GETOPT_H
+
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
 
-#ifndef _GL_GETOPT_H
-
 /* The include_next requires a split double-inclusion guard.  We must
    also inform the replacement unistd.h to not recursively use
    <getopt.h>; our definitions will be present soon enough.  */
diff --git a/src/gl/m4/gnulib-common.m4 b/src/gl/m4/gnulib-common.m4
index f8e32e3..54b2517 100644
--- a/src/gl/m4/gnulib-common.m4
+++ b/src/gl/m4/gnulib-common.m4
@@ -1,4 +1,4 @@
-# gnulib-common.m4 serial 17
+# gnulib-common.m4 serial 19
 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -48,7 +48,9 @@ AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1])
 # a C preprocessor expression that will evaluate to 1.
 AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
 [
-  
GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
+  GNULIB_[]m4_translit([[$1]],
+    [abcdefghijklmnopqrstuvwxyz./-],
+    [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
 ])
 
 # gl_MODULE_INDICATOR([modulename])
@@ -65,9 +67,12 @@ AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
 # --------------------------------------------+---------+-----------+
 AC_DEFUN([gl_MODULE_INDICATOR],
 [
-  
AC_DEFINE_UNQUOTED([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
+  AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
     [gl_MODULE_INDICATOR_CONDITION],
-    [Define to a C preprocessor expression that evaluates to 1 or 0, depending 
whether the gnulib module ]$1[ shall be considered present.])
+    [Define to a C preprocessor expression that evaluates to 1 or 0,
+     depending whether the gnulib module $1 shall be considered present.])
 ])
 
 # gl_MODULE_INDICATOR_FOR_TESTS([modulename])
@@ -85,8 +90,10 @@ AC_DEFUN([gl_MODULE_INDICATOR],
 # --------------------------------------------+---------+-----------+
 AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
 [
-  
AC_DEFINE([GNULIB_TEST_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
 [1],
-    [Define to 1 when the gnulib module ]$1[ should be tested.])
+  AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+    [Define to 1 when the gnulib module $1 should be tested.])
 ])
 
 # m4_foreach_w
@@ -125,6 +132,7 @@ m4_ifdef([AC_PROG_MKDIR_P], [
 # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
 # works.
 # This definition can be removed once autoconf >= 2.62 can be assumed.
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
 AC_DEFUN([AC_C_RESTRICT],
 [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
   [ac_cv_c_restrict=no
@@ -162,6 +170,7 @@ AC_DEFUN([AC_C_RESTRICT],
    *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
  esac
 ])
+])
 
 # gl_BIGENDIAN
 # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
diff --git a/src/gl/m4/gnulib-comp.m4 b/src/gl/m4/gnulib-comp.m4
index ffc2364..9c9ef4e 100644
--- a/src/gl/m4/gnulib-comp.m4
+++ b/src/gl/m4/gnulib-comp.m4
@@ -52,6 +52,7 @@ AC_DEFUN([srcgl_INIT],
 [
   AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
   gl_cond_libtool=true
+  gl_m4_base='src/gl/m4'
   m4_pushdef([AC_LIBOBJ], m4_defn([srcgl_LIBOBJ]))
   m4_pushdef([AC_REPLACE_FUNCS], m4_defn([srcgl_REPLACE_FUNCS]))
   m4_pushdef([AC_LIBSOURCES], m4_defn([srcgl_LIBSOURCES]))
@@ -123,7 +124,9 @@ AC_DEFUN([srcgl_INIT],
   m4_pushdef([srcgltests_LIBSOURCES_DIR], [])
   gl_COMMON
   gl_source_base='src/gl/tests'
-  srcgltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr 
'a-z' 'A-Z' | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote(,)dnl
+  srcgltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr 
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 
's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote([, ])dnl
   AC_SUBST([srcgltests_WITNESS])
   gl_module_indicator_condition=$srcgltests_WITNESS
   m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
diff --git a/src/gl/m4/unistd_h.m4 b/src/gl/m4/unistd_h.m4
index 789739d..8c2eec6 100644
--- a/src/gl/m4/unistd_h.m4
+++ b/src/gl/m4/unistd_h.m4
@@ -1,4 +1,4 @@
-# unistd_h.m4 serial 43
+# unistd_h.m4 serial 45
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -98,6 +98,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
   HAVE_DUP3=1;            AC_SUBST([HAVE_DUP3])
   HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
   HAVE_FACCESSAT=1;       AC_SUBST([HAVE_FACCESSAT])
+  HAVE_FCHDIR=1;          AC_SUBST([HAVE_FCHDIR])
   HAVE_FCHOWNAT=1;        AC_SUBST([HAVE_FCHOWNAT])
   HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
   HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
@@ -122,6 +123,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
   HAVE_USLEEP=1;          AC_SUBST([HAVE_USLEEP])
   HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
   HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+  HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
   HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
   HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
   HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
@@ -129,7 +131,6 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
   REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
   REPLACE_DUP=0;          AC_SUBST([REPLACE_DUP])
   REPLACE_DUP2=0;         AC_SUBST([REPLACE_DUP2])
-  REPLACE_FCHDIR=0;       AC_SUBST([REPLACE_FCHDIR])
   REPLACE_FCHOWNAT=0;     AC_SUBST([REPLACE_FCHOWNAT])
   REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
   REPLACE_GETGROUPS=0;    AC_SUBST([REPLACE_GETGROUPS])
diff --git a/src/gl/stdarg.in.h b/src/gl/stdarg.in.h
index c3ad85c..3e0c49d 100644
--- a/src/gl/stdarg.in.h
+++ b/src/gl/stdarg.in.h
@@ -15,12 +15,12 @@
    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
 
-#ifndef _GL_STDARG_H
-
 /* The include_next requires a split double-inclusion guard.  */
 address@hidden@ @NEXT_STDARG_H@
 
diff --git a/src/gl/unistd.in.h b/src/gl/unistd.in.h
index 0c5c616..04d3a68 100644
--- a/src/gl/unistd.in.h
+++ b/src/gl/unistd.in.h
@@ -415,9 +415,8 @@ _GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
    Return 0 if successful, otherwise -1 and errno set.
    See the POSIX:2001 specification
    <http://www.opengroup.org/susv3xsh/fchdir.html>.  */
-# if @REPLACE_FCHDIR@
-_GL_FUNCDECL_RPL (fchdir, int, (int /*fd*/));
-_GL_CXXALIAS_RPL (fchdir, int, (int /*fd*/));
+# if ! @HAVE_FCHDIR@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
 
 /* Gnulib internal hooks needed to maintain the fchdir metadata.  */
 _GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
@@ -426,9 +425,8 @@ _GL_EXTERN_C void _gl_unregister_fd (int fd);
 _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
 _GL_EXTERN_C const char *_gl_directory_name (int fd);
 
-# else
-_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
 # endif
+_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
 _GL_CXXALIASWARN (fchdir);
 #elif defined GNULIB_POSIXCHECK
 # undef fchdir
@@ -525,7 +523,9 @@ _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
 _GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
 _GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
 # else
-_GL_CXXALIAS_SYS (getcwd, char *, (char *buf, size_t size));
+/* Need to cast, because on mingw, the second parameter is
+                                                   int size.  */
+_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
 # endif
 _GL_CXXALIASWARN (getcwd);
 #elif defined GNULIB_POSIXCHECK
@@ -773,7 +773,9 @@ getpagesize ()
 /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t.  
*/
 _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
 # endif
+# if @HAVE_DECL_GETPAGESIZE@
 _GL_CXXALIASWARN (getpagesize);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef getpagesize
 # if HAVE_RAW_DECL_GETPAGESIZE
@@ -1266,7 +1268,10 @@ _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void 
*buf, size_t count)
                                   _GL_ARG_NONNULL ((2)));
 _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
 # else
-_GL_CXXALIAS_SYS (write, ssize_t, (int fd, const void *buf, size_t count));
+/* Need to cast, because on mingw, the third parameter is
+                                                             unsigned int count
+   and the return type is 'int'.  */
+_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t 
count));
 # endif
 _GL_CXXALIASWARN (write);
 #endif


hooks/post-receive
-- 
GNU gss




reply via email to

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