diff --git a/audio/wmcdplay/Makefile b/audio/wmcdplay/Makefile new file mode 100644 index 000000000000..42586bfde266 --- /dev/null +++ b/audio/wmcdplay/Makefile @@ -0,0 +1,22 @@ +# New ports collection makefile for: wmcdplay +# Version required: 0.8 +# Date created: 7 December 1998 +# Whom: Chia-liang Kao +# +# $Id$ +# + +DISTNAME= wmcdplay-0.8 +CATEGORIES= audio +MASTER_SITES= ftp://ftp.windowmaker.org/pub/contrib/srcs/apps/ + +MAINTAINER= clkao@CirX.ORG + +LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm + +WRKSRC= ${WRKDIR}/wmcdplay + +USE_IMAKE= yes +NO_INSTALL_MANPAGES= yes + +.include diff --git a/audio/wmcdplay/distinfo b/audio/wmcdplay/distinfo new file mode 100644 index 000000000000..deaf97b1853b --- /dev/null +++ b/audio/wmcdplay/distinfo @@ -0,0 +1 @@ +MD5 (wmcdplay-0.8.tar.gz) = c6c6ccf979e74b5f63e1551ba40dab7a diff --git a/audio/wmcdplay/files/patch-aa b/audio/wmcdplay/files/patch-aa new file mode 100644 index 000000000000..1ce21d1cb74b --- /dev/null +++ b/audio/wmcdplay/files/patch-aa @@ -0,0 +1,287 @@ +--- cdctl.h.orig Sat Dec 5 23:23:28 1998 ++++ cdctl.h Sat Dec 5 23:23:27 1998 +@@ -11,7 +11,7 @@ + // define these if you have troubles, otherwise they slow responses + // #define _CDCTL_STOP_BEFORE_PLAY + // #define _CDCTL_START_BEFORE_PLAY +-// #define _CDCTL_HARD_STOP ++#define _CDCTL_HARD_STOP + + #include + #include +@@ -20,8 +20,7 @@ + #include + #include + #include +-#include +-#include ++#include + + // CD status values + #define ssData 0 +@@ -67,6 +66,9 @@ + #define FALSE 0 + #endif + ++#define CD_MSF_OFFSET 150 ++#define CDROM_DATA_TRACK 4 ++ + class CDCtl + { + public: +@@ -102,12 +104,11 @@ + case acStop: + + #ifdef _CDCTL_HARD_STOP +- ioctl(cdfd,CDROMSTOP); ++ ioctl(cdfd,CDIOCSTOP); + #endif + #ifndef _CDCTL_HARD_STOP +- ioctl(cdfd,CDROMSTART); ++ ioctl(cdfd,CDIOCSTART); + #endif +- + break; + case acPlay: + status_state=ssPlaying; +@@ -115,10 +116,10 @@ + tskOurPlay=TRUE; + break; + case acPause: +- ioctl(cdfd,CDROMPAUSE); ++ ioctl(cdfd,CDIOCPAUSE); + break; + case acResume: +- ioctl(cdfd,CDROMRESUME); ++ ioctl(cdfd,CDIOCRESUME); + break; + case acPrev: + newtrk--; +@@ -145,13 +146,13 @@ + } + break; + case acEject: +- if(ioctl(cdfd,CDROMEJECT)) ++ if(ioctl(cdfd,CDIOCEJECT)) + status_state=ssNoCD; + else + status_state=ssTrayOpen; + break; + case acClose: +- ioctl(cdfd,CDROMCLOSETRAY); ++ ioctl(cdfd,CDIOCCLOSE); + status_state=ssNoCD; + break; + } +@@ -160,9 +161,15 @@ + } + void doStatus(){ + if(cdfdopen){ +- struct cdrom_subchnl sc; +- sc.cdsc_format=CDROM_LBA; +- if(ioctl(cdfd, CDROMSUBCHNL, &sc)){ ++ struct ioc_read_subchannel irs; ++ struct cd_sub_channel_info csci; ++ ++ memset(&irs, 0, sizeof(irs)); ++ irs.data=&csci; ++ irs.data_len=sizeof(csci); ++ irs.address_format=CD_LBA_FORMAT; ++ irs.data_format=CD_MEDIA_CATALOG; ++ if(ioctl(cdfd, CDIOCREADSUBCHANNEL, &irs)){ + if(status_state!=ssNoCD) + status_state=ssTrayOpen; + status_track=0; +@@ -171,18 +178,18 @@ + else{ + if(status_state==ssNoCD || status_state==ssTrayOpen) + readTOC(); +- switch(sc.cdsc_audiostatus){ +- case CDROM_AUDIO_PLAY: ++ switch(csci.header.audio_status){ ++ case CD_AS_PLAY_IN_PROGRESS: + if(status_state==ssStopped) + tskOurPlay=FALSE; + status_state=ssPlaying; + break; +- case CDROM_AUDIO_PAUSED: ++ case CD_AS_PLAY_PAUSED: + if(status_state==ssStopped) + tskOurPlay=FALSE; + status_state=ssPaused; + break; +- case CDROM_AUDIO_COMPLETED: ++ case CD_AS_PLAY_COMPLETED: + if(tskOurPlay){ + selecttrack(); + doStatus(); +@@ -194,7 +201,7 @@ + default: + status_state=ssStopped; + } +- trackinfo(&sc); ++ trackinfo(&csci); + if(cd_trklist[status_track].track_data) + status_state=ssData; + } +@@ -202,19 +209,21 @@ + } + void setVolume(int l, int r){ + if(cdfdopen){ +- struct cdrom_volctrl vol; +- vol.channel0=l; +- vol.channel1=r; +- ioctl(cdfd,CDROMVOLCTRL,&vol); ++ struct ioc_vol vol; ++ vol.vol[0]=l; ++ vol.vol[1]=r; ++ vol.vol[2]=0; ++ vol.vol[3]=0; ++ ioctl(cdfd,CDIOCSETVOL,&vol); + readVolume(); + } + } + void readVolume(){ + if(cdfdopen){ +- struct cdrom_volctrl vol; +- ioctl(cdfd,CDROMVOLREAD,&vol); +- status_volumel=vol.channel0; +- status_volumer=vol.channel1; ++ struct ioc_vol vol; ++ ioctl(cdfd,CDIOCGETVOL,&vol); ++ status_volumel=vol.vol[0]; ++ status_volumer=vol.vol[1]; + } + } + int getVolumeL(){ +@@ -260,36 +269,67 @@ + return status_pos-cd_trklist[status_track].track_start; + } + private: ++#if 0 + void readTOC(){ + if(cd_trklist!=NULL) + free(cd_trklist); +- struct cdrom_tochdr hdr; +- ioctl(cdfd, CDROMREADTOCHDR, &hdr); +- cd_tracks=hdr.cdth_trk1; ++ struct ioc_toc_header hdr; ++ ioctl(cdfd, CDIOREADTOCHEADER, &hdr); ++ cd_tracks=hdr.ending_track - hdr.starting_track + 1; + cd_trklist=(struct CDTrack *)malloc(cd_tracks*sizeof(struct CDTrack)); +- struct cdrom_tocentry te; ++ struct ioc_read_toc_single_entry te; + int prev_addr=0; + for(int i=0;i<=cd_tracks;i++){ + if(i==cd_tracks) +- te.cdte_track=CDROM_LEADOUT; ++ te.track=CDROM_LEADOUT; + else +- te.cdte_track=i+1; +- te.cdte_format=CDROM_LBA; +- ioctl(cdfd, CDROMREADTOCENTRY, &te); ++ te.track=i+1; ++ te.address_format=CD_LBA_FORMAT; ++ ioctl(cdfd, CDIOREADTOCENTRY, &te); + if(i>0) +- cd_trklist[i-1].track_len = te.cdte_addr.lba - prev_addr; +- prev_addr=te.cdte_addr.lba; ++ cd_trklist[i-1].track_len = ntohl(te.entry.addr.lba) - prev_addr; ++ prev_addr=ntohl(te.entry.addr.lba); + if(icdsc_absaddr.lba; ++ status_pos=ntohl(subchnl->what.position.absaddr.lba); + for(status_track=0;status_track + +FreeBSD port patches contributed by Chia-hsing Yu diff --git a/audio/wmcdplay/pkg-plist b/audio/wmcdplay/pkg-plist new file mode 100644 index 000000000000..891d9d69f922 --- /dev/null +++ b/audio/wmcdplay/pkg-plist @@ -0,0 +1 @@ +bin/wmcdplay