- fread(buffer, 1, 4, sbihandle);
- while (!feof(sbihandle)) {
- fread(sbitime, 1, 3, sbihandle);
- fread(buffer, 1, 11, sbihandle);
+ if (fread(buffer, 1, 4, sbihandle) != 4)
+ goto fail_io;
+
+ while (1) {
+ s = fread(sbitime, 1, 3, sbihandle);
+ if (s != 3)
+ goto fail_io;
+ if (fread(&t, sizeof(t), 1, sbihandle) != sizeof(t))
+ goto fail_io;
+ switch (t) {
+ default:
+ case 1:
+ s = 10;
+ break;
+ case 2:
+ case 3:
+ s = 3;
+ break;
+ }
+ fseek(sbihandle, s, SEEK_CUR);