diff options
author | Russ Meyerriecks <rmeyerreicks@digium.com> | 2012-09-21 17:25:48 +0000 |
---|---|---|
committer | Russ Meyerriecks <rmeyerreicks@digium.com> | 2012-09-21 17:25:48 +0000 |
commit | 96a9ac4772a0585473fd113284605edcf5d21535 (patch) | |
tree | f160b9b3fd437874fdaf3d04ad55a6e75feb9158 | |
parent | 1ad3caa70d06dfb0530d820a5b979496281f1913 (diff) |
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.asterisk.org/svn/dahdi/tools/trunk@10717 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r-- | dahdi_monitor.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/dahdi_monitor.c b/dahdi_monitor.c index e61b610..79f46dd 100644 --- a/dahdi_monitor.c +++ b/dahdi_monitor.c @@ -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]; |