aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/lib.c11
-rw-r--r--lib/lib.h1
-rw-r--r--lib/portability.h3
-rw-r--r--toys/lsb/passwd.c4
-rw-r--r--toys/posix/grep.c2
5 files changed, 6 insertions, 15 deletions
diff --git a/lib/lib.c b/lib/lib.c
index 03f0a24d..11acba0d 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -1191,17 +1191,6 @@ char *next_printf(char *s, char **start)
return 0;
}
-// Posix inexplicably hasn't got this, so find str in line.
-char *strnstr(char *line, char *str)
-{
- long len = strlen(str);
- char *s;
-
- for (s = line; *s; s++) if (!strncasecmp(s, str, len)) break;
-
- return *s ? s : 0;
-}
-
int dev_minor(int dev)
{
return ((dev&0xfff00000)>>12)|(dev&0xff);
diff --git a/lib/lib.h b/lib/lib.h
index 8a45e080..14bb7cf6 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -237,7 +237,6 @@ int qstrcmp(const void *a, const void *b);
void create_uuid(char *uuid);
char *show_uuid(char *uuid);
char *next_printf(char *s, char **start);
-char *strnstr(char *line, char *str);
int dev_minor(int dev);
int dev_major(int dev);
int dev_makedev(int major, int minor);
diff --git a/lib/portability.h b/lib/portability.h
index c76beef9..59430e1b 100644
--- a/lib/portability.h
+++ b/lib/portability.h
@@ -88,6 +88,9 @@ char *dirname(char *path);
char *__xpg_basename(char *path);
static inline char *basename(char *path) { return __xpg_basename(path); }
+#include <string.h>
+char *strcasestr(const char *haystack, const char *needle);
+
// When building under obsolete glibc (Ubuntu 8.04-ish), hold its hand a bit.
#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 10
#define fstatat fstatat64
diff --git a/toys/lsb/passwd.c b/toys/lsb/passwd.c
index 0f51c0c0..73024832 100644
--- a/toys/lsb/passwd.c
+++ b/toys/lsb/passwd.c
@@ -46,8 +46,8 @@ static void weak_check(char *new, char *old, char *user)
if (strlen(new) < 6) msg = "too short";
if (*new) {
- if (strnstr(new, user) || strnstr(user, new)) msg = "user";
- if (*old && (strnstr(new, old) || strnstr(old, new))) msg = "old";
+ if (strcasestr(new, user) || strcasestr(user, new)) msg = "user";
+ if (*old && (strcasestr(new, old) || strcasestr(old, new))) msg = "old";
}
if (msg) xprintf("BAD PASSWORD: %s\n",msg);
}
diff --git a/toys/posix/grep.c b/toys/posix/grep.c
index f0332cee..14cebf95 100644
--- a/toys/posix/grep.c
+++ b/toys/posix/grep.c
@@ -152,7 +152,7 @@ static void do_grep(int fd, char *name)
fseek.arg = s = line;
break;
}
- if (toys.optflags & FLAG_i) s = strnstr(line, seek->arg);
+ if (toys.optflags & FLAG_i) s = strcasestr(line, seek->arg);
else s = strstr(line, seek->arg);
if (s) break;
}