ftp.nice.ch/pub/next/unix/audio/set-vol.1.1.NIHS.bs.tar.gz#/set-vol.1.1.NIHS.bs/set-vol.c

This is set-vol.c in view mode; [Download] [Up]

/*
 * Displays and sets the mute status and volume on a NeXT.
 *
 * Version: 1.1
 * Christopher J. Kane (kane@cs.purdue.edu)
 *
 * Released into the public domain, October 19, 1992.
*/

#include <sound/sound.h>
#include <stdio.h>
extern volatile void exit(int);
extern int getopt(int, char **, char *);
extern char *optarg;

#define SETTORANGE(v,min,max)	v = (v<min?min:(v>max?max:v))
#define MINVOL	0
#define MAXVOL	43

#define USAGE	\
"Usage: %s [-s] [-m | -M] [-l <left_vol>] [-r <right_vol>] [-v <vol>]\n"\
"\tDisplays and optionally sets the mute and volume settings.\n"	\
"\tOptions: (in any order)\n"						\
"\t  -s  silent mode; settings are not displayed\n"			\
"\t  -m  unmute external speakers\n"					\
"\t  -M  mute external speakers\n"					\
"\t  -l  set volume of left speaker\n"					\
"\t  -r  set volume of right speaker\n"					\
"\t  -v  set both speakers; shorthand for '-l <vol> -r <vol>'\n"	\
"\tIf both -m and -M are specified, the rightmost of them has effect.\n"\
"\tThe parameters <left_vol>, <right_vol>, and <vol> should be\n"	\
"\tintegers in the range %i (minimum volume) to %i (maximum volume).\n\n"

#define OUTSTR	"\nExternal speaker is%s muted.\n"\
		"Left speaker volume: %i\n"	\
		"Right speaker volume: %i\n\n"

void main(int argc, char *argv[])
{
	int mute, left, right, silent=0, ret;

	if ((ret=SNDGetMute(&mute)) != SND_ERR_NONE) {
		fprintf(stderr, "%s\n", SNDSoundError(ret));
		exit(1);
	}
	SNDGetVolume(&left, &right);
	if (argc > 1) {
		int c;
		while ((c = getopt(argc, argv, "mMsl:r:v:h"))!=EOF)
			switch (c) {
			case 'm':
				mute = 1; break;
			case 'M':
				mute = 0; break;
			case 's':
				silent = 1; break;
			case 'l':
				left = atoi(optarg); break;
			case 'r':
				right = atoi(optarg); break;
			case 'v':
				left = right = atoi(optarg); break;
			case 'h':
			default :
				fprintf(stderr, USAGE, argv[0], MINVOL,  
MAXVOL);
				exit(1);
			}
		SETTORANGE(left, MINVOL, MAXVOL);
		SETTORANGE(right, MINVOL, MAXVOL);
		SNDSetMute(mute);
		SNDSetVolume(left, right);
	}
	if (!silent)
		printf(OUTSTR, (mute?" NOT":""), left, right);
	exit(0);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.