Message ID | 20210316152405.50363-2-nikos.nikoleris@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix the devicetree parser for stdout-path | expand |
On Tue, Mar 16, 2021 at 03:24:02PM +0000, Nikos Nikoleris wrote: > This change adds two functions from <string.h> in preparation for an > update in the libfdt. > > Signed-off-by: Nikos Nikoleris <nikos.nikoleris@arm.com> > --- > lib/string.h | 4 +++- > lib/string.c | 23 +++++++++++++++++++++-- > 2 files changed, 24 insertions(+), 3 deletions(-) > > diff --git a/lib/string.h b/lib/string.h > index 493d51b..8da687e 100644 > --- a/lib/string.h > +++ b/lib/string.h > @@ -7,12 +7,14 @@ > #ifndef __STRING_H > #define __STRING_H > > -extern unsigned long strlen(const char *buf); > +extern size_t strlen(const char *buf); > +extern size_t strnlen(const char *buf, size_t maxlen); > extern char *strcat(char *dest, const char *src); > extern char *strcpy(char *dest, const char *src); > extern int strcmp(const char *a, const char *b); > extern int strncmp(const char *a, const char *b, size_t n); > extern char *strchr(const char *s, int c); > +extern char *strrchr(const char *s, int c); > extern char *strstr(const char *haystack, const char *needle); > extern void *memset(void *s, int c, size_t n); > extern void *memcpy(void *dest, const void *src, size_t n); > diff --git a/lib/string.c b/lib/string.c > index 75257f5..9cd626f 100644 > --- a/lib/string.c > +++ b/lib/string.c > @@ -7,15 +7,24 @@ > > #include "libcflat.h" > > -unsigned long strlen(const char *buf) > +size_t strlen(const char *buf) > { > - unsigned long len = 0; > + size_t len = 0; > > while (*buf++) > ++len; > return len; > } > > +size_t strnlen(const char *buf, size_t maxlen) > +{ > + const char *sc; > + > + for (sc = buf; maxlen-- && *sc != '\0'; ++sc) > + /* nothing */; > + return sc - buf; > +} > + > char *strcat(char *dest, const char *src) > { > char *p = dest; > @@ -55,6 +64,16 @@ char *strchr(const char *s, int c) > return (char *)s; > } > > +char *strrchr(const char *s, int c) > +{ > + const char *last = NULL; > + do { > + if (*s != (char)c) This should be == > + last = s; > + } while (*s++); > + return (char *)last; > +} > + > char *strstr(const char *s1, const char *s2) > { > size_t l1, l2; > -- > 2.25.1 > Thanks, drew
diff --git a/lib/string.h b/lib/string.h index 493d51b..8da687e 100644 --- a/lib/string.h +++ b/lib/string.h @@ -7,12 +7,14 @@ #ifndef __STRING_H #define __STRING_H -extern unsigned long strlen(const char *buf); +extern size_t strlen(const char *buf); +extern size_t strnlen(const char *buf, size_t maxlen); extern char *strcat(char *dest, const char *src); extern char *strcpy(char *dest, const char *src); extern int strcmp(const char *a, const char *b); extern int strncmp(const char *a, const char *b, size_t n); extern char *strchr(const char *s, int c); +extern char *strrchr(const char *s, int c); extern char *strstr(const char *haystack, const char *needle); extern void *memset(void *s, int c, size_t n); extern void *memcpy(void *dest, const void *src, size_t n); diff --git a/lib/string.c b/lib/string.c index 75257f5..9cd626f 100644 --- a/lib/string.c +++ b/lib/string.c @@ -7,15 +7,24 @@ #include "libcflat.h" -unsigned long strlen(const char *buf) +size_t strlen(const char *buf) { - unsigned long len = 0; + size_t len = 0; while (*buf++) ++len; return len; } +size_t strnlen(const char *buf, size_t maxlen) +{ + const char *sc; + + for (sc = buf; maxlen-- && *sc != '\0'; ++sc) + /* nothing */; + return sc - buf; +} + char *strcat(char *dest, const char *src) { char *p = dest; @@ -55,6 +64,16 @@ char *strchr(const char *s, int c) return (char *)s; } +char *strrchr(const char *s, int c) +{ + const char *last = NULL; + do { + if (*s != (char)c) + last = s; + } while (*s++); + return (char *)last; +} + char *strstr(const char *s1, const char *s2) { size_t l1, l2;
This change adds two functions from <string.h> in preparation for an update in the libfdt. Signed-off-by: Nikos Nikoleris <nikos.nikoleris@arm.com> --- lib/string.h | 4 +++- lib/string.c | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-)