dahdi-monitor: Fix broken control-C behavior and -F output option

After hitting control-C when writing a wav file, dahdi_monitor reports
"Failed to read in a full wav header. Expect bad things."

Also when using the -F output option, the wav header is not written.

Reported-by: Richard Miller
Internal-Issue-ID: DAHTOOL-59
Patch: dahdi_monitor.diff by Richard Miller (license #5685)
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.astersk.org/svn/dahdi/tools/trunk@10717 17933a7a-c749-41c5-a318-cba88f637d49
This commit is contained in:
Russ Meyerriecks 2012-09-21 17:25:48 +00:00
parent 3114b89905
commit 79ed81f9f5

View File

@ -427,6 +427,14 @@ int main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
fprintf(stderr, "Writing pre-echo combined stream to %s\n", optarg);
file_is_wav[MON_PRE_BRX] = filename_is_wav(optarg);
if (file_is_wav[MON_PRE_BRX]) {
wavheader_init(&wavheaders[MON_PRE_BRX], 1);
if (fwrite(&wavheaders[MON_PRE_BRX], 1, sizeof(struct wavheader), ofh[MON_PRE_BRX]) != sizeof(struct wavheader)) {
fprintf(stderr, "Could not write wav header to %s: %s\n", optarg, strerror(errno));
exit(EXIT_FAILURE);
}
}
preecho = 1;
savefile = 1;
break;
@ -763,12 +771,6 @@ int main(int argc, char *argv[])
if (!(file_is_wav[i]))
continue;
rewind(ofh[i]);
if (fread(&wavheaders[i], 1, sizeof(struct wavheader), ofh[i]) != sizeof(struct wavheader)) {
fprintf(stderr, "Failed to read in a full wav header. Expect bad things.\n");
}
wavheaders[i].riff_chunk_size = (bytes_written[i]) + sizeof(struct wavheader) - 8; /* filesize - 8 */
wavheaders[i].data_data_size = bytes_written[i];