summaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
authorWill Andrews <will@FreeBSD.org>2001-12-04 03:47:18 +0000
committerWill Andrews <will@FreeBSD.org>2001-12-04 03:47:18 +0000
commit1d206a3483e848f4589962473bdf169313ea740f (patch)
tree269caee3e56d61cd6318b44d85c3ff64b32d57b6 /audio
parentMake this port PREFIX clean. Required for KDE 2.2.2 upgrade, as well as (diff)
Upgrade KDE to 2.2.2:
* General: - Support for objprelink. - Hack for autoconf 2.13/automake 1.4. Note that we can't use the standard USE_AUTO* because they change things in work/*; KDE has its own way of doing that. - Light cleanup of extra dirs in the PLISTs provided by my mkplistpkg[1] script. - Speedups of both compile and runtime through the usage of --disable-debug and --enable-final. The latter did not work with the kdemultimedia package, unfortunately. - Patch updates. * audio/kdemultimedia2: - Patch to fix KSCD on FreeBSD[2]. It works very well now. * deskutils/kdepim: - Enable kpilot[3]. Pull in the latest pilot-link stuff. * devel/kdesdk, * devel/kdevelop: - No specific changes. * devel/qt-designer: - Make this port depend almost entirely on qt23 to make it more maintainable, so I don't have to keep hacking the patches to get them to apply. * editors/koffice, * games/kdegames, * graphics/kdegraphics: - No specific changes. * misc/kdeaddons: - SDL is required now. Cull SDL PLIST_SUB and such. - Fix breakage from hardcoding "sdl-config". * misc/kdeutils2: - Fix problem with klaptopdaemon[4] where it didn't properly display the battery time. This patch is untested, but applied. * net/kdenetwork2: - Fix DCC for KSIRC[5]. - Remove ktalkd from the build. It requires some weird thing in the configure script that I don't have time to look at. * sysutils/kdeadmin: - No specific changes. * textproc/kdoc: - Remove bogus requirement that kdoc requires Perl 5.6.0; it sure seems to operate fine with >= 5.005. But I'll let time tell. * www/quanta: - No specific changes (--disable-debug support only). * x11/kde2: - No specific changes. * x11/kdebase2: - Fix ksysguard compile by merging the files from the HEAD branch of KDE CVS that were missing at release time for FreeBSD[6]. :\ * x11/kdelibs2: - Recognize CUPS' spinoff[7]. - Add libxslt dependency since it was removed from kdelibs. - Fix libxml compile problems[8] (accomplished by upgrading). - Remove libkformula from port Makefile; this library has been spun off into koffice. - Fix mode problems with DCOP[9]. This allows you to save files properly. It also seems to be a FreeBSD specific problem. - Fix bashisms in kdeprint/imagetops script[10]. * x11-clocks/kdetoys2: - No specific changes. * x11-toolkits/qt23: - Do NOT upgrade to QT 2.3.2[11]. - Allow devel/qt-designer to depend on this port entirely for the patches by adding a perlre to accomplish this. * x11-wm/kdeartwork: - No specific changes. Thanks to the FreeBSD/KDE[1] team[12] who helped me test these out! [1] http://freebsd.kde.org/; http://www.databits.net/cgi-bin/cvsweb.cgi/scripts/portbuild/mkplistpkg [2] Submitted by: Matthew Holmes <matt@speakeasy.net> [3] PR: 31914 Submitted by: Alan Eldridge <alane@geeksrus.net> [4] PR: 28475 Submitted by: Arun Sharma <arun@sharmas.dhs.org> [5] Submitted by: Luc Morin <luc_m@videotron.ca> [6] Found at: http://webcvs.kde.org/kdebase/ksysguard/ksysguardd/FreeBSD/ [7] PR: 32321 Reported by: gad Submitted by: James A. Halstead <jah4007@cs.rit.edu> [8] PR: 32055 Reported by: William Richard <wrichard@trivalley.com>, others [9] PR: 31629 Submitted by: Alan Eldridge <alane@geeksrus.net> [10] PR: 32358 Submitted by: Alexander N. Kabaev <ak03@gte.com> [11] PR: 31809 Requested by: Nathan Ahlstrom <nrahlstr@winternet.com> (denied) [12] http://freebsd.kde.org/contact.shtml; http://lists.csociety.org/pipermail/kde-freebsd; http://lists.csociety.org/listinfo/kde-freebsd
Notes
Notes: svn path=/head/; revision=51005
Diffstat (limited to 'audio')
-rw-r--r--audio/kdemultimedia2/Makefile31
-rw-r--r--audio/kdemultimedia2/distinfo2
-rw-r--r--audio/kdemultimedia2/files/patch-cdrom.c163
-rw-r--r--audio/kdemultimedia2/files/patch-kscd.cpp19
-rw-r--r--audio/kdemultimedia2/files/patch-plat_freebsd.c11
-rw-r--r--audio/kdemultimedia2/pkg-plist12
-rw-r--r--audio/kdemultimedia3/Makefile31
-rw-r--r--audio/kdemultimedia3/distinfo2
-rw-r--r--audio/kdemultimedia3/files/patch-cdrom.c163
-rw-r--r--audio/kdemultimedia3/files/patch-kscd.cpp19
-rw-r--r--audio/kdemultimedia3/files/patch-plat_freebsd.c11
-rw-r--r--audio/kdemultimedia3/pkg-plist12
12 files changed, 440 insertions, 36 deletions
diff --git a/audio/kdemultimedia2/Makefile b/audio/kdemultimedia2/Makefile
index 8cb9b4b99b3a..06d02616bd07 100644
--- a/audio/kdemultimedia2/Makefile
+++ b/audio/kdemultimedia2/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME= kdemultimedia
-PORTVERSION= 2.2.1
+PORTVERSION= 2.2.2
CATEGORIES= audio kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${PORTVERSION}/src
@@ -14,14 +14,21 @@ DIST_SUBDIR= KDE
MAINTAINER= kde@FreeBSD.org
+BUILD_DEPENDS= autoconf213:${PORTSDIR}/devel/autoconf213 \
+ automake14:${PORTSDIR}/devel/automake14 \
+ objprelink:${PORTSDIR}/devel/objprelink
RUN_DEPENDS= xanim:${PORTSDIR}/graphics/xanim
USE_KDELIBS_VER=2
USE_BZIP2= yes
INSTALLS_SHLIB= yes
-USE_AUTOCONF= yes
+GNU_CONFIGURE= yes
CONFIGURE_ARGS+=--with-qt-includes=${X11BASE}/include/qt2 \
- --with-qt-libraries=${X11BASE}/lib
+ --with-qt-libraries=${X11BASE}/lib \
+ --enable-objprelink
+.if defined(PARALLEL_PACKAGE_BUILD) || defined(WANT_KDE_NDEBUG)
+CONFIGURE_ARGS+=--disable-debug
+.endif
USE_GMAKE= yes
MAKE_ENV= ${CONFIGURE_ENV}
@@ -46,9 +53,21 @@ pre-everything::
.endif
pre-configure:
- ${PERL} -pi -e "s@all_includes=\"@all_includes=\"-I/usr/include @g" ${WRKSRC}/acinclude.m4 ${WRKSRC}/aclocal.m4
- ${PERL} -pi -e 's,kscd_compile=no,kscd_compile=yes,g; \
- s,kde_artsplug_compiles = xno,kde_argsplug_compiles = x,g' ${WRKSRC}/configure.in
+ ${PERL} -pi -e "s@all_includes=\"@all_includes=\"-I/usr/include @g" \
+ ${WRKSRC}/acinclude.m4 ${WRKSRC}/aclocal.m4
+ ${PERL} -pi -e \
+ 's,kscd_compile=no,kscd_compile=yes,g; \
+ s,kde_artsplug_compiles = xno,kde_artsplug_compiles = x,g' \
+ ${WRKSRC}/kscd/configure.in.in
+ ${MKDIR} ${WRKSRC}/auto-bin
+.for AC in autoconf autoheader
+ ${LN} -sf ${LOCALBASE}/bin/${AC}213 ${WRKSRC}/auto-bin/${AC}
+.endfor
+.for AM in automake aclocal
+ ${LN} -sf ${LOCALBASE}/bin/${AM}14 ${WRKSRC}/auto-bin/${AM}
+.endfor
+ cd ${WRKSRC} && env PATH=$$PATH:${WRKSRC}/auto-bin \
+ ${GMAKE} -f Makefile.cvs
post-install:
@${ECHO_MSG}
diff --git a/audio/kdemultimedia2/distinfo b/audio/kdemultimedia2/distinfo
index ab43ed67b80f..b2e1bbcb1e21 100644
--- a/audio/kdemultimedia2/distinfo
+++ b/audio/kdemultimedia2/distinfo
@@ -1 +1 @@
-MD5 (KDE/kdemultimedia-2.2.1.tar.bz2) = c4724c00c6d2c69ccc923de944cf7983
+MD5 (KDE/kdemultimedia-2.2.2.tar.bz2) = 76981ca284663093cd0bc37500e10441
diff --git a/audio/kdemultimedia2/files/patch-cdrom.c b/audio/kdemultimedia2/files/patch-cdrom.c
new file mode 100644
index 000000000000..f833b837a051
--- /dev/null
+++ b/audio/kdemultimedia2/files/patch-cdrom.c
@@ -0,0 +1,163 @@
+--- kscd/libwm/cdrom.c Mon Jun 18 07:01:07 2001
++++ kscd/libwm/cdrom.c.new Thu Nov 29 21:37:42 2001
+@@ -182,6 +182,13 @@
+ struct wm_playlist *l;
+ int i;
+ int pos;
++
++ if(drive.get_trackcount == NULL)
++ {
++ perror("trackcount: function pointer NULL");
++ return (NULL);
++ }
++
+ if ((drive.get_trackcount)(&drive, &thiscd.ntracks) < 0)
+ {
+ perror("trackcount");
+@@ -217,6 +224,12 @@
+
+ for (i = 0; i < thiscd.ntracks; i++)
+ {
++ if(drive.get_trackinfo == NULL)
++ {
++ perror("CD track info read: function pointer null");
++ return (NULL);
++ }
++
+ if ((drive.get_trackinfo)(&drive, i + 1, &thiscd.trk[i].data,
+ &thiscd.trk[i].start) < 0)
+ {
+@@ -235,6 +248,12 @@
+ thiscd.trk[i].section = 0;
+ }
+
++ if(drive.get_cdlen == NULL)
++ {
++ perror("CD length read: function pointer null");
++ return (NULL);
++ }
++
+ if ((drive.get_cdlen)(&drive, &thiscd.trk[i].start) < 0)
+ {
+ perror("CD length read");
+@@ -305,6 +324,12 @@
+ if( (cur_cdmode == WM_CDM_STOPPED) || (cur_cdmode == WM_CDM_PLAYING) )
+ oldmode = cur_cdmode;
+
++ if(drive.get_drive_status == NULL)
++ {
++ perror("CD get drive status: function pointer NULL");
++ return (-1);
++ }
++
+ if( (drive.get_drive_status)(&drive, oldmode, &mode, &cur_frame,
+ &trackno, &cur_index) < 0)
+ {
+@@ -474,7 +499,8 @@
+ right = right < 0 ? 0 : right > 100 ? 100 : right;
+ /* printf("Left = %d, Right = %d\n", left, right);
+ */
+- (void) (drive.set_volume)(&drive, left, right);
++ if(drive.set_volume != NULL)
++ (void) (drive.set_volume)(&drive, left, right);
+ } /* cd_volume() */
+
+ #else
+@@ -513,7 +539,8 @@
+ if (right > 100)
+ right = 100;
+
+- (void) (drive.set_volume)(&drive, left, right);
++ if(drive.set_volume != NULL)
++ (void) (drive.set_volume)(&drive, left, right);
+ } /* cd_volume() */
+
+ #endif /* CLIF_VOL */
+@@ -536,18 +563,20 @@
+ switch (cur_cdmode) {
+ case WM_CDM_PLAYING: /* playing */
+ cur_cdmode = WM_CDM_PAUSED;
+- (drive.pause)(&drive);
+- paused_pos = cur_pos_rel;
++ if(drive.pause != NULL)
++ (drive.pause)(&drive);
++
++ paused_pos = cur_pos_rel;
+ break;
+
+ case WM_CDM_PAUSED: /* paused */
+ cur_cdmode = WM_CDM_PLAYING;
+ /* (drive.resume)(&drive); */
+- if ((drive.resume)(&drive) > 0 )
+- {
+- wm_cd_play(cur_track, paused_pos,
+- playlist[cur_listno-1].end);
+- }
++ if(drive.resume != NULL)
++ if ((drive.resume)(&drive) > 0 )
++ wm_cd_play(cur_track, paused_pos, playlist[cur_listno-1].end);
++ break;
++
+ default: /* */
+ break;
+ }
+@@ -568,7 +597,10 @@
+ {
+ cur_lasttrack = cur_firsttrack = -1;
+ cur_cdmode = WM_CDM_STOPPED;
+- (drive.stop)(&drive);
++
++ if(drive.stop != NULL)
++ (drive.stop)(&drive);
++
+ cur_track = 1;
+ }
+ } /* wm_cd_stop() */
+@@ -595,7 +627,8 @@
+ if (start >= end)
+ start = end-1;
+
+- (drive.play)(&drive, start, end, realstart);
++ if(drive.play != NULL)
++ (drive.play)(&drive, start, end, realstart);
+ }
+
+ /*
+@@ -681,6 +714,12 @@
+ {
+ int status;
+
++ if(drive.eject == NULL)
++ {
++ perror("Could not eject CD: function pointer NULL");
++ return (1);
++ }
++
+ status = (drive.eject)(&drive);
+ if (status < 0)
+ {
+@@ -705,6 +744,12 @@
+
+ int wm_cd_closetray(void)
+ {
++ if(drive.closetray == NULL)
++ {
++ perror("Could not close drive tray: function pointer NULL");
++ return (1);
++ }
++
+ return((drive.closetray)(&drive) ? 0 : wm_cd_status()==2 ? 1 : 0);
+ } /* wm_cd_closetray() */
+
+@@ -785,8 +830,9 @@
+ {
+ int left, right;
+
+- if ((drive.get_volume)(&drive, &left, &right) < 0 || left == -1)
+- return (max);
++ if(drive.get_volume != NULL)
++ if ((drive.get_volume)(&drive, &left, &right) < 0 || left == -1)
++ return (max);
+
+ left = (left * max + 99) / 100;
+ right = (right * max + 99) / 100;
diff --git a/audio/kdemultimedia2/files/patch-kscd.cpp b/audio/kdemultimedia2/files/patch-kscd.cpp
new file mode 100644
index 000000000000..905e3b303f9d
--- /dev/null
+++ b/audio/kdemultimedia2/files/patch-kscd.cpp
@@ -0,0 +1,19 @@
+--- kscd/kscd.cpp Sun Dec 2 15:08:44 2001
++++ kscd/kscd.cpp.new Sun Dec 2 15:10:04 2001
+@@ -1313,7 +1313,6 @@
+ /*
+ * cdMode
+ *
+- * - 'No disc' handling is missing
+ * - Data discs not recognized as data discs.
+ *
+ */
+@@ -1329,7 +1328,7 @@
+ if( sss == 2 )
+ have_new_cd = true;
+
+- if(sss < 0)
++ if(sss < 0 || sss == WM_CDS_NO_DISC)
+ {
+ if(cddrive_is_ok && (sss != WM_ERR_SCSI_INQUIRY_FAILED))
+ {
diff --git a/audio/kdemultimedia2/files/patch-plat_freebsd.c b/audio/kdemultimedia2/files/patch-plat_freebsd.c
new file mode 100644
index 000000000000..dd6c062ab01d
--- /dev/null
+++ b/audio/kdemultimedia2/files/patch-plat_freebsd.c
@@ -0,0 +1,11 @@
+--- kscd/libwm/plat_freebsd.c Tue Apr 10 13:34:52 2001
++++ kscd/libwm/plat_freebsd.c.new Thu Nov 29 22:20:56 2001
+@@ -159,6 +159,8 @@
+ wm_lib_message(WM_MSG_LEVEL_DEBUG|WM_MSG_CLASS, "calling wmcd_open()\n");
+ status = wmcd_open( d ); /* open it as usual */
+ wm_susleep( 1000 );
++ if(status == -EACCES || status == 1)
++ return status;
+ } while ( status != 0 );
+ return status;
+ } /* wmcd_reopen() */
diff --git a/audio/kdemultimedia2/pkg-plist b/audio/kdemultimedia2/pkg-plist
index 20b9d083eece..3c765f1e1561 100644
--- a/audio/kdemultimedia2/pkg-plist
+++ b/audio/kdemultimedia2/pkg-plist
@@ -756,15 +756,9 @@ share/mimelnk/audio/x-karaoke.desktop
share/mimelnk/text/xmcd.desktop
share/services/kmixctrl_restore.desktop
share/servicetypes/audiomidi.desktop
-@dirrm share/servicetypes
-@dirrm share/services
-@dirrm share/mimelnk/text
-@dirrm share/mimelnk/audio
-@dirrm share/mimelnk/application
@dirrm share/icons/hicolor/48x48/apps
@dirrm share/icons/hicolor/32x32/apps
@dirrm share/icons/hicolor/22x22/apps
-@dirrm share/icons/hicolor/16x16/apps
@dirrm share/doc/HTML/en/noatun
@dirrm share/doc/HTML/en/kscd
@dirrm share/doc/HTML/en/kmix
@@ -773,8 +767,6 @@ share/servicetypes/audiomidi.desktop
@dirrm share/doc/HTML/en/artsbuilder/images
@dirrm share/doc/HTML/en/artsbuilder
@dirrm share/doc/HTML/en/aktion
-@dirrm share/doc/HTML/en
-@dirrm share/config
@dirrm share/apps/noatun/skins/kaiman/k9
@dirrm share/apps/noatun/skins/kaiman/circle
@dirrm share/apps/noatun/skins/kaiman/car-preset
@@ -843,8 +835,6 @@ share/servicetypes/audiomidi.desktop
@dirrm share/applnk/Settings/Sound
@dirrm share/applnk/Settings
@dirrm share/applnk/Multimedia
+@dirrm share/applnk
@dirrm lib/mcop/Noatun
-@dirrm lib/mcop/Arts
-@dirrm lib/mcop
@dirrm include/noatun
-@dirrm include/arts
diff --git a/audio/kdemultimedia3/Makefile b/audio/kdemultimedia3/Makefile
index 8cb9b4b99b3a..06d02616bd07 100644
--- a/audio/kdemultimedia3/Makefile
+++ b/audio/kdemultimedia3/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME= kdemultimedia
-PORTVERSION= 2.2.1
+PORTVERSION= 2.2.2
CATEGORIES= audio kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${PORTVERSION}/src
@@ -14,14 +14,21 @@ DIST_SUBDIR= KDE
MAINTAINER= kde@FreeBSD.org
+BUILD_DEPENDS= autoconf213:${PORTSDIR}/devel/autoconf213 \
+ automake14:${PORTSDIR}/devel/automake14 \
+ objprelink:${PORTSDIR}/devel/objprelink
RUN_DEPENDS= xanim:${PORTSDIR}/graphics/xanim
USE_KDELIBS_VER=2
USE_BZIP2= yes
INSTALLS_SHLIB= yes
-USE_AUTOCONF= yes
+GNU_CONFIGURE= yes
CONFIGURE_ARGS+=--with-qt-includes=${X11BASE}/include/qt2 \
- --with-qt-libraries=${X11BASE}/lib
+ --with-qt-libraries=${X11BASE}/lib \
+ --enable-objprelink
+.if defined(PARALLEL_PACKAGE_BUILD) || defined(WANT_KDE_NDEBUG)
+CONFIGURE_ARGS+=--disable-debug
+.endif
USE_GMAKE= yes
MAKE_ENV= ${CONFIGURE_ENV}
@@ -46,9 +53,21 @@ pre-everything::
.endif
pre-configure:
- ${PERL} -pi -e "s@all_includes=\"@all_includes=\"-I/usr/include @g" ${WRKSRC}/acinclude.m4 ${WRKSRC}/aclocal.m4
- ${PERL} -pi -e 's,kscd_compile=no,kscd_compile=yes,g; \
- s,kde_artsplug_compiles = xno,kde_argsplug_compiles = x,g' ${WRKSRC}/configure.in
+ ${PERL} -pi -e "s@all_includes=\"@all_includes=\"-I/usr/include @g" \
+ ${WRKSRC}/acinclude.m4 ${WRKSRC}/aclocal.m4
+ ${PERL} -pi -e \
+ 's,kscd_compile=no,kscd_compile=yes,g; \
+ s,kde_artsplug_compiles = xno,kde_artsplug_compiles = x,g' \
+ ${WRKSRC}/kscd/configure.in.in
+ ${MKDIR} ${WRKSRC}/auto-bin
+.for AC in autoconf autoheader
+ ${LN} -sf ${LOCALBASE}/bin/${AC}213 ${WRKSRC}/auto-bin/${AC}
+.endfor
+.for AM in automake aclocal
+ ${LN} -sf ${LOCALBASE}/bin/${AM}14 ${WRKSRC}/auto-bin/${AM}
+.endfor
+ cd ${WRKSRC} && env PATH=$$PATH:${WRKSRC}/auto-bin \
+ ${GMAKE} -f Makefile.cvs
post-install:
@${ECHO_MSG}
diff --git a/audio/kdemultimedia3/distinfo b/audio/kdemultimedia3/distinfo
index ab43ed67b80f..b2e1bbcb1e21 100644
--- a/audio/kdemultimedia3/distinfo
+++ b/audio/kdemultimedia3/distinfo
@@ -1 +1 @@
-MD5 (KDE/kdemultimedia-2.2.1.tar.bz2) = c4724c00c6d2c69ccc923de944cf7983
+MD5 (KDE/kdemultimedia-2.2.2.tar.bz2) = 76981ca284663093cd0bc37500e10441
diff --git a/audio/kdemultimedia3/files/patch-cdrom.c b/audio/kdemultimedia3/files/patch-cdrom.c
new file mode 100644
index 000000000000..f833b837a051
--- /dev/null
+++ b/audio/kdemultimedia3/files/patch-cdrom.c
@@ -0,0 +1,163 @@
+--- kscd/libwm/cdrom.c Mon Jun 18 07:01:07 2001
++++ kscd/libwm/cdrom.c.new Thu Nov 29 21:37:42 2001
+@@ -182,6 +182,13 @@
+ struct wm_playlist *l;
+ int i;
+ int pos;
++
++ if(drive.get_trackcount == NULL)
++ {
++ perror("trackcount: function pointer NULL");
++ return (NULL);
++ }
++
+ if ((drive.get_trackcount)(&drive, &thiscd.ntracks) < 0)
+ {
+ perror("trackcount");
+@@ -217,6 +224,12 @@
+
+ for (i = 0; i < thiscd.ntracks; i++)
+ {
++ if(drive.get_trackinfo == NULL)
++ {
++ perror("CD track info read: function pointer null");
++ return (NULL);
++ }
++
+ if ((drive.get_trackinfo)(&drive, i + 1, &thiscd.trk[i].data,
+ &thiscd.trk[i].start) < 0)
+ {
+@@ -235,6 +248,12 @@
+ thiscd.trk[i].section = 0;
+ }
+
++ if(drive.get_cdlen == NULL)
++ {
++ perror("CD length read: function pointer null");
++ return (NULL);
++ }
++
+ if ((drive.get_cdlen)(&drive, &thiscd.trk[i].start) < 0)
+ {
+ perror("CD length read");
+@@ -305,6 +324,12 @@
+ if( (cur_cdmode == WM_CDM_STOPPED) || (cur_cdmode == WM_CDM_PLAYING) )
+ oldmode = cur_cdmode;
+
++ if(drive.get_drive_status == NULL)
++ {
++ perror("CD get drive status: function pointer NULL");
++ return (-1);
++ }
++
+ if( (drive.get_drive_status)(&drive, oldmode, &mode, &cur_frame,
+ &trackno, &cur_index) < 0)
+ {
+@@ -474,7 +499,8 @@
+ right = right < 0 ? 0 : right > 100 ? 100 : right;
+ /* printf("Left = %d, Right = %d\n", left, right);
+ */
+- (void) (drive.set_volume)(&drive, left, right);
++ if(drive.set_volume != NULL)
++ (void) (drive.set_volume)(&drive, left, right);
+ } /* cd_volume() */
+
+ #else
+@@ -513,7 +539,8 @@
+ if (right > 100)
+ right = 100;
+
+- (void) (drive.set_volume)(&drive, left, right);
++ if(drive.set_volume != NULL)
++ (void) (drive.set_volume)(&drive, left, right);
+ } /* cd_volume() */
+
+ #endif /* CLIF_VOL */
+@@ -536,18 +563,20 @@
+ switch (cur_cdmode) {
+ case WM_CDM_PLAYING: /* playing */
+ cur_cdmode = WM_CDM_PAUSED;
+- (drive.pause)(&drive);
+- paused_pos = cur_pos_rel;
++ if(drive.pause != NULL)
++ (drive.pause)(&drive);
++
++ paused_pos = cur_pos_rel;
+ break;
+
+ case WM_CDM_PAUSED: /* paused */
+ cur_cdmode = WM_CDM_PLAYING;
+ /* (drive.resume)(&drive); */
+- if ((drive.resume)(&drive) > 0 )
+- {
+- wm_cd_play(cur_track, paused_pos,
+- playlist[cur_listno-1].end);
+- }
++ if(drive.resume != NULL)
++ if ((drive.resume)(&drive) > 0 )
++ wm_cd_play(cur_track, paused_pos, playlist[cur_listno-1].end);
++ break;
++
+ default: /* */
+ break;
+ }
+@@ -568,7 +597,10 @@
+ {
+ cur_lasttrack = cur_firsttrack = -1;
+ cur_cdmode = WM_CDM_STOPPED;
+- (drive.stop)(&drive);
++
++ if(drive.stop != NULL)
++ (drive.stop)(&drive);
++
+ cur_track = 1;
+ }
+ } /* wm_cd_stop() */
+@@ -595,7 +627,8 @@
+ if (start >= end)
+ start = end-1;
+
+- (drive.play)(&drive, start, end, realstart);
++ if(drive.play != NULL)
++ (drive.play)(&drive, start, end, realstart);
+ }
+
+ /*
+@@ -681,6 +714,12 @@
+ {
+ int status;
+
++ if(drive.eject == NULL)
++ {
++ perror("Could not eject CD: function pointer NULL");
++ return (1);
++ }
++
+ status = (drive.eject)(&drive);
+ if (status < 0)
+ {
+@@ -705,6 +744,12 @@
+
+ int wm_cd_closetray(void)
+ {
++ if(drive.closetray == NULL)
++ {
++ perror("Could not close drive tray: function pointer NULL");
++ return (1);
++ }
++
+ return((drive.closetray)(&drive) ? 0 : wm_cd_status()==2 ? 1 : 0);
+ } /* wm_cd_closetray() */
+
+@@ -785,8 +830,9 @@
+ {
+ int left, right;
+
+- if ((drive.get_volume)(&drive, &left, &right) < 0 || left == -1)
+- return (max);
++ if(drive.get_volume != NULL)
++ if ((drive.get_volume)(&drive, &left, &right) < 0 || left == -1)
++ return (max);
+
+ left = (left * max + 99) / 100;
+ right = (right * max + 99) / 100;
diff --git a/audio/kdemultimedia3/files/patch-kscd.cpp b/audio/kdemultimedia3/files/patch-kscd.cpp
new file mode 100644
index 000000000000..905e3b303f9d
--- /dev/null
+++ b/audio/kdemultimedia3/files/patch-kscd.cpp
@@ -0,0 +1,19 @@
+--- kscd/kscd.cpp Sun Dec 2 15:08:44 2001
++++ kscd/kscd.cpp.new Sun Dec 2 15:10:04 2001
+@@ -1313,7 +1313,6 @@
+ /*
+ * cdMode
+ *
+- * - 'No disc' handling is missing
+ * - Data discs not recognized as data discs.
+ *
+ */
+@@ -1329,7 +1328,7 @@
+ if( sss == 2 )
+ have_new_cd = true;
+
+- if(sss < 0)
++ if(sss < 0 || sss == WM_CDS_NO_DISC)
+ {
+ if(cddrive_is_ok && (sss != WM_ERR_SCSI_INQUIRY_FAILED))
+ {
diff --git a/audio/kdemultimedia3/files/patch-plat_freebsd.c b/audio/kdemultimedia3/files/patch-plat_freebsd.c
new file mode 100644
index 000000000000..dd6c062ab01d
--- /dev/null
+++ b/audio/kdemultimedia3/files/patch-plat_freebsd.c
@@ -0,0 +1,11 @@
+--- kscd/libwm/plat_freebsd.c Tue Apr 10 13:34:52 2001
++++ kscd/libwm/plat_freebsd.c.new Thu Nov 29 22:20:56 2001
+@@ -159,6 +159,8 @@
+ wm_lib_message(WM_MSG_LEVEL_DEBUG|WM_MSG_CLASS, "calling wmcd_open()\n");
+ status = wmcd_open( d ); /* open it as usual */
+ wm_susleep( 1000 );
++ if(status == -EACCES || status == 1)
++ return status;
+ } while ( status != 0 );
+ return status;
+ } /* wmcd_reopen() */
diff --git a/audio/kdemultimedia3/pkg-plist b/audio/kdemultimedia3/pkg-plist
index 20b9d083eece..3c765f1e1561 100644
--- a/audio/kdemultimedia3/pkg-plist
+++ b/audio/kdemultimedia3/pkg-plist
@@ -756,15 +756,9 @@ share/mimelnk/audio/x-karaoke.desktop
share/mimelnk/text/xmcd.desktop
share/services/kmixctrl_restore.desktop
share/servicetypes/audiomidi.desktop
-@dirrm share/servicetypes
-@dirrm share/services
-@dirrm share/mimelnk/text
-@dirrm share/mimelnk/audio
-@dirrm share/mimelnk/application
@dirrm share/icons/hicolor/48x48/apps
@dirrm share/icons/hicolor/32x32/apps
@dirrm share/icons/hicolor/22x22/apps
-@dirrm share/icons/hicolor/16x16/apps
@dirrm share/doc/HTML/en/noatun
@dirrm share/doc/HTML/en/kscd
@dirrm share/doc/HTML/en/kmix
@@ -773,8 +767,6 @@ share/servicetypes/audiomidi.desktop
@dirrm share/doc/HTML/en/artsbuilder/images
@dirrm share/doc/HTML/en/artsbuilder
@dirrm share/doc/HTML/en/aktion
-@dirrm share/doc/HTML/en
-@dirrm share/config
@dirrm share/apps/noatun/skins/kaiman/k9
@dirrm share/apps/noatun/skins/kaiman/circle
@dirrm share/apps/noatun/skins/kaiman/car-preset
@@ -843,8 +835,6 @@ share/servicetypes/audiomidi.desktop
@dirrm share/applnk/Settings/Sound
@dirrm share/applnk/Settings
@dirrm share/applnk/Multimedia
+@dirrm share/applnk
@dirrm lib/mcop/Noatun
-@dirrm lib/mcop/Arts
-@dirrm lib/mcop
@dirrm include/noatun
-@dirrm include/arts