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() void ConfParamSLW::listToConf()
{ {
list<string> ls; list<string> ls;
LOGDEB2(("ConfParamSLW::listToConf. m_fsencoding %d\n", int(m_fsencoding)));
for (int i = 0; i < m_lb->count(); i++) { for (int i = 0; i < m_lb->count(); i++) {
// General parameters are encoded as utf-8. File names as // General parameters are encoded as utf-8. File names as
// local8bit There is no hope for 8bit file names anyway // local8bit There is no hope for 8bit file names anyway
// except for luck: the original encoding is unknown. // 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(); 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())); ls.push_back((const char *)(text.toLocal8Bit()));
else #endif
} else {
ls.push_back((const char *)(text.toUtf8())); ls.push_back((const char *)(text.toUtf8()));
}
} }
string s; string s;
stringsToString(ls, s); stringsToString(ls, s);

View File

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

View File

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