Skip to content

Commit 85046f3

Browse files
committed
Adjustment
1 parent 9bc86e6 commit 85046f3

File tree

3 files changed

+19
-22
lines changed

3 files changed

+19
-22
lines changed

Class/MarkerFinder.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,18 @@ public interface IMarkerFinder
1010

1111
public class MarkerFinder : IMarkerFinder
1212
{
13-
private const string MsciMarker = "4D-53-43-49"; // "MSCI" marker
13+
private const int MsciMarkerSize = 4;
14+
private const int MsciMarker = 0x4943534D; // "MSCI" marker Little Endian
1415

1516
public long FindMarker(FileStream fileStream)
1617
{
1718
byte[] markerBytes = new byte[4];
18-
while (fileStream.Read(markerBytes, 0, 4) == 4)
19+
while (fileStream.Read(markerBytes, 0, MsciMarkerSize) == 4)
1920
{
20-
string hexValue = BitConverter.ToString(markerBytes);
21-
if (hexValue == MsciMarker)
21+
if (BitConverter.ToInt32(markerBytes, 0) == MsciMarker)
2222
{
23-
return fileStream.Position - 4;
23+
fileStream.Seek(-MsciMarkerSize, SeekOrigin.Current);
24+
return fileStream.Position;
2425
}
2526
fileStream.Seek(-2, SeekOrigin.Current);
2627
}

Class/TapeHeaderValidator.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,16 @@ public interface ITapeHeaderValidator
1010

1111
public class TapeHeaderValidator : ITapeHeaderValidator
1212
{
13-
private const string TapeHeaderStart = "54-41-50-45"; // Start of tape header "TAPE"
14-
13+
private const int TapeHeaderSize = 4;
14+
private const int TapeHeaderStart = 0x45504154; // Start of tape header "TAPE" Little Endian
1515
public bool Validate(FileStream fileStream)
1616
{
17-
byte[] tapeHeaderStartBytes = new byte[4];
18-
fileStream.Read(tapeHeaderStartBytes, 0, 4);
19-
string hexValue = BitConverter.ToString(tapeHeaderStartBytes);
20-
return hexValue == TapeHeaderStart;
17+
byte[] tapeHeaderStartBytes = new byte[TapeHeaderSize];
18+
19+
if (fileStream.Read(tapeHeaderStartBytes, 0, TapeHeaderSize) != TapeHeaderSize)
20+
return false; // Not enough data in the file
21+
22+
return BitConverter.ToInt32(tapeHeaderStartBytes, 0) == TapeHeaderStart;
2123
}
2224
}
2325
}

Class/VersionDeterminer.cs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,18 @@ namespace SQLBakVersion.Class
55
{
66
public interface IVersionDeterminer
77
{
8-
string DetermineVersion(FileStream fileStream, long versionOffset);
8+
string DetermineVersion(FileStream fileStream, long MSCIOffset);
99
}
1010

1111
public class VersionDeterminer : IVersionDeterminer
1212
{
13-
private const int BytesPerSet = 16; // Number of bytes in each set
14-
private const int ByteToRetrieve = 13; // Byte number to retrieve in the 11th set
1513

16-
public string DetermineVersion(FileStream fileStream, long versionOffset)
14+
public string DetermineVersion(FileStream fileStream, long MSCIOffset)
1715
{
18-
const int setsToSkip = 10; // Number of sets to skip
19-
long totalBytesToSkip = BytesPerSet * setsToSkip;
20-
totalBytesToSkip += versionOffset; // Adjust for marker offset
21-
22-
fileStream.Seek(totalBytesToSkip, SeekOrigin.Begin);
23-
fileStream.Seek(ByteToRetrieve - 1, SeekOrigin.Current); // Seek to the byte position
24-
16+
long versionOffset = MSCIOffset + 172;
2517
byte[] versionBytes = new byte[2];
18+
19+
fileStream.Seek(versionOffset, SeekOrigin.Begin);
2620
fileStream.Read(versionBytes, 0, 2);
2721
Int16 dbVersion = BitConverter.ToInt16(versionBytes, 0);
2822

0 commit comments

Comments
 (0)