-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"Open console" with custom command seems to pass %DIR argument wrongly #4802
Comments
Okay So, I looked into "open console" code so the issue here is:
As you can see this in code below: if (!command.isEmpty()) {
command = command.replaceAll("\\s+", " "); // normalize white spaces
String[] subcommands = command.split(" ");
// replace the placeholder if used
String commandLoggingText = command.replace("%DIR", absolutePath);
JabRefGUI.getMainFrame().output(Localization.lang("Executing command \"%0\"...", commandLoggingText));
LOGGER.info("Executing command \"" + commandLoggingText + "\"...");
try {
new ProcessBuilder(subcommands).start();
} catch (IOException exception) { Here variable 'commandLoggingText' is getting used only for logging purpose not for executing.
|
I'll work on this issue whenever I get time. |
@deepakkumar96 Thanks, the code explains the issue well. My suggestion would be to do the %DIR replacement directly after whitespace normalization, before anything is "split" towards logging or execution. |
…command was passing wrong argument
…n the NullPointer exception (#4797) * Add an option in preference settings to set what action to be taken by JabRef when user clicks 'open folder' on a entry. * Fix #4763 and add added required changes in CHANGELOG.md and JabRef_en.properties * Refactor and Reformat code. * Fix issue #4802, where option 'open terminal here' with custom command was passing wrong argument * Fix failure of LocalizationConsistencyTest after code changes.
Fixed by 3d770b8 |
I can confirm, this successfully solved the issue. Good work again! |
JabRef 5.0-dev, JabRef--master--latest.jar from 2019.03.23
System details: Arch Linux, i3 window manager, no desktop environment. Java version:
When using a custom command for "open terminal" the %DIR argument seems to be passed wrongly to the executed command. I've tested this with the following two configurations for the "Execute command" field for "Open console" in the settings, with details stated below:
A) "terminator --working-directory=%DIR"
B) "thunar %DIR"
A) is fault tolerant, hence also opens if the argument passed after the option is invalid. As a result, the terminal window is opened in the home directory, which is default with Terminator on my system. The interesting thing is that JabRef logs the correct commands to the logs:
When executing this command that JabRef logs outside JabRef in another terminal it correctly opens Terminator at the specified location.
B) is purely for debugging, as Thunar is not fault tolerant here. Thunar reports this error in a UI popup:
"/path/to/jabref-master-latest-directory/" in the directory where the nightly build of JabRef (JabRef--master--latest.jar) is located. The funny detail is that JabRef logs the correct command here too:
Hence, the log of JabRef differs from what Thunar seems to get as an argument from JabRef. If the logged command is executed outside JabRef. it again correctly opens Thunar at the specified location. Seems that something causes the log to be different from what actually is passed to the specified external program.
Steps to reproduce the behavior:
The text was updated successfully, but these errors were encountered: