private long removePadding(string filename, byte padVal, long minSize)
{
//remove all padding
bool isPadVal = true;
byte[] padData = new byte[(int)_pakFormat.ZlibBlockPad];
long pos;
long ret;
int read;
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite))
{
while (isPadVal && fs.Length > _pakFormat.ZlibBlockPad && (minSize == 0 || fs.Length > minSize))
{
if (fs.Length - _pakFormat.ZlibBlockPad < minSize)
fs.Seek(minSize, SeekOrigin.Begin);
else
fs.Seek(fs.Length - _pakFormat.ZlibBlockPad, SeekOrigin.Begin);
pos = fs.Position;
read = fs.Read(padData, 0, padData.Length);
int i;
for (i = 0; i < read; i++)
{
if (!(isPadVal = (padData[read - (i + 1)] == padVal)))
break;
}
if (i != 0)
fs.SetLength(pos + (long)(read - i));
if (i != read)
break;
}
ret = fs.Length;
}
return ret;
}