stdin parameter of $EXEC

Anthony Vanelverdinghe anthony.vanelverdinghe at gmail.com
Thu Jun 25 18:41:29 UTC 2015


Hi

Looking at the fix for JDK-8080490 ("add $EXECV command to Nashorn 
scripting mode") raised a few questions concerning the stdin parameter 
of $EXEC:

- sample exec.js [1] uses the empty string to denote "no stdin". Why 
wasn't undefined used instead?
- $EXEC("someCmd", null) actually sends "null" to the process. In my 
opinion, null should be treated the same as undefined & not send any 
input to the process.
- the implementation of $EXEC [2] always opens an OutputStreamWriter, 
even when there's no stdin. I think it would be better to move the 
if-statement out of the try-catch, like:

if (input != UNDEFINED && input != NULL) {
     try (OutputStreamWriter outputStream = new 
OutputStreamWriter(process.getOutputStream())) {
         ...
     } catch (final IOException ex) {}
}

What do you think?

[1] 
http://hg.openjdk.java.net/jdk9/dev/nashorn/file/a24cb0bf79bc/samples/exec.js
[2] 
http://hg.openjdk.java.net/jdk9/dev/nashorn/file/a24cb0bf79bc/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptingFunctions.java#l217

Kind regards,
Anthony


More information about the nashorn-dev mailing list