struct stat st;
const char *content = NULL, *range, *filename;
dvr_entry_t *de;
- char *fname;
+ char *fname, *charset;
char *basename;
char *str, *str0;
char range_buf[255];
fname = tvh_strdupa(filename);
content = muxer_container_type2mime(de->de_mc, 1);
+ charset = de->de_config ? de->de_config->dvr_charset_id : NULL;
pthread_mutex_unlock(&global_lock);
http_stream_postop(tcp_id);
tcp_id = NULL;
} else {
- basename = malloc(strlen(fname) + 7 + 1);
+ str = intlconv_to_utf8safestr(charset, fname, strlen(fname) * 3);
+ if (str == NULL)
+ str = intlconv_to_utf8safestr(intlconv_charset_id("ASCII", 1, 1),
+ fname, strlen(fname) * 3);
+ if (str == NULL)
+ str = strdup("error");
+ basename = malloc(strlen(str) + 7 + 1);
strcpy(basename, "file://");
- strcat(basename, fname);
+ strcat(basename, str);
sub->ths_dvrfile = basename;
+ free(str);
}
}
pthread_mutex_unlock(&global_lock);