diff options
author | Martin Rehak <ligi@tekkirk.org> | 2019-08-27 16:23:27 +0200 |
---|---|---|
committer | Gaute Hope <eg@gaute.vetsj.com> | 2019-09-04 08:50:21 +0200 |
commit | 9e19f15e37e2d87145809416f85858d1b6cb0e91 (patch) | |
tree | 57e82376b501b09804865f226bec4e1e654b1e7e | |
parent | 582cd35feaa4f3489a57b77896a20ab456a75a4e (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.cc | 8 | ||||
-rw-r--r-- | src/config.hh | 1 | ||||
-rw-r--r-- | src/modes/thread_view/page_client.cc | 8 | ||||
-rw-r--r-- | src/modes/thread_view/webextension/tvextension.cc | 4 |
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 (); |