commit a88906b423e57e74a5bbaf1e315a58770d51c628
Author: FRIGN <dev_AT_frign.de>
AuthorDate: Thu Feb 25 22:59:35 2016 +0100
Commit: sin <sin_AT_2f30.org>
CommitDate: Fri Feb 26 09:54:46 2016 +0000
Rever the strmem() addition and add a TODO element
strmem() was not very well thought out. The thing is the following:
If the string contains a zero character, we want to match it, and not
stop right there in place.
The "real" solution is to use memmem() where needed and replace all
functions that assume zero-terminated-strings from standard input, which
could lead to early string-breakoffs.
This requires a strict tracking of string lengths.
diff --git a/Makefile b/Makefile
index 266ba86..5fd0b50 100644
--- a/Makefile
+++ b/Makefile
_AT_@ -75,7 +75,6 @@ LIBUTILSRC =\
libutil/strcasestr.c\
libutil/strlcat.c\
libutil/strlcpy.c\
- libutil/strmem.c\
libutil/strsep.c\
libutil/strtonum.c\
libutil/unescape.c
diff --git a/TODO b/TODO
index fc0730d..225034a 100644
--- a/TODO
+++ b/TODO
_AT_@ -15,5 +15,8 @@ If you are looking for some work to do on sbase, another option is to
pick a utility from the list in the README which has missing flags or
features noted.
+What also needs to be implemented is the capability of the tools to
+handle data with NUL-bytes in it.
+
[0]
http://landley.net/toybox/roadmap.html
[1]
http://git.suckless.org/ubase/
diff --git a/join.c b/join.c
index 3c05a6e..caf592f 100644
--- a/join.c
+++ b/join.c
_AT_@ -225,7 +225,7 @@ makeline(char *s, size_t len)
beg = sp;
if (sep) {
- if (!(end = strmem(sp, sep, seplen)))
+ if (!(end = utfutf(sp, sep)))
eol = 1;
if (!eol) {
diff --git a/libutil/strmem.c b/libutil/strmem.c
deleted file mode 100644
index 597d5ca..0000000
--- a/libutil/strmem.c
+++ /dev/null
_AT_@ -1,23 +0,0 @@
-/* See LICENSE file for copyright and license details. */
-#include <stddef.h>
-#include <string.h>
-
-char *
-strmem(char *haystack, char *needle, size_t needlelen)
-{
- size_t i;
-
- for (i = 0; i < needlelen; i++) {
- if (haystack[i] == '\0') {
- return NULL;
- }
- }
-
- for (; haystack[i]; i++) {
- if (!(memcmp(haystack + i - needlelen, needle, needlelen))) {
- return (haystack + i - needlelen);
- }
- }
-
- return NULL;
-}
diff --git a/util.h b/util.h
index f10bf46..4c973d1 100644
--- a/util.h
+++ b/util.h
_AT_@ -58,8 +58,6 @@ size_t estrlcpy(char *, const char *, size_t);
#undef strsep
char *strsep(char **, const char *);
-char *strmem(char *, char *, size_t);
-
/* regex */
int enregcomp(int, regex_t *, const char *, int);
int eregcomp(regex_t *, const char *, int);
Received on Fri Feb 26 2016 - 10:54:55 CET