static DateTime last_time, first_time;
//
- // Encoding: ISO-Latin1 is 28591
+ // Encoding.
//
static Encoding encoding;
- //
- // Whether the user has specified a different encoder manually
- //
- static bool using_default_encoder = true;
-
-
static public void Reset ()
{
want_debugging_support = false;
defines = null;
output_file = null;
encoding = null;
- using_default_encoder = true;
first_source = null;
}
}
using (input){
- SeekableStreamReader reader = new SeekableStreamReader (input, encoding, using_default_encoder);
+ SeekableStreamReader reader = new SeekableStreamReader (input, encoding);
Tokenizer lexer = new Tokenizer (reader, file, defines);
int token, tokens = 0, errors = 0;
return;
}
- SeekableStreamReader reader = new SeekableStreamReader (input, encoding, using_default_encoder);
+ SeekableStreamReader reader = new SeekableStreamReader (input, encoding);
parser = new CSharpParser (reader, file, defines);
parser.ErrorOutput = Report.Stderr;
return true;
case "/codepage":
- int cp = -1;
-
- if (value == "utf8"){
+ switch (value) {
+ case "utf8":
encoding = new UTF8Encoding();
- using_default_encoder = false;
- return true;
- }
- if (value == "reset"){
- //
- // 28591 is the code page for ISO-8859-1 encoding.
- //
- cp = 28591;
- using_default_encoder = true;
- }
-
- try {
- cp = Int32.Parse (value);
- encoding = Encoding.GetEncoding (cp);
- using_default_encoder = false;
- } catch {
- Report.Error (2016, "Code page `{0}' is invalid or not installed", value);
+ break;
+ case "reset":
+ encoding = Encoding.Default;
+ break;
+ default:
+ try {
+ encoding = Encoding.GetEncoding (
+ Int32.Parse (value));
+ } catch {
+ Report.Error (2016, "Code page `{0}' is invalid or not installed", value);
+ }
+ break;
}
return true;
}
int i;
bool parsing_options = true;
- try {
- encoding = Encoding.GetEncoding (28591);
- } catch {
- Console.WriteLine ("Error: could not load encoding 28591, trying 1252");
- encoding = Encoding.GetEncoding (1252);
- }
-
+ encoding = Encoding.Default;
+
references = new ArrayList ();
soft_references = new ArrayList ();
modules = new ArrayList ();
// Let the StreamWriter autodetect the encoder
reader.Peek ();
- reader.BaseStream.Position = 0;
Encoding enc = reader.CurrentEncoding;
- // First of all, get at least a char
-
- byte[] auxb = new byte [50];
- int num_bytes = 0;
- int num_chars = 0;
- int br = 0;
- do {
- br = reader.BaseStream.Read (auxb, num_bytes, auxb.Length - num_bytes);
- num_bytes += br;
- num_chars = enc.GetCharCount (auxb, 0, num_bytes);
- }
- while (num_chars == 0 && br > 0);
-
- if (num_chars != 0)
- {
- // Now, check which bytes at the beginning have no effect in the
- // char count
-
- int p = 0;
- while (enc.GetCharCount (auxb, p, num_bytes-p) >= num_chars)
- p++;
-
- preamble_size = p - 1;
- reader.BaseStream.Position = 0;
- reader.DiscardBufferedData ();
-
- buffer_start = preamble_size;
- }
+ preamble_size = (int) reader.BaseStream.Position;
}
- public SeekableStreamReader (Stream stream, Encoding encoding, bool detect_encoding_from_bytemarks)
- : this (new StreamReader (stream, encoding, detect_encoding_from_bytemarks))
+ public SeekableStreamReader (Stream stream, Encoding encoding)
+ : this (new StreamReader (stream, encoding, true))
{ }
StreamReader reader;