head 1.2; access; symbols pkgsrc-2013Q2:1.2.0.36 pkgsrc-2013Q2-base:1.2 pkgsrc-2012Q4:1.2.0.34 pkgsrc-2012Q4-base:1.2 pkgsrc-2011Q4:1.2.0.32 pkgsrc-2011Q4-base:1.2 pkgsrc-2011Q2:1.2.0.30 pkgsrc-2011Q2-base:1.2 pkgsrc-2009Q4:1.2.0.28 pkgsrc-2009Q4-base:1.2 pkgsrc-2008Q4:1.2.0.26 pkgsrc-2008Q4-base:1.2 pkgsrc-2008Q3:1.2.0.24 pkgsrc-2008Q3-base:1.2 cube-native-xorg:1.2.0.22 cube-native-xorg-base:1.2 pkgsrc-2008Q2:1.2.0.20 pkgsrc-2008Q2-base:1.2 pkgsrc-2008Q1:1.2.0.18 pkgsrc-2008Q1-base:1.2 pkgsrc-2007Q4:1.2.0.16 pkgsrc-2007Q4-base:1.2 pkgsrc-2007Q3:1.2.0.14 pkgsrc-2007Q3-base:1.2 pkgsrc-2007Q2:1.2.0.12 pkgsrc-2007Q2-base:1.2 pkgsrc-2007Q1:1.2.0.10 pkgsrc-2007Q1-base:1.2 pkgsrc-2006Q4:1.2.0.8 pkgsrc-2006Q4-base:1.2 pkgsrc-2006Q3:1.2.0.6 pkgsrc-2006Q3-base:1.2 pkgsrc-2006Q2:1.2.0.4 pkgsrc-2006Q2-base:1.2 pkgsrc-2006Q1:1.2.0.2 pkgsrc-2006Q1-base:1.2 pkgsrc-2005Q4:1.1.1.1.0.20 pkgsrc-2005Q4-base:1.1.1.1 pkgsrc-2005Q3:1.1.1.1.0.18 pkgsrc-2005Q3-base:1.1.1.1 pkgsrc-2005Q2:1.1.1.1.0.16 pkgsrc-2005Q2-base:1.1.1.1 pkgsrc-2005Q1:1.1.1.1.0.14 pkgsrc-2005Q1-base:1.1.1.1 pkgsrc-2004Q4:1.1.1.1.0.12 pkgsrc-2004Q4-base:1.1.1.1 pkgsrc-2004Q3:1.1.1.1.0.10 pkgsrc-2004Q3-base:1.1.1.1 pkgsrc-2004Q2:1.1.1.1.0.8 pkgsrc-2004Q2-base:1.1.1.1 pkgsrc-2004Q1:1.1.1.1.0.6 pkgsrc-2004Q1-base:1.1.1.1 pkgsrc-2003Q4:1.1.1.1.0.4 pkgsrc-2003Q4-base:1.1.1.1 netbsd-1-6-1:1.1.1.1.0.2 netbsd-1-6-1-base:1.1.1.1 pkgsrc-base:1.1.1.1 TNF:1.1.1; locks; strict; comment @# @; 1.2 date 2006.01.11.15.20.48; author xtraeme; state dead; branches; next 1.1; 1.1 date 2002.12.02.18.41.20; author drochner; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2002.12.02.18.41.20; author drochner; state Exp; branches; next ; desc @@ 1.2 log @Remove cdrecord-xcdroast. This package is not longer needed with the current cdrtools/xcdroast version. @ text @$NetBSD: patch-ai,v 1.1 2002/12/02 18:41:20 drochner Exp $ --- libscg/scsi-bsd.c.orig Mon Oct 21 15:57:07 2002 +++ libscg/scsi-bsd.c Sat Nov 30 18:20:19 2002 @@@@ -48,7 +48,7 @@@@ * Choose your name instead of "schily" and make clear that the version * string is related to a modified source. */ -LOCAL char _scg_trans_version[] = "scsi-bsd.c-1.41"; /* The version for this transport*/ +LOCAL char _scg_trans_version[] = "scsi-bsd.c-1.41nb1"; /* The version for this transport*/ #define MAX_SCG 16 /* Max # of SCSI controllers */ #define MAX_TGT 16 @@@@ -108,7 +108,7 @@@@ * return "schily" for the SCG_AUTHOR request. */ case SCG_AUTHOR: - return (_scg_auth_schily); + return ("frueauf"); case SCG_SCCS_ID: return (__sccsid); } @@@@ -140,6 +140,15 @@@@ register int l; register int nopen = 0; char devname[64]; +#if defined(__NetBSD__) + struct scsi_addr mysaddr; +#if defined(__i386__) + char slicename[] = "d"; /* i386 is special */ +#else + char slicename[] = "c"; /* this is what the rest uses */ +#endif + char *myslicename = slicename; +#endif if (busno >= MAX_SCG || tgt >= MAX_TGT || tlun >= MAX_LUN) { errno = EINVAL; @@@@ -166,6 +175,60 @@@@ if ((device != NULL && *device != '\0') || (busno == -2 && tgt == -2)) goto openbydev; + +/* + * I know of no method in NetBSD to probe the scsibus and get the mapping + * busnumber,target,lun --> devicename. + * + * Because of this implement a true bruteforce hack to find + * out what cdroms there are. + * + * Note that this method only finds cd0-cd7. Anything higher + * than this needs additional tweaks. + * + * Feel free to implement this cleanly if you have better knowledge. + * Until then this helps to get -scanbus und thus xcdroast working :-) + * + */ +#if defined(__NetBSD__) + if (busno >= 0 && tgt >= 0 && tlun >= 0) { + for (l=0; l < MAX_LUN ; l++) { + sprintf(devname, "/dev/rcd%d%s", l, myslicename); + f = open(devname, O_RDWR); + if (f >= 0) { + if (ioctl(f, SCIOCIDENTIFY, &mysaddr) < 0) { + close(f); + errno = EINVAL; + return (0); + } + if (busno == SADDR_BUS(mysaddr) && tgt == SADDR_TARGET(mysaddr) && tlun == SADDR_LUN(mysaddr)) { + scglocal(scgp)->scgfiles[busno][tgt][tlun] = f; + return(1); + } + } else goto openbydev; + } + } else for (l=0; l < MAX_LUN ; l++) { + sprintf(devname, "/dev/rcd%d%s", l, myslicename); + f = open(devname, O_RDWR); + if (f >= 0) { + if (ioctl(f, SCIOCIDENTIFY, &mysaddr) < 0) { + close(f); + errno = EINVAL; + return (0); + } + scg_scsibus(scgp) = busno = SADDR_BUS(mysaddr); + scg_target(scgp) = tgt = SADDR_TARGET(mysaddr); + if ((tlun >= 0) && (tlun != SADDR_LUN(mysaddr))) { + close(f); + errno = EINVAL; + return (0); + } + scg_lun(scgp) = tlun = SADDR_LUN(mysaddr); + if (scg_setup(scgp, f, busno, tgt, tlun)) + nopen++; + } + } +#else /* not __NetBSD__ */ if (busno >= 0 && tgt >= 0 && tlun >= 0) { js_snprintf(devname, sizeof(devname), @@@@ -202,6 +265,7 @@@@ } } } +#endif /* end of not __NetBSD__ */ /* * Could not open /dev/su-* or got dev=devname:b,l,l / dev=devname:@@,l * We do the apropriate tests and try our best. @ 1.1 log @Initial revision @ text @d1 1 a1 1 $NetBSD$ @ 1.1.1.1 log @Provide a cdrecord (aka cdrtools) pkg exclusively for use by xcdroast. xcdroast is quite picky about cdrecord versions, so we are decoupled. (for the upcoming xcdroast-0.98alpha11 pkg) @ text @@