X-Git-Url: http://git.megacz.com/?p=org.ibex.xt-crawshaw.git;a=blobdiff_plain;f=src%2Fjava%2Forg%2Fibex%2Fxt%2Fshell%2FShell.java;fp=src%2Fjava%2Forg%2Fibex%2Fxt%2Fshell%2FShell.java;h=17a2f575a3a83997f06d24139c51054102607021;hp=746479ed20b534ef9fff876bc8f1994415ea66fe;hb=6430dcd3c8bf58a04a370614e375a74f5f2dce8b;hpb=fc9f528e7acb1baf7c145b22dd0b6469968aaec0 diff --git a/src/java/org/ibex/xt/shell/Shell.java b/src/java/org/ibex/xt/shell/Shell.java index 746479e..17a2f57 100644 --- a/src/java/org/ibex/xt/shell/Shell.java +++ b/src/java/org/ibex/xt/shell/Shell.java @@ -36,6 +36,7 @@ public class Shell extends Env { new Command.Pwd(), new Command.Cd(), new Command.Rm(), + new Command.Set(), new Command.Help() }; } @@ -50,16 +51,35 @@ public class Shell extends Env { String line; String buffer = ""; + int countBraceOpen = 0, countBraceClose = 0; + int countBracketOpen = 0, countBracketClose = 0; + int countSQBracketOpen = 0, countSQBracketClose = 0; while ((line = in.readLine()) != null) { if (line.length() > 0) { if (line.startsWith("exit")) return; - if (line.charAt(line.length() - 1) == '\\') { - buffer += line.substring(0, line.length() - 1); - out.print('>'); - out.flush(); continue; + + for (int i=0; i < line.length(); i++) { + switch (line.charAt(i)) { + case '{': countBraceOpen++; break; + case '}': countBraceClose++; break; + case '(': countBracketOpen++; break; + case ')': countBracketClose++; break; + case '[': countSQBracketOpen++; break; + case ']': countSQBracketClose++; break; + } } + boolean nonendchar = line.charAt(line.length() - 1) == '\\'; + if (nonendchar) line = line.substring(0, line.length() - 1); buffer += line; + + if (nonendchar || + countBracketOpen != countBracketClose || + countBraceOpen != countBraceClose || + countSQBracketOpen != countSQBracketClose) { + out.print('>'); + out.flush(); continue; + } } if (buffer.length() > 0) {