From 4bcb2658ff02d72aa83640cf76ac65a430f17004 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 7 Apr 2009 06:51:59 +0000 Subject: * string/strverscmp.c (__strverscmp): Fix last cleanups. * string/tst-svc.input: Add new test case. * string/tst-svc.expect: Adjust. * string/Makefile: Don't ignore tst-svc error. --- ChangeLog | 5 +++++ NEWS | 2 +- string/Makefile | 2 +- string/strverscmp.c | 6 +++--- string/tst-svc.expect | 2 ++ string/tst-svc.input | 2 ++ 6 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3a9b0c8c08..6a26ed5f0e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2009-04-06 Ulrich Drepper + * string/strverscmp.c (__strverscmp): Fix last cleanups. + * string/tst-svc.input: Add new test case. + * string/tst-svc.expect: Adjust. + * string/Makefile: Don't ignore tst-svc error. + * sysdeps/x86_64/memchr.S: New file. * resolv/resolv.h (RES_SNGLKUP): Define. diff --git a/NEWS b/NEWS index 1388caa804..e969b61b58 100644 --- a/NEWS +++ b/NEWS @@ -37,7 +37,7 @@ Version 2.10 * New locales: nan_TW@latin, ks_IN -* Faster strlen and strchr on x86-64. +* Faster strlen, strchr, and memchr on x86-64. Implemented by Ulrich Drepper. diff --git a/string/Makefile b/string/Makefile index 127e25fbd9..db9b5081d5 100644 --- a/string/Makefile +++ b/string/Makefile @@ -79,5 +79,5 @@ tests: $(objpfx)tst-svc.out $(objpfx)tst-svc.out: tst-svc.input $(objpfx)tst-svc GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ $(built-program-cmd) < $(word 1,$^) > $@ - -cmp tst-svc.expect $(objpfx)tst-svc.out + @cmp tst-svc.expect $(objpfx)tst-svc.out endif diff --git a/string/strverscmp.c b/string/strverscmp.c index 2b7ebcb8a8..7c5be8dd95 100644 --- a/string/strverscmp.c +++ b/string/strverscmp.c @@ -74,7 +74,7 @@ __strverscmp (s1, s2) unsigned char c1 = *p1++; unsigned char c2 = *p2++; /* Hint: '0' is a digit too. */ - int state = S_N | ((c1 == '0') + (isdigit (c1) != 0)); + int state = S_N + ((c1 == '0') + (isdigit (c1) != 0)); int diff; while ((diff = c1 - c2) == 0) @@ -85,10 +85,10 @@ __strverscmp (s1, s2) state = next_state[state]; c1 = *p1++; c2 = *p2++; - state |= (c1 == '0') + (isdigit (c1) != 0); + state += (c1 == '0') + (isdigit (c1) != 0); } - state = result_type[state * 3 | (((c2 == '0') + (isdigit (c2) != 0)))]; + state = result_type[state * 3 + (((c2 == '0') + (isdigit (c2) != 0)))]; switch (state) { diff --git a/string/tst-svc.expect b/string/tst-svc.expect index bb54a2ace0..6240112772 100644 --- a/string/tst-svc.expect +++ b/string/tst-svc.expect @@ -6,6 +6,8 @@ 01a 0 0a +2.6.20 +2.6.21 2.8 2.8-0.4 20 diff --git a/string/tst-svc.input b/string/tst-svc.input index fbe06d2c87..247b1c48f9 100644 --- a/string/tst-svc.input +++ b/string/tst-svc.input @@ -6,6 +6,7 @@ 01a 00a 000 +2.6.21 20 212 21 @@ -18,6 +19,7 @@ foo foo-3.0.0 foo-3.0.1 foo-0.5 +2.6.20 foo-0.4b foo-3.10 foo-3.2 -- cgit v1.2.3