single-instance: fix `cwd` in single instance on macOS (#2609)

* single-instance: fix `cwd` in single instance on macOS

which was the `cwd` of the first instance, instead of the second how it should be and is  on windows and linux.

also add rustfmt.toml to enforce the correct formatting (4 spaces for indent)

* use split_once

* remove rustfmt

* fix indentation

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
pull/2644/head
Simon Laux 2 months ago committed by GitHub
parent ff384cbabe
commit dc84f8d8bb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,5 @@
---
single-instance: patch
---
fix `cwd` in single instance on macOS, which was the cwd of the first instance, instead of the second (like it is on windows and linux)

@ -77,6 +77,13 @@ fn socket_cleanup(socket: &PathBuf) {
fn notify_singleton(socket: &PathBuf) -> Result<(), Error> {
let stream = UnixStream::connect(socket)?;
let mut bf = BufWriter::new(&stream);
let cwd = std::env::current_dir()
.unwrap_or_default()
.to_str()
.unwrap_or_default()
.to_string();
bf.write_all(cwd.as_bytes())?;
bf.write_all(b"\0\0")?;
let args_joined = std::env::args().collect::<Vec<String>>().join("\0");
bf.write_all(args_joined.as_bytes())?;
bf.flush()?;
@ -91,12 +98,6 @@ fn listen_for_other_instances<A: Runtime>(
) {
match UnixListener::bind(socket) {
Ok(listener) => {
let cwd = std::env::current_dir()
.unwrap_or_default()
.to_str()
.unwrap_or_default()
.to_string();
tauri::async_runtime::spawn(async move {
for stream in listener.incoming() {
match stream {
@ -104,9 +105,10 @@ fn listen_for_other_instances<A: Runtime>(
let mut s = String::new();
match stream.read_to_string(&mut s) {
Ok(_) => {
let (cwd, args) = s.split_once("\0\0").unwrap_or_default();
let args: Vec<String> =
s.split('\0').map(String::from).collect();
cb(app.app_handle(), args, cwd.clone());
args.split('\0').map(String::from).collect();
cb(app.app_handle(), args, cwd.to_string());
}
Err(e) => {
tracing::debug!("single_instance failed to be notified: {e}")

Loading…
Cancel
Save