From 2cf82d78a42fd51a02410d37dbee71d807a18f82 Mon Sep 17 00:00:00 2001 From: aouwt <74026992+aouwt@users.noreply.github.com> Date: Thu, 21 Oct 2021 10:11:34 -0400 Subject: [PATCH 1/2] doing a simpler approach to quoting this time --- internal/support/sh/console.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 internal/support/sh/console.sh diff --git a/internal/support/sh/console.sh b/internal/support/sh/console.sh new file mode 100644 index 000000000..e3d8619db --- /dev/null +++ b/internal/support/sh/console.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# list taken from i3-sensible-terminal(1) +terms="terminal x-terminal-emulator xdg-terminal urxvt rxvt termit terminator Eterm aterm uxterm xterm gnome-terminal roxterm xfce4-terminal termite lxterminal mate-terminal terminology st qterminal lilyterm tilix terminix konsole kitty guake tilda alacritty hyper" + +for term in "$TERM" "$TERMINAL" $terms; do + if [ $(command -v $term) ]; then + useterm=$term + break + fi +done +printf $term From 92e64dea1198da7bab4651899ab6ebabf64b5a55 Mon Sep 17 00:00:00 2001 From: aouwt <74026992+aouwt@users.noreply.github.com> Date: Thu, 21 Oct 2021 10:16:02 -0400 Subject: [PATCH 2/2] oops forgot to commit qb64.bas --- source/qb64.bas | 72 ++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/source/qb64.bas b/source/qb64.bas index 4d99e0e6c..f0da6ae91 100644 --- a/source/qb64.bas +++ b/source/qb64.bas @@ -1063,29 +1063,37 @@ IF C = 9 THEN 'run 'execute program IF iderunmode = 1 THEN - IF os$ = "WIN" THEN SHELL _DONTWAIT QuotedFilename$(CHR$(34) + lastBinaryGenerated$ + CHR$(34)) + ModifyCOMMAND$ - IF path.exe$ = "" THEN path.exe$ = "./" - IF os$ = "LNX" THEN - IF LEFT$(lastBinaryGenerated$, LEN(path.exe$)) = path.exe$ THEN - SHELL _DONTWAIT QuotedFilename$(lastBinaryGenerated$) + ModifyCOMMAND$ - ELSE - SHELL _DONTWAIT QuotedFilename$(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$ - END IF - END IF - IF path.exe$ = "./" THEN path.exe$ = "" - ELSE - IF os$ = "WIN" THEN SHELL QuotedFilename$(CHR$(34) + lastBinaryGenerated$ + CHR$(34)) + ModifyCOMMAND$ - IF path.exe$ = "" THEN path.exe$ = "./" - IF os$ = "LNX" THEN - IF LEFT$(lastBinaryGenerated$, LEN(path.exe$)) = path.exe$ THEN - SHELL QuotedFilename$(lastBinaryGenerated$) + ModifyCOMMAND$ - ELSE - SHELL QuotedFilename$(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$ - END IF - END IF - IF path.exe$ = "./" THEN path.exe$ = "" - DO: LOOP UNTIL INKEY$ = "" - DO: LOOP UNTIL _KEYHIT = 0 + SELECT CASE os$ + CASE "WIN": SHELL _DONTWAIT QuotedFilename$(CHR$(34) + lastBinaryGenerated$ + CHR$(34)) + ModifyCOMMAND$ + + CASE "LNX" + + IF path.exe$ = "" THEN path.exe$ = "./" './ to specify relative paths + + IF LEFT$(lastBinaryGenerated$, LEN(path.exe$)) = path.exe$ THEN + shellcmdline$ = QuotedFilename$(lastBinaryGenerated$) + ModifyCOMMAND$ + ELSE + shellcmdline$ = QuotedFilename$(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$ + END IF + + IF path.exe$ = "./" THEN path.exe$ = "" 'restore it to empty string + + + IF Console THEN + 'launch terminal with program when using $CONSOLE + IF ReadConfigSetting(generalSettingsSection$, "DefaultTerminal", term$) = 0 THEN 'if DefaultTerminal is not in config.ini, then add it + WriteConfigSetting generalSettingsSection$, "DefaultTerminal", "Auto" + term$ = "auto" + END IF + + IF LCASE$(term$) = "auto" THEN term$ = "$(./internal/support/sh/console.sh)" + + SHELL _DONTWAIT term$ + " -e " + shellcmdline$ 'bring up a terminal when using $Console + + 'not using $CONSOLE + ELSE SHELL _DONTWAIT shellcmdline$ + END IF + END SELECT END IF IF idemode THEN @@ -25327,18 +25335,16 @@ FUNCTION N2S$ (exp$) 'scientific Notation to String END FUNCTION -FUNCTION QuotedFilename$ (f$) - - IF os$ = "WIN" THEN - QuotedFilename$ = CHR$(34) + f$ + CHR$(34) - EXIT FUNCTION - END IF - +FUNCTION QuotedFilename$ (filename$) + f$ = filename$ 'because functions pass params BYREF, we dont want to modify filename$ IF os$ = "LNX" THEN - QuotedFilename$ = "'" + f$ + "'" - EXIT FUNCTION + i~% = INSTR(f$, CHR$(34)) 'escape '"' + WHILE i~% + f$ = LEFT$(f$, i~%) + "\" + MID$(f$, i~%) '"' -> '\"' + i~% = INSTR(i~% + 2, f$, CHR$(32)) + WEND END IF - + QuotedFilename$ = CHR$(34) + f$ + CHR$(34) END FUNCTION