private void procPart(BakedVolumes_PartValues p, bool salvageSkip, string part, int parn) { var file = Path.Combine(p.Path, p.Name); Console.WriteLine($"[Open Baked Volume: {file}]"); ulong offset = 0; var io = new BinaryReader(File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)); var ios = io.BaseStream; var buffer = new byte[512]; while (true) { var r = ios.Read(buffer, 0, buffer.Length); if (r < 512) { Console.WriteLine("[EOF]"); return; } offset += 512; RunOffset += 512; if (SkipBlocks > 0) { SkipBlocks--; continue; } var header = new TarHeader(buffer, parn, offset, RunOffset); if (!header.Valid) { continue; } var size = header.Size; SkipBlocks = size / 512; if (size % 512 != 0) { SkipBlocks++; } //Console.WriteLine($"Header: {header.ToString()}"); //Console.WriteLine($"Skip: {SkipBlocks}\n"); checkFile(header, part, offset - 512, RunOffset - 512, SkipBlocks); } }
private bool checkPart(BakedVolumes_PartValues p) { var file = Path.Combine(p.Path, p.Name); return(File.Exists(file)); }