windows: GUI index config: convert backslashes in skippedPaths

This commit is contained in:
Jean-Francois Dockes 2015-12-01 17:34:49 +01:00
parent 5ba0be5e58
commit 88e56987d5
3 changed files with 26 additions and 9 deletions

View File

@ -376,15 +376,27 @@ void ConfParamSLW::showInputDialog()
void ConfParamSLW::listToConf()
{
list<string> ls;
LOGDEB2(("ConfParamSLW::listToConf. m_fsencoding %d\n", int(m_fsencoding)));
for (int i = 0; i < m_lb->count(); i++) {
// General parameters are encoded as utf-8. File names as
// local8bit There is no hope for 8bit file names anyway
// except for luck: the original encoding is unknown.
// As a special Windows hack, if fsencoding is set, we convert
// backslashes to slashes. This is an awful hack because
// fsencoding does not necessarily imply that the values are
// paths, and it will come back to haunt us one day.
QString text = m_lb->item(i)->text();
if (m_fsencoding)
if (m_fsencoding) {
#ifdef _WIN32
string pth((const char *)(text.toLocal8Bit()));
path_slashize(pth);
ls.push_back(pth);
#else
ls.push_back((const char *)(text.toLocal8Bit()));
else
#endif
} else {
ls.push_back((const char *)(text.toUtf8()));
}
}
string s;
stringsToString(ls, s);

View File

@ -123,7 +123,7 @@ string path_tchartoutf8(TCHAR *text)
string path_thisexecpath()
{
TCHAR text[MAX_PATH];
DWORD length = GetModuleFileName(NULL, text, MAX_PATH);
GetModuleFileName(NULL, text, MAX_PATH);
#ifdef NTDDI_WIN8_future
PathCchRemoveFileSpec(text, MAX_PATH);
#else
@ -162,9 +162,9 @@ bool fsocc(const string &path, int *pc, long long *avmbs)
return false;
}
if (pc)
*pc = int(100 * double(freebytesavail) / double(totalbytes));
*pc = int((100 * freebytesavail.QuadPart) / totalbytes.QuadPart);
if (avmbs)
*avmbs = totalbytes / FSOCC_MB;
*avmbs = int(totalbytes.QuadPart / FSOCC_MB);
return true;
#else
#ifdef sun
@ -398,7 +398,7 @@ bool TempDir::wipe()
void path_catslash(string &s)
{
#ifdef WIN32
#ifdef _WIN32
path_slashize(s);
#endif
if (s.empty() || s[s.length() - 1] != '/')
@ -416,7 +416,7 @@ string path_cat(const string &s1, const string &s2)
string path_getfather(const string &s)
{
string father = s;
#ifdef WIN32
#ifdef _WIN32
path_slashize(father);
#endif
@ -444,7 +444,7 @@ string path_getfather(const string &s)
string path_getsimple(const string &s)
{
string simple = s;
#ifdef WIN32
#ifdef _WIN32
path_slashize(simple);
#endif
@ -544,7 +544,7 @@ string path_tildexpand(const string &s)
if (s.empty() || s[0] != '~')
return s;
string o = s;
#ifdef WIN32
#ifdef _WIN32
path_slashize(o);
#endif

View File

@ -121,6 +121,11 @@ extern bool path_isroot(const std::string& p);
/// Turn absolute path into file:// url
extern std::string path_pathtofileurl(const std::string& path);
#ifdef _WIN32
/// Convert \ separators to /
void path_slashize(std::string& s);
#endif
/// Temporary file class
class TempFileInternal {
public: