mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-06 15:14:59 -06:00
63 lines
1.1 KiB
C++
Executable File
63 lines
1.1 KiB
C++
Executable File
// Common/ListFileUtils.cpp
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "ListFileUtils.h"
|
|
#include "StdInStream.h"
|
|
#include "StringConvert.h"
|
|
#include "UTFConvert.h"
|
|
|
|
static const char kQuoteChar = '\"';
|
|
static void RemoveQuote(UString &s)
|
|
{
|
|
if (s.Length() >= 2)
|
|
if (s[0] == kQuoteChar && s[s.Length() - 1] == kQuoteChar)
|
|
s = s.Mid(1, s.Length() - 2);
|
|
}
|
|
|
|
bool ReadNamesFromListFile(LPCTSTR fileName, UStringVector &resultStrings, UINT codePage)
|
|
{
|
|
CStdInStream file;
|
|
if (!file.Open(fileName))
|
|
return false;
|
|
|
|
AString s;
|
|
file.ReadToString(s);
|
|
UString u;
|
|
#ifdef CP_UTF8
|
|
if (codePage == CP_UTF8)
|
|
{
|
|
if (!ConvertUTF8ToUnicode(s, u))
|
|
return false;
|
|
}
|
|
else
|
|
#endif
|
|
u = MultiByteToUnicodeString(s, codePage);
|
|
if (!u.IsEmpty())
|
|
{
|
|
if (u[0] == 0xFEFF)
|
|
u.Delete(0);
|
|
}
|
|
|
|
UString t;
|
|
for(int i = 0; i < u.Length(); i++)
|
|
{
|
|
wchar_t c = u[i];
|
|
if (c == L'\n')
|
|
{
|
|
t.Trim();
|
|
RemoveQuote(t);
|
|
if (!t.IsEmpty())
|
|
resultStrings.Add(t);
|
|
t.Empty();
|
|
}
|
|
else
|
|
t += c;
|
|
}
|
|
t.Trim();
|
|
RemoveQuote(t);
|
|
if (!t.IsEmpty())
|
|
resultStrings.Add(t);
|
|
return true;
|
|
}
|