// Main.cs created with MonoDevelop // User: aberlanas at 8:05 06/11/2009 // // To change standard headers go to Edit->Preferences->Coding->Standard Headers // using System; using Gtk; using System.IO; using System.Collections; using Mono.Unix; namespace lliurex { namespace imagewriter { class MainClass { //private static GettextResourceManager _catalog = new GettextResourceManager ("lliurex-image-writer"); //public static System.Resources.ResourceManager _catalog = new System.Resources.ResourceManager(typeof(String)); public static string defaultDevice = ""; public static System.Collections.Generic.Dictionary deviceDictionary ; public static void Main (string[] args) { Mono.Unix.Catalog.Init("lliurex-image-writer","/usr/share/locale"); string srcimage=""; // Bogus value (Debug and test value) bool bogus=false; if (args.Length>0) { srcimage=args[0]; if(args.Length>1) { //destdevice=args[1]; if(args[1]=="bogus") bogus=true; } } Application.Init (); MainWindow win = new MainWindow (srcimage,bogus); win.Show (); Application.Run (); } public static bool testImageFile(string path_to_image) { if(path_to_image==null)return false; FileInfo sourceInfo = new FileInfo(path_to_image); Console.WriteLine(sourceInfo.Extension.ToString()); if (sourceInfo.Extension.Equals(".dsk")) { defaultDevice="Floppy"; } else { defaultDevice="USB"; } return true; } public static System.Collections.Generic.Dictionary replenishDevices() { // Init dictionary deviceDictionary = new System.Collections.Generic.Dictionary(); DirectoryInfo dir = new DirectoryInfo("/dev/disk/by-path/"); DirectoryInfo dirLabel = new DirectoryInfo("/dev/disk/by-id/"); DirectoryInfo dirFloppy = new DirectoryInfo("/dev/"); FileInfo[] devFiles = dir.GetFiles(); FileInfo[] labelDevFiles = dirLabel.GetFiles(); FileInfo[] floppyFiles = dirFloppy.GetFiles("fd*"); foreach(FileInfo fd in floppyFiles) { System.Text.RegularExpressions.Regex fdrule = new System.Text.RegularExpressions.Regex("^fd(?[0-9])$"); if(fdrule.IsMatch(fd.Name)) { System.Text.RegularExpressions.Match m = fdrule.Match(fd.Name); System.Console.WriteLine(fd.FullName + " Match FD " + m.Groups["number"].Value); int nfd = int.Parse(m.Groups["number"].Value); deviceDictionary.Add(fd.FullName,"Floppy " + (nfd+1)); } } foreach ( FileInfo devFile in devFiles) { if(devFile.Name.Contains("-part")) { } else if(devFile.Name.Contains("-usb-")) { /* * Check if the Device is a Block Device * */ UnixFileInfo unixDevFile = new Mono.Unix.UnixFileInfo(devFile.FullName); if (unixDevFile.IsBlockDevice) { UnixSymbolicLinkInfo auxLinkInfo = new UnixSymbolicLinkInfo(unixDevFile.FullName); Console.WriteLine(auxLinkInfo.GetContents().FullName); foreach (FileInfo auxDevLabel in labelDevFiles) { UnixFileInfo unixDevLabelFile = new Mono.Unix.UnixFileInfo(auxDevLabel.FullName); UnixSymbolicLinkInfo auxLinkInfoLabel = new UnixSymbolicLinkInfo(unixDevLabelFile.FullName); if (auxLinkInfo.GetContents().FullName == auxLinkInfoLabel.GetContents().FullName) { string[] auxVolume = auxDevLabel.FullName.Split('/'); string lastName = auxVolume[auxVolume.Length-1]; auxVolume = lastName.Split('-'); deviceDictionary.Add(auxLinkInfo.GetContents().FullName,auxVolume[1]); break; } } } } } return deviceDictionary; } } } }