From af70f178d8fe801d05fe83d00a09509834f4f65c Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 1 Jul 2017 14:32:21 +0200 Subject: added a strlcat --- src/gui/text_widget.c | 7 +++++++ src/gui/text_widget.h | 2 ++ src/libc/string.c | 24 ++++++++++++++++++++++++ src/libc/string.h | 1 + 4 files changed, 34 insertions(+) (limited to 'src') diff --git a/src/gui/text_widget.c b/src/gui/text_widget.c index db237af..dc12c11 100644 --- a/src/gui/text_widget.c +++ b/src/gui/text_widget.c @@ -62,3 +62,10 @@ void text_widget_set_text( void *obj, const char *s ) strlcpy( widget->s, s, TEXT_WIDGET_MAX_TEXT_SIZE ); } +void text_widget_on_key_down( void *obj, char c ) +{ +} + +void text_widget_on_key_up( void *obj, char c ) +{ +} diff --git a/src/gui/text_widget.h b/src/gui/text_widget.h index 7e87a3c..4919e26 100644 --- a/src/gui/text_widget.h +++ b/src/gui/text_widget.h @@ -20,5 +20,7 @@ void text_widget_init( text_widget_t *widget, widget_t *parent, const int x, con void text_widget_draw( void *obj, graphics_context_t *context ); void text_widget_set_text( void *obj, const char *s ); +void text_widget_on_key_down( void *obj, char c ); +void text_widget_on_key_up( void *obj, char c ); #endif // TEXT_WIDGET_H diff --git a/src/libc/string.c b/src/libc/string.c index 904f33c..2dd351d 100644 --- a/src/libc/string.c +++ b/src/libc/string.c @@ -88,3 +88,27 @@ size_t strlcpy( char *d, const char *s, size_t n ) return len; } + +size_t strlcat( char *d, const char *s, size_t n ) +{ + size_t len = 0; + const char *ss = s; + char *dd = d; + + while( len < n && *dd != '\0' ) { + len++; + dd++; + } + + if( len == n ) { + return len + strlen( s ); + } + + while( len + 1 < n && ( *dd++ = *ss++ ) ) { + len++; + } + + *dd = '\0'; + + return len; +} diff --git a/src/libc/string.h b/src/libc/string.h index fc29ae9..6c0fa01 100644 --- a/src/libc/string.h +++ b/src/libc/string.h @@ -10,5 +10,6 @@ void *memcpy( void *d, const void *s, size_t n ); size_t strlen( const char *s ); int strcmp( const char *s1, const char *s2 ); size_t strlcpy( char *d, const char *s, size_t n ); +size_t strlcat( char *d, const char *s, size_t n ); #endif // STRING_H -- cgit v1.2.3-54-g00ecf