| 45 | } |
| 46 | |
| 47 | unsigned int CalculateDataCRC(const char* path, int offset, int size) |
| 48 | { |
| 49 | // reject files not inside current directory |
| 50 | if (!IsRelativePath(path)) |
| 51 | { |
| 52 | return 0; |
| 53 | } |
| 54 | QIFStreamB in; |
| 55 | in.AutoOpen(path); |
| 56 | if (in.fail()) |
| 57 | { |
| 58 | return 0; |
| 59 | } |
| 60 | int endCheck = offset + size; |
| 61 | saturate(offset, 0, in.rest()); |
| 62 | saturate(endCheck, offset, in.rest()); |
| 63 | |
| 64 | Poseidon::Foundation::CRCCalculator crc; |
| 65 | crc.Reset(); |
| 66 | crc.Add(in.act() + offset, endCheck - offset); |
| 67 | return crc.GetResult(); |
| 68 | } |
no test coverage detected