Как я должен использовать boost / interprocess / file_lock со сложными путями Win32 - PullRequest
0 голосов
/ 25 января 2019

В PIVX (разветвленный из биткойн-кода) есть следующий код

static boost::interprocess::file_lock lock(pathLockFile.string().c_str());

в bool AppInit2 () в файле src \ init.cpp.

Если программа работает в Windows,path может содержать разные символы Unicode (из разных кодовых страниц), и pathLockFile.wstring () предоставит правильную строку, но pathLockFile.string () будет содержать неправильный путь, если есть хотя бы 2 символа из разных кодовых страниц.

Какой минимальный патч можно предложить, чтобы избежать проблем с путями Unicode?

Обновление:

  • GetShortPathNameW не является хорошим решением, поскольку путь к результатам также может содержать символы Unicode
  • Добавить интерфейс wchar_t для boost не просто, потому что я планировал, что мой патч будет применен только к проекту PIVX
  • Может быть, я могу установить в текущем каталоге каталог данных PIVX и указать только имя файлак классу file_lock, но это довольно сложно - проект PIVX является многопоточным
...