using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace SvnVersionHelper { class Program { static void Main(string[] args) { if (args.Count() == 0 || args.Count() > 1) { Console.WriteLine("SvnVersionHelper: invalid arguments (must be path to file)"); return; } string file = args[0]; readfile(file); } static void readfile(string file) { Console.WriteLine("SvnVersionHelper: reading {0}", file); List builder = new List(); #region file reader using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { StreamReader sr = new StreamReader(fs); while (!sr.EndOfStream) { string line = sr.ReadLine(); if (line.ToLower().Contains("private const string Minor = ".ToLower())) { Console.WriteLine("########## found ########## Minor ###########"); Console.WriteLine("{0} (transformed to) ",line); string line2 = line.Replace("private const string Minor = ", "").Trim().Replace(";", ""); //Console.WriteLine(line2); string[] shifts = line2.Split('|'); List shift_ors = new List(); int final_value = 0; foreach (string shift in shifts) { int shift_value = 0; string t_shift = shift.Trim(); //Console.Write("shift: {0} = ", t_shift); if (t_shift.Contains("<<")) { string[] shift_registers = t_shift.Split(new string[] { "<<" }, StringSplitOptions.RemoveEmptyEntries); //foreach (string shift_register in shift_registers) //{ // string t_shift_reg = shift_register.Trim(); // Console.WriteLine(" shift reg: {0}", t_shift_reg); //} int shift_t1 = Convert.ToInt32(shift_registers[0].Trim()); int shift_t2 = Convert.ToInt32(shift_registers[1].Trim()); shift_value = shift_t1 << shift_t2; } else { shift_value = Convert.ToInt32(t_shift); } //Console.Write(shift_value); //Console.WriteLine(); shift_ors.Add(shift_value); } foreach (int shift_or in shift_ors) { final_value = final_value | shift_or; } //Console.Write("{0} = ",line2); //Console.Write(final_value); //Console.WriteLine(); string replace = string.Format("\"{0}\"", final_value.ToString()); Console.WriteLine("{0}", line.Replace(line2,replace)); line = line.Replace(line2, replace); } builder.Add(line); } sr.Close(); } #endregion using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.Read)) { StreamWriter sw = new StreamWriter(fs); sw.AutoFlush = true; foreach (string t in builder) { sw.WriteLine(t); } sw.Close(); } } } }