From 360775755401340f7e2b41cdc8d1fc9fd1d16feb Mon Sep 17 00:00:00 2001
From: Přemysl Eric Janouch <p@janouch.name>
Date: Wed, 17 Apr 2024 02:00:10 +0200
Subject: Improve filename passing

c9662f1 forgot about internal helpers.

Moreover, it is annoying to see the -- in shell history
for every single external helper call.
---
 sdn.cpp | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/sdn.cpp b/sdn.cpp
index 48f425c..5a7c14b 100644
--- a/sdn.cpp
+++ b/sdn.cpp
@@ -930,14 +930,16 @@ readfail:
 }
 
 fun run_program (initializer_list<const char *> list, const string &filename) {
+	auto args = (!filename.empty() && filename.front() == '-' ? " -- " : " ")
+		+ shell_escape (filename);
 	if (g.ext_helpers) {
-		// XXX: this doesn't try them all out, though it shouldn't make any
-		// noticeable difference
+		// XXX: this doesn't try them all out,
+		// though it shouldn't make any noticeable difference
 		const char *found = nullptr;
 		for (auto program : list)
 			if ((found = program))
 				break;
-		g.ext_helper = found + (" -- " + shell_escape (filename));
+		g.ext_helper.assign (found).append (args);
 		g.quitting = true;
 		return;
 	}
@@ -953,8 +955,8 @@ fun run_program (initializer_list<const char *> list, const string &filename) {
 		tcsetpgrp (STDOUT_FILENO, getpgid (0));
 
 		for (auto program : list)
-			if (program) execl ("/bin/sh", "/bin/sh", "-c", (string (program)
-				+ " " + shell_escape (filename)).c_str (), NULL);
+			if (program) execl ("/bin/sh", "/bin/sh", "-c",
+				(program + args).c_str (), NULL);
 		_exit (EXIT_FAILURE);
 	default:
 		// ...and make sure of it in the parent as well
-- 
cgit v1.2.3-70-g09d2