diff --git a/BurnOutSharp/FileType/BFPK.cs b/BurnOutSharp/FileType/BFPK.cs
index 2a5b581e..41666c92 100644
--- a/BurnOutSharp/FileType/BFPK.cs
+++ b/BurnOutSharp/FileType/BFPK.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// BFPK custom archive format
///
- public class BFPK : IScannable
+ public class BFPK : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/BZip2.cs b/BurnOutSharp/FileType/BZip2.cs
index 3319c75b..1c42000d 100644
--- a/BurnOutSharp/FileType/BZip2.cs
+++ b/BurnOutSharp/FileType/BZip2.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using SharpCompress.Compressors;
using SharpCompress.Compressors.BZip2;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// bzip2 archive
///
- public class BZip2 : IScannable
+ public class BZip2 : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/CFB.cs b/BurnOutSharp/FileType/CFB.cs
index c44ff9a5..44388725 100644
--- a/BurnOutSharp/FileType/CFB.cs
+++ b/BurnOutSharp/FileType/CFB.cs
@@ -3,6 +3,7 @@ using System.Collections.Concurrent;
using System.IO;
using System.Text;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using OpenMcdf;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// Compound File Binary
///
- public class CFB : IScannable
+ public class CFB : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/GCF.cs b/BurnOutSharp/FileType/GCF.cs
index 279e251a..14bfdbca 100644
--- a/BurnOutSharp/FileType/GCF.cs
+++ b/BurnOutSharp/FileType/GCF.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// Half-Life Game Cache File
///
- public class GCF : IScannable
+ public class GCF : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/GZIP.cs b/BurnOutSharp/FileType/GZIP.cs
index 46165440..43b5cef1 100644
--- a/BurnOutSharp/FileType/GZIP.cs
+++ b/BurnOutSharp/FileType/GZIP.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using SharpCompress.Archives;
using SharpCompress.Archives.GZip;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// gzip archive
///
- public class GZIP : IScannable
+ public class GZIP : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/InstallShieldArchiveV3.cs b/BurnOutSharp/FileType/InstallShieldArchiveV3.cs
index 6fc94458..fc4a3d2f 100644
--- a/BurnOutSharp/FileType/InstallShieldArchiveV3.cs
+++ b/BurnOutSharp/FileType/InstallShieldArchiveV3.cs
@@ -2,8 +2,8 @@
using System.Collections.Concurrent;
using System.IO;
using System.Linq;
-using System.Text.RegularExpressions;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using UnshieldSharp.Archive;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -12,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// InstallShield archive v3
///
- public class InstallShieldArchiveV3 : IScannable
+ public class InstallShieldArchiveV3 : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/InstallShieldCAB.cs b/BurnOutSharp/FileType/InstallShieldCAB.cs
index 0206dc4c..04249cd2 100644
--- a/BurnOutSharp/FileType/InstallShieldCAB.cs
+++ b/BurnOutSharp/FileType/InstallShieldCAB.cs
@@ -3,6 +3,7 @@ using System.Collections.Concurrent;
using System.IO;
using System.Text.RegularExpressions;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using UnshieldSharp.Cabinet;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// InstallShield cabinet file
///
- public class InstallShieldCAB : IScannable
+ public class InstallShieldCAB : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/MPQ.cs b/BurnOutSharp/FileType/MPQ.cs
index 64e3e330..4c625f00 100644
--- a/BurnOutSharp/FileType/MPQ.cs
+++ b/BurnOutSharp/FileType/MPQ.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
#if NET48
using StormLibSharp;
#endif
@@ -12,8 +13,27 @@ namespace BurnOutSharp.FileType
///
/// MoPaQ game data archive
///
- public class MPQ : IScannable
+ public class MPQ : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/MicrosoftCAB.cs b/BurnOutSharp/FileType/MicrosoftCAB.cs
index 8c916880..5dc50b40 100644
--- a/BurnOutSharp/FileType/MicrosoftCAB.cs
+++ b/BurnOutSharp/FileType/MicrosoftCAB.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using BinaryObjectScanner.Wrappers;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -12,8 +13,27 @@ namespace BurnOutSharp.FileType
///
/// Specification available at
///
- public class MicrosoftCAB : IScannable
+ public class MicrosoftCAB : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/MicrosoftLZ.cs b/BurnOutSharp/FileType/MicrosoftLZ.cs
index c8f6f455..1e5b18df 100644
--- a/BurnOutSharp/FileType/MicrosoftLZ.cs
+++ b/BurnOutSharp/FileType/MicrosoftLZ.cs
@@ -3,6 +3,7 @@ using System.Collections.Concurrent;
using System.IO;
using BinaryObjectScanner.Compression;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
/// Microsoft LZ-compressed Files (LZ32)
///
/// This is treated like an archive type due to the packing style
- public class MicrosoftLZ : IScannable
+ public class MicrosoftLZ : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/PAK.cs b/BurnOutSharp/FileType/PAK.cs
index 49600c55..f5e4040e 100644
--- a/BurnOutSharp/FileType/PAK.cs
+++ b/BurnOutSharp/FileType/PAK.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// Half-Life Package File
///
- public class PAK : IScannable
+ public class PAK : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/PFF.cs b/BurnOutSharp/FileType/PFF.cs
index 3bf40a06..31d80fea 100644
--- a/BurnOutSharp/FileType/PFF.cs
+++ b/BurnOutSharp/FileType/PFF.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// NovaLogic Game Archive Format
///
- public class PFF : IScannable
+ public class PFF : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/PKZIP.cs b/BurnOutSharp/FileType/PKZIP.cs
index 9d5e7006..b4137f93 100644
--- a/BurnOutSharp/FileType/PKZIP.cs
+++ b/BurnOutSharp/FileType/PKZIP.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using SharpCompress.Archives;
using SharpCompress.Archives.Zip;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// PKWARE ZIP archive and derivatives
///
- public class PKZIP : IScannable
+ public class PKZIP : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/RAR.cs b/BurnOutSharp/FileType/RAR.cs
index 007aef3f..9eb203e0 100644
--- a/BurnOutSharp/FileType/RAR.cs
+++ b/BurnOutSharp/FileType/RAR.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using SharpCompress.Archives;
using SharpCompress.Archives.Rar;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// RAR archive
///
- public class RAR : IScannable
+ public class RAR : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/SFFS.cs b/BurnOutSharp/FileType/SFFS.cs
index 7165ed4f..d05b6c65 100644
--- a/BurnOutSharp/FileType/SFFS.cs
+++ b/BurnOutSharp/FileType/SFFS.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -10,8 +11,27 @@ namespace BurnOutSharp.FileType
/// StarForce Filesystem file
///
///
- public class SFFS : IScannable
+ public class SFFS : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/SGA.cs b/BurnOutSharp/FileType/SGA.cs
index 34fdf63e..c92cb6ba 100644
--- a/BurnOutSharp/FileType/SGA.cs
+++ b/BurnOutSharp/FileType/SGA.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// SGA game archive
///
- public class SGA : IScannable
+ public class SGA : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/SevenZip.cs b/BurnOutSharp/FileType/SevenZip.cs
index bac786b3..0455a1d3 100644
--- a/BurnOutSharp/FileType/SevenZip.cs
+++ b/BurnOutSharp/FileType/SevenZip.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using SharpCompress.Archives;
using SharpCompress.Archives.SevenZip;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// 7-zip archive
///
- public class SevenZip : IScannable
+ public class SevenZip : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/TapeArchive.cs b/BurnOutSharp/FileType/TapeArchive.cs
index 9faeb4d9..dbd312db 100644
--- a/BurnOutSharp/FileType/TapeArchive.cs
+++ b/BurnOutSharp/FileType/TapeArchive.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using SharpCompress.Archives;
using SharpCompress.Archives.Tar;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -11,8 +12,27 @@ namespace BurnOutSharp.FileType
///
/// Tape archive
///
- public class TapeArchive : IScannable
+ public class TapeArchive : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/VBSP.cs b/BurnOutSharp/FileType/VBSP.cs
index 289c2da2..9e76c43f 100644
--- a/BurnOutSharp/FileType/VBSP.cs
+++ b/BurnOutSharp/FileType/VBSP.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// Half-Life 2 Level
///
- public class VBSP : IScannable
+ public class VBSP : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/VPK.cs b/BurnOutSharp/FileType/VPK.cs
index e0ea0763..6071a909 100644
--- a/BurnOutSharp/FileType/VPK.cs
+++ b/BurnOutSharp/FileType/VPK.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// Valve Package File
///
- public class VPK : IScannable
+ public class VPK : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/WAD.cs b/BurnOutSharp/FileType/WAD.cs
index b33b9f71..e147b207 100644
--- a/BurnOutSharp/FileType/WAD.cs
+++ b/BurnOutSharp/FileType/WAD.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// Half-Life Texture Package File
///
- public class WAD : IScannable
+ public class WAD : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/XZ.cs b/BurnOutSharp/FileType/XZ.cs
index f16bf968..aad94596 100644
--- a/BurnOutSharp/FileType/XZ.cs
+++ b/BurnOutSharp/FileType/XZ.cs
@@ -2,6 +2,7 @@
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using SharpCompress.Compressors.Xz;
using static BinaryObjectScanner.Utilities.Dictionary;
@@ -10,8 +11,27 @@ namespace BurnOutSharp.FileType
///
/// xz archive
///
- public class XZ : IScannable
+ public class XZ : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{
diff --git a/BurnOutSharp/FileType/XZP.cs b/BurnOutSharp/FileType/XZP.cs
index 69c5a7f5..3852d5d3 100644
--- a/BurnOutSharp/FileType/XZP.cs
+++ b/BurnOutSharp/FileType/XZP.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Concurrent;
using System.IO;
using BurnOutSharp.Interfaces;
+using BinaryObjectScanner.Interfaces;
using static BinaryObjectScanner.Utilities.Dictionary;
namespace BurnOutSharp.FileType
@@ -9,8 +10,27 @@ namespace BurnOutSharp.FileType
///
/// XBox Package File
///
- public class XZP : IScannable
+ public class XZP : IExtractable, IScannable
{
+ ///
+ public string Extract(string file)
+ {
+ if (!File.Exists(file))
+ return null;
+
+ using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ return Extract(fs, file);
+ }
+ }
+
+ ///
+ public string Extract(Stream stream, string file)
+ {
+ // Implement from existing Scan
+ return null;
+ }
+
///
public ConcurrentDictionary> Scan(Scanner scanner, string file)
{