예제 #1
0
        private void _updatedb(string dirs)
        {
            string[] adirs = dirs.Split(';');
            Program.db.startTransaction("update");
            int newFiles = 0;

            foreach (string dir in adirs)
            {
                if (!Directory.Exists(dir))
                {
                    Console.WriteLine("Warning: {0} does not exist!", dir);
                }
                else
                {
                    Console.WriteLine("Updating {0}...", dir);
                    FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, dir);
                    string[]         files      = Directory.GetFiles(dir);
                    String           insFile    = null;
                    String           crc        = null;
                    int size = 0;
                    foreach (string file in files)
                    {
                        if (Program.db.findSum(file) == null)
                        {
                            Stream   streamRom = null;
                            ZipEntry curzEntry = null;
                            emuRom   rom       = null;

                            if (file.EndsWith("zip", true, System.Globalization.CultureInfo.CurrentCulture))
                            {
                                try {
                                    ZipFile zFile = new ZipFile(file);
                                    foreach (ZipEntry zEntry in zFile)
                                    {
                                        if (curzEntry == null)
                                        {
                                            curzEntry = zEntry;
                                        }
                                        if (zEntry.Size > curzEntry.Size)
                                        {
                                            curzEntry = zEntry;
                                        }
                                    }
                                    streamRom = zFile.GetInputStream(curzEntry);
                                    size      = (int)curzEntry.Size;
                                    insFile   = curzEntry.Name;
                                    crc       = curzEntry.Crc.ToString("X");
                                } catch (ZipException e) {
                                    Console.WriteLine("Error Opening file {0}, skipping...", file);
                                    streamRom = null;
                                }
                            }
                            else
                            {
                                streamRom = File.OpenRead(file);
                                size      = (int)streamRom.Length;                              //This is technically error prone.
                                insFile   = file;
                                crc       = null;
                            }
                            try {
                                if (streamRom != null)
                                {
                                    rom = new emuRom(streamRom, insFile, size, crc);
                                    if (rom.Hash != null)
                                    {
                                        newFiles++;
                                        Console.WriteLine("File:\t{0}\nHash:\t{1}\nSize:\t{2}\n", file, rom.Hash, size);
                                        Program.db.Write(file, rom.Hash);
                                    }
                                }
                            } catch (ICSharpCode.SharpZipLib.ZipException e) {
                                Console.WriteLine("Zip Exception:\n{0}\nSkipping file...", e);
                            } catch (System.ArgumentException e) {
                                Console.WriteLine("Argument Exception:\n{0}\nSkipping file...", e);
                            }
                        }
                    }
                }
            }
            Program.db.endTransaction("update");
            Console.WriteLine("Finished update. " + newFiles + " new files added to the database.");
        }
예제 #2
0
		private void _updatedb(string dirs) {
			string[] adirs = dirs.Split(';');
			Program.db.startTransaction("update");
			int newFiles = 0;
			foreach (string dir in adirs) {
				if (!Directory.Exists(dir))
					Console.WriteLine("Warning: {0} does not exist!", dir);
				else {
					Console.WriteLine("Updating {0}...", dir);
					FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, dir); 
					string[] files = Directory.GetFiles(dir);
					String insFile=null;
					String crc=null;
					int size=0;
					foreach (string file in files) {
						if (Program.db.findSum(file) == null) {
							Stream streamRom = null;
							ZipEntry curzEntry = null;
							emuRom rom = null;
							
							if (file.EndsWith("zip", true, System.Globalization.CultureInfo.CurrentCulture)) {
								try {
									ZipFile zFile = new ZipFile(file);
									foreach (ZipEntry zEntry in zFile) {
										if (curzEntry == null)
											curzEntry = zEntry;
										if (zEntry.Size > curzEntry.Size)
											curzEntry = zEntry;
									}
									streamRom = zFile.GetInputStream(curzEntry);
									size = (int)curzEntry.Size;
									insFile = curzEntry.Name;
									crc = curzEntry.Crc.ToString("X");
								} catch (ZipException e) {
									Console.WriteLine("Error Opening file {0}, skipping...", file);
									streamRom = null;
								}
							} else {
								streamRom = File.OpenRead(file);
								size = (int)streamRom.Length;	//This is technically error prone.
								insFile = file;
								crc = null;
							}
							try {
								if (streamRom != null) {
									rom = new emuRom(streamRom, insFile, size, crc);
									if (rom.Hash != null) {
										newFiles++;
										Console.WriteLine("File:\t{0}\nHash:\t{1}\nSize:\t{2}\n", file, rom.Hash, size);
										Program.db.Write(file, rom.Hash);
									}
								}
							} catch (ICSharpCode.SharpZipLib.ZipException e) {
								Console.WriteLine("Zip Exception:\n{0}\nSkipping file...", e);
							} catch (System.ArgumentException e) {
								Console.WriteLine("Argument Exception:\n{0}\nSkipping file...", e);
							}

						}
					}
				}
			}
			Program.db.endTransaction("update");
			Console.WriteLine("Finished update. " + newFiles + " new files added to the database.");
		}