From: Kevin M. Rosenberg Date: Tue, 21 Jan 2003 11:45:38 +0000 (+0000) Subject: r3833: *** empty log message *** X-Git-Tag: v0.8.1~44 X-Git-Url: http://git.kpe.io/?p=wdq2wav.git;a=commitdiff_plain;h=074ede98db9c520d4437dd5efcf2a9f64e8efe84 r3833: *** empty log message *** --- diff --git a/wdq2wav.cpp b/wdq2wav.cpp index e307f00..f9c5ef8 100644 --- a/wdq2wav.cpp +++ b/wdq2wav.cpp @@ -8,7 +8,7 @@ ** ** Copyright (c) 2003 Kevin Rosenberg ** -** $Id: wdq2wav.cpp,v 1.10 2003/01/21 11:23:09 kevin Exp $ +** $Id: wdq2wav.cpp,v 1.11 2003/01/21 11:45:38 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -26,7 +26,7 @@ #include -const char* g_szIdStr = "$Id: wdq2wav.cpp,v 1.10 2003/01/21 11:23:09 kevin Exp $"; +const char* g_szIdStr = "$Id: wdq2wav.cpp,v 1.11 2003/01/21 11:45:38 kevin Exp $"; bool g_quiet = false; bool g_verbose = false; @@ -98,6 +98,8 @@ main (int argc, char *argv[]) int c; bool play = false; + const char* progname = argv[0]; + while ((c = getopt (argc, argv, "rqvdph")) != -1) { switch (c) { case 'r': @@ -116,11 +118,11 @@ main (int argc, char *argv[]) play = true; break; case 'h': - usage (argv[0]); + usage (progname); return (0); case '?': default: - usage(argv[0]); + usage (progname); return (1); } } @@ -128,13 +130,13 @@ main (int argc, char *argv[]) argv += optind; if (argc > 3) { std::cerr << "Too many parameters\n"; - usage (argv[0]); + usage (progname); return (1); } char wdq_fname[MAX_INPUT_STR]; if (argc >= 1) - strncpy (wdq_fname, argv [1], MAX_INPUT_STR); + strncpy (wdq_fname, argv [0], MAX_INPUT_STR); else { std::cout << "Enter input WinDAQ filename: "; std::cin.getline (wdq_fname, MAX_INPUT_STR); @@ -142,7 +144,7 @@ main (int argc, char *argv[]) char channel_buf [MAX_INPUT_STR]; if (argc >= 2) - strncpy (channel_buf, argv[2], MAX_INPUT_STR); + strncpy (channel_buf, argv[1], MAX_INPUT_STR); else { std::cout << "Enter channel number: "; std::cin.getline (channel_buf, MAX_INPUT_STR); @@ -154,13 +156,13 @@ main (int argc, char *argv[]) std::ostringstream os; os << "Error: Channel " << channel_buf << " is not an integer"; error_msg (os.str().c_str()); - usage (argv[0]); + usage (progname); return (1); } char wav_fname[MAX_INPUT_STR]; if (argc >= 3) - strncpy (wav_fname, argv[3], MAX_INPUT_STR); + strncpy (wav_fname, argv[2], MAX_INPUT_STR); else { std::cout << "Enter output wav filename: "; std::cin.getline (wav_fname, MAX_INPUT_STR); @@ -276,7 +278,9 @@ bool read_int2 (int fd, unsigned short int& n) tmp2 = tmp1; if (read (fd, &tmp1, 1) != 1) return false; + n = tmp2 + (tmp1 * 256); + return true; } bool read_int4 (int fd, unsigned int& n) @@ -288,7 +292,9 @@ bool read_int4 (int fd, unsigned int& n) tmp4 = tmp2; if (! read_int2 (fd, tmp2)) return false; + n = tmp4 + (tmp2 * 65536); + return true; } bool @@ -359,8 +365,8 @@ WindaqChannel::WindaqChannel (WindaqFile& wdq, const int channel) { if (wdq.m_valid) { if (channel >= 1 && channel <= wdq.m_nChannels) { - m_valid = true; - read_channel_data(); + if (read_channel_data()) + m_valid = true; } else { std::ostringstream os; os << "Channel " << channel << " is invalid, valid range 1-" << @@ -382,7 +388,7 @@ bool get_float8 (int fd, double& f) if (read (fd, &buf, 8) != 8) return false; -#ifdef BIG_ENDIAN +#if WORDS_BIG_ENDIAN unsigned char c; c = buf[0]; buf[0] = buf[7]; buf[7] = c; c = buf[1]; buf[1] = buf[6]; buf[6] = c; @@ -390,8 +396,9 @@ bool get_float8 (int fd, double& f) c = buf[3]; buf[3] = buf[4]; buf[4] = c; #endif - double* p = reinterpret_cast(buf); - f = *p; + f = *(reinterpret_cast(buf)); + + return true; } bool @@ -399,13 +406,9 @@ WindaqChannel::read_channel_data () { unsigned short int tmp2; unsigned int tmp4; - double float8; int fd = r_wdq.m_fd; - if (! m_valid) - return false; - m_data = new signed short int [r_wdq.m_nSamples * 2]; lseek (fd, r_wdq.m_channel_offset + 8 + @@ -414,7 +417,7 @@ WindaqChannel::read_channel_data () if (! get_float8 (fd, m_slope)) return false; - if (get_float8 (fd, m_intercept)) + if (! get_float8 (fd, m_intercept)) return false; char units[7]; @@ -442,7 +445,7 @@ WindaqChannel::read_channel_data () } signed short int v = *psample; -#ifdef BIG_ENDIAN +#if WORDS_BIG_ENDIAN unsigned char* p = reinterpret_cast(&v); unsigned char c = p[0]; p[0] = p[1]; p[1] = c; #endif @@ -513,7 +516,7 @@ WavFile::WavFile (WindaqChannel& wdq_channel, const char* fname) value = (value + data_offset) * data_scale; value += 0.5 - 32768; signed short int v = static_cast(value); -#ifdef BIG_ENDIAN +#if WORDS_BIG_ENDIAN unsigned char* p = reinterpret_cast(&v); unsigned char c = p[0]; p[0] = p[1]; p[1] = c; #endif