/* -*-c-*-
*
- * $Id: main.c,v 1.1 2002/01/25 19:34:45 mdw Exp $
+ * $Id: main.c,v 1.3 2002/02/02 19:21:53 mdw Exp $
*
* Main program
*
/*----- Revision history --------------------------------------------------*
*
* $Log: main.c,v $
+ * Revision 1.3 2002/02/02 19:21:53 mdw
+ * New audio subsystem.
+ *
+ * Revision 1.2 2002/01/30 09:27:55 mdw
+ * Parse tracing options on the command-line.
+ *
* Revision 1.1 2002/01/25 19:34:45 mdw
* Initial revision
*
/*----- Header files ------------------------------------------------------*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <mLib/report.h>
#include <mLib/trace.h>
+#include "au.h"
#include "err.h"
+#include "jog.h"
#include "rxglue.h"
#include "txport.h"
#include "tx-serial-unix.h"
static void tidy(void)
{
txsu_shutdown();
+ au_shutdown();
}
static void sigtidy(int sig)
static void usage(FILE *fp)
{
- pquis(fp, "Usage: $ [-t TRANSPORT] [-f FILE] [-c CONFIG] SCRIPT [ARG]\n");
+ pquis(fp, "\
+Usage: $ [-t TRANSPORT] [-f FILE] [-c CONFIG] [-a AUDIR] [-x SIZE]\n\
+ SCRIPT ARG...\n\
+");
}
static void version(FILE *fp)
-t, --transport=NAME Use transport type NAME.\n\
-f, --tx-file=FILE Communicate using the named FILE.\n\
-c, --tx-config=CONFIG Use CONFIG as transport configuration.\n\
+\n\
+-a, --audio=DIR Set directory containing audio samples.\n\
+-x, --cache-max=SIZE Maximum size for audio sample cache.\n\
",
fp);
}
unsigned f = 0;
int rc = 0;
int i;
+ const char *audir = 0;
+ size_t aumax = AU_CACHEMAX;
#define f_bogus 1u
err_init();
rx_init();
- trace_on(stderr, 0u);
+ T( trace_on(stderr, 0u); )
if ((txname = getenv("JOGTX")) != 0)
;
else
{ "txfile", OPTF_ARGREQ, 0, 'f' },
{ "file", OPTF_ARGREQ, 0, 'f' },
+ /* --- Audio configuration stuff --- */
+
+ { "audio-directory",
+ OPTF_ARGREQ, 0, 'a' },
+ { "audio-cache-max",
+ OPTF_ARGREQ, 0, 'x' },
+ { "cache-max",
+ OPTF_ARGREQ, 0, 'x' },
+
+ /* --- Debugging stuff --- */
+
+#ifndef NTRACE
+ { "trace", OPTF_ARGREQ, 0, 'T' },
+#endif
+
/* --- End marker --- */
{ 0, 0, 0, 0 }
};
- i = mdwopt(argc, argv, "hvut:c:f:", opt, 0, 0, 0);
+#ifndef NTRACE
+ static const trace_opt tropt[] = {
+ { 'x', T_TX, "transport layer" },
+ { 's', T_TXSYS, "low-level transport" },
+ { 'a', T_AU, "audio subsystem" },
+ { 'y', T_AUSYS, "system-specific audio" },
+ { 'A', T_ALL, "all of the above" },
+ { 0, 0, 0 }
+ };
+#endif
+
+ i = mdwopt(argc, argv, "hvu" "t:c:f:" "a:x:" T("T:"), opt, 0, 0, 0);
if (i < 0)
break;
txfile = optarg;
break;
+ /* --- Audio configuration stuff --- */
+
+ case 'a':
+ audir = optarg;
+ break;
+ case 'x':
+ aumax = strtoul(optarg, 0, 0);
+ break;
+
+ /* --- Tracing --- */
+
+#ifndef NTRACE
+ case 'T':
+ trace_level(traceopt(tropt, optarg, tracing(), 0));
+ break;
+#endif
+
/* --- Errors --- */
default:
}
}
- if ((f & f_bogus) || (optind != argc - 1 && optind != argc - 2)) {
+ if ((f & f_bogus) || optind > argc - 1) {
usage(stderr);
exit(EXIT_FAILURE);
}
+ au_init(audir, aumax);
rc = rx_runfile(argv[optind],
argc - optind - 1, (const char *const *)argv + optind + 1);
return (rc ? EXIT_FAILURE : 0);