diff loadtools/bpunify.c @ 895:850b4f066d75

fc-buzplay: unified play command
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 03 Apr 2022 08:30:35 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loadtools/bpunify.c	Sun Apr 03 08:30:35 2022 +0000
@@ -0,0 +1,65 @@
+/*
+ * fc-buzplay: this module implements the unified 'play' command.
+ */
+
+#include <sys/types.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <stdlib.h>
+
+set_bu_volume(vol)
+	unsigned vol;
+{
+	char *targv[3], argbuf[16];
+
+	sprintf(argbuf, "%u", vol - 1);
+	targv[0] = "buzlev";
+	targv[1] = argbuf;
+	targv[2] = 0;
+	tpinterf_make_cmd(targv);
+	if (tpinterf_send_cmd() < 0)
+		return(-1);
+	return tpinterf_pass_output(1);
+}
+
+cmd_play(argc, argv)
+	char **argv;
+{
+	char *filename, *tail;
+	int pwt_mode, rc;
+	unsigned global_vol;
+
+	filename = argv[1];
+	tail = rindex(filename, '.');
+	if (!tail) {
+unknown:	fprintf(stderr,
+		"unable to intuit format of %s, use play-bu or play-pwt\n",
+			filename);
+		return(-1);
+	}
+	if (!strcmp(tail, ".buz"))
+		pwt_mode = 0;
+	else if (!strcmp(tail, ".pwt"))
+		pwt_mode = 1;
+	else
+		goto unknown;
+	if (argv[2]) {
+		global_vol = strtoul(argv[2], 0, 0);
+		if (global_vol < 1 || global_vol > 64) {
+			fprintf(stderr,
+				"error: invalid global volume argument\n");
+			return(-1);
+		}
+	} else
+		global_vol = 64;
+	if (pwt_mode)
+		return buzplay_pwt_file(filename, global_vol);
+	else {
+		rc = set_bu_volume(global_vol);
+		if (rc)
+			return(rc);
+		return buzplay_bu_file(filename);
+	}
+}