static bool CheckMagicOne(Stream stream, SimpleMagicRecord rec, int offset) { stream.Position = rec.Offset + offset; string key = rec.Key; int len = rec.Length; if (len == -1) { len = key.Length; } for (int i = 0; i < len; i++) { int n = stream.ReadByte(); if (n == -1) { return(false); } if (n != key[i]) { return(false); } } if (rec.ExtraCheck != null) { stream.Position = rec.Offset + offset; return(rec.ExtraCheck(stream)); } else { return(true); } }
static FileIDResult Test_Simple(IdentifyJob job, FileIDType type, SimpleMagicRecord magic) { var ret = new FileIDResult(type); if (CheckMagic(job.Stream, magic)) { return(new FileIDResult(type, 100)); } else { return(new FileIDResult()); } }
static bool CheckMagic(Stream stream, SimpleMagicRecord rec, params int[] offsets) { return(CheckMagic(stream, new SimpleMagicRecord[] { rec }, offsets)); }