summaryrefslogtreecommitdiff
path: root/plugins/dumb
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2011-03-09 19:08:05 +0100
committerGravatar waker <wakeroid@gmail.com>2011-03-09 19:08:05 +0100
commit956704d035a729adf6cfe52513c19839d6df922a (patch)
tree3df52ac1e0766d55ccdaa9735051ebed6697fff3 /plugins/dumb
parentc779e656a626088d2cd5aff9b12ace39ea3c3559 (diff)
dumb: added charset detection to sample and instrument names
Diffstat (limited to 'plugins/dumb')
-rw-r--r--plugins/dumb/cdumb.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/plugins/dumb/cdumb.c b/plugins/dumb/cdumb.c
index bf3780cb..b5eb9bcb 100644
--- a/plugins/dumb/cdumb.c
+++ b/plugins/dumb/cdumb.c
@@ -693,8 +693,8 @@ static DUH * open_module(const char *fname, const char *ext, int *start_order, i
return duh;
}
-static const char *convstr (const char* str, int sz) {
- static char out[2048];
+static const char *
+convstr (const char* str, int sz, char *out, int out_sz) {
int i;
for (i = 0; i < sz; i++) {
if (str[i] != ' ') {
@@ -707,11 +707,11 @@ static const char *convstr (const char* str, int sz) {
}
// check for utf8 (hack)
- if (deadbeef->junk_iconv (str, sz, out, sizeof (out), "utf-8", "utf-8") >= 0) {
+ if (deadbeef->junk_iconv (str, sz, out, out_sz, "utf-8", "utf-8") >= 0) {
return out;
}
- if (deadbeef->junk_iconv (str, sz, out, sizeof (out), "iso8859-1", "utf-8") >= 0) {
+ if (deadbeef->junk_iconv (str, sz, out, out_sz, "iso8859-1", "utf-8") >= 0) {
return out;
}
@@ -736,6 +736,8 @@ cdumb_insert (DB_playItem_t *after, const char *fname) {
}
DB_playItem_t *it = deadbeef->pl_item_alloc_init (fname, plugin.plugin.id);
DUMB_IT_SIGDATA * itsd = duh_get_it_sigdata(duh);
+ char temp[2048];
+
if (itsd->name[0]) {
int tl = sizeof(itsd->name);
int i;
@@ -744,7 +746,7 @@ cdumb_insert (DB_playItem_t *after, const char *fname) {
deadbeef->pl_add_meta (it, "title", NULL);
}
else {
- deadbeef->pl_add_meta (it, "title", convstr ((char*)&itsd->name, sizeof(itsd->name)));
+ deadbeef->pl_add_meta (it, "title", convstr ((char*)&itsd->name, sizeof(itsd->name), temp, sizeof (temp)));
}
}
else {
@@ -754,12 +756,12 @@ cdumb_insert (DB_playItem_t *after, const char *fname) {
for (i = 0; i < itsd->n_instruments; i++) {
char key[100];
snprintf (key, sizeof (key), "INST%03d", i);
- deadbeef->pl_add_meta (it, key, (const char *)itsd->instrument[i].name);
+ deadbeef->pl_add_meta (it, key, convstr ((char *)&itsd->instrument[i].name, sizeof (itsd->instrument[i].name), temp, sizeof (temp)));
}
for (i = 0; i < itsd->n_samples; i++) {
char key[100];
snprintf (key, sizeof (key), "SAMP%03d", i);
- deadbeef->pl_add_meta (it, key, (const char *)itsd->sample[i].name);
+ deadbeef->pl_add_meta (it, key, convstr ((char *)&itsd->sample[i].name, sizeof (itsd->sample[i].name), temp, sizeof (temp)));
}
char s[100];