From 7844008980d4d1b9cb7cbd4dda4ae912e12dd7a9 Mon Sep 17 00:00:00 2001 From: Kalle Wallin Date: Wed, 9 Jun 2004 17:36:27 +0000 Subject: [PATCH] Added the strscroll function git-svn-id: https://svn.musicpd.org/ncmpc/trunk@1424 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/support.c | 38 ++++++++++++++++++++++++++++++++++++++ src/support.h | 9 +++++++++ 2 files changed, 47 insertions(+) diff --git a/src/support.c b/src/support.c index 6ba2612..23b67d3 100644 --- a/src/support.c +++ b/src/support.c @@ -116,6 +116,44 @@ strcasestr(const char *haystack, const char *needle) } #endif /* HAVE_STRCASESTR */ +char * +strscroll(char *str, char *separator, int width, scroll_state_t *st) +{ + char *tmp, *buf; + size_t len; + + if( st->offset==0 ) + { + st->offset++; + return g_strdup(str); + } + + /* create a buffer containing the string and the separator */ + tmp = g_malloc(strlen(str)+strlen(separator)+1); + strcpy(tmp, str); + strcat(tmp, separator); + len = strlen(tmp); + + if( st->offset >= len ) + st->offset = 0; + + /* create the new scrolled string */ + buf = g_malloc(width+1); + strncpy(buf, tmp+st->offset, width); + if( strlen(buf) < width ) + strncat(buf, tmp, width-strlen(buf)); + + if( time(NULL)-st->t >= 1 ) + { + st->t = time(NULL); + st->offset++; + } + g_free(tmp); + return buf; + +} + + void charset_init(gboolean disable) { diff --git a/src/support.h b/src/support.h index 2b79e3a..fce9aac 100644 --- a/src/support.h +++ b/src/support.h @@ -16,6 +16,15 @@ char *remove_trailing_slash(char *path); char *lowerstr(char *str); char *strcasestr(const char *haystack, const char *needle); +typedef struct +{ + int offset; + time_t t; + +} scroll_state_t; + +char *strscroll(char *str, char *separator, int width, scroll_state_t *st); + void charset_init(gboolean disable); char *utf8_to_locale(char *str); char *locale_to_utf8(char *str); -- 2.30.2