49 /* Since the preprocessor is *called* from ReadChar and I don't want |
49 /* Since the preprocessor is *called* from ReadChar and I don't want |
50 * to worry about recursive preprocessing, the preprocessor uses its |
50 * to worry about recursive preprocessing, the preprocessor uses its |
51 * own bare-bones variant of the function for file reading. |
51 * own bare-bones variant of the function for file reading. |
52 */ |
52 */ |
53 char ScriptReader::PPReadChar () { |
53 char ScriptReader::PPReadChar () { |
54 char* c = (char*)malloc (sizeof (char)); |
54 char c; |
55 if (!fread (c, sizeof (char), 1, fp[fc])) |
55 if (!fread (&c, sizeof (char), 1, fp[fc])) |
56 return 0; |
56 return 0; |
57 curchar[fc]++; |
57 curchar[fc]++; |
58 return c[0]; |
58 return c; |
59 } |
59 } |
60 |
60 |
61 void ScriptReader::PPMustChar (char c) { |
61 void ScriptReader::PPMustChar (char c) { |
62 char d = PPReadChar (); |
62 char d = PPReadChar (); |
63 if (c != d) { |
63 if (c != d) |
64 ParserError ("expected `%c`, got `%d`", c, d); |
64 ParserError ("expected `%c`, got `%d`", c, d); |
65 } |
|
66 } |
65 } |
67 |
66 |
68 // ============================================================================ |
67 // ============================================================================ |
69 // Reads a word until whitespace |
68 // Reads a word until whitespace |
70 str ScriptReader::PPReadWord (char &term) { |
69 str ScriptReader::PPReadWord (char &term) { |