Yet another forgotten audio program. The below is a diff adds the
sndio bits, for xcdroast to build and to play tracks from the GUI.
OK?
Index: Makefile
===================================================================
RCS file: /cvs/ports/misc/xcdroast/Makefile,v
retrieving revision 1.35
diff -u -p -u -p -r1.35 Makefile
--- Makefile 11 Oct 2013 23:50:14 -0000 1.35
+++ Makefile 26 Jun 2015 17:57:08 -0000
@@ -3,7 +3,7 @@
COMMENT= gtk-based frontend to cdrtools
DISTNAME= xcdroast-0.98alpha16
PKGNAME= ${DISTNAME:L:S/alpha/a/}
-REVISION= 4
+REVISION= 5
CATEGORIES= misc x11
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=xcdroast/}
Index: patches/patch-configure
===================================================================
RCS file: patches/patch-configure
diff -N patches/patch-configure
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-configure 26 Jun 2015 17:57:08 -0000
@@ -0,0 +1,13 @@
+$OpenBSD$
+--- configure.orig Fri Jun 26 19:08:19 2015
++++ configure Fri Jun 26 19:08:49 2015
+@@ -2833,6 +2833,9 @@ case "$host" in
+ *-*-irix*)
+ AUDIO_LIBS="-laudio"
+ ;;
++*-*-openbsd*)
++ AUDIO_LIBS="-lsndio"
++ ;;
+ esac
+
+
Index: patches/patch-src_io_c
===================================================================
RCS file: patches/patch-src_io_c
diff -N patches/patch-src_io_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_io_c 26 Jun 2015 17:57:08 -0000
@@ -0,0 +1,81 @@
+$OpenBSD$
+--- src/io.c.orig Thu Aug 21 15:11:40 2008
++++ src/io.c Fri Jun 26 19:48:45 2015
+@@ -28,7 +28,10 @@
+ # include <sys/soundcard.h>
+ # include <sys/ioctl.h>
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(__OpenBSD__)
++# include <sndio.h>
++#endif
++#if defined(sun)
+ # include <sys/ioctl.h>
+ # include <sys/audioio.h>
+ #endif
+@@ -1708,7 +1711,7 @@ GList *loop;
+ struct stat buf;
+ #endif
+
+-#if defined(sun) || defined(aix) || defined(__OpenBSD__)
++#if defined(sun) || defined(aix)
+ gchar *audiodev;
+ #endif
+ dsp = NULL;
+@@ -1723,7 +1726,10 @@ gchar *audiodev;
+ dsp = g_list_append(dsp,"/dev/dsp1");
+ }
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(__OpenBSD__)
++ dsp = g_list_append(dsp, SIO_DEVANY);
++#endif
++#if defined(sun)
+ /* check if the user has any special audio-hardware running,
+ which set the AUDIODEV-environment-variable */
+ audiodev = getenv("AUDIODEV");
+@@ -1850,7 +1856,7 @@ gchar tmp2[MAXLINE];
+ }
+ }
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(sun)
+
+ g_snprintf(tmp,MAXLINE,"%s%s",dsp,"ctl");
+
+@@ -3601,7 +3607,7 @@ gint mix;
+ #if defined(linux) || defined(__FreeBSD__)
+ gint val;
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(sun)
+ audio_info_t ainfo;
+ #endif
+ #ifdef hpux
+@@ -3636,7 +3642,7 @@ struct audio_gain again;
+ return ((val & 0x7f) + ((val >> 8) & 0x7f))/2;
+
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(sun)
+
+ dodebug(10,"quering mixer %s\n", setupdata.mix_device);
+ mix = open(setupdata.mix_device, O_RDONLY);
+@@ -3724,7 +3730,7 @@ gint set_mixer(gint val) {
+ #if !(defined(__MACH__) && defined(__APPLE__))
+ gint mix;
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(sun)
+ audio_info_t ainfo;
+ #endif
+ #ifdef aix
+@@ -3760,7 +3766,7 @@ struct audio_gain again;
+ close(mix);
+
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(sun)
+
+ dodebug(10,"setting mixer %s to %d\n", setupdata.mix_device, val);
+ mix = open(setupdata.mix_device, O_WRONLY);
Index: patches/patch-src_wavplay_c
===================================================================
RCS file: patches/patch-src_wavplay_c
diff -N patches/patch-src_wavplay_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_wavplay_c 26 Jun 2015 17:57:08 -0000
@@ -0,0 +1,128 @@
+$OpenBSD$
+--- src/wavplay.c.orig Wed Aug 20 17:34:02 2008
++++ src/wavplay.c Fri Jun 26 19:47:07 2015
+@@ -31,7 +31,10 @@
+ # include <sys/soundcard.h>
+ # include <sys/ioctl.h>
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(__OpenBSD__)
++# include <sndio.h>
++#endif
++#if defined(sun)
+ # include <sys/ioctl.h>
+ # include <sys/audioio.h>
+ #endif
+@@ -74,6 +77,8 @@ off_t is_std_wav_file(int f, off_t *offset);
+
+ #if defined(linux) || defined(__FreeBSD__)
+ #define DEFAULT_AUDIO_DEVICE "/dev/dsp"
++#elif defined(__OpenBSD__)
++#define DEFAULT_AUDIO_DEVICE SIO_DEVANY
+ #elif defined (aix)
+ #define DEFAULT_AUDIO_DEVICE ""
+ #elif defined(__sgi)
+@@ -360,8 +365,50 @@ gint flags;
+
+ #endif
+
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(__OpenBSD__)
+
++static struct sio_hdl *audio_hdl = NULL;
++
++/* open the sound-device of sndio and set cd-quality */
++gint open_sndio_audio(gchar *dev) {
++ struct sio_par par;
++
++ /* First try open with O_NONBLOCK so it doesn't hang */
++ if ((audio_hdl = sio_open(dev, SIO_PLAY, 0)) == NULL) {
++ g_warning("Unable to open audio device\n");
++ return -1;
++ }
++ sio_initpar(&par);
++ par.rate = 44100;
++ par.pchan = 2;
++ par.bits = 16;
++ par.le = SIO_LE_NATIVE;
++ par.appbufsz = DEFAULT_BUFFER_SIZE;
++
++ if (!sio_setpar(audio_hdl, &par) || !sio_getpar(audio_hdl, &par)) {
++ g_warning("Unable to set audio parameters\n");
++ goto bad;
++ }
++ if (par.rate != 44100 || par.pchan != 2 || par.bits != 16 ||
++ par.le != SIO_LE_NATIVE) {
++ g_warning("Unsupported audio parameters\n");
++ goto bad;
++ }
++ if (!sio_start(audio_hdl)) {
++ g_warning("Couldn't start audio\n");
++ goto bad;
++ }
++ abuf_size = par.appbufsz;
++ return 0;
++bad:
++ sio_close(audio_hdl);
++ audio_hdl = NULL;
++ return -1;
++}
++#endif
++
++#if defined(sun)
++
+ /* open the sound-device of solaris and set cd-quality */
+
+ gint open_solaris_audio(gchar *dev) {
+@@ -387,9 +434,7 @@ gint flags;
+ info.play.precision = 16;
+ info.play.encoding = AUDIO_ENCODING_LINEAR;
+ info.play.buffer_size = abuf_size;
+-#ifndef __OpenBSD__
+ info.output_muted = 0;
+-#endif
+
+ if (ioctl(audio, AUDIO_SETINFO, &info) == -1) {
+ g_warning("Unable to set audio parameters\n");
+@@ -790,7 +835,10 @@ gchar keybuffer[MAXLINE];
+ #if defined(linux) || defined(__FreeBSD__)
+ audio = open_linux_audio(audio_dev);
+ #endif
+-#if defined(sun) || defined(__OpenBSD__)
++#if defined(__OpenBSD__)
++ audio = open_sndio_audio(audio_dev);
++#endif
++#if defined(sun)
+ audio = open_solaris_audio(audio_dev);
+ #endif
+ #ifdef aix
+@@ -820,7 +868,7 @@ gchar keybuffer[MAXLINE];
+ fd = open (wavname, O_RDONLY, 0);
+
+ if (fd == -1) {
+-#if !(defined(__MACH__) && defined(__APPLE__))
++#if !(defined(__MACH__) && defined(__APPLE__)) && !defined(__OpenBSD__)
+ close(audio);
+ #endif
+ g_warning("Can't open wav-file\n");
+@@ -934,6 +982,11 @@ gchar keybuffer[MAXLINE];
+
+ #if (defined(__MACH__) && defined(__APPLE__))
+ audio_write(audiobuf,l);
++#elif defined(__OpenBSD__)
++ if (sio_write(audio_hdl, audiobuf, l) != l) {
++ g_print("write error to
audio-device\n");
++ exit(-1);
++ }
+ #elif defined(__sgi)
+ write_irix_audio(audiobuf, l);
+ #else
+@@ -975,6 +1028,8 @@ gchar keybuffer[MAXLINE];
+
+ #if (defined(__MACH__) && defined(__APPLE__))
+ audio_close();
++#elif defined(__OpenBSD__)
++ sio_close(audio_hdl);
+ #elif defined(__sgi)
+ close_irix_audio();
+ #else