aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/by-name/ts/tskm/src/browser/mod.rs32
1 files changed, 28 insertions, 4 deletions
diff --git a/pkgs/by-name/ts/tskm/src/browser/mod.rs b/pkgs/by-name/ts/tskm/src/browser/mod.rs
index 29abfcbd..d83bcbc4 100644
--- a/pkgs/by-name/ts/tskm/src/browser/mod.rs
+++ b/pkgs/by-name/ts/tskm/src/browser/mod.rs
@@ -1,5 +1,5 @@
use std::{
- env,
+ env, fs,
io::Write,
os::unix::net::UnixStream,
path::PathBuf,
@@ -101,9 +101,33 @@ pub fn open_in_browser(
)
}));
- if ipc_socket_path.exists() {
- let mut stream = UnixStream::connect(ipc_socket_path)?;
+ let socket = if ipc_socket_path.exists() {
+ match UnixStream::connect(&ipc_socket_path) {
+ Ok(ok) => Some(ok),
+ Err(err) => match err.kind() {
+ std::io::ErrorKind::ConnectionRefused => {
+ // There is no qutebrowser listening to our connection.
+ fs::remove_file(&ipc_socket_path).with_context(|| {
+ format!(
+ "Failed to remove orphaned qutebrowser socket: {}",
+ ipc_socket_path.display()
+ )
+ })?;
+ None
+ }
+ _ => Err(err).with_context(|| {
+ format!(
+ "Failed to connect to qutebrowser's ipc socket at: {}",
+ ipc_socket_path.display()
+ )
+ })?,
+ },
+ }
+ } else {
+ None
+ };
+ if let Some(mut stream) = socket {
let real_url = if let Some(urls) = urls {
urls.into_iter().map(|url| url.to_string()).collect()
} else {
@@ -129,7 +153,7 @@ pub fn open_in_browser(
ExitStatus::default()
} else {
let args = if let Some(urls) = urls {
- urls.iter().map(|url| url.to_string()).collect()
+ urls.iter().map(ToString::to_string).collect()
} else {
vec![]
};