summaryrefslogtreecommitdiffstats
path: root/subreader.c
diff options
context:
space:
mode:
authoratlka <atlka@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-07-01 08:49:14 +0000
committeratlka <atlka@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-07-01 08:49:14 +0000
commit1639ad0ba33e310ce3f796ac6281b273921b046a (patch)
treececb785aea08eeee21031b883d516cbde3e06554 /subreader.c
parent6b4a12daa22903f6fc6010445c0a2ede0b627fa6 (diff)
downloadmpv-1639ad0ba33e310ce3f796ac6281b273921b046a.tar.bz2
mpv-1639ad0ba33e310ce3f796ac6281b273921b046a.tar.xz
sub_utf8 fiddling
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10355 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'subreader.c')
-rw-r--r--subreader.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/subreader.c b/subreader.c
index e8d24630ff..ab72a05314 100644
--- a/subreader.c
+++ b/subreader.c
@@ -930,12 +930,11 @@ extern float sub_delay;
extern float sub_fps;
#ifdef USE_ICONV
-static iconv_t icdsc;
+static iconv_t icdsc = (iconv_t)(-1);
void subcp_open (void)
{
char *tocp = "UTF-8";
- icdsc = (iconv_t)(-1);
if (sub_cp){
if ((icdsc = iconv_open (tocp, sub_cp)) != (iconv_t)(-1)){
@@ -1178,23 +1177,31 @@ sub_data* sub_read_file (char *filename, float fps) {
#ifdef USE_ICONV
sub_utf8_prev=sub_utf8;
{
- int l;
+ int l,k;
+ k = -1;
if ((l=strlen(filename))>4){
int k;
char *exts[] = {".utf", ".utf8", ".utf-8" };
for (k=3;--k>=0;)
if (!strcasecmp(filename+(l - strlen(exts[k])), exts[k])){
sub_utf8 = 1;
+ fprintf(stderr,"UTF-8 detected\n");
break;
}
}
+ if (k<0) subcp_open();
}
- if (!(sub_utf8 & 1)) subcp_open();
#endif
sub_num=0;n_max=32;
first=(subtitle *)malloc(n_max*sizeof(subtitle));
- if(!first) return NULL;
+ if(!first){
+#ifdef USE_ICONV
+ subcp_close();
+ sub_utf8=sub_utf8_prev;
+#endif
+ return NULL;
+ }
#ifdef USE_SORTSUB
sub = (subtitle *)malloc(sizeof(subtitle));
@@ -1223,7 +1230,6 @@ sub_data* sub_read_file (char *filename, float fps) {
{
#ifdef USE_ICONV
subcp_close();
- sub_utf8=sub_utf8_prev;
#endif
if ( first ) free(first);
return NULL;