aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKalle Wallin <kaw@linux.se>2004-06-09 17:36:27 +0000
committerKalle Wallin <kaw@linux.se>2004-06-09 17:36:27 +0000
commit7844008980d4d1b9cb7cbd4dda4ae912e12dd7a9 (patch)
tree7d8a66bd3d231dc5847ab0421d9a3567593cc147
parent72c0b2270d207e32a2124ce6439214e5e8139e57 (diff)
downloadmpd-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.c38
-rw-r--r--src/support.h9
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);