FreeCalypso > hg > freecalypso-tools
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); + } +}