diff options
author | Kalle Wallin <kaw@linux.se> | 2004-06-09 17:36:27 +0000 |
---|---|---|
committer | Kalle Wallin <kaw@linux.se> | 2004-06-09 17:36:27 +0000 |
commit | 7844008980d4d1b9cb7cbd4dda4ae912e12dd7a9 (patch) | |
tree | 7d8a66bd3d231dc5847ab0421d9a3567593cc147 | |
parent | 72c0b2270d207e32a2124ce6439214e5e8139e57 (diff) | |
download | mpd-7844008980d4d1b9cb7cbd4dda4ae912e12dd7a9.tar.gz mpd-7844008980d4d1b9cb7cbd4dda4ae912e12dd7a9.tar.xz mpd-7844008980d4d1b9cb7cbd4dda4ae912e12dd7a9.zip |
Added the strscroll function
git-svn-id: https://svn.musicpd.org/ncmpc/trunk@1424 09075e82-0dd4-0310-85a5-a0d7c8717e4f
-rw-r--r-- | src/support.c | 38 | ||||
-rw-r--r-- | src/support.h | 9 |
2 files changed, 47 insertions, 0 deletions
diff --git a/src/support.c b/src/support.c index 6ba261213..23b67d3e7 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 2b79e3aef..fce9aac28 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); |