예제 #1
0
파일: CHD.cs 프로젝트: vidarw/RVWorld
        public static int CheckFile(RvFile file, string directory)
        {
            string filename = Path.Combine(directory, file.Name);

            string ext = Path.GetExtension(filename).ToLower();

            if (ext != ".chd")
            {
                return(0);
            }


            if (file.Size < MaxHeader)
            {
                return(0);
            }


            Stream s;
            int    retval = FileStream.OpenFileRead(filename, out s);

            if (retval != 0)
            {
                return(retval);
            }
            if (s == null)
            {
                return(1);
            }

            CheckFile(s, out file.AltSHA1, out file.AltMD5, out file.CHDVersion);


            file.FileStatusSet(
                (file.AltSHA1 != null ? FileStatus.AltSHA1FromHeader : 0) |
                (file.AltMD5 != null ? FileStatus.AltMD5FromHeader : 0)
                );


            s.Close();
            s.Dispose();

            return(0);
        }
예제 #2
0
        public static int CheckFile(FileInfo ofile, out byte[] SHA1CHD, out byte[] MD5CHD, out uint?version)
        {
            SHA1CHD = null;
            MD5CHD  = null;
            version = null;

            string ext = Path.GetExtension(ofile.Name).ToLower();

            if (ext != ".chd")
            {
                return(0);
            }


            if (ofile.Length < MaxHeader)
            {
                return(0);
            }


            Stream s;
            int    retval = FileStream.OpenFileRead(ofile.FullName, out s);

            if (retval != 0)
            {
                return(retval);
            }
            if (s == null)
            {
                return(1);
            }

            CheckFile(s, out SHA1CHD, out MD5CHD, out version);

            s.Close();
            s.Dispose();

            return(0);
        }