return 1;
}
-int wav_read(struct WAV*wav, char* filename)
+int wav_read(struct WAV*wav, const char* filename)
{
FILE*fi = fopen(filename, "rb");
unsigned char b[16];
fclose(fi);
return 0;
}
- if(strncmp(b, "WAVE", 4))
+ if(strncmp((const char*)b, "WAVE", 4))
{
fprintf(stderr, "wav_read: not a WAV file (2)\n");
fclose(fi);
if (!strncmp(block.id, "data", 4))
{
int l;
- wav->data = malloc(block.size);
+ wav->data = (unsigned char*)malloc(block.size);
if(!wav->data)
{
fprintf(stderr, "Out of memory (%d bytes needed)", block.size);
return 0;
}
l = fread(wav->data, 1, block.size, fi);
- if(l < block.size)
- {
- fprintf(stderr, "Error while reading data block of size %d (%d bytes missing)", block.size, block.size-l);
+ if(l<=0) {
+ fprintf(stderr, "Error: Couldn't read WAV data block\n");
fclose(fi);
return 0;
+ } else if(l < block.size)
+ {
+ fprintf(stderr, "Warning: data block of size %d is only %d bytes (%d bytes missing)\n", block.size, l, block.size-l);
+ wav->size = l;
+ } else {
+ wav->size = block.size;
}
- wav->size = block.size;
}
pos+=block.size;
fseek(fi, pos, SEEK_SET);
return 1;
}
-int wav_write(struct WAV*wav, char*filename)
+int wav_write(struct WAV*wav, const char*filename)
{
FILE*fi = fopen(filename, "wb");
char*b="RIFFWAVEfmt \x10\0\0\0data";