From 085b73b968c701988752b505d763941a3f95a218 Mon Sep 17 00:00:00 2001 From: martijn <> Date: Mon, 1 Oct 2018 06:37:37 +0000 Subject: [PATCH] As per POSIX, when str{,r}chr is comparing it should convert c to a char. The C implementation of str{,r}chr are not linked to the build, because assembly implementations are used, but change to code for easier reference. At least the i386 and amd64 are checked and seem to do the correct thing. Found thanks to the csh any/strchr change. minor pointers and OK millert@ --- src/lib/libc/string/strchr.3 | 5 +++-- src/lib/libc/string/strchr.c | 4 ++-- src/lib/libc/string/strrchr.3 | 5 +++-- src/lib/libc/string/strrchr.c | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lib/libc/string/strchr.3 b/src/lib/libc/string/strchr.3 index 85443867..07e7f29f 100644 --- a/src/lib/libc/string/strchr.3 +++ b/src/lib/libc/string/strchr.3 @@ -1,4 +1,4 @@ -.\" $OpenBSD: strchr.3,v 1.12 2015/11/24 09:14:35 daniel Exp $ +.\" $OpenBSD: strchr.3,v 1.13 2018/10/01 06:37:37 martijn Exp $ .\" .\" Copyright (c) 1990, 1991 The Regents of the University of California. .\" All rights reserved. @@ -31,7 +31,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd $Mdocdate: November 24 2015 $ +.Dd $Mdocdate: October 1 2018 $ .Dt STRCHR 3 .Os .Sh NAME @@ -50,6 +50,7 @@ The .Fn strchr function locates the first occurrence of the character .Fa c +.Pq converted to a char in the string .Fa s . The terminating NUL character is considered part of the string. diff --git a/src/lib/libc/string/strchr.c b/src/lib/libc/string/strchr.c index b396b45b..8bfa7ac3 100644 --- a/src/lib/libc/string/strchr.c +++ b/src/lib/libc/string/strchr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: strchr.c,v 1.3 2015/08/31 02:53:57 guenther Exp $ */ +/* $OpenBSD: strchr.c,v 1.4 2018/10/01 06:37:37 martijn Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. @@ -36,7 +36,7 @@ char * strchr(const char *p, int ch) { for (;; ++p) { - if (*p == ch) + if (*p == (char) ch) return((char *)p); if (!*p) return((char *)NULL); diff --git a/src/lib/libc/string/strrchr.3 b/src/lib/libc/string/strrchr.3 index f4ce691a..5abb88ec 100644 --- a/src/lib/libc/string/strrchr.3 +++ b/src/lib/libc/string/strrchr.3 @@ -1,4 +1,4 @@ -.\" $OpenBSD: strrchr.3,v 1.11 2015/11/24 09:14:35 daniel Exp $ +.\" $OpenBSD: strrchr.3,v 1.12 2018/10/01 06:37:37 martijn Exp $ .\" .\" Copyright (c) 1990, 1991 The Regents of the University of California. .\" All rights reserved. @@ -31,7 +31,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd $Mdocdate: November 24 2015 $ +.Dd $Mdocdate: October 1 2018 $ .Dt STRRCHR 3 .Os .Sh NAME @@ -50,6 +50,7 @@ The .Fn strrchr function locates the last occurrence of the character .Fa c +.Pq converted to a char in the string .Fa s . The terminating diff --git a/src/lib/libc/string/strrchr.c b/src/lib/libc/string/strrchr.c index 93755721..848d1ad2 100644 --- a/src/lib/libc/string/strrchr.c +++ b/src/lib/libc/string/strrchr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: strrchr.c,v 1.3 2015/08/31 02:53:57 guenther Exp $ */ +/* $OpenBSD: strrchr.c,v 1.4 2018/10/01 06:37:37 martijn Exp $ */ /* * Copyright (c) 1988 Regents of the University of California. * All rights reserved. @@ -38,7 +38,7 @@ strrchr(const char *p, int ch) char *save; for (save = NULL;; ++p) { - if (*p == ch) + if (*p == (char) ch) save = (char *)p; if (!*p) return(save);