+ std::cout << msg << "\n";
+}
+
+void
+info_msg_sans_newline (const char* msg)
+{
+ std::cout << msg;
+}
+
+const char*
+fileBasename (const char* filename)
+{
+ const char* p = strrchr (filename, '/');
+ return (p ? p + 1 : filename);
+}
+
+char *
+str_rm_tail (char *str, const char* const charlist)
+{
+ size_t i;
+
+ for (i = strlen(str) - 1; i >= 0; i--)
+ if (strchr (charlist, str[i]) != NULL)
+ str[i] = 0;
+ else
+ break; /* found non-specified char, all done */
+
+ return (str);
+}
+
+char *
+str_wrm_tail (char *str)
+{
+ return (str_rm_tail(str, "\b\t\n\r"));
+}
+
+
+void
+usage (const char* progname)
+{
+ std::cout << "usage: " << fileBasename (progname) << " [OPTIONS] <wdq-file> <channel-number> <wav-file>\n";
+ std::cout << "OPTIONS\n";
+ std::cout << " -p Play channel through audio system\n";
+ std::cout << " -q Supress all messages\n";
+ std::cout << " -z Scale output without preserving zero point\n";
+ std::cout << " -m Do not demean the data (don't subtract the mean value from each sample)\n";
+ std::cout << " -v Verbose mode\n";
+ std::cout << " -d Debug mode\n";
+ std::cout << " -r Print program version\n";
+ std::cout << " -h Print this help message\n";