summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Rehak <ligi@tekkirk.org>2019-08-27 16:23:27 +0200
committerGaute Hope <eg@gaute.vetsj.com>2019-09-04 08:50:21 +0200
commit9e19f15e37e2d87145809416f85858d1b6cb0e91 (patch)
tree57e82376b501b09804865f226bec4e1e654b1e7e
parent582cd35feaa4f3489a57b77896a20ab456a75a4e (diff)
FreeBSD and Mac does not provide abstract sockets. This patch modifies
astroid to use standard path sockets placing them in dedicated directory in runtime dir.
-rw-r--r--src/config.cc8
-rw-r--r--src/config.hh1
-rw-r--r--src/modes/thread_view/page_client.cc8
-rw-r--r--src/modes/thread_view/webextension/tvextension.cc4
4 files changed, 19 insertions, 2 deletions
diff --git a/src/config.cc b/src/config.cc
index 0b71440..586df33 100644
--- a/src/config.cc
+++ b/src/config.cc
@@ -100,6 +100,9 @@ namespace Astroid {
std_paths.cache_dir = path(cache) / path("astroid");
}
+ /* socket path */
+ std_paths.socket_dir = std_paths.cache_dir / path("socket");
+
/* default runtime */
char * runtime = getenv ("XDG_RUNTIME_HOME");
if (runtime == NULL) {
@@ -338,6 +341,11 @@ namespace Astroid {
create_directories (std_paths.runtime_dir);
}
+ if (!is_directory(std_paths.socket_dir)) {
+ LOG (warn) << "cf: making socket dir..";
+ create_directories (std_paths.socket_dir);
+ }
+
if (!is_regular_file (std_paths.config_file)) {
if (!initial) {
LOG (warn) << "cf: no config, using defaults.";
diff --git a/src/config.hh b/src/config.hh
index 326a1e0..6c3c5fd 100644
--- a/src/config.hh
+++ b/src/config.hh
@@ -18,6 +18,7 @@ namespace Astroid {
bfs::path data_dir;
bfs::path cache_dir;
bfs::path runtime_dir;
+ bfs::path socket_dir;
bfs::path config_file;
bfs::path searches_file;
bfs::path plugin_dir;
diff --git a/src/modes/thread_view/page_client.cc b/src/modes/thread_view/page_client.cc
index 82c95a5..5e5c63a 100644
--- a/src/modes/thread_view/page_client.cc
+++ b/src/modes/thread_view/page_client.cc
@@ -116,14 +116,18 @@ namespace Astroid {
/* set up unix socket */
LOG (warn) << "pc: id: " << id;
- socket_addr = ustring::compose ("%1/sockets/astroid.%2.%3.%4",
- astroid->standard_paths ().runtime_dir.c_str(),
+ socket_addr = ustring::compose ("%1/astroid.%2.%3.%4",
+ astroid->standard_paths ().socket_dir.c_str(),
getpid(),
id,
UstringUtils::random_alphanumeric (30));
refptr<Gio::UnixSocketAddress> addr = Gio::UnixSocketAddress::create (socket_addr,
+# if defined __FreeBSD__ || defined __APPLE__
+ Gio::UNIX_SOCKET_ADDRESS_PATH);
+# elif
Gio::UNIX_SOCKET_ADDRESS_ABSTRACT);
+# endif
refptr<Gio::SocketAddress> eaddr;
diff --git a/src/modes/thread_view/webextension/tvextension.cc b/src/modes/thread_view/webextension/tvextension.cc
index a4ad154..7078cde 100644
--- a/src/modes/thread_view/webextension/tvextension.cc
+++ b/src/modes/thread_view/webextension/tvextension.cc
@@ -147,7 +147,11 @@ AstroidExtension::AstroidExtension (
const char * caddr = g_variant_get_string ((GVariant *) gaddr, &sz);
refptr<Gio::UnixSocketAddress> addr = Gio::UnixSocketAddress::create (caddr,
+# if defined __FreeBSD__ || defined __APPLE__
+ Gio::UNIX_SOCKET_ADDRESS_PATH);
+# elif
Gio::UNIX_SOCKET_ADDRESS_ABSTRACT);
+# endif
/* connect to socket */
cli = Gio::SocketClient::create ();