fix: store IPC file in application directory (#5226)

This commit is contained in:
nerix
2024-03-03 13:15:50 +01:00
committed by GitHub
parent 3c13e0c6d2
commit 449c5397b7
6 changed files with 66 additions and 0 deletions
+43
View File
@@ -1,7 +1,9 @@
#include "util/IpcQueue.hpp"
#include "common/QLogging.hpp"
#include "singletons/Paths.hpp"
#define BOOST_INTERPROCESS_SHARED_DIR_FUNC
#include <boost/interprocess/ipc/message_queue.hpp>
#include <QByteArray>
#include <QString>
@@ -9,8 +11,49 @@
namespace boost_ipc = boost::interprocess;
namespace {
static const chatterino::Paths *PATHS = nullptr;
} // namespace
namespace boost::interprocess::ipcdetail {
void get_shared_dir(std::string &shared_dir)
{
if (!PATHS)
{
assert(false && "PATHS not set");
qCCritical(chatterinoNativeMessage)
<< "PATHS not set for shared directory";
return;
}
shared_dir = PATHS->ipcDirectory.toStdString();
}
#ifdef BOOST_INTERPROCESS_WINDOWS
void get_shared_dir(std::wstring &shared_dir)
{
if (!PATHS)
{
assert(false && "PATHS not set");
qCCritical(chatterinoNativeMessage)
<< "PATHS not set for shared directory";
return;
}
shared_dir = PATHS->ipcDirectory.toStdWString();
}
#endif
} // namespace boost::interprocess::ipcdetail
namespace chatterino::ipc {
void initPaths(const Paths *paths)
{
PATHS = paths;
}
void sendMessage(const char *name, const QByteArray &data)
{
try