aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-04-21 18:15:51 +0000
committerUlrich Drepper <drepper@redhat.com>1998-04-21 18:15:51 +0000
commit5aa8ff620ef68811c5a7dd5d5bbac1c078730a2a (patch)
treeefd66893a0690109dc0898541cfa6d41b0bf5029
parent26e119f15e82aa334ad96f74513c4534daf4d35d (diff)
downloadglibc-5aa8ff620ef68811c5a7dd5d5bbac1c078730a2a.zip
glibc-5aa8ff620ef68811c5a7dd5d5bbac1c078730a2a.tar.gz
glibc-5aa8ff620ef68811c5a7dd5d5bbac1c078730a2a.tar.bz2
Update.
1998-04-21 18:00 Ulrich Drepper <drepper@cygnus.com> * iconv/gconv.c (__gconv): Remove bogus input buffer size computation. * iconv/gconv_open.c (__gconv_open): Initialize outbufend element. * iconv/gconv_simple.c (__gconv_transform_internal_ascii): Don't use character in comparison with uint32_t. (__gconv_transform_internal_utf8): Specify MAX_NEEDED_TO. (__gconv_transform_utf8_internal): Specify MAX_NEEDED_FROM. Optimize BODY a bit. * iconv/loop.c: Require MIN_NEEDED_INPUT and MIN_NEEDED_OUTPUT to be defined. * iconv/skeleton.c: Also reset converted counter in case of an error. Call reset function using correct value for output buffer start. * iconvdata/Makefile: Re-enable tests. * iconvdata/iso8859-1.c: Swap MIN_NEEDED_INPUT and MIN_NEEDED_OUTPUT value for to-conversion. * iconvdata/TESTS: Add new third column. * iconvdata/run-iconv-test.sh: Add support for charsets which are not ASCII based. * iconvdata/testdata/suntzus: New file. * elf/dl-minimal.c (__strtol_internal): Increment pointer to string while reading. Correctly used base. Little optimization. (__strtoul_internal): Likewise. * elf/rtld.c (dl_main): Test to avoid duplicate call of _dl_init_paths was wrong. Use explicit variable. 1998-04-20 23:49 Zack Weinberg <zack@rabi.phys.columbia.edu> * configure.in: Check for awk. * config.make.in: Add AWK to be substituted. * manual/xtract-typefun.awk: Rewrite to eliminate gawk extensions. * manual/users.texi: Fix typo exposed by above rewrite. * Makefile: Invoke awk using AWK variable. * csu/Makefile: Likewise. * elf/Makefile: Likewise. * mach/Makefile: Likewise. * manual/Makefile: Likewise. * sysdeps/gnu/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/unix/Makefile: Likewise. * timezone/Makefile: Likewise. 1998-04-10 Gordon Matzigkeit <gord@profitpress.com> * sysdeps/gnu/errlist.awk (ERR_REMAP): Implement error code to array index translation. (SYS_ERRLIST_ALIAS, SYS_NERR_ALIAS): Make weak aliases only if these are defined. * sysdeps/mach/hurd/Dist: Add errlist.c to distribution. * sysdeps/mach/hurd/errlist.c: New file. (ERR_TRANSLATE): Map Hurd error codes into errlist indices. (_hurd_errlist): The Hurd error list doesn't have Unix sys_errlist semantics, so rename it. 1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * iconvdata/run-iconv-test.sh: Make portable. Always test all conversions. 1998-04-21 12:30 H.J. Lu <hjl@gnu.org> * wcsmbs/wcsrtombs.c (__wcsrtombs): Initialize result to 0. * wcsmbs/wcsnrtombs.c: Likewise. 1998-04-21 Ulrich Drepper <drepper@cygnus.com> * sysdeps/generic/dl-sysdep.c: Handle _dl_hwcap correctly. * wcsmbs/btowc.c (__btowc): Declare inptr as const char *. * time/strftime.c (my_strftime): Initialize pad variable in declaration. * iconvdata/big5.c: Don't use character constants in comparisons with unsigned value. * sysdeps/generic/setutxent.c: New file. * sysdeps/generic/getutxent.c: New file. * sysdeps/generic/endutxent.c: New file. * sysdeps/generic/getutxid.c: New file. * sysdeps/generic/getutxline.c: New file. * sysdeps/generic/pututxline.c: New file. * sysdeps/generic/utmpxname.c: New file. * sysdeps/generic/updwtmpx.c: New file.
-rw-r--r--ChangeLog105
-rw-r--r--Makefile2
-rw-r--r--config.make.in1
-rwxr-xr-xconfigure116
-rw-r--r--configure.in1
-rw-r--r--csu/Makefile2
-rw-r--r--elf/Makefile2
-rw-r--r--elf/dl-minimal.c12
-rw-r--r--elf/rtld.c4
-rw-r--r--iconv/gconv.c14
-rw-r--r--iconv/gconv_open.c8
-rw-r--r--iconv/gconv_simple.c110
-rw-r--r--iconv/loop.c6
-rw-r--r--iconv/skeleton.c9
-rw-r--r--iconvdata/Makefile2
-rw-r--r--iconvdata/TESTS26
-rw-r--r--iconvdata/big5.c8
-rw-r--r--iconvdata/iso8859-1.c4
-rwxr-xr-xiconvdata/run-iconv-test.sh39
-rw-r--r--iconvdata/testdata/suntzus1693
-rw-r--r--mach/Makefile8
-rw-r--r--manual/Makefile12
-rw-r--r--manual/users.texi2
-rw-r--r--manual/xtract-typefun.awk43
-rw-r--r--sysdeps/generic/dl-sysdep.c23
-rw-r--r--sysdeps/gnu/Makefile2
-rw-r--r--sysdeps/gnu/errlist.awk15
-rw-r--r--sysdeps/mach/hurd/Dist1
-rw-r--r--sysdeps/mach/hurd/Makefile2
-rw-r--r--sysdeps/mach/hurd/errlist.c26
-rw-r--r--sysdeps/unix/Makefile6
-rw-r--r--time/strftime.c5
-rw-r--r--timezone/Makefile2
-rw-r--r--wcsmbs/btowc.c2
-rw-r--r--wcsmbs/wcsnrtombs.c2
-rw-r--r--wcsmbs/wcsrtombs.c2
36 files changed, 2100 insertions, 217 deletions
diff --git a/ChangeLog b/ChangeLog
index 105bed4..8672e03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,92 @@
+1998-04-21 18:00 Ulrich Drepper <drepper@cygnus.com>
+
+ * iconv/gconv.c (__gconv): Remove bogus input buffer size computation.
+
+ * iconv/gconv_open.c (__gconv_open): Initialize outbufend element.
+
+ * iconv/gconv_simple.c (__gconv_transform_internal_ascii): Don't use
+ character in comparison with uint32_t.
+ (__gconv_transform_internal_utf8): Specify MAX_NEEDED_TO.
+ (__gconv_transform_utf8_internal): Specify MAX_NEEDED_FROM.
+ Optimize BODY a bit.
+
+ * iconv/loop.c: Require MIN_NEEDED_INPUT and MIN_NEEDED_OUTPUT to
+ be defined.
+
+ * iconv/skeleton.c: Also reset converted counter in case of an error.
+ Call reset function using correct value for output buffer start.
+
+ * iconvdata/Makefile: Re-enable tests.
+
+ * iconvdata/iso8859-1.c: Swap MIN_NEEDED_INPUT and MIN_NEEDED_OUTPUT
+ value for to-conversion.
+
+ * iconvdata/TESTS: Add new third column.
+ * iconvdata/run-iconv-test.sh: Add support for charsets which are
+ not ASCII based.
+ * iconvdata/testdata/suntzus: New file.
+
+ * elf/dl-minimal.c (__strtol_internal): Increment pointer to string
+ while reading. Correctly used base. Little optimization.
+ (__strtoul_internal): Likewise.
+
+ * elf/rtld.c (dl_main): Test to avoid duplicate call of _dl_init_paths
+ was wrong. Use explicit variable.
+
+1998-04-20 23:49 Zack Weinberg <zack@rabi.phys.columbia.edu>
+
+ * configure.in: Check for awk.
+ * config.make.in: Add AWK to be substituted.
+
+ * manual/xtract-typefun.awk: Rewrite to eliminate gawk extensions.
+ * manual/users.texi: Fix typo exposed by above rewrite.
+
+ * Makefile: Invoke awk using AWK variable.
+ * csu/Makefile: Likewise.
+ * elf/Makefile: Likewise.
+ * mach/Makefile: Likewise.
+ * manual/Makefile: Likewise.
+ * sysdeps/gnu/Makefile: Likewise.
+ * sysdeps/mach/hurd/Makefile: Likewise.
+ * sysdeps/unix/Makefile: Likewise.
+ * timezone/Makefile: Likewise.
+
+1998-04-10 Gordon Matzigkeit <gord@profitpress.com>
+
+ * sysdeps/gnu/errlist.awk (ERR_REMAP): Implement error code to
+ array index translation.
+ (SYS_ERRLIST_ALIAS, SYS_NERR_ALIAS): Make weak aliases only if
+ these are defined.
+
+ * sysdeps/mach/hurd/Dist: Add errlist.c to distribution.
+
+ * sysdeps/mach/hurd/errlist.c: New file.
+ (ERR_TRANSLATE): Map Hurd error codes into errlist indices.
+ (_hurd_errlist): The Hurd error list doesn't have Unix sys_errlist
+ semantics, so rename it.
+
+1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * iconvdata/run-iconv-test.sh: Make portable. Always test all
+ conversions.
+
+1998-04-21 12:30 H.J. Lu <hjl@gnu.org>
+
+ * wcsmbs/wcsrtombs.c (__wcsrtombs): Initialize result to 0.
+ * wcsmbs/wcsnrtombs.c: Likewise.
+
+1998-04-21 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/generic/dl-sysdep.c: Handle _dl_hwcap correctly.
+
+ * wcsmbs/btowc.c (__btowc): Declare inptr as const char *.
+
+ * time/strftime.c (my_strftime): Initialize pad variable in
+ declaration.
+
+ * iconvdata/big5.c: Don't use character constants in comparisons
+ with unsigned value.
+
1998-04-20 18:00 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add __dgettext to GLIBC_2.0 and __libc_longjmp, and
@@ -194,14 +283,14 @@
(_PATH_UTMPX): Define to _PATH_UTMP. (_PATH_WTMPX): Define to
_PATH_WTMPX. (RUN_LVL): Define only if __USE_GNU. (ACCOUNTING):
Define if __USE_GNU.
- * sysdeps/gnu/setutxent.c: New file.
- * sysdeps/gnu/getutxent.c: New file.
- * sysdeps/gnu/endutxent.c: New file.
- * sysdeps/gnu/getutxid.c: New file.
- * sysdeps/gnu/getutxline.c: New file.
- * sysdeps/gnu/pututxline.c: New file.
- * sysdeps/gnu/utmpxname.c: New file.
- * sysdeps/gnu/updwtmpx.c: New file.
+ * sysdeps/generic/setutxent.c: New file.
+ * sysdeps/generic/getutxent.c: New file.
+ * sysdeps/generic/endutxent.c: New file.
+ * sysdeps/generic/getutxid.c: New file.
+ * sysdeps/generic/getutxline.c: New file.
+ * sysdeps/generic/pututxline.c: New file.
+ * sysdeps/generic/utmpxname.c: New file.
+ * sysdeps/generic/updwtmpx.c: New file.
* sysdeps/unix/sysv/linux/paths.h (_PATH_UTMP_DB): Remove.
* sysdeps/generic/bits/utmpx.h: Remove.
diff --git a/Makefile b/Makefile
index 923a81e..1de8be7 100644
--- a/Makefile
+++ b/Makefile
@@ -116,7 +116,7 @@ libc-init = set-init
else
libc-init = munch-init
$(objpfx)munch-init.c: munch.awk munch-tmpl.c $(+subdir_inits)
- awk -f $< subdirs='$(+init_subdirs)' $(word 2,$^) > $@-t
+ $(AWK) -f $< subdirs='$(+init_subdirs)' $(word 2,$^) > $@-t
mv -f $@-t $@
generated := $(generated) munch-init.c
endif
diff --git a/config.make.in b/config.make.in
index 0a2c873..ecad392 100644
--- a/config.make.in
+++ b/config.make.in
@@ -78,6 +78,7 @@ MSGFMT = @MSGFMT@
# Script execution tools.
BASH = @BASH@
KSH = @KSH@
+AWK = @AWK@
PERL = @PERL@
# More variables may be inserted below by configure.
diff --git a/configure b/configure
index 083cca4..474b21e 100755
--- a/configure
+++ b/configure
@@ -1968,12 +1968,45 @@ else
fi
-for ac_prog in perl
+for ac_prog in mawk gawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1977: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_AWK="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+AWK="$ac_cv_prog_AWK"
+if test -n "$AWK"; then
+ echo "$ac_t""$AWK" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$AWK" && break
+done
+
+for ac_prog in perl
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2010: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2008,7 +2041,7 @@ test -n "$PERL" || PERL="no"
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
-echo "configure:2012: checking for signed size_t type" >&5
+echo "configure:2045: checking for signed size_t type" >&5
if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2032,12 +2065,12 @@ EOF
fi
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
-echo "configure:2036: checking for libc-friendly stddef.h" >&5
+echo "configure:2069: checking for libc-friendly stddef.h" >&5
if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2041 "configure"
+#line 2074 "configure"
#include "confdefs.h"
#define __need_size_t
#define __need_wchar_t
@@ -2052,7 +2085,7 @@ size_t size; wchar_t wchar;
if (&size == NULL || &wchar == NULL) abort ();
; return 0; }
EOF
-if { (eval echo configure:2056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2089: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libc_cv_friendly_stddef=yes
else
@@ -2071,7 +2104,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
fi
echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
-echo "configure:2075: checking whether we need to use -P to assemble .S files" >&5
+echo "configure:2108: checking whether we need to use -P to assemble .S files" >&5
if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2094,7 +2127,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
-echo "configure:2098: checking for assembler global-symbol directive" >&5
+echo "configure:2131: checking for assembler global-symbol directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2124,7 +2157,7 @@ EOF
fi
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
-echo "configure:2128: checking for .set assembler directive" >&5
+echo "configure:2161: checking for .set assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2158,7 +2191,7 @@ EOF
fi
echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6
-echo "configure:2162: checking for .symver assembler directive" >&5
+echo "configure:2195: checking for .symver assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2177,7 +2210,7 @@ fi
echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6
-echo "configure:2181: checking for ld --version-script" >&5
+echo "configure:2214: checking for ld --version-script" >&5
if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2200,7 +2233,7 @@ EOF
if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
-nostartfiles -nostdlib
-Wl,--version-script,conftest.map
- 1>&5'; { (eval echo configure:2204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+ 1>&5'; { (eval echo configure:2237: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
then
libc_cv_ld_version_script_option=yes
else
@@ -2238,7 +2271,7 @@ if test $VERSIONING = no; then
fi
if test $elf = yes; then
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
-echo "configure:2242: checking for .previous assembler directive" >&5
+echo "configure:2275: checking for .previous assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2246,7 +2279,7 @@ else
.section foo_section
.previous
EOF
- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2250: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_asm_previous_directive=yes
else
libc_cv_asm_previous_directive=no
@@ -2262,7 +2295,7 @@ EOF
else
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
-echo "configure:2266: checking for .popsection assembler directive" >&5
+echo "configure:2299: checking for .popsection assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2270,7 +2303,7 @@ else
.pushsection foo_section
.popsection
EOF
- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2274: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2307: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_asm_popsection_directive=yes
else
libc_cv_asm_popsection_directive=no
@@ -2290,12 +2323,12 @@ fi
if test $elf != yes; then
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
-echo "configure:2294: checking for .init and .fini sections" >&5
+echo "configure:2327: checking for .init and .fini sections" >&5
if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2299 "configure"
+#line 2332 "configure"
#include "confdefs.h"
int main() {
@@ -2304,7 +2337,7 @@ asm (".section .init");
asm (".text");
; return 0; }
EOF
-if { (eval echo configure:2308: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2341: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libc_cv_have_initfini=yes
else
@@ -2332,19 +2365,19 @@ if test $elf = yes; then
else
if test $ac_cv_prog_cc_works = yes; then
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:2336: checking for _ prefix on C symbol names" >&5
+echo "configure:2369: checking for _ prefix on C symbol names" >&5
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2341 "configure"
+#line 2374 "configure"
#include "confdefs.h"
asm ("_glibc_foobar:");
int main() {
glibc_foobar ();
; return 0; }
EOF
-if { (eval echo configure:2348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
libc_cv_asm_underscores=yes
else
@@ -2359,17 +2392,17 @@ fi
echo "$ac_t""$libc_cv_asm_underscores" 1>&6
else
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:2363: checking for _ prefix on C symbol names" >&5
+echo "configure:2396: checking for _ prefix on C symbol names" >&5
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2368 "configure"
+#line 2401 "configure"
#include "confdefs.h"
void underscore_test(void) {
return; }
EOF
-if { (eval echo configure:2373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if grep _underscore_test conftest* >/dev/null; then
rm -f conftest*
libc_cv_asm_underscores=yes
@@ -2401,7 +2434,7 @@ if test $elf = yes; then
fi
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
-echo "configure:2405: checking for assembler .weak directive" >&5
+echo "configure:2438: checking for assembler .weak directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2424,7 +2457,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
if test $libc_cv_asm_weak_directive = no; then
echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
-echo "configure:2428: checking for assembler .weakext directive" >&5
+echo "configure:2461: checking for assembler .weakext directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2462,7 +2495,7 @@ EOF
fi
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
-echo "configure:2466: checking for ld --no-whole-archive" >&5
+echo "configure:2499: checking for ld --no-whole-archive" >&5
if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2473,7 +2506,7 @@ __throw () {}
EOF
if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -Wl,--no-whole-archive
- -o conftest conftest.c 1>&5'; { (eval echo configure:2477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ -o conftest conftest.c 1>&5'; { (eval echo configure:2510: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_ld_no_whole_archive=yes
else
libc_cv_ld_no_whole_archive=no
@@ -2484,7 +2517,7 @@ fi
echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6
echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6
-echo "configure:2488: checking for gcc -fno-exceptions" >&5
+echo "configure:2521: checking for gcc -fno-exceptions" >&5
if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2495,7 +2528,7 @@ __throw () {}
EOF
if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -fno-exceptions
- -o conftest conftest.c 1>&5'; { (eval echo configure:2499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ -o conftest conftest.c 1>&5'; { (eval echo configure:2532: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_gcc_no_exceptions=yes
else
libc_cv_gcc_no_exceptions=no
@@ -2507,14 +2540,14 @@ echo "$ac_t""$libc_cv_gcc_no_exceptions" 1>&6
if test "$base_machine" = alpha ; then
echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6
-echo "configure:2511: checking for function ..ng prefix" >&5
+echo "configure:2544: checking for function ..ng prefix" >&5
if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.c <<\EOF
foo () { }
EOF
-if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2518: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2551: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
then
libc_cv_gcc_alpha_ng_prefix=yes
else
@@ -2538,12 +2571,12 @@ fi
fi
echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
-echo "configure:2542: checking for DWARF2 unwind info support" >&5
+echo "configure:2575: checking for DWARF2 unwind info support" >&5
if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.c <<EOF
-#line 2547 "configure"
+#line 2580 "configure"
static char __EH_FRAME_BEGIN__;
_start ()
{
@@ -2570,7 +2603,7 @@ __bzero () {}
EOF
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
-nostdlib -nostartfiles
- -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2607: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_gcc_dwarf2_unwind_info=static
else
libc_cv_gcc_dwarf2_unwind_info=no
@@ -2578,7 +2611,7 @@ fi
if test $libc_cv_gcc_dwarf2_unwind_info = no; then
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
-nostdlib -nostartfiles
- -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2582: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_gcc_dwarf2_unwind_info=yes
else
libc_cv_gcc_dwarf2_unwind_info=no
@@ -2652,7 +2685,7 @@ if test "$uname" = "sysdeps/generic"; then
fi
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
-echo "configure:2656: checking OS release for uname" >&5
+echo "configure:2689: checking OS release for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2674,7 +2707,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
uname_release="$libc_cv_uname_release"
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
-echo "configure:2678: checking OS version for uname" >&5
+echo "configure:2711: checking OS version for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2696,7 +2729,7 @@ else
fi
echo $ac_n "checking stdio selection""... $ac_c" 1>&6
-echo "configure:2700: checking stdio selection" >&5
+echo "configure:2733: checking stdio selection" >&5
case $stdio in
libio) cat >> confdefs.h <<\EOF
@@ -2708,7 +2741,7 @@ esac
echo "$ac_t""$stdio" 1>&6
echo $ac_n "checking ldap selection""... $ac_c" 1>&6
-echo "configure:2712: checking ldap selection" >&5
+echo "configure:2745: checking ldap selection" >&5
case $add_ons in
*ldap*)
@@ -2759,7 +2792,7 @@ if test $shared = default; then
fi
echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
-echo "configure:2763: checking whether -fPIC is default" >&5
+echo "configure:2796: checking whether -fPIC is default" >&5
if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2961,6 +2994,7 @@ s%@BASH@%$BASH%g
s%@libc_cv_have_bash2@%$libc_cv_have_bash2%g
s%@KSH@%$KSH%g
s%@libc_cv_have_ksh@%$libc_cv_have_ksh%g
+s%@AWK@%$AWK%g
s%@PERL@%$PERL%g
s%@VERSIONING@%$VERSIONING%g
s%@libc_cv_have_initfini@%$libc_cv_have_initfini%g
diff --git a/configure.in b/configure.in
index aca7dd1..b7727c3 100644
--- a/configure.in
+++ b/configure.in
@@ -557,6 +557,7 @@ else
fi
AC_SUBST(libc_cv_have_ksh)
+AC_PROG_AWK
AC_PATH_PROGS(PERL, perl, no)
AC_SUBST(PERL)
diff --git a/csu/Makefile b/csu/Makefile
index 7482caf..da17b2c 100644
--- a/csu/Makefile
+++ b/csu/Makefile
@@ -85,7 +85,7 @@ $(objpfx)crtn.S: $(objpfx)initfini.s
$(objpfx)defs.h: $(objpfx)initfini.s
sed -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \
- awk -f defs.awk > $@
+ $(AWK) -f defs.awk > $@
endif
diff --git a/elf/Makefile b/elf/Makefile
index 8ad8d98..9ce3ac5 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -146,7 +146,7 @@ $(objpfx)trusted-dirs.h: Makefile $(..)Makeconfig
mv -f $@T $@
$(objpfx)rtldtbl.h: Makefile $(..)Makeconfig genrtldtbl.awk
$(make-target-directory)
- echo "$(default-rpath)" | awk -f genrtldtbl.awk > $@T
+ echo "$(default-rpath)" | $(AWK) -f genrtldtbl.awk > $@T
mv -f $@T $@
CPPFLAGS-dl-load.c = -I$(objpfx).
CFLAGS-dl-load.c += -Wno-uninitialized
diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c
index 70b5aee..249ff71 100644
--- a/elf/dl-minimal.c
+++ b/elf/dl-minimal.c
@@ -233,6 +233,7 @@ __strtol_internal (const char *nptr, char **endptr, int base, int group)
}
assert (base == 0);
+ base = 10;
if (*nptr == '0')
{
if (nptr[1] == 'x' || nptr[1] == 'X')
@@ -243,8 +244,6 @@ __strtol_internal (const char *nptr, char **endptr, int base, int group)
else
base = 8;
}
- else
- base = 10;
while (*nptr >= '0' && *nptr <= '9')
{
@@ -257,8 +256,9 @@ __strtol_internal (const char *nptr, char **endptr, int base, int group)
errno = ERANGE;
return sign > 0 ? LONG_MAX : LONG_MIN;
}
- result *= 10;
+ result *= base;
result += digval;
+ ++nptr;
}
return (long int) result * sign;
@@ -295,6 +295,7 @@ __strtoul_internal (const char *nptr, char **endptr, int base, int group)
}
assert (base == 0);
+ base = 10;
if (*nptr == '0')
{
if (nptr[1] == 'x' || nptr[1] == 'X')
@@ -305,8 +306,6 @@ __strtoul_internal (const char *nptr, char **endptr, int base, int group)
else
base = 8;
}
- else
- base = 10;
while (*nptr >= '0' && *nptr <= '9')
{
@@ -317,8 +316,9 @@ __strtoul_internal (const char *nptr, char **endptr, int base, int group)
errno = ERANGE;
return ULONG_MAX;
}
- result *= 10;
+ result *= base;
result += digval;
+ ++nptr;
}
return result * sign;
diff --git a/elf/rtld.c b/elf/rtld.c
index b07a076..6b1a5c2 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -287,6 +287,7 @@ dl_main (const ElfW(Phdr) *phdr,
char *file;
int has_interp = 0;
unsigned int i;
+ int paths_initialized = 0;
/* Process the environment variable which control the behaviour. */
process_envvars (&mode, &lazy);
@@ -376,6 +377,7 @@ of this helper program; chances are you did not intend to run this program.\n\
/* Initialize the data structures for the search paths for shared
objects. */
_dl_init_paths (library_path);
+ paths_initialized = 1;
if (mode == verify)
{
@@ -493,7 +495,7 @@ of this helper program; chances are you did not intend to run this program.\n\
_exit (0);
}
- if (*user_entry != (ElfW(Addr)) &ENTRY_POINT)
+ if (! paths_initialized)
/* Initialize the data structures for the search paths for shared
objects. */
_dl_init_paths (library_path);
diff --git a/iconv/gconv.c b/iconv/gconv.c
index aa58bdb..24dc21e 100644
--- a/iconv/gconv.c
+++ b/iconv/gconv.c
@@ -51,19 +51,9 @@ __gconv (gconv_t cd, const char **inbuf, const char *inbufend, char **outbuf,
do
{
- /* See whether the input size is reasoable for the output
- size. If not adjust it. */
- size_t inlen = ((inbufend - *inbuf) / cd->steps->max_needed_from
- * cd->steps->max_needed_from);
-
- if (cd->nsteps > 1)
- inlen = MIN (inlen, (((outbufend - cd->data[last_step].outbuf)
- / cd->steps[last_step].max_needed_to)
- * cd->steps[last_step].max_needed_to));
-
last_start = *inbuf;
- result = (*cd->steps->fct) (cd->steps, cd->data, inbuf,
- *inbuf + inlen, converted, 0);
+ result = (*cd->steps->fct) (cd->steps, cd->data, inbuf, inbufend,
+ converted, 0);
}
while (result == GCONV_EMPTY_INPUT && last_start != *inbuf
&& *inbuf + cd->steps->min_needed_from <= inbufend);
diff --git a/iconv/gconv_open.c b/iconv/gconv_open.c
index 831794f..d7e0191 100644
--- a/iconv/gconv_open.c
+++ b/iconv/gconv_open.c
@@ -71,14 +71,16 @@ __gconv_open (const char *toset, const char *fromset, gconv_t *handle)
/* Allocate the buffer. */
if (!data[cnt].is_last)
{
- data[cnt].outbuf =
- (char *) malloc (GCONV_NCHAR_GOAL
- * steps[cnt].max_needed_to);
+ size_t size = (GCONV_NCHAR_GOAL
+ * steps[cnt].max_needed_to);
+
+ data[cnt].outbuf = (char *) malloc (size);
if (data[cnt].outbuf == NULL)
{
res = GCONV_NOMEM;
break;
}
+ data[cnt].outbufend = data[cnt].outbuf + size;
}
}
}
diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c
index f2fec12..95b4a66 100644
--- a/iconv/gconv_simple.c
+++ b/iconv/gconv_simple.c
@@ -181,7 +181,7 @@ internal_ucs4_loop (const unsigned char **inptrp, const unsigned char *inend,
#define LOOPFCT FROM_LOOP
#define BODY \
{ \
- if (*((uint32_t *) inptr) > '\x7f') \
+ if (*((uint32_t *) inptr) > 0x7f) \
{ \
/* This is no correct ANSI_X3.4-1968 character. */ \
result = GCONV_ILLEGAL_INPUT; \
@@ -208,6 +208,7 @@ internal_ucs4_loop (const unsigned char **inptrp, const unsigned char *inend,
#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
+#define MAX_NEEDED_OUTPUT MAX_NEEDED_TO
#define LOOPFCT FROM_LOOP
#define BODY \
{ \
@@ -266,6 +267,7 @@ internal_ucs4_loop (const unsigned char **inptrp, const unsigned char *inend,
#define FUNCTION_NAME __gconv_transform_utf8_internal
#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
+#define MAX_NEEDED_INPUT MAX_NEEDED_FROM
#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
#define LOOPFCT FROM_LOOP
#define BODY \
@@ -278,69 +280,75 @@ internal_ucs4_loop (const unsigned char **inptrp, const unsigned char *inend,
ch = *inptr; \
\
if (ch < 0x80) \
- /* One byte sequence. */ \
- cnt = 1; \
- else if ((ch & 0xe0) == 0xc0) \
{ \
- cnt = 2; \
- ch &= 0x1f; \
- } \
- else if ((ch & 0xf0) == 0xe0) \
- { \
- /* We expect three bytes. */ \
- cnt = 3; \
- ch &= 0x0f; \
- } \
- else if ((ch & 0xf8) == 0xf0) \
- { \
- /* We expect four bytes. */ \
- cnt = 4; \
- ch &= 0x07; \
- } \
- else if ((ch & 0xfc) == 0xf8) \
- { \
- /* We expect five bytes. */ \
- cnt = 5; \
- ch &= 0x03; \
- } \
- else if ((ch & 0xfe) == 0xfc) \
- { \
- /* We expect six bytes. */ \
- cnt = 6; \
- ch &= 0x01; \
+ /* One byte sequence. */ \
+ cnt = 1; \
+ ++inptr; \
} \
else \
{ \
- /* This is an illegal encoding. */ \
- result = GCONV_ILLEGAL_INPUT; \
- break; \
- } \
- \
- if (NEED_LENGTH_TEST && inptr + cnt >= inend) \
- { \
- /* We don't have enough input. */ \
- result = GCONV_INCOMPLETE_INPUT; \
- break; \
- } \
- \
- /* Read the possible remaining bytes. */ \
- for (i = 1; i < cnt; ++i) \
- { \
- uint32_t byte = inptr[i]; \
- \
- if ((byte & 0xc0) != 0x80) \
+ if ((ch & 0xe0) == 0xc0) \
+ { \
+ cnt = 2; \
+ ch &= 0x1f; \
+ } \
+ else if ((ch & 0xf0) == 0xe0) \
+ { \
+ /* We expect three bytes. */ \
+ cnt = 3; \
+ ch &= 0x0f; \
+ } \
+ else if ((ch & 0xf8) == 0xf0) \
+ { \
+ /* We expect four bytes. */ \
+ cnt = 4; \
+ ch &= 0x07; \
+ } \
+ else if ((ch & 0xfc) == 0xf8) \
+ { \
+ /* We expect five bytes. */ \
+ cnt = 5; \
+ ch &= 0x03; \
+ } \
+ else if ((ch & 0xfe) == 0xfc) \
+ { \
+ /* We expect six bytes. */ \
+ cnt = 6; \
+ ch &= 0x01; \
+ } \
+ else \
{ \
/* This is an illegal encoding. */ \
result = GCONV_ILLEGAL_INPUT; \
break; \
} \
\
- ch <<= 6; \
- ch |= byte & 0x3f; \
+ if (NEED_LENGTH_TEST && inptr + cnt > inend) \
+ { \
+ /* We don't have enough input. */ \
+ result = GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ \
+ /* Read the possible remaining bytes. */ \
+ for (i = 1; i < cnt; ++i) \
+ { \
+ uint32_t byte = inptr[i]; \
+ \
+ if ((byte & 0xc0) != 0x80) \
+ { \
+ /* This is an illegal encoding. */ \
+ result = GCONV_ILLEGAL_INPUT; \
+ break; \
+ } \
+ \
+ ch <<= 6; \
+ ch |= byte & 0x3f; \
+ } \
+ inptr += cnt; \
} \
\
/* Now adjust the pointers and store the result. */ \
- inptr += cnt; \
*((uint32_t *) outptr)++ = ch; \
}
#include <iconv/loop.c>
diff --git a/iconv/loop.c b/iconv/loop.c
index b8657d5..e1c1ab6 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -32,8 +32,6 @@
bytes needed. It defaults to MIN_NEEDED_INPUT
MAX_NEEDED_OUTPUT likewise for output bytes.
- Both values have a default of 1.
-
LOOPFCT name of the function created. If not specified
the name is `loop' but this prevents the use
of multiple functions in the same file.
@@ -55,7 +53,7 @@
/* We need at least one byte for the next round. */
#ifndef MIN_NEEDED_INPUT
-# define MIN_NEEDED_INPUT 1
+# error "MIN_NEEDED_INPUT definition missing"
#endif
/* Let's see how many bytes we produce. */
@@ -65,7 +63,7 @@
/* We produce at least one byte in the next round. */
#ifndef MIN_NEEDED_OUTPUT
-# define MIN_NEEDED_OUTPUT 1
+# error "MIN_NEEDED_OUTPUT definition missing"
#endif
/* Let's see how many bytes we produce. */
diff --git a/iconv/skeleton.c b/iconv/skeleton.c
index 3582f14..f905bcd 100644
--- a/iconv/skeleton.c
+++ b/iconv/skeleton.c
@@ -196,6 +196,7 @@ FUNCTION_NAME (struct gconv_step *step, struct gconv_step_data *data,
/* This variable is used to count the number of characters we
actually converted. */
size_t converted = 0;
+ size_t last_converted;
/* We preserve the initial values of the pointer variables. */
const char *inptr = *inbuf;
@@ -211,6 +212,7 @@ FUNCTION_NAME (struct gconv_step *step, struct gconv_step_data *data,
outptr = outbuf;
/* Save the state. */
+ last_converted = converted;
#ifdef SAVE_RESET_STATE
SAVE_RESET_STATE (1);
#endif
@@ -242,7 +244,7 @@ FUNCTION_NAME (struct gconv_step *step, struct gconv_step_data *data,
/* Write out all output which was produced. */
if (outbuf > outptr)
{
- const char *outerr = outbuf;
+ const char *outerr = data->outbuf;
int result;
result = (*fct) (next_step, next_data, &outerr, outbuf,
@@ -264,6 +266,7 @@ FUNCTION_NAME (struct gconv_step *step, struct gconv_step_data *data,
outbuf = outptr;
/* Reset the state. */
+ converted = last_converted;
# ifdef SAVE_RESET_STATE
SAVE_RESET_STATE (0);
# endif
@@ -287,8 +290,8 @@ FUNCTION_NAME (struct gconv_step *step, struct gconv_step_data *data,
/* We must run out of output buffer space in this
rerun. */
- assert (nstatus == GCONV_FULL_OUTPUT
- && outbuf == outerr);
+ assert (outbuf == outerr);
+ assert (nstatus == GCONV_FULL_OUTPUT);
#endif /* reset input buffer */
}
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 6957685..c590ab2 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -211,7 +211,7 @@ endif
include ../Rules
.PHONY: do-iconv-test
-#tests: do-iconv-test
+tests: do-iconv-test
do-iconv-test: run-iconv-test.sh $(objpfx)gconv-modules \
$(addprefix $(objpfx),$(modules.so)) \
diff --git a/iconvdata/TESTS b/iconvdata/TESTS
index 41d7edc..c37381e 100644
--- a/iconvdata/TESTS
+++ b/iconvdata/TESTS
@@ -18,22 +18,24 @@
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
-# Each line consists of at least three entries:
+# Each line consists of at least four entries:
# 1. input file name.
# 2. output file name; this is different from the input file name only for
# conversions which do not produce the same output when the transformation
# is applied back and forth.
-# 3.
+# 3. Y or N depending of whether the character set contains ASCII as a
+# subset or not.
+# 4.
# ...
# N. target coded character set.
-ISO-8859-1 ISO-8859-1 UTF8
-ISO-8859-2 ISO-8859-2 UCS4 UTF8
-ISO-8859-3 ISO-8859-3 UTF8
-ISO-8859-4 ISO-8859-4 UTF8
-ISO-8859-5 ISO-8859-5 UTF8
-ISO-8859-6 ISO-8859-6 UTF8
-ISO-8859-7 ISO-8859-7 UTF8
-ISO-8859-8 ISO-8859-8 UTF8
-ISO-8859-9 ISO-8859-9 UTF8
-ISO-8859-10 ISO-8859-10 UCS2 UTF8
+ISO-8859-1 ISO-8859-1 Y UTF8
+ISO-8859-2 ISO-8859-2 Y UCS4 UTF8
+ISO-8859-3 ISO-8859-3 Y UTF8
+ISO-8859-4 ISO-8859-4 Y UTF8
+ISO-8859-5 ISO-8859-5 Y UTF8
+ISO-8859-6 ISO-8859-6 Y UTF8
+ISO-8859-7 ISO-8859-7 Y UTF8
+ISO-8859-8 ISO-8859-8 Y UTF8
+ISO-8859-9 ISO-8859-9 Y UTF8
+ISO-8859-10 ISO-8859-10 Y UCS2 UTF8
diff --git a/iconvdata/big5.c b/iconvdata/big5.c
index 2962712..d4d89a0 100644
--- a/iconvdata/big5.c
+++ b/iconvdata/big5.c
@@ -8431,7 +8431,7 @@ static const char from_ucs4_tab13[][2] =
{ \
uint32_t ch = *inptr; \
\
- if (ch >= '\xa1' && ch <= '\xff') \
+ if (ch >= 0xa1 && ch <= 0xff) \
{ \
/* Two-byte character. First test whether the next character \
is also available. */ \
@@ -8448,9 +8448,9 @@ static const char from_ucs4_tab13[][2] =
idx = (ch - 0xa1) * 157; \
ch2 = inptr[1]; \
/* See whether the second byte is in the correct range. */ \
- if (ch2 >= '\x40' && ch2 <= '\x7e') \
+ if (ch2 >= 0x40 && ch2 <= 0x7e) \
idx += ch2 - 0x40; \
- else if (ch2 >= '\xa1' && ch2 <= '\xfe') \
+ else if (ch2 >= 0xa1 && ch2 <= 0xfe) \
idx += 0x3f + (ch2 - 0xa1); \
else \
{ \
@@ -8463,7 +8463,7 @@ static const char from_ucs4_tab13[][2] =
ch = big5_to_ucs[idx]; \
\
/* Is this character defined? */ \
- if (ch == L'\0' && *inptr != '\0') \
+ if (ch == 0 && *inptr != '\0') \
{ \
/* This is an illegal character. */ \
result = GCONV_ILLEGAL_INPUT; \
diff --git a/iconvdata/iso8859-1.c b/iconvdata/iso8859-1.c
index 3e50b79..c7b35b3 100644
--- a/iconvdata/iso8859-1.c
+++ b/iconvdata/iso8859-1.c
@@ -39,8 +39,8 @@
/* Next, define the other direction. */
-#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
-#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
#define LOOPFCT TO_LOOP
#define BODY \
{ \
diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh
index af6a136..4506137 100755
--- a/iconvdata/run-iconv-test.sh
+++ b/iconvdata/run-iconv-test.sh
@@ -37,37 +37,50 @@ ICONV="$codir/elf/ld.so --library-path $codir $codir/iconv/iconv_prog"
# We read the file named TESTS. All non-empty lines not starting with
# `#' are interpreted as commands.
-while read from to targets; do
+failed=0
+while read from to subset targets; do
# Ignore empty and comment lines.
if test -z "$targets" || test "$from" = '#'; then continue; fi
for t in $targets; do
$ICONV -f $from -t $t testdata/$from > $temp1 ||
- { echo "*** conversion from $from to $t failed"; exit 1; }
+ { echo "*** conversion from $from to $t failed"; failed=1; }
if test -s testdata/$from..$t; then
cmp $temp1 testdata/$from..$t >& /dev/null ||
- { echo "*** $from -> $t conversion failed"; exit 1; }
+ { echo "*** $from -> $t conversion failed"; failed=1; }
fi
$ICONV -f $t -t $to -o $temp2 $temp1 ||
- { echo "*** conversion from $t to $to failed"; exit 1; }
+ { echo "*** conversion from $t to $to failed"; failed=1; }
test -s $temp1 && cmp testdata/$from $temp2 >& /dev/null ||
- { echo "*** $from -> t -> $to conversion failed"; exit 1; }
+ { echo "*** $from -> t -> $to conversion failed"; failed=1; }
rm -f $temp1 $temp2
- # Now test some bigger text, entirely in ASCII.
- $ICONV -f $from -t $t testdata/suntzus |
- $ICONV -f $t -t $to > $temp1 ||
- { echo "*** conversion $from->$t->$to of suntzus failed"; exit 1; }
- cmp testdata/suntzus.txt $temp1 ||
- { echo "*** conversion $from->$t->$to of suntzus incorrect"; exit 1; }
+ # Now test some bigger text, entirely in ASCII. If ASCII is no subset
+ # of the coded character set we test we convert the test to this
+ # coded character set. Otherwise we convert to all the TARGETS.
+ if test $subset = Y; then
+ $ICONV -f $from -t $t testdata/suntzus |
+ $ICONV -f $t -t $to > $temp1 ||
+ { echo "*** conversion $from->$t->$to of suntzus failed"; failed=1; }
+ cmp testdata/suntzus $temp1 ||
+ { echo "*** conversion $from->$t->$to of suntzus incorrect";
+ failed=1; }
+ else
+ $ICONV -f ASCII -t $to testdata/suntzus |
+ $ICONV -f $to -f ASCII > $temp1 ||
+ { echo "*** conversion ASCII->$to->ASCII of suntzus failed";
+ failed=1; }
+ cmp testdata/suntzus $temp1 ||
+ { echo "*** conversion ASCII->$to->ASCII of suntzus incorrect";
+ failed=1; }
+ fi
rm -f $temp1
-
# All tests ok.
echo "$from -> $t -> $to ok"
done
done < TESTS
-exit $?
+exit $failed
# Local Variables:
# mode:shell-script
# End:
diff --git a/iconvdata/testdata/suntzus b/iconvdata/testdata/suntzus
new file mode 100644
index 0000000..4432c05
--- /dev/null
+++ b/iconvdata/testdata/suntzus
@@ -0,0 +1,1693 @@
+
+
+
+
+ SUN TZU ON THE ART OF WAR
+ THE OLDEST MILITARY TREATISE IN THE WORLD
+
+ Translated from the Chinese
+ By LIONEL GILES, M.A. (1910)
+
+
+
+[This is the basic text of Sun Tzu on the Art of War. It was
+extracted from Mr. Giles' complete work as titled above. The
+commentary itself, which, of course includes this work embedded
+within it, has been released as suntzu10.txt (or suntzu10.zip).
+This is being released only as an adjunct to that work, which
+contains a wealth of commentary upon this text.]
+
+
+
+
+I. LAYING PLANS
+
+
+ 1. Sun Tzu said: The art of war is of vital importance
+ to the State.
+
+ 2. It is a matter of life and death, a road either
+ to safety or to ruin. Hence it is a subject of inquiry
+ which can on no account be neglected.
+
+ 3. The art of war, then, is governed by five constant
+ factors, to be taken into account in one's deliberations,
+ when seeking to determine the conditions obtaining in the field.
+
+ 4. These are: (1) The Moral Law; (2) Heaven; (3) Earth;
+ (4) The Commander; (5) Method and discipline.
+
+5,6. The Moral Law causes the people to be in complete
+ accord with their ruler, so that they will follow him
+ regardless of their lives, undismayed by any danger.
+
+ 7. Heaven signifies night and day, cold and heat,
+ times and seasons.
+
+ 8. Earth comprises distances, great and small;
+ danger and security; open ground and narrow passes;
+ the chances of life and death.
+
+ 9. The Commander stands for the virtues of wisdom,
+ sincerely, benevolence, courage and strictness.
+
+10. By method and discipline are to be understood
+ the marshaling of the army in its proper subdivisions,
+ the graduations of rank among the officers, the maintenance
+ of roads by which supplies may reach the army, and the
+ control of military expenditure.
+
+11. These five heads should be familiar to every general:
+ he who knows them will be victorious; he who knows them
+ not will fail.
+
+12. Therefore, in your deliberations, when seeking
+ to determine the military conditions, let them be made
+ the basis of a comparison, in this wise:--
+
+13. (1) Which of the two sovereigns is imbued
+ with the Moral law?
+ (2) Which of the two generals has most ability?
+ (3) With whom lie the advantages derived from Heaven
+ and Earth?
+ (4) On which side is discipline most rigorously enforced?
+ (5) Which army is stronger?
+ (6) On which side are officers and men more highly trained?
+ (7) In which army is there the greater constancy
+ both in reward and punishment?
+
+14. By means of these seven considerations I can
+ forecast victory or defeat.
+
+15. The general that hearkens to my counsel and acts
+ upon it, will conquer: let such a one be retained in command!
+ The general that hearkens not to my counsel nor acts upon it,
+ will suffer defeat:--let such a one be dismissed!
+
+16. While heading the profit of my counsel,
+ avail yourself also of any helpful circumstances
+ over and beyond the ordinary rules.
+
+17. According as circumstances are favorable,
+ one should modify one's plans.
+
+18. All warfare is based on deception.
+
+19. Hence, when able to attack, we must seem unable;
+ when using our forces, we must seem inactive; when we
+ are near, we must make the enemy believe we are far away;
+ when far away, we must make him believe we are near.
+
+20. Hold out baits to entice the enemy. Feign disorder,
+ and crush him.
+
+21. If he is secure at all points, be prepared for him.
+ If he is in superior strength, evade him.
+
+22. If your opponent is of choleric temper, seek to
+ irritate him. Pretend to be weak, that he may grow arrogant.
+
+23. If he is taking his ease, give him no rest.
+ If his forces are united, separate them.
+
+24. Attack him where he is unprepared, appear where
+ you are not expected.
+
+25. These military devices, leading to victory,
+ must not be divulged beforehand.
+
+26. Now the general who wins a battle makes many
+ calculations in his temple ere the battle is fought.
+ The general who loses a battle makes but few
+ calculations beforehand. Thus do many calculations
+ lead to victory, and few calculations to defeat:
+ how much more no calculation at all! It is by attention
+ to this point that I can foresee who is likely to win or lose.
+
+
+II. WAGING WAR
+
+
+ 1. Sun Tzu said: In the operations of war,
+ where there are in the field a thousand swift chariots,
+ as many heavy chariots, and a hundred thousand
+ mail-clad soldiers, with provisions enough to carry them
+ a thousand li, the expenditure at home and at the front,
+ including entertainment of guests, small items such as
+ glue and paint, and sums spent on chariots and armor,
+ will reach the total of a thousand ounces of silver per day.
+ Such is the cost of raising an army of 100,000 men.
+
+ 2. When you engage in actual fighting, if victory
+ is long in coming, then men's weapons will grow dull and
+ their ardor will be damped. If you lay siege to a town,
+ you will exhaust your strength.
+ 3. Again, if the campaign is protracted, the resources
+ of the State will not be equal to the strain.
+
+ 4. Now, when your weapons are dulled, your ardor damped,
+ your strength exhausted and your treasure spent,
+ other chieftains will spring up to take advantage
+ of your extremity. Then no man, however wise,
+ will be able to avert the consequences that must ensue.
+
+ 5. Thus, though we have heard of stupid haste in war,
+ cleverness has never been seen associated with long delays.
+
+ 6. There is no instance of a country having benefited
+ from prolonged warfare.
+
+ 7. It is only one who is thoroughly acquainted
+ with the evils of war that can thoroughly understand
+ the profitable way of carrying it on.
+
+ 8. The skillful soldier does not raise a second levy,
+ neither are his supply-wagons loaded more than twice.
+
+ 9. Bring war material with you from home, but forage
+ on the enemy. Thus the army will have food enough
+ for its needs.
+
+10. Poverty of the State exchequer causes an army
+ to be maintained by contributions from a distance.
+ Contributing to maintain an army at a distance causes
+ the people to be impoverished.
+
+11. On the other hand, the proximity of an army causes
+ prices to go up; and high prices cause the people's
+ substance to be drained away.
+
+12. When their substance is drained away, the peasantry
+ will be afflicted by heavy exactions.
+
+13,14. With this loss of substance and exhaustion
+ of strength, the homes of the people will be stripped bare,
+ and three-tenths of their income will be dissipated;
+ while government expenses for broken chariots, worn-out horses,
+ breast-plates and helmets, bows and arrows, spears and shields,
+ protective mantles, draught-oxen and heavy wagons,
+ will amount to four-tenths of its total revenue.
+
+15. Hence a wise general makes a point of foraging
+ on the enemy. One cartload of the enemy's provisions
+ is equivalent to twenty of one's own, and likewise
+ a single picul of his provender is equivalent to twenty
+ from one's own store.
+
+16. Now in order to kill the enemy, our men must
+ be roused to anger; that there may be advantage from
+ defeating the enemy, they must have their rewards.
+
+17. Therefore in chariot fighting, when ten or more chariots
+ have been taken, those should be rewarded who took the first.
+ Our own flags should be substituted for those of the enemy,
+ and the chariots mingled and used in conjunction with ours.
+ The captured soldiers should be kindly treated and kept.
+
+18. This is called, using the conquered foe to augment
+ one's own strength.
+
+19. In war, then, let your great object be victory,
+ not lengthy campaigns.
+
+20. Thus it may be known that the leader of armies
+ is the arbiter of the people's fate, the man on whom it
+ depends whether the nation shall be in peace or in peril.
+
+
+III. ATTACK BY STRATAGEM
+
+
+ 1. Sun Tzu said: In the practical art of war, the best
+ thing of all is to take the enemy's country whole and intact;
+ to shatter and destroy it is not so good. So, too, it is
+ better to recapture an army entire than to destroy it,
+ to capture a regiment, a detachment or a company entire
+ than to destroy them.
+
+ 2. Hence to fight and conquer in all your battles
+ is not supreme excellence; supreme excellence consists
+ in breaking the enemy's resistance without fighting.
+
+ 3. Thus the highest form of generalship is to
+ balk the enemy's plans; the next best is to prevent
+ the junction of the enemy's forces; the next in
+ order is to attack the enemy's army in the field;
+ and the worst policy of all is to besiege walled cities.
+
+ 4. The rule is, not to besiege walled cities if it
+ can possibly be avoided. The preparation of mantlets,
+ movable shelters, and various implements of war, will take
+ up three whole months; and the piling up of mounds over
+ against the walls will take three months more.
+
+ 5. The general, unable to control his irritation,
+ will launch his men to the assault like swarming ants,
+ with the result that one-third of his men are slain,
+ while the town still remains untaken. Such are the disastrous
+ effects of a siege.
+
+ 6. Therefore the skillful leader subdues the enemy's
+ troops without any fighting; he captures their cities
+ without laying siege to them; he overthrows their kingdom
+ without lengthy operations in the field.
+
+ 7. With his forces intact he will dispute the mastery
+ of the Empire, and thus, without losing a man, his triumph
+ will be complete. This is the method of attacking by stratagem.
+
+ 8. It is the rule in war, if our forces are ten
+ to the enemy's one, to surround him; if five to one,
+ to attack him; if twice as numerous, to divide our army
+ into two.
+
+ 9. If equally matched, we can offer battle;
+ if slightly inferior in numbers, we can avoid the enemy;
+ if quite unequal in every way, we can flee from him.
+
+10. Hence, though an obstinate fight may be made
+ by a small force, in the end it must be captured
+ by the larger force.
+
+11. Now the general is the bulwark of the State;
+ if the bulwark is complete at all points; the State will
+ be strong; if the bulwark is defective, the State will
+ be weak.
+
+12. There are three ways in which a ruler can bring
+ misfortune upon his army:--
+
+13. (1) By commanding the army to advance or to retreat,
+ being ignorant of the fact that it cannot obey.
+ This is called hobbling the army.
+
+14. (2) By attempting to govern an army in the
+ same way as he administers a kingdom, being ignorant
+ of the conditions which obtain in an army. This causes
+ restlessness in the soldier's minds.
+
+15. (3) By employing the officers of his army
+ without discrimination, through ignorance of the
+ military principle of adaptation to circumstances.
+ This shakes the confidence of the soldiers.
+
+16. But when the army is restless and distrustful,
+ trouble is sure to come from the other feudal princes.
+ This is simply bringing anarchy into the army, and flinging
+ victory away.
+
+17. Thus we may know that there are five essentials
+ for victory:
+ (1) He will win who knows when to fight and when
+ not to fight.
+ (2) He will win who knows how to handle both superior
+ and inferior forces.
+ (3) He will win whose army is animated by the same
+ spirit throughout all its ranks.
+ (4) He will win who, prepared himself, waits to take
+ the enemy unprepared.
+ (5) He will win who has military capacity and is
+ not interfered with by the sovereign.
+
+18. Hence the saying: If you know the enemy
+ and know yourself, you need not fear the result of a
+ hundred battles. If you know yourself but not the enemy,
+ for every victory gained you will also suffer a defeat.
+ If you know neither the enemy nor yourself, you will
+ succumb in every battle.
+
+
+IV. TACTICAL DISPOSITIONS
+
+
+ 1. Sun Tzu said: The good fighters of old first put
+ themselves beyond the possibility of defeat, and then
+ waited for an opportunity of defeating the enemy.
+
+ 2. To secure ourselves against defeat lies in our
+ own hands, but the opportunity of defeating the enemy
+ is provided by the enemy himself.
+ 3. Thus the good fighter is able to secure himself against defeat,
+ but cannot make certain of defeating the enemy.
+
+ 4. Hence the saying: One may know how to conquer
+ without being able to do it.
+
+ 5. Security against defeat implies defensive tactics;
+ ability to defeat the enemy means taking the offensive.
+
+ 6. Standing on the defensive indicates insufficient
+ strength; attacking, a superabundance of strength.
+
+ 7. The general who is skilled in defense hides in the
+ most secret recesses of the earth; he who is skilled in
+ attack flashes forth from the topmost heights of heaven.
+ Thus on the one hand we have ability to protect ourselves;
+ on the other, a victory that is complete.
+
+ 8. To see victory only when it is within the ken
+ of the common herd is not the acme of excellence.
+
+ 9. Neither is it the acme of excellence if you fight
+ and conquer and the whole Empire says, "Well done!"
+
+10. To lift an autumn hair is no sign of great strength;
+ to see the sun and moon is no sign of sharp sight;
+ to hear the noise of thunder is no sign of a quick ear.
+
+11. What the ancients called a clever fighter is
+ one who not only wins, but excels in winning with ease.
+
+12. Hence his victories bring him neither reputation
+ for wisdom nor credit for courage.
+
+13. He wins his battles by making no mistakes.
+ Making no mistakes is what establishes the certainty
+ of victory, for it means conquering an enemy that is
+ already defeated.
+
+14. Hence the skillful fighter puts himself into
+ a position which makes defeat impossible, and does
+ not miss the moment for defeating the enemy.
+
+15. Thus it is that in war the victorious strategist
+ only seeks battle after the victory has been won,
+ whereas he who is destined to defeat first fights
+ and afterwards looks for victory.
+
+16. The consummate leader cultivates the moral law,
+ and strictly adheres to method and discipline; thus it is
+ in his power to control success.
+
+17. In respect of military method, we have,
+ firstly, Measurement; secondly, Estimation of quantity;
+ thirdly, Calculation; fourthly, Balancing of chances;
+ fifthly, Victory.
+
+18. Measurement owes its existence to Earth;
+ Estimation of quantity to Measurement; Calculation to
+ Estimation of quantity; Balancing of chances to Calculation;
+ and Victory to Balancing of chances.
+
+19. A victorious army opposed to a routed one, is as
+ a pound's weight placed in the scale against a single grain.
+
+20. The onrush of a conquering force is like the bursting
+ of pent-up waters into a chasm a thousand fathoms deep.
+
+
+V. ENERGY
+
+
+ 1. Sun Tzu said: The control of a large force
+ is the same principle as the control of a few men:
+ it is merely a question of dividing up their numbers.
+
+ 2. Fighting with a large army under your command
+ is nowise different from fighting with a small one:
+ it is merely a question of instituting signs and signals.
+
+ 3. To ensure that your whole host may withstand
+ the brunt of the enemy's attack and remain unshaken--
+ this is effected by maneuvers direct and indirect.
+
+ 4. That the impact of your army may be like a grindstone
+ dashed against an egg--this is effected by the science
+ of weak points and strong.
+
+ 5. In all fighting, the direct method may be used
+ for joining battle, but indirect methods will be needed
+ in order to secure victory.
+
+ 6. Indirect tactics, efficiently applied, are inexhaustible
+ as Heaven and Earth, unending as the flow of rivers and streams;
+ like the sun and moon, they end but to begin anew;
+ like the four seasons, they pass away to return once more.
+
+ 7. There are not more than five musical notes,
+ yet the combinations of these five give rise to more
+ melodies than can ever be heard.
+
+ 8. There are not more than five primary colors
+ (blue, yellow, red, white, and black), yet in combination
+ they produce more hues than can ever been seen.
+
+ 9. There are not more than five cardinal tastes
+ (sour, acrid, salt, sweet, bitter), yet combinations
+ of them yield more flavors than can ever be tasted.
+
+10. In battle, there are not more than two methods
+ of attack--the direct and the indirect; yet these two
+ in combination give rise to an endless series of maneuvers.
+
+11. The direct and the indirect lead on to each other in turn.
+ It is like moving in a circle--you never come to an end.
+ Who can exhaust the possibilities of their combination?
+
+12. The onset of troops is like the rush of a torrent
+ which will even roll stones along in its course.
+
+13. The quality of decision is like the well-timed
+ swoop of a falcon which enables it to strike and destroy
+ its victim.
+
+14. Therefore the good fighter will be terrible
+ in his onset, and prompt in his decision.
+
+15. Energy may be likened to the bending of a crossbow;
+ decision, to the releasing of a trigger.
+
+16. Amid the turmoil and tumult of battle, there may
+ be seeming disorder and yet no real disorder at all;
+ amid confusion and chaos, your array may be without head
+ or tail, yet it will be proof against defeat.
+
+17. Simulated disorder postulates perfect discipline,
+ simulated fear postulates courage; simulated weakness
+ postulates strength.
+
+18. Hiding order beneath the cloak of disorder is
+ simply a question of subdivision; concealing courage under
+ a show of timidity presupposes a fund of latent energy;
+ masking strength with weakness is to be effected
+ by tactical dispositions.
+
+19. Thus one who is skillful at keeping the enemy
+ on the move maintains deceitful appearances, according to
+ which the enemy will act. He sacrifices something,
+ that the enemy may snatch at it.
+
+20. By holding out baits, he keeps him on the march;
+ then with a body of picked men he lies in wait for him.
+
+21. The clever combatant looks to the effect of combined
+ energy, and does not require too much from individuals.
+ Hence his ability to pick out the right men and utilize
+ combined energy.
+
+22. When he utilizes combined energy, his fighting
+ men become as it were like unto rolling logs or stones.
+ For it is the nature of a log or stone to remain
+ motionless on level ground, and to move when on a slope;
+ if four-cornered, to come to a standstill, but if
+ round-shaped, to go rolling down.
+
+23. Thus the energy developed by good fighting men
+ is as the momentum of a round stone rolled down a mountain
+ thousands of feet in height. So much on the subject
+ of energy.
+
+
+VI. WEAK POINTS AND STRONG
+
+
+ 1. Sun Tzu said: Whoever is first in the field and
+ awaits the coming of the enemy, will be fresh for the fight;
+ whoever is second in the field and has to hasten to battle
+ will arrive exhausted.
+
+ 2. Therefore the clever combatant imposes his will on
+ the enemy, but does not allow the enemy's will to be imposed on him.
+
+ 3. By holding out advantages to him, he can cause the enemy
+ to approach of his own accord; or, by inflicting damage,
+ he can make it impossible for the enemy to draw near.
+
+ 4. If the enemy is taking his ease, he can harass him;
+ if well supplied with food, he can starve him out;
+ if quietly encamped, he can force him to move.
+
+ 5. Appear at points which the enemy must hasten to defend;
+ march swiftly to places where you are not expected.
+
+ 6. An army may march great distances without distress,
+ if it marches through country where the enemy is not.
+
+ 7. You can be sure of succeeding in your attacks
+ if you only attack places which are undefended.You can
+ ensure the safety of your defense if you only hold
+ positions that cannot be attacked.
+
+ 8. Hence that general is skillful in attack whose
+ opponent does not know what to defend; and he is skillful
+ in defense whose opponent does not know what to attack.
+
+ 9. O divine art of subtlety and secrecy! Through you
+ we learn to be invisible, through you inaudible;
+ and hence we can hold the enemy's fate in our hands.
+
+10. You may advance and be absolutely irresistible,
+ if you make for the enemy's weak points; you may retire
+ and be safe from pursuit if your movements are more rapid
+ than those of the enemy.
+
+11. If we wish to fight, the enemy can be forced
+ to an engagement even though he be sheltered behind a high
+ rampart and a deep ditch. All we need do is attack
+ some other place that he will be obliged to relieve.
+
+12. If we do not wish to fight, we can prevent
+ the enemy from engaging us even though the lines
+ of our encampment be merely traced out on the ground.
+ All we need do is to throw something odd and unaccountable
+ in his way.
+
+13. By discovering the enemy's dispositions and remaining
+ invisible ourselves, we can keep our forces concentrated,
+ while the enemy's must be divided.
+
+14. We can form a single united body, while the
+ enemy must split up into fractions. Hence there will
+ be a whole pitted against separate parts of a whole,
+ which means that we shall be many to the enemy's few.
+
+15. And if we are able thus to attack an inferior force
+ with a superior one, our opponents will be in dire straits.
+
+16. The spot where we intend to fight must not be
+ made known; for then the enemy will have to prepare
+ against a possible attack at several different points;
+ and his forces being thus distributed in many directions,
+ the numbers we shall have to face at any given point will
+ be proportionately few.
+
+17. For should the enemy strengthen his van,
+ he will weaken his rear; should he strengthen his rear,
+ he will weaken his van; should he strengthen his left,
+ he will weaken his right; should he strengthen his right,
+ he will weaken his left. If he sends reinforcements everywhere,
+ he will everywhere be weak.
+
+18. Numerical weakness comes from having to prepare
+ against possible attacks; numerical strength, from compelling
+ our adversary to make these preparations against us.
+
+19. Knowing the place and the time of the coming battle,
+ we may concentrate from the greatest distances in order
+ to fight.
+
+20. But if neither time nor place be known,
+ then the left wing will be impotent to succor the right,
+ the right equally impotent to succor the left, the van
+ unable to relieve the rear, or the rear to support the van.
+ How much more so if the furthest portions of the army are
+ anything under a hundred LI apart, and even the nearest
+ are separated by several LI!
+
+21. Though according to my estimate the soldiers
+ of Yueh exceed our own in number, that shall advantage
+ them nothing in the matter of victory. I say then
+ that victory can be achieved.
+
+22. Though the enemy be stronger in numbers, we may
+ prevent him from fighting. Scheme so as to discover
+ his plans and the likelihood of their success.
+
+23. Rouse him, and learn the principle of his
+ activity or inactivity. Force him to reveal himself,
+ so as to find out his vulnerable spots.
+
+24. Carefully compare the opposing army with your own,
+ so that you may know where strength is superabundant
+ and where it is deficient.
+
+25. In making tactical dispositions, the highest pitch
+ you can attain is to conceal them; conceal your dispositions,
+ and you will be safe from the prying of the subtlest spies,
+ from the machinations of the wisest brains.
+
+26. How victory may be produced for them out of the enemy's
+ own tactics--that is what the multitude cannot comprehend.
+
+27. All men can see the tactics whereby I conquer,
+ but what none can see is the strategy out of which victory
+ is evolved.
+
+28. Do not repeat the tactics which have gained
+ you one victory, but let your methods be regulated
+ by the infinite variety of circumstances.
+
+29. Military tactics are like unto water; for water in its
+ natural course runs away from high places and hastens downwards.
+
+30. So in war, the way is to avoid what is strong
+ and to strike at what is weak.
+
+31. Water shapes its course according to the nature
+ of the ground over which it flows; the soldier works
+ out his victory in relation to the foe whom he is facing.
+
+32. Therefore, just as water retains no constant shape,
+ so in warfare there are no constant conditions.
+
+33. He who can modify his tactics in relation to his
+ opponent and thereby succeed in winning, may be called
+ a heaven-born captain.
+
+34. The five elements (water, fire, wood, metal, earth)
+ are not always equally predominant; the four seasons make
+ way for each other in turn. There are short days and long;
+ the moon has its periods of waning and waxing.
+
+
+VII. MANEUVERING
+
+
+ 1. Sun Tzu said: In war, the general receives his
+ commands from the sovereign.
+
+ 2. Having collected an army and concentrated his forces,
+ he must blend and harmonize the different elements thereof
+ before pitching his camp.
+
+ 3. After that, comes tactical maneuvering,
+ than which there is nothing more difficult.
+ The difficulty of tactical maneuvering consists
+ in turning the devious into the direct, and misfortune into gain.
+
+ 4. Thus, to take a long and circuitous route,
+ after enticing the enemy out of the way, and though starting
+ after him, to contrive to reach the goal before him,
+ shows knowledge of the artifice of DEVIATION.
+
+ 5. Maneuvering with an army is advantageous;
+ with an undisciplined multitude, most dangerous.
+
+ 6. If you set a fully equipped army in march in order
+ to snatch an advantage, the chances are that you will be
+ too late. On the other hand, to detach a flying column
+ for the purpose involves the sacrifice of its baggage
+ and stores.
+
+ 7. Thus, if you order your men to roll up their
+ buff-coats, and make forced marches without halting day
+ or night, covering double the usual distance at a stretch,
+ doing a hundred LI in order to wrest an advantage,
+ the leaders of all your three divisions will fall into
+ the hands of the enemy.
+
+ 8. The stronger men will be in front, the jaded
+ ones will fall behind, and on this plan only one-tenth
+ of your army will reach its destination.
+
+ 9. If you march fifty LI in order to outmaneuver
+ the enemy, you will lose the leader of your first division,
+ and only half your force will reach the goal.
+
+10. If you march thirty LI with the same object,
+ two-thirds of your army will arrive.
+
+11. We may take it then that an army without its
+ baggage-train is lost; without provisions it is lost;
+ without bases of supply it is lost.
+
+12. We cannot enter into alliances until we are
+ acquainted with the designs of our neighbors.
+
+13. We are not fit to lead an army on the march
+ unless we are familiar with the face of the country--its
+ mountains and forests, its pitfalls and precipices,
+ its marshes and swamps.
+
+14. We shall be unable to turn natural advantage
+ to account unless we make use of local guides.
+
+15. In war, practice dissimulation, and you will succeed.
+
+16. Whether to concentrate or to divide your troops,
+ must be decided by circumstances.
+
+17. Let your rapidity be that of the wind,
+ your compactness that of the forest.
+
+18. In raiding and plundering be like fire,
+ is immovability like a mountain.
+
+19. Let your plans be dark and impenetrable as night,
+ and when you move, fall like a thunderbolt.
+
+20. When you plunder a countryside, let the spoil be
+ divided amongst your men; when you capture new territory,
+ cut it up into allotments for the benefit of the soldiery.
+
+21. Ponder and deliberate before you make a move.
+
+22. He will conquer who has learnt the artifice
+ of deviation. Such is the art of maneuvering.
+
+23. The Book of Army Management says: On the field
+ of battle, the spoken word does not carry far enough:
+ hence the institution of gongs and drums. Nor can ordinary
+ objects be seen clearly enough: hence the institution
+ of banners and flags.
+
+24. Gongs and drums, banners and flags, are means
+ whereby the ears and eyes of the host may be focused
+ on one particular point.
+
+25. The host thus forming a single united body,
+ is it impossible either for the brave to advance alone,
+ or for the cowardly to retreat alone. This is the art
+ of handling large masses of men.
+
+26. In night-fighting, then, make much use of signal-fires
+ and drums, and in fighting by day, of flags and banners,
+ as a means of influencing the ears and eyes of your army.
+
+27. A whole army may be robbed of its spirit;
+ a commander-in-chief may be robbed of his presence of mind.
+
+28. Now a soldier's spirit is keenest in the morning;
+ by noonday it has begun to flag; and in the evening,
+ his mind is bent only on returning to camp.
+
+29. A clever general, therefore, avoids an army when
+ its spirit is keen, but attacks it when it is sluggish
+ and inclined to return. This is the art of studying moods.
+
+30. Disciplined and calm, to await the appearance
+ of disorder and hubbub amongst the enemy:--this is the art
+ of retaining self-possession.
+
+31. To be near the goal while the enemy is still
+ far from it, to wait at ease while the enemy is
+ toiling and struggling, to be well-fed while the enemy
+ is famished:--this is the art of husbanding one's strength.
+
+32. To refrain from intercepting an enemy whose
+ banners are in perfect order, to refrain from attacking
+ an army drawn up in calm and confident array:--this
+ is the art of studying circumstances.
+
+33. It is a military axiom not to advance uphill
+ against the enemy, nor to oppose him when he comes downhill.
+
+34. Do not pursue an enemy who simulates flight;
+ do not attack soldiers whose temper is keen.
+
+35. Do not swallow bait offered by the enemy.
+ Do not interfere with an army that is returning home.
+
+36. When you surround an army, leave an outlet free.
+ Do not press a desperate foe too hard.
+
+37. Such is the art of warfare.
+
+
+VIII. VARIATION IN TACTICS
+
+
+ 1. Sun Tzu said: In war, the general receives
+ his commands from the sovereign, collects his army
+ and concentrates his forces
+
+ 2. When in difficult country, do not encamp. In country
+ where high roads intersect, join hands with your allies.
+ Do not linger in dangerously isolated positions.
+ In hemmed-in situations, you must resort to stratagem.
+ In desperate position, you must fight.
+
+ 3. There are roads which must not be followed,
+ armies which must be not attacked, towns which must
+ be besieged, positions which must not be contested,
+ commands of the sovereign which must not be obeyed.
+
+ 4. The general who thoroughly understands the advantages
+ that accompany variation of tactics knows how to handle
+ his troops.
+
+ 5. The general who does not understand these, may be well
+ acquainted with the configuration of the country, yet he
+ will not be able to turn his knowledge to practical account.
+
+ 6. So, the student of war who is unversed in the art
+ of war of varying his plans, even though he be acquainted
+ with the Five Advantages, will fail to make the best use
+ of his men.
+
+ 7. Hence in the wise leader's plans, considerations of
+ advantage and of disadvantage will be blended together.
+
+ 8. If our expectation of advantage be tempered in
+ this way, we may succeed in accomplishing the essential
+ part of our schemes.
+
+ 9. If, on the other hand, in the midst of difficulties
+ we are always ready to seize an advantage, we may extricate
+ ourselves from misfortune.
+
+10. Reduce the hostile chiefs by inflicting damage
+ on them; and make trouble for them, and keep them
+ constantly engaged; hold out specious allurements,
+ and make them rush to any given point.
+
+11. The art of war teaches us to rely not on the
+ likelihood of the enemy's not coming, but on our own readiness
+ to receive him; not on the chance of his not attacking,
+ but rather on the fact that we have made our position unassailable.
+
+12. There are five dangerous faults which may affect
+ a general:
+ (1) Recklessness, which leads to destruction;
+ (2) cowardice, which leads to capture;
+ (3) a hasty temper, which can be provoked by insults;
+ (4) a delicacy of honor which is sensitive to shame;
+ (5) over-solicitude for his men, which exposes him
+ to worry and trouble.
+
+13. These are the five besetting sins of a general,
+ ruinous to the conduct of war.
+
+14. When an army is overthrown and its leader slain,
+ the cause will surely be found among these five
+ dangerous faults. Let them be a subject of meditation.
+
+
+IX. THE ARMY ON THE MARCH
+
+
+ 1. Sun Tzu said: We come now to the question of
+ encamping the army, and observing signs of the enemy.
+ Pass quickly over mountains, and keep in the neighborhood
+ of valleys.
+
+ 2. Camp in high places, facing the sun. Do not climb
+ heights in order to fight. So much for mountain warfare.
+
+ 3. After crossing a river, you should get far away
+ from it.
+
+ 4. When an invading force crosses a river in its
+ onward march, do not advance to meet it in mid-stream.
+ It will be best to let half the army get across,
+ and then deliver your attack.
+
+ 5. If you are anxious to fight, you should not go
+ to meet the invader near a river which he has to cross.
+
+ 6. Moor your craft higher up than the enemy, and facing
+ the sun. Do not move up-stream to meet the enemy.
+ So much for river warfare.
+
+ 7. In crossing salt-marshes, your sole concern
+ should be to get over them quickly, without any delay.
+
+ 8. If forced to fight in a salt-marsh, you should
+ have water and grass near you, and get your back
+ to a clump of trees. So much for operations in salt-marches.
+
+ 9. In dry, level country, take up an easily accessible
+ position with rising ground to your right and on your rear,
+ so that the danger may be in front, and safety lie behind.
+ So much for campaigning in flat country.
+
+10. These are the four useful branches of military
+ knowledge which enabled the Yellow Emperor to vanquish
+ four several sovereigns.
+
+11. All armies prefer high ground to low and sunny
+ places to dark.
+
+12. If you are careful of your men, and camp on hard
+ ground, the army will be free from disease of every kind,
+ and this will spell victory.
+
+13. When you come to a hill or a bank, occupy the
+ sunny side, with the slope on your right rear.
+ Thus you will at once act for the benefit of your soldiers
+ and utilize the natural advantages of the ground.
+
+14. When, in consequence of heavy rains up-country,
+ a river which you wish to ford is swollen and flecked
+ with foam, you must wait until it subsides.
+
+15. Country in which there are precipitous cliffs
+ with torrents running between, deep natural hollows,
+ confined places, tangled thickets, quagmires and crevasses,
+ should be left with all possible speed and not approached.
+
+16. While we keep away from such places, we should
+ get the enemy to approach them; while we face them,
+ we should let the enemy have them on his rear.
+
+17. If in the neighborhood of your camp there should
+ be any hilly country, ponds surrounded by aquatic grass,
+ hollow basins filled with reeds, or woods with thick
+ undergrowth, they must be carefully routed out and searched;
+ for these are places where men in ambush or insidious
+ spies are likely to be lurking.
+
+18. When the enemy is close at hand and remains quiet,
+ he is relying on the natural strength of his position.
+
+19. When he keeps aloof and tries to provoke a battle,
+ he is anxious for the other side to advance.
+
+20. If his place of encampment is easy of access,
+ he is tendering a bait.
+
+21. Movement amongst the trees of a forest shows that the
+ enemy is advancing. The appearance of a number of screens
+ in the midst of thick grass means that the enemy wants to make us suspicious.
+
+22. The rising of birds in their flight is the sign
+ of an ambuscade. Startled beasts indicate that a sudden
+ attack is coming.
+
+23. When there is dust rising in a high column,
+ it is the sign of chariots advancing; when the dust is low,
+ but spread over a wide area, it betokens the approach
+ of infantry. When it branches out in different directions,
+ it shows that parties have been sent to collect firewood.
+ A few clouds of dust moving to and fro signify that the army
+ is encamping.
+
+24. Humble words and increased preparations are signs
+ that the enemy is about to advance. Violent language
+ and driving forward as if to the attack are signs that he
+ will retreat.
+
+25. When the light chariots come out first and take
+ up a position on the wings, it is a sign that the enemy
+ is forming for battle.
+
+26. Peace proposals unaccompanied by a sworn covenant
+ indicate a plot.
+
+27. When there is much running about and the soldiers
+ fall into rank, it means that the critical moment has come.
+
+28. When some are seen advancing and some retreating,
+ it is a lure.
+
+29. When the soldiers stand leaning on their spears,
+ they are faint from want of food.
+
+30. If those who are sent to draw water begin
+ by drinking themselves, the army is suffering from thirst.
+
+31. If the enemy sees an advantage to be gained and
+ makes no effort to secure it, the soldiers are exhausted.
+
+32. If birds gather on any spot, it is unoccupied.
+ Clamor by night betokens nervousness.
+
+33. If there is disturbance in the camp, the general's
+ authority is weak. If the banners and flags are shifted
+ about, sedition is afoot. If the officers are angry,
+ it means that the men are weary.
+
+34. When an army feeds its horses with grain and kills
+ its cattle for food, and when the men do not hang their
+ cooking-pots over the camp-fires, showing that they
+ will not return to their tents, you may know that they
+ are determined to fight to the death.
+
+35. The sight of men whispering together in small
+ knots or speaking in subdued tones points to disaffection
+ amongst the rank and file.
+
+36. Too frequent rewards signify that the enemy is
+ at the end of his resources; too many punishments betray
+ a condition of dire distress.
+
+37. To begin by bluster, but afterwards to take fright
+ at the enemy's numbers, shows a supreme lack of intelligence.
+
+38. When envoys are sent with compliments in their mouths,
+ it is a sign that the enemy wishes for a truce.
+
+39. If the enemy's troops march up angrily and remain
+ facing ours for a long time without either joining
+ battle or taking themselves off again, the situation
+ is one that demands great vigilance and circumspection.
+
+40. If our troops are no more in number than the enemy,
+ that is amply sufficient; it only means that no direct attack
+ can be made. What we can do is simply to concentrate all
+ our available strength, keep a close watch on the enemy,
+ and obtain reinforcements.
+
+41. He who exercises no forethought but makes light
+ of his opponents is sure to be captured by them.
+
+42. If soldiers are punished before they have grown
+ attached to you, they will not prove submissive; and,
+ unless submissive, then will be practically useless.
+ If, when the soldiers have become attached to you,
+ punishments are not enforced, they will still be unless.
+
+43. Therefore soldiers must be treated in the first
+ instance with humanity, but kept under control by means
+ of iron discipline. This is a certain road to victory.
+
+44. If in training soldiers commands are habitually
+ enforced, the army will be well-disciplined; if not,
+ its discipline will be bad.
+
+45. If a general shows confidence in his men but always
+ insists on his orders being obeyed, the gain will be mutual.
+
+
+X. TERRAIN
+
+
+ 1. Sun Tzu said: We may distinguish six kinds of terrain,
+ to wit: (1) Accessible ground; (2) entangling ground;
+ (3) temporizing ground; (4) narrow passes; (5) precipitous
+ heights; (6) positions at a great distance from the enemy.
+
+ 2. Ground which can be freely traversed by both sides
+ is called accessible.
+
+ 3. With regard to ground of this nature, be before
+ the enemy in occupying the raised and sunny spots,
+ and carefully guard your line of supplies. Then you
+ will be able to fight with advantage.
+
+ 4. Ground which can be abandoned but is hard
+ to re-occupy is called entangling.
+
+ 5. From a position of this sort, if the enemy
+ is unprepared, you may sally forth and defeat him.
+ But if the enemy is prepared for your coming, and you
+ fail to defeat him, then, return being impossible,
+ disaster will ensue.
+
+ 6. When the position is such that neither side will gain
+ by making the first move, it is called temporizing ground.
+
+ 7. In a position of this sort, even though the enemy
+ should offer us an attractive bait, it will be advisable
+ not to stir forth, but rather to retreat, thus enticing
+ the enemy in his turn; then, when part of his army has
+ come out, we may deliver our attack with advantage.
+
+ 8. With regard to narrow passes, if you can occupy
+ them first, let them be strongly garrisoned and await
+ the advent of the enemy.
+
+ 9. Should the army forestall you in occupying a pass,
+ do not go after him if the pass is fully garrisoned,
+ but only if it is weakly garrisoned.
+
+10. With regard to precipitous heights, if you are
+ beforehand with your adversary, you should occupy the
+ raised and sunny spots, and there wait for him to come up.
+
+11. If the enemy has occupied them before you,
+ do not follow him, but retreat and try to entice him away.
+
+12. If you are situated at a great distance from
+ the enemy, and the strength of the two armies is equal,
+ it is not easy to provoke a battle, and fighting will be
+ to your disadvantage.
+
+13. These six are the principles connected with Earth.
+ The general who has attained a responsible post must be
+ careful to study them.
+
+14. Now an army is exposed to six several calamities,
+ not arising from natural causes, but from faults
+ for which the general is responsible. These are:
+ (1) Flight; (2) insubordination; (3) collapse; (4) ruin;
+ (5) disorganization; (6) rout.
+
+15. Other conditions being equal, if one force is
+ hurled against another ten times its size, the result
+ will be the flight of the former.
+
+16. When the common soldiers are too strong and
+ their officers too weak, the result is insubordination.
+ When the officers are too strong and the common soldiers
+ too weak, the result is collapse.
+
+17. When the higher officers are angry and insubordinate,
+ and on meeting the enemy give battle on their own account
+ from a feeling of resentment, before the commander-in-chief
+ can tell whether or no he is in a position to fight,
+ the result is ruin.
+
+18. When the general is weak and without authority;
+ when his orders are not clear and distinct; when there
+ are no fixes duties assigned to officers and men,
+ and the ranks are formed in a slovenly haphazard manner,
+ the result is utter disorganization.
+
+19. When a general, unable to estimate the enemy's
+ strength, allows an inferior force to engage a larger one,
+ or hurls a weak detachment against a powerful one,
+ and neglects to place picked soldiers in the front rank,
+ the result must be rout.
+
+20. These are six ways of courting defeat, which must
+ be carefully noted by the general who has attained
+ a responsible post.
+
+21. The natural formation of the country is the soldier's
+ best ally; but a power of estimating the adversary,
+ of controlling the forces of victory, and of shrewdly
+ calculating difficulties, dangers and distances,
+ constitutes the test of a great general.
+
+22. He who knows these things, and in fighting puts
+ his knowledge into practice, will win his battles.
+ He who knows them not, nor practices them, will surely
+ be defeated.
+
+23. If fighting is sure to result in victory,
+ then you must fight, even though the ruler forbid it;
+ if fighting will not result in victory, then you must not
+ fight even at the ruler's bidding.
+
+24. The general who advances without coveting fame
+ and retreats without fearing disgrace, whose only
+ thought is to protect his country and do good service
+ for his sovereign, is the jewel of the kingdom.
+
+25. Regard your soldiers as your children, and they
+ will follow you into the deepest valleys; look upon them
+ as your own beloved sons, and they will stand by you
+ even unto death.
+
+26. If, however, you are indulgent, but unable to make
+ your authority felt; kind-hearted, but unable to enforce
+ your commands; and incapable, moreover, of quelling disorder:
+ then your soldiers must be likened to spoilt children;
+ they are useless for any practical purpose.
+
+27. If we know that our own men are in a condition
+ to attack, but are unaware that the enemy is not open
+ to attack, we have gone only halfway towards victory.
+
+28. If we know that the enemy is open to attack,
+ but are unaware that our own men are not in a condition
+ to attack, we have gone only halfway towards victory.
+
+29. If we know that the enemy is open to attack,
+ and also know that our men are in a condition to attack,
+ but are unaware that the nature of the ground makes
+ fighting impracticable, we have still gone only halfway
+ towards victory.
+
+30. Hence the experienced soldier, once in motion,
+ is never bewildered; once he has broken camp, he is never
+ at a loss.
+
+31. Hence the saying: If you know the enemy and
+ know yourself, your victory will not stand in doubt;
+ if you know Heaven and know Earth, you may make your
+ victory complete.
+
+
+XI. THE NINE SITUATIONS
+
+
+ 1. Sun Tzu said: The art of war recognizes nine varieties of ground:
+ (1) Dispersive ground; (2) facile ground; (3) contentious ground;
+ (4) open ground; (5) ground of intersecting highways;
+ (6) serious ground; (7) difficult ground; (8) hemmed-in ground;
+ (9) desperate ground.
+
+ 2. When a chieftain is fighting in his own territory,
+ it is dispersive ground.
+
+ 3. When he has penetrated into hostile territory,
+ but to no great distance, it is facile ground.
+
+ 4. Ground the possession of which imports great
+ advantage to either side, is contentious ground.
+
+ 5. Ground on which each side has liberty of movement
+ is open ground.
+
+ 6. Ground which forms the key to three contiguous states,
+ so that he who occupies it first has most of the Empire
+ at his command, is a ground of intersecting highways.
+
+ 7. When an army has penetrated into the heart of a
+ hostile country, leaving a number of fortified cities
+ in its rear, it is serious ground.
+
+ 8. Mountain forests, rugged steeps, marshes and fens--all
+ country that is hard to traverse: this is difficult ground.
+
+ 9. Ground which is reached through narrow gorges,
+ and from which we can only retire by tortuous paths,
+ so that a small number of the enemy would suffice to crush
+ a large body of our men: this is hemmed in ground.
+
+10. Ground on which we can only be saved from
+ destruction by fighting without delay, is desperate ground.
+
+11. On dispersive ground, therefore, fight not.
+ On facile ground, halt not. On contentious ground,
+ attack not.
+
+12. On open ground, do not try to block the enemy's way.
+ On the ground of intersecting highways, join hands
+ with your allies.
+
+13. On serious ground, gather in plunder.
+ In difficult ground, keep steadily on the march.
+
+14. On hemmed-in ground, resort to stratagem.
+ On desperate ground, fight.
+
+15. Those who were called skillful leaders of old knew
+ how to drive a wedge between the enemy's front and rear;
+ to prevent co-operation between his large and small divisions;
+ to hinder the good troops from rescuing the bad,
+ the officers from rallying their men.
+
+16. When the enemy's men were united, they managed
+ to keep them in disorder.
+
+17. When it was to their advantage, they made
+ a forward move; when otherwise, they stopped still.
+
+18. If asked how to cope with a great host of the enemy
+ in orderly array and on the point of marching to the attack,
+ I should say: "Begin by seizing something which your
+ opponent holds dear; then he will be amenable to your will."
+
+19. Rapidity is the essence of war: take advantage of
+ the enemy's unreadiness, make your way by unexpected routes,
+ and attack unguarded spots.
+
+20. The following are the principles to be observed
+ by an invading force: The further you penetrate into
+ a country, the greater will be the solidarity of your troops,
+ and thus the defenders will not prevail against you.
+
+21. Make forays in fertile country in order to supply
+ your army with food.
+
+22. Carefully study the well-being of your men,
+ and do not overtax them. Concentrate your energy and hoard
+ your strength. Keep your army continually on the move,
+ and devise unfathomable plans.
+
+23. Throw your soldiers into positions whence there
+ is no escape, and they will prefer death to flight.
+ If they will face death, there is nothing they may
+ not achieve. Officers and men alike will put forth
+ their uttermost strength.
+
+24. Soldiers when in desperate straits lose
+ the sense of fear. If there is no place of refuge,
+ they will stand firm. If they are in hostile country,
+ they will show a stubborn front. If there is no help
+ for it, they will fight hard.
+
+25. Thus, without waiting to be marshaled, the soldiers
+ will be constantly on the qui vive; without waiting to
+ be asked, they will do your will; without restrictions,
+ they will be faithful; without giving orders, they can
+ be trusted.
+
+26. Prohibit the taking of omens, and do away with
+ superstitious doubts. Then, until death itself comes,
+ no calamity need be feared.
+
+27. If our soldiers are not overburdened with money,
+ it is not because they have a distaste for riches;
+ if their lives are not unduly long, it is not because they
+ are disinclined to longevity.
+
+28. On the day they are ordered out to battle,
+ your soldiers may weep, those sitting up bedewing
+ their garments, and those lying down letting the tears run
+ down their cheeks. But let them once be brought to bay,
+ and they will display the courage of a Chu or a Kuei.
+
+29. The skillful tactician may be likened to the
+ shuai-jan. Now the shuai-jan is a snake that is found
+ in the ChUng mountains. Strike at its head, and you
+ will be attacked by its tail; strike at its tail, and you
+ will be attacked by its head; strike at its middle,
+ and you will be attacked by head and tail both.
+
+30. Asked if an army can be made to imitate the shuai-jan,
+ I should answer, Yes. For the men of Wu and the men
+ of Yueh are enemies; yet if they are crossing a river
+ in the same boat and are caught by a storm, they will come
+ to each other's assistance just as the left hand helps the right.
+
+31. Hence it is not enough to put one's trust
+ in the tethering of horses, and the burying of chariot
+ wheels in the ground
+
+32. The principle on which to manage an army is to set
+ up one standard of courage which all must reach.
+
+33. How to make the best of both strong and weak--that
+ is a question involving the proper use of ground.
+
+34. Thus the skillful general conducts his army just
+ as though he were leading a single man, willy-nilly, by
+ the hand.
+
+35. It is the business of a general to be quiet and thus
+ ensure secrecy; upright and just, and thus maintain order.
+
+36. He must be able to mystify his officers and men
+ by false reports and appearances, and thus keep them
+ in total ignorance.
+
+37. By altering his arrangements and changing
+ his plans, he keeps the enemy without definite knowledge.
+ By shifting his camp and taking circuitous routes,
+ he prevents the enemy from anticipating his purpose.
+
+38. At the critical moment, the leader of an army
+ acts like one who has climbed up a height and then kicks
+ away the ladder behind him. He carries his men deep
+ into hostile territory before he shows his hand.
+
+39. He burns his boats and breaks his cooking-pots;
+ like a shepherd driving a flock of sheep, he drives
+ his men this way and that, and nothing knows whither he
+ is going.
+
+40. To muster his host and bring it into danger:--this
+ may be termed the business of the general.
+
+41. The different measures suited to the nine
+ varieties of ground; the expediency of aggressive or
+ defensive tactics; and the fundamental laws of human nature:
+ these are things that must most certainly be studied.
+
+42. When invading hostile territory, the general
+ principle is, that penetrating deeply brings cohesion;
+ penetrating but a short way means dispersion.
+
+43. When you leave your own country behind, and take
+ your army across neighborhood territory, you find yourself
+ on critical ground. When there are means of communication
+ on all four sides, the ground is one of intersecting highways.
+
+44. When you penetrate deeply into a country, it is
+ serious ground. When you penetrate but a little way,
+ it is facile ground.
+
+45. When you have the enemy's strongholds on your rear,
+ and narrow passes in front, it is hemmed-in ground.
+ When there is no place of refuge at all, it is desperate ground.
+
+46. Therefore, on dispersive ground, I would inspire
+ my men with unity of purpose. On facile ground, I would
+ see that there is close connection between all parts
+ of my army.
+
+47. On contentious ground, I would hurry up my rear.
+
+48. On open ground, I would keep a vigilant eye
+ on my defenses. On ground of intersecting highways,
+ I would consolidate my alliances.
+
+49. On serious ground, I would try to ensure
+ a continuous stream of supplies. On difficult ground,
+ I would keep pushing on along the road.
+
+50. On hemmed-in ground, I would block any way
+ of retreat. On desperate ground, I would proclaim
+ to my soldiers the hopelessness of saving their lives.
+
+51. For it is the soldier's disposition to offer
+ an obstinate resistance when surrounded, to fight hard
+ when he cannot help himself, and to obey promptly when he
+ has fallen into danger.
+
+52. We cannot enter into alliance with neighboring
+ princes until we are acquainted with their designs. We are
+ not fit to lead an army on the march unless we are familiar
+ with the face of the country--its mountains and forests,
+ its pitfalls and precipices, its marshes and swamps.
+ We shall be unable to turn natural advantages to account
+ unless we make use of local guides.
+
+53. To be ignored of any one of the following four
+ or five principles does not befit a warlike prince.
+
+54. When a warlike prince attacks a powerful state,
+ his generalship shows itself in preventing the concentration
+ of the enemy's forces. He overawes his opponents,
+ and their allies are prevented from joining against him.
+
+55. Hence he does not strive to ally himself with all
+ and sundry, nor does he foster the power of other states.
+ He carries out his own secret designs, keeping his
+ antagonists in awe. Thus he is able to capture their
+ cities and overthrow their kingdoms.
+
+56. Bestow rewards without regard to rule,
+ issue orders without regard to previous arrangements;
+ and you will be able to handle a whole army as though
+ you had to do with but a single man.
+
+57. Confront your soldiers with the deed itself;
+ never let them know your design. When the outlook is bright,
+ bring it before their eyes; but tell them nothing when
+ the situation is gloomy.
+
+58. Place your army in deadly peril, and it will survive;
+ plunge it into desperate straits, and it will come off
+ in safety.
+
+59. For it is precisely when a force has fallen into
+ harm's way that is capable of striking a blow for victory.
+
+60. Success in warfare is gained by carefully
+ accommodating ourselves to the enemy's purpose.
+
+61. By persistently hanging on the enemy's flank, we shall
+ succeed in the long run in killing the commander-in-chief.
+
+62. This is called ability to accomplish a thing
+ by sheer cunning.
+
+63. On the day that you take up your command,
+ block the frontier passes, destroy the official tallies,
+ and stop the passage of all emissaries.
+
+64. Be stern in the council-chamber, so that you
+ may control the situation.
+
+65. If the enemy leaves a door open, you must rush in.
+
+66. Forestall your opponent by seizing what he holds dear,
+ and subtly contrive to time his arrival on the ground.
+
+67. Walk in the path defined by rule, and accommodate
+ yourself to the enemy until you can fight a decisive battle.
+
+68. At first, then, exhibit the coyness of a maiden,
+ until the enemy gives you an opening; afterwards emulate
+ the rapidity of a running hare, and it will be too late
+ for the enemy to oppose you.
+
+
+XII. THE ATTACK BY FIRE
+
+
+ 1. Sun Tzu said: There are five ways of attacking
+ with fire. The first is to burn soldiers in their camp;
+ the second is to burn stores; the third is to burn
+ baggage trains; the fourth is to burn arsenals and magazines;
+ the fifth is to hurl dropping fire amongst the enemy.
+
+ 2. In order to carry out an attack, we must have
+ means available. The material for raising fire should
+ always be kept in readiness.
+
+ 3. There is a proper season for making attacks with fire,
+ and special days for starting a conflagration.
+
+ 4. The proper season is when the weather is very dry;
+ the special days are those when the moon is in the
+ constellations of the Sieve, the Wall, the Wing
+ or the Cross-bar; for these four are all days of rising wind.
+
+ 5. In attacking with fire, one should be prepared
+ to meet five possible developments:
+
+ 6. (1) When fire breaks out inside to enemy's camp,
+ respond at once with an attack from without.
+
+ 7. (2) If there is an outbreak of fire, but the enemy's
+ soldiers remain quiet, bide your time and do not attack.
+
+ 8. (3) When the force of the flames has reached its height,
+ follow it up with an attack, if that is practicable;
+ if not, stay where you are.
+
+ 9. (4) If it is possible to make an assault with fire
+ from without, do not wait for it to break out within,
+ but deliver your attack at a favorable moment.
+
+10. (5) When you start a fire, be to windward of it.
+ Do not attack from the leeward.
+
+11. A wind that rises in the daytime lasts long,
+ but a night breeze soon falls.
+
+12. In every army, the five developments connected with
+ fire must be known, the movements of the stars calculated,
+ and a watch kept for the proper days.
+
+13. Hence those who use fire as an aid to the attack show intelligence;
+ those who use water as an aid to the attack gain an accession of strength.
+
+14. By means of water, an enemy may be intercepted,
+ but not robbed of all his belongings.
+
+15. Unhappy is the fate of one who tries to win his
+ battles and succeed in his attacks without cultivating
+ the spirit of enterprise; for the result is waste of time
+ and general stagnation.
+
+16. Hence the saying: The enlightened ruler lays his
+ plans well ahead; the good general cultivates his resources.
+
+17. Move not unless you see an advantage; use not
+ your troops unless there is something to be gained;
+ fight not unless the position is critical.
+
+18. No ruler should put troops into the field merely
+ to gratify his own spleen; no general should fight
+ a battle simply out of pique.
+
+19. If it is to your advantage, make a forward move;
+ if not, stay where you are.
+
+20. Anger may in time change to gladness; vexation may
+ be succeeded by content.
+
+21. But a kingdom that has once been destroyed can
+ never come again into being; nor can the dead ever
+ be brought back to life.
+
+22. Hence the enlightened ruler is heedful,
+ and the good general full of caution. This is the way
+ to keep a country at peace and an army intact.
+
+
+XIII. THE USE OF SPIES
+
+
+ 1. Sun Tzu said: Raising a host of a hundred thousand
+ men and marching them great distances entails heavy loss
+ on the people and a drain on the resources of the State.
+ The daily expenditure will amount to a thousand ounces
+ of silver. There will be commotion at home and abroad,
+ and men will drop down exhausted on the highways.
+ As many as seven hundred thousand families will be impeded
+ in their labor.
+
+ 2. Hostile armies may face each other for years,
+ striving for the victory which is decided in a single day.
+ This being so, to remain in ignorance of the enemy's
+ condition simply because one grudges the outlay of a hundred
+ ounces of silver in honors and emoluments, is the height
+ of inhumanity.
+
+ 3. One who acts thus is no leader of men, no present
+ help to his sovereign, no master of victory.
+
+ 4. Thus, what enables the wise sovereign and the good
+ general to strike and conquer, and achieve things beyond
+ the reach of ordinary men, is foreknowledge.
+
+ 5. Now this foreknowledge cannot be elicited from spirits;
+ it cannot be obtained inductively from experience,
+ nor by any deductive calculation.
+
+ 6. Knowledge of the enemy's dispositions can only
+ be obtained from other men.
+
+ 7. Hence the use of spies, of whom there are five classes:
+ (1) Local spies; (2) inward spies; (3) converted spies;
+ (4) doomed spies; (5) surviving spies.
+
+ 8. When these five kinds of spy are all at work,
+ none can discover the secret system. This is called "divine
+ manipulation of the threads." It is the sovereign's
+ most precious faculty.
+
+ 9. Having local spies means employing the services
+ of the inhabitants of a district.
+
+10. Having inward spies, making use of officials
+ of the enemy.
+
+11. Having converted spies, getting hold of the enemy's
+ spies and using them for our own purposes.
+
+12. Having doomed spies, doing certain things openly
+ for purposes of deception, and allowing our spies to know
+ of them and report them to the enemy.
+
+13. Surviving spies, finally, are those who bring
+ back news from the enemy's camp.
+
+14. Hence it is that which none in the whole army are
+ more intimate relations to be maintained than with spies.
+ None should be more liberally rewarded. In no other
+ business should greater secrecy be preserved.
+
+15. Spies cannot be usefully employed without a certain
+ intuitive sagacity.
+
+16. They cannot be properly managed without benevolence
+ and straightforwardness.
+
+17. Without subtle ingenuity of mind, one cannot make
+ certain of the truth of their reports.
+
+18. Be subtle! be subtle! and use your spies for every
+ kind of business.
+
+19. If a secret piece of news is divulged by a spy
+ before the time is ripe, he must be put to death together
+ with the man to whom the secret was told.
+
+20. Whether the object be to crush an army, to storm
+ a city, or to assassinate an individual, it is always
+ necessary to begin by finding out the names of the attendants,
+ the aides-de-camp, and door-keepers and sentries of the general
+ in command. Our spies must be commissioned to ascertain these.
+
+21. The enemy's spies who have come to spy on us
+ must be sought out, tempted with bribes, led away and
+ comfortably housed. Thus they will become converted
+ spies and available for our service.
+
+22. It is through the information brought by the
+ converted spy that we are able to acquire and employ
+ local and inward spies.
+
+23. It is owing to his information, again, that we can
+ cause the doomed spy to carry false tidings to the enemy.
+
+24. Lastly, it is by his information that the surviving
+ spy can be used on appointed occasions.
+
+25. The end and aim of spying in all its five varieties
+ is knowledge of the enemy; and this knowledge can only
+ be derived, in the first instance, from the converted spy.
+ Hence it is essential that the converted spy be treated
+ with the utmost liberality.
+
+26. Of old, the rise of the Yin dynasty was due to I
+ Chih who had served under the Hsia. Likewise, the rise
+ of the Chou dynasty was due to Lu Ya who had served
+ under the Yin.
+
+27. Hence it is only the enlightened ruler and the
+ wise general who will use the highest intelligence of
+ the army for purposes of spying and thereby they achieve
+ great results. Spies are a most important element in water,
+ because on them depends an army's ability to move.
+
+
diff --git a/mach/Makefile b/mach/Makefile
index c5ce28b..12de148 100644
--- a/mach/Makefile
+++ b/mach/Makefile
@@ -75,7 +75,7 @@ $(objpfx)mach-syscalls.mk: syscalls.awk Makefile
$(CC) $(CPPFLAGS) -E -x c-header - \
-D_MACH_`echo $(base-machine) | tr a-z A-Z`_SYSCALL_SW_H_=1 | \
sed -n -e 's/^kernel_trap(\(.*\),\([-0-9]*\),\([0-9]*\))$$/\1 \2 \3/p'\
- | awk -f $< > $@-new
+ | $(AWK) -f $< > $@-new
cat $@-dep >> $@-new; rm -f $@-dep
mv $@-new $@
generated += mach-syscalls.mk
@@ -117,8 +117,8 @@ mach/mach_interface.uh mach/mach_host.uh mach/mach_port.uh: $(objpfx)mach-syscal
ifdef mach-shortcuts
$(mach-shortcuts:%=$(objpfx)%.c): $(objpfx)%.c: shortcut.awk \
$(objpfx)RPC_%_rpc.c
- gawk -v alias=$* -v call=__$* -v rpc=__$*_rpc -v syscall=__syscall_$* \
- -f $^ > $@-new
+ $(AWK) -v alias=$* -v call=__$* -v rpc=__$*_rpc \
+ -v syscall=__syscall_$* -f $^ > $@-new
mv $@-new $@
generated += $(mach-shortcuts:%=%.c)
endif # mach-shortcuts
@@ -148,5 +148,5 @@ include ../Rules
generated += errsystems.c
$(objpfx)errsystems.c: errsystems.awk err_*.sub \
$(wildcard $(addsuffix /err_*.sub,$(+sysdep_dirs)))
- gawk -v subsys='$(filter-out $<,$^)' -f $^ > $@.n
+ $(AWK) -v subsys='$(filter-out $<,$^)' -f $^ > $@.n
mv $@.n $@
diff --git a/manual/Makefile b/manual/Makefile
index e4efe73..d4c33e6 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -21,8 +21,6 @@
subdir := manual
export subdir := $(subdir)
-# We need GNU awk for the xtract-typefun script.
-GAWK = gawk
# Allow override
INSTALL_INFO = install-info
@@ -62,7 +60,7 @@ chapters-incl := $(chapters-incl1) $(chapters-incl2)
define find-includes
(echo '$(@F) :=' \\ ;\
- awk '$$1 == "@include" { print $$2 " \\" }' $^) > $@.new
+ $(AWK) '$$1 == "@include" { print $$2 " \\" }' $^) > $@.new
mv -f $@.new $@
endef
@@ -78,7 +76,7 @@ libc.dvi: texinfo.tex
# Generate the summary from the Texinfo source files for each chapter.
summary.texi: stamp-summary ;
stamp-summary: summary.awk $(chapters) $(chapters-incl)
- awk -f $^ \
+ $(AWK) -f $^ \
| sort -df +1 -2 | tr '\014' '\012' > summary-tmp
./move-if-change summary-tmp summary.texi
# touch is broken on our machines. Sigh.
@@ -88,10 +86,10 @@ stamp-summary: summary.awk $(chapters) $(chapters-incl)
# access to the documentation of the function, variables, and other
# definitions.
dir-add.texinfo: xtract-typefun.awk $(chapters) $(chapters-incl)
- (echo "@dircategory GNU C library functions"; \
+ $(SHELL) -c '(echo "@dircategory GNU C library functions"; \
echo "@direntry"; \
- $(GAWK) -f $^ | sort; \
- echo "@end direntry";) > $@.new
+ $(AWK) -f $^; \
+ echo "@end direntry";)' > $@.new
mv -f $@.new $@
# Generate Texinfo files from the C source for the example programs.
diff --git a/manual/users.texi b/manual/users.texi
index 5ee2e64..d2b3b8d 100644
--- a/manual/users.texi
+++ b/manual/users.texi
@@ -289,7 +289,7 @@ include the header files @file{sys/types.h} and @file{unistd.h}.
@comment unistd.h
@comment POSIX.1
-@deftypefun int seteuid(uid_t @var{neweuid})
+@deftypefun int seteuid (uid_t @var{neweuid})
This function sets the effective user ID of a process to @var{newuid},
provided that the process is allowed to change its effective user ID. A
privileged process (effective user ID zero) can change its effective
diff --git a/manual/xtract-typefun.awk b/manual/xtract-typefun.awk
index 2f0bbc7..3fccd80 100644
--- a/manual/xtract-typefun.awk
+++ b/manual/xtract-typefun.awk
@@ -4,23 +4,38 @@ BEGIN {
}
/^@node/ {
- last_node = gensub (/@node +([^@,]+).*/, "\\1", 1);
+ name = $0;
+ sub(/^@node +/, "", name);
+ sub(/[@,].*$/, "", name);
+ last_node = name;
}
-/^@deftypefun/ {
- printf ("* %s: (libc)%s.\n",
- gensub (/@deftypefunx? +([^{ ]+|\{[^}]+\}) +([[:alpha:]_][[:alnum:]_]*).*/, "\\2", 1),
- last_node);
-}
+/^@deftype(fn|vr)/ {
+# The string we want is $4, except that if there were brace blocks
+# before that point then it gets shifted to the right, since awk
+# doesn't know from brace blocks.
+ id = 4; check = 2; squig = 0;
+ while(check < id)
+ {
+ if($check ~ /{/) squig++;
+ if($check ~ /}/) squig--;
+ if(squig) id++;
+ check++;
+ }
-/^@deftypevr/ {
- printf ("* %s: (libc)%s.\n",
- gensub (/@deftypevrx? +([^{ ]+|\{[^}]+\}) +([^{ ]+|\{[^}]+\}) +([[:alpha:]_][[:alnum:]_]*).*/, "\\3", 1),
- last_node);
+ printf ("* %s: (libc)%s.\n", $id, last_node);
}
-/^@deftypefn/ {
- printf ("* %s: (libc)%s.\n",
- gensub (/@deftypefnx? +([^{ ]+|\{[^}]+\}) +[^{ ]*(\{[^}]+\})? +([[:alpha:]_][[:alnum:]_]*).*/, "\\3", 1),
- last_node);
+/^@deftypefun/ {
+# Likewise, except it's $3 theoretically.
+ id = 3; check = 2; squig = 0;
+ while(check < id)
+ {
+ if($check ~ /{/) squig++;
+ if($check ~ /}/) squig--;
+ if(squig) id++;
+ check++;
+ }
+
+ printf ("* %s: (libc)%s.\n", $id, last_node);
}
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index 58c093e..90beb8f 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -38,7 +38,7 @@ extern char **_dl_argv;
extern char **_environ;
extern size_t _dl_pagesize;
extern const char *_dl_platform;
-extern unsigned long _dl_hwcap;
+extern unsigned long int _dl_hwcap;
extern size_t _dl_platformlen;
extern void _end;
extern void ENTRY_POINT (void);
@@ -48,7 +48,6 @@ int __libc_enable_secure;
int __libc_multiple_libcs; /* Defining this here avoids the inclusion
of init-first. */
static ElfW(auxv_t) *_dl_auxv;
-static unsigned long int hwcap;
unsigned long int _dl_hwcap_mask = HWCAP_IMPORTANT;
@@ -241,10 +240,11 @@ _dl_show_auxv (void)
_dl_sysdep_message ("AT_PLATFORM: ", av->a_un.a_ptr, "\n", NULL);
break;
case AT_HWCAP:
- hwcap = av->a_un.a_val;
- if (_dl_procinfo (hwcap) < 0)
+ _dl_hwcap = av->a_un.a_val;
+ if (_dl_procinfo (_dl_hwcap) < 0)
_dl_sysdep_message ("AT_HWCAP: ",
- _itoa_word (hwcap, buf + sizeof buf - 1, 16, 0),
+ _itoa_word (_dl_hwcap, buf + sizeof buf - 1,
+ 16, 0),
"\n", NULL);
break;
}
@@ -284,7 +284,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
size_t *max_capstrlen)
{
/* Determine how many important bits are set. */
- unsigned long int mask = _dl_hwcap_mask;
+ unsigned long int masked = _dl_hwcap & _dl_hwcap_mask;
size_t cnt = platform != NULL;
size_t n, m;
size_t total;
@@ -293,8 +293,9 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
struct r_strlenpair *rp;
char *cp;
- for (n = 0; (~((1UL << n) - 1) & mask) != 0; ++n)
- if ((mask & (1UL << n)) != 0)
+ /* Count the number of bits set in the masked value. */
+ for (n = 0; (~((1UL << n) - 1) & masked) != 0; ++n)
+ if ((masked & (1UL << n)) != 0)
++cnt;
if (cnt == 0)
@@ -318,12 +319,12 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
/* Create temporary data structure to generate result table. */
temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp));
m = 0;
- for (n = 0; mask != 0; ++n)
- if ((mask & (1UL << n)) != 0)
+ for (n = 0; masked != 0; ++n)
+ if ((masked & (1UL << n)) != 0)
{
temp[m].str = _dl_hwcap_string (n);
temp[m].len = strlen (temp[m].str);
- mask ^= 1UL << n;
+ masked ^= 1UL << n;
++m;
}
if (platform != NULL)
diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile
index 762f79b..77f0b23 100644
--- a/sysdeps/gnu/Makefile
+++ b/sysdeps/gnu/Makefile
@@ -21,7 +21,7 @@
$(..)sysdeps/gnu/errlist.c: $(..)sysdeps/gnu/errlist.awk \
$(..)manual/errno.texi
- awk -f $^ > $@-tmp
+ $(AWK) -f $^ > $@-tmp
# Make it unwritable so noone will edit it by mistake.
-chmod a-w $@-tmp
mv -f $@-tmp $@
diff --git a/sysdeps/gnu/errlist.awk b/sysdeps/gnu/errlist.awk
index a14c29c..b40606a 100644
--- a/sysdeps/gnu/errlist.awk
+++ b/sysdeps/gnu/errlist.awk
@@ -34,9 +34,14 @@ BEGIN {
print "";
print "#ifndef SYS_ERRLIST";
print "# define SYS_ERRLIST _sys_errlist";
+ print "# define SYS_ERRLIST_ALIAS sys_errlist";
print "#endif";
print "#ifndef SYS_NERR";
print "# define SYS_NERR _sys_nerr";
+ print "# define SYS_NERR_ALIAS sys_nerr";
+ print "#endif";
+ print "#ifndef ERR_REMAP";
+ print "# define ERR_REMAP(n) n";
print "#endif";
print "";
print "const char *const SYS_ERRLIST[] =";
@@ -70,7 +75,7 @@ errnoh == 3 && $1 == "@comment" && $2 == "errno" \
errnoh == 4 && $1 == "@end" && $2 == "deftypevr" \
{
printf "/*%s */\n", desc;
- printf " [%s] = N_(\"%s\"),\n", e, etext;
+ printf " [ERR_REMAP (%s)] = N_(\"%s\"),\n", e, etext;
print "#endif";
errnoh = 0;
next;
@@ -85,8 +90,10 @@ END {
print " };";
print "";
print "const int SYS_NERR = sizeof SYS_ERRLIST / sizeof SYS_ERRLIST [0];";
- print "#if !defined HAVE_ELF || !defined PIC || !defined DO_VERSIONING";
- print "weak_alias (_sys_errlist, sys_errlist)";
- print "weak_alias (_sys_nerr, sys_nerr)";
+ print "#ifdef SYS_ERRLIST_ALIAS";
+ print "weak_alias (_sys_errlist, SYS_ERRLIST_ALIAS)";
+ print "#endif";
+ print "#ifdef SYS_NERR_ALIAS";
+ print "weak_alias (_sys_nerr, SYS_NERR_ALIAS)";
print "#endif";
}
diff --git a/sysdeps/mach/hurd/Dist b/sysdeps/mach/hurd/Dist
index 084c314..03f422d 100644
--- a/sysdeps/mach/hurd/Dist
+++ b/sysdeps/mach/hurd/Dist
@@ -1,3 +1,4 @@
+errlist.c
errnos.awk
err_hurd.sub
libc-ldscript
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 454ac8f..b3161ca 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -87,7 +87,7 @@ $(common-objpfx)errnos.d: $(mach-errnos-deps)
$(hurd)/errnos.h: $(common-objpfx)stamp-errnos ;
$(common-objpfx)stamp-errnos: $(hurd)/errnos.awk $(errno.texinfo) \
$(mach-errnos-deps)
- gawk -f $^ > $(hurd)/errnos.h-tmp
+ $(AWK) -f $^ > $(hurd)/errnos.h-tmp
# Make it unwritable so noone will edit it by mistake.
-chmod a-w $(hurd)/errnos.h-tmp
./$(..)move-if-change $(hurd)/errnos.h-tmp $(hurd)/errnos.h
diff --git a/sysdeps/mach/hurd/errlist.c b/sysdeps/mach/hurd/errlist.c
new file mode 100644
index 0000000..5cbc543
--- /dev/null
+++ b/sysdeps/mach/hurd/errlist.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* SYS_ERRLIST cannot have Unix semantics on the Hurd, so it is easier
+ just to rename it. We also need to remap error codes to array
+ indices by taking their subcode. */
+#define SYS_ERRLIST _hurd_errlist
+#define SYS_NERR _hurd_nerr
+#define ERR_REMAP(n) (n & 0x3fff)
+
+#include <sysdeps/gnu/errlist.c>
diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile
index 4863556..234caee 100644
--- a/sysdeps/unix/Makefile
+++ b/sysdeps/unix/Makefile
@@ -54,7 +54,7 @@ $(common-objpfx)sys/param.h: $(sysincludedir)/sys/param.h
(echo '#ifndef _SYS_PARAM_H'; \
echo '#define _SYS_PARAM_H 1'; \
echo '#include <endian.h>'; \
- awk < $< \
+ $(AWK) < $< \
'/^#define[ ]*NULL/ { print "#ifndef NULL"; \
print $$0; \
print "#endif"; \
@@ -142,7 +142,7 @@ $(common-objpfx)make-errnos: $(common-objpfx)make-errnos.c
$(common-objpfx)make-errnos.c: $(sysdep_dir)/unix/errnos-tmpl.c \
$(sysdep_dir)/unix/errnos.awk $(common-objpfx)errnos
- awk -f $(word 2,$^) errnos="`tr '\012' ' ' < $(word 3,$^)`" $< > $@T
+ $(AWK) -f $(word 2,$^) errnos="`tr '\012' ' ' < $(word 3,$^)`" $< > $@T
mv $@T $@
$(common-objpfx)errnos: $(wildcard $(sysincludedir)/errno.h \
@@ -176,7 +176,7 @@ $(common-objpfx)make-ioctls: $(common-objpfx)make-ioctls.c
$(common-objpfx)make-ioctls.c: $(sysdep_dir)/unix/ioctls-tmpl.c \
$(sysdep_dir)/unix/ioctls.awk \
$(common-objpfx)ioctls
- awk -f $(word 2,$^) requests="`cat $(word 3,$^)`" $< > $@T
+ $(AWK) -f $(word 2,$^) requests="`cat $(word 3,$^)`" $< > $@T
mv $@T $@
diff --git a/time/strftime.c b/time/strftime.c
index 7bb0810..f0be6b6 100644
--- a/time/strftime.c
+++ b/time/strftime.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -480,7 +480,7 @@ my_strftime (s, maxsize, format, tp)
for (f = format; *f != '\0'; ++f)
{
- int pad; /* Padding for number ('-', '_', or 0). */
+ int pad = 0; /* Padding for number ('-', '_', or 0). */
int modifier; /* Field modifier ('E', 'O', or 0). */
int digits; /* Max digits for numeric format. */
int number_value; /* Numeric value to be printed. */
@@ -570,7 +570,6 @@ my_strftime (s, maxsize, format, tp)
#endif /* ! DO_MULTIBYTE */
/* Check for flags that can modify a format. */
- pad = 0;
while (1)
{
switch (*++f)
diff --git a/timezone/Makefile b/timezone/Makefile
index 3d05109..1c28d86 100644
--- a/timezone/Makefile
+++ b/timezone/Makefile
@@ -89,7 +89,7 @@ $(tzfiles:%=$(objpfx)z.%): $(objpfx)z.%: % Makefile
# The extra kludge for the $(tzlinks) files is necessary since running zic
# this file requires all other files to exist. Blech!
(echo 'define $*-zones' ;\
- awk '$$1 == "Zone" { print $$2 } $$1 == "Link" { print $$3 }' $^ ;\
+ $(AWK) '$$1 == "Zone" { print $$2 } $$1 == "Link" { print $$3 }' $^ ;\
echo 'endef' ;\
echo '$*-zones := $$(subst $$(nl), ,$$($*-zones))' ;\
echo 'ifdef $*-zones' ;\
diff --git a/wcsmbs/btowc.c b/wcsmbs/btowc.c
index b40a98f..3ca5af2 100644
--- a/wcsmbs/btowc.c
+++ b/wcsmbs/btowc.c
@@ -31,7 +31,7 @@ __btowc (c)
char buf[sizeof (wchar_t)];
struct gconv_step_data data;
char inbuf[1];
- char *inptr = inbuf;
+ const char *inptr = inbuf;
size_t converted;
int status;
diff --git a/wcsmbs/wcsnrtombs.c b/wcsmbs/wcsnrtombs.c
index 4b6232a..37b525b 100644
--- a/wcsmbs/wcsnrtombs.c
+++ b/wcsmbs/wcsnrtombs.c
@@ -46,7 +46,7 @@ __wcsnrtombs (dst, src, nwc, len, ps)
struct gconv_step_data data;
const wchar_t *srcend;
int status;
- size_t result;
+ size_t result = 0;
/* Tell where we want the result. */
data.is_last = 1;
diff --git a/wcsmbs/wcsrtombs.c b/wcsmbs/wcsrtombs.c
index 428ef3d..b055a09 100644
--- a/wcsmbs/wcsrtombs.c
+++ b/wcsmbs/wcsrtombs.c
@@ -42,7 +42,7 @@ __wcsrtombs (dst, src, len, ps)
{
struct gconv_step_data data;
int status;
- size_t result;
+ size_t result = 0;
/* Tell where we want the result. */
data.is_last = 1;