58 lines
1.1 KiB
C++
58 lines
1.1 KiB
C++
// basic file operations
|
|
#include <iostream>
|
|
#include <fstream>
|
|
|
|
using namespace std;
|
|
|
|
int main ()
|
|
{
|
|
fstream fl;
|
|
fl.open("./sink_test.wav", ios::in|ios::binary);
|
|
if (!fl.is_open()) {
|
|
cout << "cannot open file " << endl;
|
|
exit(1);
|
|
}
|
|
auto begin = fl.tellp();
|
|
fl.seekp(0, ios::end);
|
|
auto end = fl.tellp();
|
|
fl.seekp(68, ios::beg);
|
|
unsigned char ch = 0;
|
|
auto prev = fl.tellp();
|
|
while(fl.tellp() < end && ch == 0)
|
|
{
|
|
prev = fl.tellp();
|
|
ch = fl.get();
|
|
}
|
|
unsigned char curr = 0;
|
|
bool first = true;
|
|
fl.seekp(prev);
|
|
while(fl.tellp() < end)
|
|
{
|
|
if (!first) {
|
|
ch = fl.get();
|
|
if (ch != (uint8_t)curr) break;
|
|
}
|
|
ch = fl.get();
|
|
if (ch != (uint8_t)(curr+1)) break;
|
|
ch = fl.get();
|
|
if (ch != (uint8_t)(curr+2)) break;
|
|
ch = fl.get();
|
|
if (ch != (uint8_t)curr) break;
|
|
ch = fl.get();
|
|
if (ch != (uint8_t)(curr+1)) break;
|
|
ch = fl.get();
|
|
if (ch != (uint8_t)(curr+2)) break;
|
|
curr += 3;
|
|
first = false;
|
|
}
|
|
int rc = 0;
|
|
if (fl.tellp() != end)
|
|
{
|
|
cout << "error at position: " << fl.tellp() << endl;
|
|
rc = 1;
|
|
}
|
|
else cout << "ok" << endl;
|
|
fl.close();
|
|
return rc;
|
|
}
|