From 0437cf98f265f3778051442ba9a2ed4c951c9219 Mon Sep 17 00:00:00 2001 From: mycroft Date: Thu, 5 Mar 1998 22:26:24 +0000 Subject: New packages for the Robust Audio Tool. Not thoroughly tested yet. --- mbone/rat/Makefile | 32 +++ mbone/rat/files/md5 | 1 + mbone/rat/patches/patch-aa | 575 +++++++++++++++++++++++++++++++++++++++++++++ mbone/rat/pkg/COMMENT | 1 + mbone/rat/pkg/DESCR | 2 + mbone/rat/pkg/PLIST | 3 + 6 files changed, 614 insertions(+) create mode 100644 mbone/rat/Makefile create mode 100644 mbone/rat/files/md5 create mode 100644 mbone/rat/patches/patch-aa create mode 100644 mbone/rat/pkg/COMMENT create mode 100644 mbone/rat/pkg/DESCR create mode 100644 mbone/rat/pkg/PLIST (limited to 'mbone') diff --git a/mbone/rat/Makefile b/mbone/rat/Makefile new file mode 100644 index 00000000000..8163b843cdf --- /dev/null +++ b/mbone/rat/Makefile @@ -0,0 +1,32 @@ +# New ports collection makefile for: rat +# Version required: 3.0.23 +# Date created: 5 March 1998 +# Whom: mycroft +# +# $NetBSD: Makefile,v 1.1 1998/03/05 22:26:24 mycroft Exp $ +# + +DISTNAME= rat-3.0 +CATEGORIES= mbone tk80 +MASTER_SITES= ftp://cs.ucl.ac.uk/mice/rat/src/ +DISTFILES= rat-3.0.23.tar.gz + +MAINTAINER= mycroft@NetBSD.ORG + +LIB_DEPENDS= tk80:${PORTSDIR}/x11/tk80 + +USE_GMAKE= yes +MAN1= rat.1 + +do-build: + cd ${WRKSRC} && PREFIX=${PREFIX} MAKE=${MAKE_PROGRAM} ./Build rat + +do-install: + cd ${WRKSRC} && ( \ + install -c -s -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ + bin/$${USER:=`whoami`}/rat-`uname -s`-`uname -r` \ + ${LOCALBASE}/bin/rat; \ + install -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \ + man/man1/rat.1 ${LOCALBASE}/man/man1/rat.1 ) + +.include diff --git a/mbone/rat/files/md5 b/mbone/rat/files/md5 new file mode 100644 index 00000000000..463623c1ea6 --- /dev/null +++ b/mbone/rat/files/md5 @@ -0,0 +1 @@ +MD5 (rat-3.0.23.tar.gz) = 2789ebad64b4ddc819f30de9d53113b0 diff --git a/mbone/rat/patches/patch-aa b/mbone/rat/patches/patch-aa new file mode 100644 index 00000000000..ec61d4900ef --- /dev/null +++ b/mbone/rat/patches/patch-aa @@ -0,0 +1,575 @@ +*** Build~ Tue May 13 04:38:56 1997 +--- Build Thu Mar 5 16:35:38 1998 +*************** +*** 55,59 **** + Linux ) OSMVER=`echo $OSVERS | awk -F. '{printf("%d_%d", $1, $2)}'` + ;; +! SunOS | IRIX | FreeBSD ) OSMVER=`echo $OSVERS | awk -F. '{print $1}'` + ;; + HP-UX ) OSTYPE=HPUX +--- 55,59 ---- + Linux ) OSMVER=`echo $OSVERS | awk -F. '{printf("%d_%d", $1, $2)}'` + ;; +! SunOS | IRIX | FreeBSD | NetBSD ) OSMVER=`echo $OSVERS | awk -F. '{print $1}'` + ;; + HP-UX ) OSTYPE=HPUX +*************** +*** 69,74 **** + echo "OSMVER=$OSMVER" + + # Create a directory for the .o files, if it doesn't exist... +! if [ ! -d objs/${USER:=`whoami`}/${OSTYPE}_${OSVERS} ]; then + echo "Creating object directory objs/${USER}/${OSTYPE}_${OSVERS}..." + mkdir bin/${USER} +--- 69,76 ---- + echo "OSMVER=$OSMVER" + ++ USER=${USER:=`whoami`} ++ + # Create a directory for the .o files, if it doesn't exist... +! if [ ! -d objs/${USER}/${OSTYPE}_${OSVERS} ]; then + echo "Creating object directory objs/${USER}/${OSTYPE}_${OSVERS}..." + mkdir bin/${USER} +*************** +*** 80,84 **** + fi + +! cmd="${MAKE:=make} OSTYPE=$OSTYPE OSMVER=$OSMVER OSVERS=$OSVERS USER=`whoami`" + case $1 in + rat ) echo "Running: $cmd bin/${USER}/rat-${OSTYPE}-${OSVERS}" +--- 82,86 ---- + fi + +! cmd="${MAKE:=make} OSTYPE=$OSTYPE OSMVER=$OSMVER OSVERS=$OSVERS USER=$USER" + case $1 in + rat ) echo "Running: $cmd bin/${USER}/rat-${OSTYPE}-${OSVERS}" +*** Makefile~ Tue May 27 06:29:15 1997 +--- Makefile Thu Mar 5 16:37:53 1998 +*************** +*** 10,14 **** + # -DDEBUG_RTP -DREPEAT + +! DEFS += -D$(OSTYPE) -D$(OSTYPE)_$(OSMVER) -D$(USER) + CC = gcc + CFLAGS = -Wall -Werror $(INCS) $(DEFS) -g -O -fsigned-char +--- 10,14 ---- + # -DDEBUG_RTP -DREPEAT + +! #DEFS += -D$(OSTYPE) -D$(OSTYPE)_$(OSMVER) -D$(USER) + CC = gcc + CFLAGS = -Wall -Werror $(INCS) $(DEFS) -g -O -fsigned-char +*************** +*** 53,56 **** +--- 53,57 ---- + $(OBJDIR)/auddev_linux.o \ + $(OBJDIR)/auddev_freebsd.o \ ++ $(OBJDIR)/auddev_netbsd.o \ + $(OBJDIR)/init_net.o \ + $(OBJDIR)/init_session.o \ +*** src/bat_include.h~ Tue May 27 06:27:48 1997 +--- src/bat_include.h Thu Mar 5 16:22:59 1998 +*************** +*** 71,75 **** + #include + extern int h_errno; +! #if !defined(HPUX) && !defined(Linux) && !defined(__FreeBSD__) + #include + #include +--- 71,75 ---- + #include + extern int h_errno; +! #if !defined(HPUX) && !defined(Linux) && !defined(__FreeBSD__) && !defined(__NetBSD__) + #include + #include +*** src/config.h~ Fri May 23 08:44:14 1997 +--- src/config.h Thu Mar 5 16:39:40 1998 +*************** +*** 57,60 **** +--- 57,71 ---- + #endif /* FreeBSD */ + ++ #ifdef __NetBSD__ ++ #define OSNAME "NetBSD" ++ #define DEFINED_ERRLIST ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ #endif ++ + #ifdef SunOS_5 + #define OSNAME "Solaris" +*** tcl/init.tcl~ Wed Mar 5 07:39:39 1997 +--- tcl/init.tcl Thu Mar 5 16:44:45 1998 +*************** +*** 16,20 **** + error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" + } +! package require -exact Tcl 7.6 + if [catch {set auto_path $env(TCLLIBPATH)}] { + set auto_path "" +--- 16,20 ---- + error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" + } +! package require -exact Tcl 8.0 + if [catch {set auto_path $env(TCLLIBPATH)}] { + set auto_path "" +*** tk/aatk.tcl~ Wed Mar 5 07:41:01 1997 +--- tk/aatk.tcl Thu Mar 5 16:44:54 1998 +*************** +*** 14,19 **** + # Insist on running with compatible versions of Tcl and Tk. + +! package require -exact Tk 4.2 +! package require -exact Tcl 7.6 + + # Add Tk's directory to the end of the auto-load search path, if it +--- 14,19 ---- + # Insist on running with compatible versions of Tcl and Tk. + +! package require -exact Tk 8.0 +! package require -exact Tcl 8.0 + + # Add Tk's directory to the end of the auto-load search path, if it +*** /dev/null Thu Mar 5 16:59:30 1998 +--- Makefile_NetBSD_1 Thu Mar 5 16:41:44 1998 +*************** +*** 0 **** +--- 1,7 ---- ++ INCS = -I/usr/X11R6/include \ ++ -I${PREFIX}/include/tcl8.0 \ ++ -I${PREFIX}/include/tk8.0 ++ LDLIBS = -L${PREFIX}/lib -ltk80 -ltcl80 \ ++ -L/usr/X11R6/lib -lXext -lX11 \ ++ -lm ++ +*** /dev/null Thu Mar 5 16:59:30 1998 +--- src/auddev_netbsd.c Thu Mar 5 16:40:41 1998 +*************** +*** 0 **** +--- 1,423 ---- ++ /* ++ * FILE: netbsd.c ++ * PROGRAM: RAT ++ * AUTHOR: Isidor Kouvelas ++ * MODIFIED: Colin Perkins ++ * ++ * $Revision: 1.1 $ ++ * $Date: 1998/03/05 22:26:25 $ ++ * ++ * Copyright (c) 1995,1996 University College London ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, is permitted, for non-commercial use only, provided ++ * that the following conditions are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * This product includes software developed by the Computer Science ++ * Department at University College London ++ * 4. Neither the name of the University nor of the Department may be used ++ * to endorse or promote products derived from this software without ++ * specific prior written permission. ++ * Use of this software for commercial purposes is explicitly forbidden ++ * unless prior written permission is obtained from the authors. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++ ++ ++ #include "assert.h" ++ #include "bat_include.h" ++ #ifdef __NetBSD__ ++ ++ static audio_info_t dev_info; ++ static int mulaw_device = FALSE; /* TRUE if the hardware can only do 8bit mulaw sampling */ ++ ++ #define bat_to_device(x) ((x) * AUDIO_MAX_GAIN / MAX_AMP) ++ #define device_to_bat(x) ((x) * MAX_AMP / AUDIO_MAX_GAIN) ++ ++ /* Try to open the audio device. */ ++ /* Returns a valid file descriptor if ok, -1 otherwise. */ ++ int ++ audio_open(audio_format format) ++ { ++ audio_info_t tmp_info; ++ ++ int audio_fd = open("/dev/audio", O_RDWR | O_NDELAY); ++ ++ if (audio_fd > 0) { ++ AUDIO_INITINFO(&dev_info); ++ dev_info.monitor_gain = 0; ++ dev_info.play.sample_rate = format.sample_rate; ++ dev_info.record.sample_rate = format.sample_rate; ++ dev_info.play.channels = format.num_channels; ++ dev_info.record.channels = format.num_channels; ++ dev_info.play.precision = format.bits_per_sample; ++ dev_info.record.precision = format.bits_per_sample; ++ dev_info.play.gain = (AUDIO_MAX_GAIN - AUDIO_MIN_GAIN) * 0.75; ++ dev_info.record.gain = (AUDIO_MAX_GAIN - AUDIO_MIN_GAIN) * 0.75; ++ dev_info.play.port = AUDIO_HEADPHONE; ++ dev_info.record.port = AUDIO_MICROPHONE; ++ dev_info.play.balance = AUDIO_MID_BALANCE; ++ dev_info.record.balance = AUDIO_MID_BALANCE; ++ #ifdef SunOS_5 ++ dev_info.play.buffer_size = DEVICE_BUF_UNIT; ++ dev_info.record.buffer_size = DEVICE_BUF_UNIT; ++ #endif ++ switch (format.encoding) { ++ case DEV_PCMU: ++ dev_info.record.encoding = AUDIO_ENCODING_ULAW; ++ dev_info.play.encoding = AUDIO_ENCODING_ULAW; ++ break; ++ case DEV_L8: ++ assert(format.bits_per_sample == 8); ++ dev_info.record.encoding = AUDIO_ENCODING_LINEAR; ++ dev_info.play.encoding = AUDIO_ENCODING_LINEAR; ++ break; ++ case DEV_L16: ++ assert(format.bits_per_sample == 16); ++ dev_info.record.encoding = AUDIO_ENCODING_LINEAR; ++ dev_info.play.encoding = AUDIO_ENCODING_LINEAR; ++ break; ++ default: ++ printf("ERROR: Unknown audio encoding in audio_open!\n"); ++ abort(); ++ } ++ ++ memcpy(&tmp_info, &dev_info, sizeof(audio_info_t)); ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&tmp_info) < 0) { ++ if (format.encoding == DEV_L16) { ++ #ifdef DEBUG ++ printf("Old hardware detected: can't do 16 bit audio, trying 8 bit...\n"); ++ #endif ++ dev_info.play.precision = 8; ++ dev_info.record.precision = 8; ++ dev_info.record.encoding = AUDIO_ENCODING_ULAW; ++ dev_info.play.encoding = AUDIO_ENCODING_ULAW; ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&dev_info) < 0) { ++ perror("Setting MULAW audio paramterts"); ++ return -1; ++ } ++ mulaw_device = TRUE; ++ } else { ++ perror("Setting audio paramterts"); ++ return -1; ++ } ++ } ++ return audio_fd; ++ } else { ++ /* Because we opened the device with O_NDELAY ++ * the waiting flag was not updated so update ++ * it manually using the audioctl device... ++ */ ++ audio_fd = open("/dev/audioctl", O_RDWR); ++ AUDIO_INITINFO(&dev_info); ++ dev_info.play.waiting = 1; ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&dev_info) < 0) { ++ #ifdef DEBUG ++ perror("Setting requests"); ++ #endif ++ } ++ close(audio_fd); ++ return -1; ++ } ++ } ++ ++ /* Close the audio device */ ++ void ++ audio_close(int audio_fd) ++ { ++ close(audio_fd); ++ audio_fd = -1; ++ } ++ ++ /* Flush input buffer */ ++ void ++ audio_drain(int audio_fd) ++ { ++ ioctl(audio_fd, AUDIO_FLUSH, 0); ++ } ++ ++ /* Gain and volume values are in the range 0 - MAX_AMP */ ++ ++ void ++ audio_set_gain(int audio_fd, int gain) ++ { ++ if (audio_fd <= 0) ++ return; ++ ++ AUDIO_INITINFO(&dev_info); ++ dev_info.record.gain = bat_to_device(gain); ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&dev_info) < 0) ++ perror("Setting gain"); ++ } ++ ++ int ++ audio_get_gain(int audio_fd) ++ { ++ if (audio_fd <= 0) ++ return (0); ++ ++ AUDIO_INITINFO(&dev_info); ++ if (ioctl(audio_fd, AUDIO_GETINFO, (caddr_t)&dev_info) < 0) ++ perror("Getting gain"); ++ return (device_to_bat(dev_info.record.gain)); ++ } ++ ++ void ++ audio_set_volume(int audio_fd, int vol) ++ { ++ if (audio_fd <= 0) ++ return; ++ ++ AUDIO_INITINFO(&dev_info); ++ dev_info.play.gain = bat_to_device(vol); ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&dev_info) < 0) ++ perror("Setting volume"); ++ } ++ ++ int ++ audio_get_volume(int audio_fd) ++ { ++ if (audio_fd <= 0) ++ return (0); ++ ++ AUDIO_INITINFO(&dev_info); ++ if (ioctl(audio_fd, AUDIO_GETINFO, (caddr_t)&dev_info) < 0) ++ perror("Getting gain"); ++ return (device_to_bat(dev_info.play.gain)); ++ } ++ ++ int ++ audio_read(int audio_fd, sample *buf, int samples) ++ { ++ int i, len; ++ static u_char mulaw_buf[DEVICE_REC_BUF]; ++ u_char *p; ++ ++ if (mulaw_device) { ++ if ((len = read(audio_fd, mulaw_buf, samples)) < 0) { ++ return 0; ++ } else { ++ p = mulaw_buf; ++ for (i = 0; i < len; i++) { ++ *buf++ = u2s((unsigned)*p); ++ p++; ++ } ++ return (len); ++ } ++ } else { ++ if ((len = read(audio_fd, (char *)buf, samples * BYTES_PER_SAMPLE)) < 0) { ++ return 0; ++ } else { ++ return (len / BYTES_PER_SAMPLE); ++ } ++ } ++ } ++ ++ int ++ audio_write(int audio_fd, sample *buf, int samples) ++ { ++ int i, done, len, bps; ++ unsigned char *p, *q; ++ static u_char mulaw_buf[DEVICE_REC_BUF]; ++ ++ if (mulaw_device) { ++ p = mulaw_buf; ++ for (i = 0; i < samples; i++) ++ *p++ = lintomulaw[(unsigned short)*buf++]; ++ p = mulaw_buf; ++ len = samples; ++ bps = 1; ++ } else { ++ p = (char *)buf; ++ len = samples * BYTES_PER_SAMPLE; ++ bps = BYTES_PER_SAMPLE; ++ } ++ ++ q = p; ++ while (1) { ++ if ((done = write(audio_fd, p, len)) == len) ++ break; ++ if (errno != EINTR) ++ return (samples - ((len - done) / bps)); ++ len -= done; ++ p += done; ++ } ++ ++ return (samples); ++ } ++ ++ /* Set ops on audio device to be non-blocking */ ++ void ++ audio_non_block(int audio_fd) ++ { ++ int on = 1; ++ ++ if (audio_fd <= 0) ++ return; ++ ++ if (ioctl(audio_fd, FIONBIO, (char *)&on) < 0) ++ fprintf(stderr, "Failed to set non blocking mode on audio device!\n"); ++ } ++ ++ /* Set ops on audio device to block */ ++ void ++ audio_block(int audio_fd) ++ { ++ int on = 0; ++ ++ if (audio_fd <= 0) ++ return; ++ ++ if (ioctl(audio_fd, FIONBIO, (char *)&on) < 0) ++ fprintf(stderr, "Failed to set blocking mode on audio device!\n"); ++ } ++ ++ void ++ audio_set_oport(int audio_fd, int port) ++ { ++ if (audio_fd <= 0) ++ return; ++ ++ AUDIO_INITINFO(&dev_info); ++ /* AUDIO_SPEAKER or AUDIO_HEADPHONE */ ++ dev_info.play.port = port; ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&dev_info) < 0) ++ perror("Setting port"); ++ } ++ ++ int ++ audio_get_oport(int audio_fd) ++ { ++ if (audio_fd <= 0) ++ return (AUDIO_SPEAKER); ++ ++ AUDIO_INITINFO(&dev_info); ++ if (ioctl(audio_fd, AUDIO_GETINFO, (caddr_t)&dev_info) < 0) ++ perror("Getting port"); ++ return (dev_info.play.port); ++ } ++ ++ int ++ audio_next_oport(int audio_fd) ++ { ++ int port; ++ ++ if (audio_fd <= 0) ++ return (AUDIO_SPEAKER); ++ ++ AUDIO_INITINFO(&dev_info); ++ if (ioctl(audio_fd, AUDIO_GETINFO, (caddr_t)&dev_info) < 0) ++ perror("Getting port"); ++ ++ ++ port = dev_info.play.port; ++ port <<= 1; ++ ++ /* It is either wrong on some machines or i got something wrong! */ ++ if (dev_info.play.avail_ports < 3) ++ dev_info.play.avail_ports = 3; ++ ++ if ((port & dev_info.play.avail_ports) == 0) ++ port = 1; ++ ++ AUDIO_INITINFO(&dev_info); ++ dev_info.play.port = port; ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&dev_info) < 0) ++ perror("Setting port"); ++ ++ return (port); ++ } ++ ++ void ++ audio_set_iport(int audio_fd, int port) ++ { ++ if (audio_fd <= 0) ++ return; ++ ++ AUDIO_INITINFO(&dev_info); ++ dev_info.record.port = port; ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&dev_info) < 0) ++ perror("Setting port"); ++ } ++ ++ int ++ audio_get_iport(int audio_fd) ++ { ++ if (audio_fd <= 0) ++ return (AUDIO_SPEAKER); ++ ++ AUDIO_INITINFO(&dev_info); ++ if (ioctl(audio_fd, AUDIO_GETINFO, (caddr_t)&dev_info) < 0) ++ perror("Getting port"); ++ return (dev_info.record.port); ++ } ++ ++ int ++ audio_next_iport(int audio_fd) ++ { ++ int port; ++ ++ if (audio_fd <= 0) ++ return (AUDIO_SPEAKER); ++ ++ AUDIO_INITINFO(&dev_info); ++ if (ioctl(audio_fd, AUDIO_GETINFO, (caddr_t)&dev_info) < 0) ++ perror("Getting port"); ++ ++ port = dev_info.record.port; ++ port <<= 1; ++ ++ if (dev_info.record.avail_ports > 3) ++ dev_info.record.avail_ports = 3; ++ ++ /* Hack to fix Sparc 5 SOLARIS bug */ ++ if ((port & dev_info.record.avail_ports) == 0) ++ port = 1; ++ ++ AUDIO_INITINFO(&dev_info); ++ dev_info.record.port = port; ++ if (ioctl(audio_fd, AUDIO_SETINFO, (caddr_t)&dev_info) < 0) ++ perror("Setting port"); ++ ++ return (port); ++ } ++ ++ void ++ audio_switch_out(int audio_fd, cushion_struct *ap) ++ { ++ /* Full duplex device: do nothing! */ ++ } ++ ++ void ++ audio_switch_in(int audio_fd) ++ { ++ /* Full duplex device: do nothing! */ ++ } ++ ++ int ++ audio_duplex(int audio_fd) ++ { ++ return 1; ++ } ++ ++ #endif /* __NetBSD__ */ ++ diff --git a/mbone/rat/pkg/COMMENT b/mbone/rat/pkg/COMMENT new file mode 100644 index 00000000000..a997bb19cb6 --- /dev/null +++ b/mbone/rat/pkg/COMMENT @@ -0,0 +1 @@ +Robust Audio Tool - multicast audioconferencing diff --git a/mbone/rat/pkg/DESCR b/mbone/rat/pkg/DESCR new file mode 100644 index 00000000000..aafda540bc7 --- /dev/null +++ b/mbone/rat/pkg/DESCR @@ -0,0 +1,2 @@ +Rat allows users to conduct host-to-host or multihost audio +teleconferences over an internet. diff --git a/mbone/rat/pkg/PLIST b/mbone/rat/pkg/PLIST new file mode 100644 index 00000000000..11bf9415840 --- /dev/null +++ b/mbone/rat/pkg/PLIST @@ -0,0 +1,3 @@ +@comment $NetBSD: PLIST,v 1.1 1998/03/05 22:26:26 mycroft Exp $ +bin/rat +man/man1/rat.1.gz -- cgit v1.2.3