git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed segfault
[swftools.git]
/
lib
/
wav.c
diff --git
a/lib/wav.c
b/lib/wav.c
index
86a8bb3
..
5bd30d7
100644
(file)
--- a/
lib/wav.c
+++ b/
lib/wav.c
@@
-46,7
+46,7
@@
int getWAVBlock(FILE*fi, struct WAVBlock*block)
return 1;
}
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];
{
FILE*fi = fopen(filename, "rb");
unsigned char b[16];
@@
-74,16
+74,14
@@
int wav_read(struct WAV*wav, char* filename)
return 0;
}
if(block.size + 8 < filesize)
return 0;
}
if(block.size + 8 < filesize)
- fprintf(stderr, "wav_read: warning - more tags (%d extra bytes)\n",
- filesize - block.size - 8);
+ fprintf(stderr, "wav_read: warning - more tags (%lu extra bytes)\n", filesize - block.size - 8);
if(block.size == filesize)
/* some buggy software doesn't generate the right tag length */
block.size = filesize - 8;
if(block.size + 8 > filesize)
if(block.size == filesize)
/* some buggy software doesn't generate the right tag length */
block.size = filesize - 8;
if(block.size + 8 > filesize)
- fprintf(stderr, "wav_read: warning - short file (%d bytes missing)\n",
- block.size + 8 - filesize);
+ fprintf(stderr, "wav_read: warning - short file (%lu bytes missing)\n", block.size + 8 - filesize);
if(fread(b, 1, 4, fi) < 4)
{
fclose(fi);
if(fread(b, 1, 4, fi) < 4)
{
fclose(fi);
@@
-131,13
+129,17
@@
int wav_read(struct WAV*wav, char* filename)
return 0;
}
l = fread(wav->data, 1, block.size, fi);
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;
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);
}
pos+=block.size;
fseek(fi, pos, SEEK_SET);
@@
-147,7
+149,7
@@
int wav_read(struct WAV*wav, char* filename)
return 1;
}
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";
{
FILE*fi = fopen(filename, "wb");
char*b="RIFFWAVEfmt \x10\0\0\0data";
@@
-194,7
+196,7
@@
int wav_write(struct WAV*wav, char*filename)
void wav_print(struct WAV*wav)
{
void wav_print(struct WAV*wav)
{
- printf("tag:%04x channels:%d samples/sec:%d bytes/sec:%d align:%d bits/sample:%d size:%d\n",
+ printf("tag:%04x channels:%d samples/sec:%lu bytes/sec:%lu align:%d bits/sample:%d size:%d\n",
wav->tag, wav->channels, wav->sampsPerSec, wav->bytesPerSec,
wav->align, wav->bps, wav->size);
}
wav->tag, wav->channels, wav->sampsPerSec, wav->bytesPerSec,
wav->align, wav->bps, wav->size);
}