Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXhmikosR <xhmikosr@users.sourceforge.net>2010-04-09 18:12:59 +0400
committerXhmikosR <xhmikosr@users.sourceforge.net>2010-04-09 18:12:59 +0400
commitefbc9d9043ff8ff92716ddd00a5f61412d535593 (patch)
tree8f3e621f756cf1f5b4d64d97964c7e7abd8aaf08 /src/subtitles/GFN.cpp
parentdf6b139a6d9027156f614b68687e039e3a5854db (diff)
revert r1783
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@1785 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/subtitles/GFN.cpp')
-rw-r--r--src/subtitles/GFN.cpp268
1 files changed, 132 insertions, 136 deletions
diff --git a/src/subtitles/GFN.cpp b/src/subtitles/GFN.cpp
index beabb8d95..d42f51de4 100644
--- a/src/subtitles/GFN.cpp
+++ b/src/subtitles/GFN.cpp
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (C) 2003-2006 Gabest
* http://www.gabest.org
*
@@ -6,15 +6,15 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
- *
+ *
* This Program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with GNU Make; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
* http://www.gnu.org/copyleft/gpl.html
*
*/
@@ -24,154 +24,150 @@
#include "TextFile.h"
#include "GFN.h"
-TCHAR* exttypestr[] =
+TCHAR* exttypestr[] =
{
- _T("srt"), _T("sub"), _T("smi"), _T("psb"),
- _T("ssa"), _T("ass"), _T("idx"), _T("usf"),
- _T("xss"), _T("txt"), _T("ssf"), _T("rt")
+ _T("srt"), _T("sub"), _T("smi"), _T("psb"),
+ _T("ssa"), _T("ass"), _T("idx"), _T("usf"),
+ _T("xss"), _T("txt"), _T("ssf"), _T("rt")
};
-static TCHAR* ext[2][countof(exttypestr)] =
+static TCHAR* ext[2][countof(exttypestr)] =
{
- {
- _T(".srt"), _T(".sub"), _T(".smi"), _T(".psb"),
- _T(".ssa"), _T(".ass"), _T(".idx"), _T(".usf"),
- _T(".xss"), _T(".txt"), _T(".ssf"), _T(".rt")
- },
- {
- _T(".*.srt"), _T(".*.sub"), _T(".*.smi"), _T(".*.psb"),
- _T(".*.ssa"), _T(".*.ass"), _T(".*.dummyidx"), _T(".*.usf"),
- _T(".*.xss"), _T(".*.txt"), _T(".*.ssf"), _T(".*.rt")
- },
+ {
+ _T(".srt"), _T(".sub"), _T(".smi"), _T(".psb"),
+ _T(".ssa"), _T(".ass"), _T(".idx"), _T(".usf"),
+ _T(".xss"), _T(".txt"), _T(".ssf"), _T(".rt")
+ },
+ {
+ _T(".*.srt"), _T(".*.sub"), _T(".*.smi"), _T(".*.psb"),
+ _T(".*.ssa"), _T(".*.ass"), _T(".*.dummyidx"), _T(".*.usf"),
+ _T(".*.xss"), _T(".*.txt"), _T(".*.ssf"), _T(".*.rt")
+ },
};
#define WEBSUBEXT _T(".wse")
static int SubFileCompare(const void* elem1, const void* elem2)
{
- return(((SubFile*)elem1)->fn.CompareNoCase(((SubFile*)elem2)->fn));
+ return(((SubFile*)elem1)->fn.CompareNoCase(((SubFile*)elem2)->fn));
}
void GetSubFileNames(CString fn, CAtlArray<CString>& paths, CAtlArray<SubFile>& ret)
{
- ret.RemoveAll();
+ ret.RemoveAll();
- int extlistnum = countof(ext);
- int extsubnum = countof(ext[0]);
+ int extlistnum = countof(ext);
+ int extsubnum = countof(ext[0]);
- fn.Replace('\\', '/');
+ fn.Replace('\\', '/');
- bool fWeb = false;
- {
+ bool fWeb = false;
+ {
// int i = fn.Find(_T("://"));
- int i = fn.Find(_T("http://"));
- if(i > 0)
- {
- fn = _T("http") + fn.Mid(i);
- fWeb = true;
- }
- }
-
- int l = fn.GetLength(), l2 = l;
- l2 = fn.ReverseFind('.');
- l = fn.ReverseFind('/') + 1;
- if(l2 < l) l2 = l;
-
- CString orgpath = fn.Left(l);
- CString title = fn.Mid(l, l2 - l);
- CString filename = title + _T(".nooneexpectsthespanishinquisition");
-
- if(!fWeb)
- {
- // struct _tfinddata_t file, file2;
- // long hFile, hFile2 = 0;
-
- WIN32_FIND_DATA wfd, wfd2;
- HANDLE hFile, hFile2;
-
- for(ptrdiff_t k = 0; k < paths.GetCount(); k++)
- {
- CString path = paths[k];
- path.Replace('\\', '/');
-
- l = path.GetLength();
- if(l > 0 && path[l-1] != '/') path += '/';
-
- if(path.Find(':') == -1 && path.Find(_T("\\\\")) != 0) path = orgpath + path;
-
- path.Replace(_T("/./"), _T("/"));
- path.Replace('/', '\\');
-
- // CAtlList<CString> sl;
-
- bool fEmpty = true;
-
- if((hFile = FindFirstFile(path + title + _T("*"), &wfd)) != INVALID_HANDLE_VALUE)
- {
- do
- {
- if(filename.CompareNoCase(wfd.cFileName) != 0)
- {
- fEmpty = false;
- // sl.AddTail(path + file.name);
- }
- }
- while(FindNextFile(hFile, &wfd));
-
- FindClose(hFile);
- }
-
- // TODO: use 'sl' in the next step to find files (already a nice speedup as it is now...)
- if(fEmpty) continue;
-
- for(ptrdiff_t j = 0; j < extlistnum; j++)
- {
- for(ptrdiff_t i = 0; i < extsubnum; i++)
- {
- if((hFile = FindFirstFile(path + title + ext[j][i], &wfd)) != INVALID_HANDLE_VALUE)
- {
- do
- {
- CString fn = path + wfd.cFileName;
-
- hFile2 = INVALID_HANDLE_VALUE;
-
- if(j == 0 || (hFile2 = FindFirstFile(fn.Left(fn.ReverseFind('.')) + _T(".avi"), &wfd2)) == INVALID_HANDLE_VALUE)
- {
- SubFile f;
- f.fn = fn;
- ret.Add(f);
- }
-
- if(hFile2 != INVALID_HANDLE_VALUE)
- {
- FindClose(hFile2);
- }
- }
- while(FindNextFile(hFile, &wfd));
-
- FindClose(hFile);
- }
- }
- }
- }
- }
- else if(l > 7)
- {
- CWebTextFile wtf; // :)
- if(wtf.Open(orgpath + title + WEBSUBEXT))
- {
- CString fn;
- while(wtf.ReadString(fn) && fn.Find(_T("://")) >= 0)
- {
- SubFile f;
- f.fn = fn;
- ret.Add(f);
- }
- }
- }
-
- // sort files, this way the user can define the order (movie.00.English.srt, movie.01.Hungarian.srt, etc)
-
- qsort(ret.GetData(), ret.GetCount(), sizeof(SubFile), SubFileCompare);
+ int i = fn.Find(_T("http://"));
+ if(i > 0) {fn = _T("http") + fn.Mid(i); fWeb = true;}
+ }
+
+ int l = fn.GetLength(), l2 = l;
+ l2 = fn.ReverseFind('.');
+ l = fn.ReverseFind('/') + 1;
+ if(l2 < l) l2 = l;
+
+ CString orgpath = fn.Left(l);
+ CString title = fn.Mid(l, l2-l);
+ CString filename = title + _T(".nooneexpectsthespanishinquisition");
+
+ if(!fWeb)
+ {
+ // struct _tfinddata_t file, file2;
+ // long hFile, hFile2 = 0;
+
+ WIN32_FIND_DATA wfd, wfd2;
+ HANDLE hFile, hFile2;
+
+ for(ptrdiff_t k = 0; k < paths.GetCount(); k++)
+ {
+ CString path = paths[k];
+ path.Replace('\\', '/');
+
+ l = path.GetLength();
+ if(l > 0 && path[l-1] != '/') path += '/';
+
+ if(path.Find(':') == -1 && path.Find(_T("\\\\")) != 0) path = orgpath + path;
+
+ path.Replace(_T("/./"), _T("/"));
+ path.Replace('/', '\\');
+
+ // CAtlList<CString> sl;
+
+ bool fEmpty = true;
+
+ if((hFile = FindFirstFile(path + title + _T("*"), &wfd)) != INVALID_HANDLE_VALUE)
+ {
+ do
+ {
+ if(filename.CompareNoCase(wfd.cFileName) != 0)
+ {
+ fEmpty = false;
+ // sl.AddTail(path + file.name);
+ }
+ }
+ while(FindNextFile(hFile, &wfd));
+
+ FindClose(hFile);
+ }
+
+ // TODO: use 'sl' in the next step to find files (already a nice speedup as it is now...)
+ if(fEmpty) continue;
+
+ for(ptrdiff_t j = 0; j < extlistnum; j++)
+ {
+ for(ptrdiff_t i = 0; i < extsubnum; i++)
+ {
+ if((hFile = FindFirstFile(path + title + ext[j][i], &wfd)) != INVALID_HANDLE_VALUE)
+ {
+ do
+ {
+ CString fn = path + wfd.cFileName;
+
+ hFile2 = INVALID_HANDLE_VALUE;
+
+ if(j == 0 || (hFile2 = FindFirstFile(fn.Left(fn.ReverseFind('.')) + _T(".avi"), &wfd2)) == INVALID_HANDLE_VALUE)
+ {
+ SubFile f;
+ f.fn = fn;
+ ret.Add(f);
+ }
+
+ if(hFile2 != INVALID_HANDLE_VALUE)
+ {
+ FindClose(hFile2);
+ }
+ }
+ while(FindNextFile(hFile, &wfd));
+
+ FindClose(hFile);
+ }
+ }
+ }
+ }
+ }
+ else if(l > 7)
+ {
+ CWebTextFile wtf; // :)
+ if(wtf.Open(orgpath + title + WEBSUBEXT))
+ {
+ CString fn;
+ while(wtf.ReadString(fn) && fn.Find(_T("://")) >= 0)
+ {
+ SubFile f;
+ f.fn = fn;
+ ret.Add(f);
+ }
+ }
+ }
+
+ // sort files, this way the user can define the order (movie.00.English.srt, movie.01.Hungarian.srt, etc)
+
+ qsort(ret.GetData(), ret.GetCount(), sizeof(SubFile), SubFileCompare);
}