From 89659d57921978d85223923a37f9ca4d841e14a8 Mon Sep 17 00:00:00 2001 From: Niclas Finne Date: Thu, 17 Mar 2016 15:37:16 +0100 Subject: [PATCH] Added option to start MSPSim without CLI --- se/sics/mspsim/cli/StreamCommandHandler.java | 24 ++++++++++++++++---- se/sics/mspsim/platform/GenericNode.java | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/se/sics/mspsim/cli/StreamCommandHandler.java b/se/sics/mspsim/cli/StreamCommandHandler.java index 2ee2808..d03660f 100644 --- a/se/sics/mspsim/cli/StreamCommandHandler.java +++ b/se/sics/mspsim/cli/StreamCommandHandler.java @@ -81,9 +81,13 @@ public class StreamCommandHandler extends CommandHandler implements Runnable { private String readLine(BufferedReader inReader2) throws IOException { if (workaround) { StringBuilder str = new StringBuilder(); - while(true) { + while(!exit) { if (inReader2.ready()) { int c = inReader2.read(); + if (c < 0) { + // Input stream closed + return null; + } if (c == '\n') { return str.toString(); } @@ -98,6 +102,7 @@ public class StreamCommandHandler extends CommandHandler implements Runnable { } } } + return null; } else { return inReader2.readLine(); } @@ -109,12 +114,17 @@ public class StreamCommandHandler extends CommandHandler implements Runnable { try { out.print(prompt); out.flush(); - String line = readLine(inReader);//.readLine(); + String line = readLine(inReader); + if (line == null) { + // Input stream closed + exit = true; + break; + } // Simple execution of last called command line when not running from terminal with history support if (((char) 27 + "[A").equals(line)) { - line = lastLine; + line = lastLine; } - if (line != null && line.length() > 0) { + if (line.length() > 0) { lastLine = line; lineRead(line); } @@ -124,6 +134,12 @@ public class StreamCommandHandler extends CommandHandler implements Runnable { exit = true; } } + try { + inReader.close(); + } catch (IOException e) { + err.println("Error closing command line"); + e.printStackTrace(err); + } } } diff --git a/se/sics/mspsim/platform/GenericNode.java b/se/sics/mspsim/platform/GenericNode.java index 1fbf72c..4776a6f 100644 --- a/se/sics/mspsim/platform/GenericNode.java +++ b/se/sics/mspsim/platform/GenericNode.java @@ -217,7 +217,7 @@ public abstract class GenericNode extends Chip implements Runnable { CommandHandler ch = registry.getComponent(CommandHandler.class, "commandHandler"); - if (ch == null) { + if (ch == null && config.getPropertyAsBoolean("cli", true)) { if (config.getPropertyAsBoolean("jconsole", false)) { ConsoleUI console = new ConsoleUI(); PrintStream consoleStream = new PrintStream(console.getOutputStream());