[hackers] [sbase] Rever the strmem() addition and add a TODO element || FRIGN

From: <git_AT_suckless.org>
Date: Fri, 26 Feb 2016 10:54:55 +0100 (CET)

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

This archive was generated by hypermail 2.3.0 : Fri Feb 26 2016 - 11:00:22 CET