1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
diff -Nru openjdk-boot.orig/jdk/make/tools/src/build/tools/spp/Spp.java openjdk-boot/jdk/make/tools/src/build/tools/spp/Spp.java
--- openjdk-boot.orig/jdk/make/tools/src/build/tools/spp/Spp.java 2008-09-11 08:44:09.000000000 +0100
+++ openjdk-boot/jdk/make/tools/src/build/tools/spp/Spp.java 2008-09-12 21:34:38.000000000 +0100
@@ -25,6 +25,10 @@
package build.tools.spp;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
+
import java.util.*;
import java.util.regex.*;
@@ -83,7 +87,7 @@
}
StringBuffer out = new StringBuffer();
- new Spp().spp(new Scanner(System.in),
+ new Spp().spp(new BufferedReader(new InputStreamReader(System.in)),
out, "",
keys, vars, be,
false);
@@ -104,12 +108,12 @@
Matcher ifkey = Pattern.compile("^#if\\[(!)?" + KEY + "\\]").matcher("");
Matcher elsekey = Pattern.compile("^#else\\[(!)?" + KEY + "\\]").matcher("");
Matcher endkey = Pattern.compile("^#end\\[(!)?" + KEY + "\\]").matcher("");
- Matcher vardef = Pattern.compile("\\{#if\\[(!)?" + KEY + "\\]\\?" + TEXT + "(:"+ TEXT + ")?\\}|\\$" + VAR + "\\$").matcher("");
+ Pattern pvardef = Pattern.compile("\\{#if\\[(!)?" + KEY + "\\]\\?" + TEXT + "(:"+ TEXT + ")?\\}|\\$" + VAR + "\\$");
Matcher vardef2 = Pattern.compile("\\$" + VAR + "\\$").matcher("");
void append(StringBuffer buf, String ln,
Set<String> keys, Map<String, String> vars) {
- vardef.reset(ln);
+ Matcher vardef = pvardef.matcher(ln);
while (vardef.find()) {
String repl = "";
if (vardef.group(GN_VAR) != null)
@@ -133,19 +137,20 @@
}
// return true if #end[key], #end or EOF reached
- boolean spp(Scanner in, StringBuffer buf, String key,
+ boolean spp(BufferedReader in, StringBuffer buf, String key,
Set<String> keys, Map<String, String> vars,
- boolean be, boolean skip) {
- while (in.hasNextLine()) {
- String ln = in.nextLine();
+ boolean be, boolean skip) throws IOException {
+ while (true) {
+ String ln = in.readLine();
+ if (ln == null)
+ break;
if (be) {
if (ln.startsWith("#begin")) {
buf.setLength(0); //clean up to this line
continue;
}
if (ln.equals("#end")) {
- while (in.hasNextLine())
- in.nextLine();
+ do { } while (in.readLine() != null);
return true; //discard the rest to EOF
}
}
|