string: Fix wrong comparison semantics

Chars are signed for x86 -- correct the comparison semantics.

Change-Id: I2049e98eb063c0b4e83ea973d3fcae49c6817dde
Author: Liubov Dmitrieva <liubov.dmitrieva@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
diff --git a/libc/string/index.c b/libc/string/index.c
index fb0492f..81bfba4 100644
--- a/libc/string/index.c
+++ b/libc/string/index.c
@@ -34,7 +34,7 @@
 index(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/libc/string/memrchr.c b/libc/string/memrchr.c
index a533fef..aeb5643 100644
--- a/libc/string/memrchr.c
+++ b/libc/string/memrchr.c
@@ -35,10 +35,10 @@
         const char*  q = p + n;
 
         while (1) {
-            q--; if (q < p || q[0] == c) break;
-            q--; if (q < p || q[0] == c) break;
-            q--; if (q < p || q[0] == c) break;
-            q--; if (q < p || q[0] == c) break;
+            q--; if (q < p || q[0] == (char) c) break;
+            q--; if (q < p || q[0] == (char) c) break;
+            q--; if (q < p || q[0] == (char) c) break;
+            q--; if (q < p || q[0] == (char) c) break;
         }
         if (q >= p)
             return (void*)q;
diff --git a/libc/string/strchr.c b/libc/string/strchr.c
index 31ba4e2..9b4332c 100644
--- a/libc/string/strchr.c
+++ b/libc/string/strchr.c
@@ -34,7 +34,7 @@
 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/libc/string/strrchr.c b/libc/string/strrchr.c
index 4918f82..10c07e6 100644
--- a/libc/string/strrchr.c
+++ b/libc/string/strrchr.c
@@ -36,7 +36,7 @@
 	char *save;
 
 	for (save = NULL;; ++p) {
-		if (*p == ch)
+		if (*p == (char) ch)
 			save = (char *)p;
 		if (!*p)
 			return(save);