Module Name: src Committed By: mrg Date: Mon Mar 4 06:29:35 UTC 2024
Modified Files: src/usr.bin/audio/play: audioplay.1 play.c Log Message: audioplay: add -n flag that doesn't write audio data. this will be used in an upcoming testsuite for the wav parser. To generate a diff of this commit: cvs rdiff -u -r1.33 -r1.34 src/usr.bin/audio/play/audioplay.1 cvs rdiff -u -r1.63 -r1.64 src/usr.bin/audio/play/play.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/audio/play/audioplay.1 diff -u src/usr.bin/audio/play/audioplay.1:1.33 src/usr.bin/audio/play/audioplay.1:1.34 --- src/usr.bin/audio/play/audioplay.1:1.33 Sun Feb 4 05:43:07 2024 +++ src/usr.bin/audio/play/audioplay.1 Mon Mar 4 06:29:35 2024 @@ -1,6 +1,6 @@ -.\" $NetBSD: audioplay.1,v 1.33 2024/02/04 05:43:07 mrg Exp $ +.\" $NetBSD: audioplay.1,v 1.34 2024/03/04 06:29:35 mrg Exp $ .\" -.\" Copyright (c) 1998, 1999, 2002, 2010, 2019 Matthew R. Green +.\" Copyright (c) 1998, 1999, 2002, 2010, 2019, 2024 Matthew R. Green .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 10, 2020 +.Dd March 3, 2024 .Dt AUDIOPLAY 1 .Os .Sh NAME @@ -32,7 +32,7 @@ .Nd play audio files .Sh SYNOPSIS .Nm -.Op Fl hiqV +.Op Fl hinqV .Op Fl B Ar buffersize .Op Fl b Ar balance .Op Fl d Ar device @@ -118,6 +118,8 @@ sample rate. Print a help message. .It Fl i If the audio device cannot be opened, exit now rather than wait for it. +.It Fl n +Do not write audio data, only parse files for sanity. .It Fl P When combined with the .Fl f Index: src/usr.bin/audio/play/play.c diff -u src/usr.bin/audio/play/play.c:1.63 src/usr.bin/audio/play/play.c:1.64 --- src/usr.bin/audio/play/play.c:1.63 Sat Apr 15 16:54:39 2023 +++ src/usr.bin/audio/play/play.c Mon Mar 4 06:29:35 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: play.c,v 1.63 2023/04/15 16:54:39 mlelstv Exp $ */ +/* $NetBSD: play.c,v 1.64 2024/03/04 06:29:35 mrg Exp $ */ /* * Copyright (c) 1999, 2000, 2001, 2002, 2010, 2015, 2019, 2021 Matthew R. Green @@ -28,7 +28,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: play.c,v 1.63 2023/04/15 16:54:39 mlelstv Exp $"); +__RCSID("$NetBSD: play.c,v 1.64 2024/03/04 06:29:35 mrg Exp $"); #endif #include <sys/param.h> @@ -65,6 +65,7 @@ static int volume; static int balance; static int port; static int fflag; +static int nflag; static int qflag; int verbose; static int sample_rate; @@ -75,7 +76,7 @@ static int channels; static char const *play_errstring = NULL; static size_t bufsize; -static int audiofd; +static int audiofd = -1; static int exitstatus = EXIT_SUCCESS; int @@ -87,7 +88,7 @@ main(int argc, char *argv[]) const char *defdevice = _PATH_SOUND; const char *device = NULL; - while ((ch = getopt(argc, argv, "b:B:C:c:d:e:fhip:P:qs:Vv:")) != -1) { + while ((ch = getopt(argc, argv, "b:B:C:c:d:e:fhinp:P:qs:Vv:")) != -1) { switch (ch) { case 'b': decode_int(optarg, &balance); @@ -118,6 +119,9 @@ main(int argc, char *argv[]) case 'i': iflag++; break; + case 'n': + nflag++; + break; case 'q': qflag++; break; @@ -173,22 +177,22 @@ main(int argc, char *argv[]) (device = getenv("AUDIODEV")) == NULL) /* Sun compatibility */ device = defdevice; - audiofd = open(device, O_WRONLY); - if (audiofd < 0 && device == defdevice) { - device = _PATH_SOUND0; + if (!nflag) { audiofd = open(device, O_WRONLY); - } - - if (audiofd < 0) - err(1, "failed to open %s", device); + if (audiofd < 0 && device == defdevice) { + device = _PATH_SOUND0; + audiofd = open(device, O_WRONLY); + } + if (audiofd < 0) + err(1, "failed to open %s", device); - if (ioctl(audiofd, AUDIO_GETINFO, &info) < 0) - err(1, "failed to get audio info"); - if (bufsize == 0) { - bufsize = info.play.buffer_size; - if (bufsize < 32 * 1024) - bufsize = 32 * 1024; + if (ioctl(audiofd, AUDIO_GETINFO, &info) < 0) + err(1, "failed to get audio info"); + if (bufsize == 0) + bufsize = info.play.buffer_size; } + if (bufsize == 0) + bufsize = 32 * 1024; signal(SIGINT, cleanup); signal(SIGTERM, cleanup); @@ -208,9 +212,12 @@ static void cleanup(int signo) { - (void)ioctl(audiofd, AUDIO_FLUSH, NULL); - (void)ioctl(audiofd, AUDIO_SETINFO, &info); - close(audiofd); + if (audiofd != -1) { + (void)ioctl(audiofd, AUDIO_FLUSH, NULL); + (void)ioctl(audiofd, AUDIO_SETINFO, &info); + close(audiofd); + audiofd = -1; + } if (signo != 0) { (void)raise_default_signal(signo); } @@ -283,6 +290,9 @@ audio_write(int fd, void *buf, size_t le static void *convert_buffer; static size_t convert_buffer_size; + if (nflag) + return len; + if (conv == NULL) return write(fd, buf, len); @@ -317,8 +327,7 @@ play(char *file) fd = open(file, O_RDONLY); if (fd < 0) { - if (!qflag) - warn("could not open %s", file); + warn("could not open %s", file); exitstatus = EXIT_FAILURE; return; } @@ -359,6 +368,8 @@ play(char *file) else errx(1, "unknown audio file: %s", file); } + if (verbose) + printf("header length: %zd\n", hdrlen); filesize -= hdrlen; addr = (char *)addr + hdrlen; @@ -383,7 +394,7 @@ play(char *file) if ((off_t)nw != datasize) errx(1, "final write failed"); - if (ioctl(audiofd, AUDIO_DRAIN) < 0 && !qflag) + if (!nflag && ioctl(audiofd, AUDIO_DRAIN) < 0 && !qflag) warn("audio drain ioctl failed"); if (munmap(oaddr, sizet_filesize) < 0) err(1, "munmap failed"); @@ -446,7 +457,7 @@ play_fd(const char *file, int fd) break; } /* something to think about: no message given for dataout < datasize */ - if (ioctl(audiofd, AUDIO_DRAIN) < 0 && !qflag) + if (!nflag && ioctl(audiofd, AUDIO_DRAIN) < 0 && !qflag) warn("audio drain ioctl failed"); return; read_error: @@ -571,7 +582,7 @@ set_audio_mode: } #endif /* __vax__ */ - if (ioctl(fd, AUDIO_SETINFO, &info) < 0) + if (!nflag && ioctl(fd, AUDIO_SETINFO, &info) < 0) err(1, "failed to set audio info"); return (hdr_len); @@ -581,7 +592,7 @@ static void usage(void) { - fprintf(stderr, "Usage: %s [-hiqV] [options] files\n", getprogname()); + fprintf(stderr, "Usage: %s [-hinqV] [options] files\n", getprogname()); fprintf(stderr, "Options:\n\t" "-B buffer size\n\t" "-b balance (0-63)\n\t"