diff options
author | mycroft <mycroft> | 2004-10-10 10:48:39 +0000 |
---|---|---|
committer | mycroft <mycroft> | 2004-10-10 10:48:39 +0000 |
commit | 106fd5ec1f0753c8335b497c08f117eafba452ae (patch) | |
tree | 64d84aae8761c0d6f38d1b66fc61e2e3f3d95076 /audio/cdparanoia/patches | |
parent | 8ed1ee087acc99239d9b346877db5964496a2ebb (diff) | |
download | pkgsrc-106fd5ec1f0753c8335b497c08f117eafba452ae.tar.gz |
Fix a problem with our hacked version of cdda_identify_scsi() that was
causing kaudiocreator to fail with a mysterious "Unknown error".
Diffstat (limited to 'audio/cdparanoia/patches')
-rw-r--r-- | audio/cdparanoia/patches/patch-cf | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/audio/cdparanoia/patches/patch-cf b/audio/cdparanoia/patches/patch-cf index 51bd63d8491..495a546565a 100644 --- a/audio/cdparanoia/patches/patch-cf +++ b/audio/cdparanoia/patches/patch-cf @@ -1,4 +1,4 @@ -$NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ +$NetBSD: patch-cf,v 1.5 2004/10/10 10:48:39 mycroft Exp $ --- interface/scan_devices.c.orig 2001-03-26 15:44:01.000000000 +1000 +++ interface/scan_devices.c @@ -11,7 +11,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ #define MAX_DEV_LEN 20 /* Safe because strings only come from below */ /* must be absolute paths! */ static char *scsi_cdrom_prefixes[]={ -@@ -49,10 +51,18 @@ static char *cdrom_devices[]={ +@@ -49,10 +51,18 @@ "/dev/cm206cd", "/dev/gscd", "/dev/optcd",NULL}; @@ -30,7 +30,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ cdrom_drive *cdda_find_a_cdrom(int messagedest,char **messages){ /* Brute force... */ -@@ -75,10 +85,12 @@ cdrom_drive *cdda_find_a_cdrom(int messa +@@ -75,10 +85,12 @@ if((d=cdda_identify(buffer,messagedest,messages))) return(d); idmessage(messagedest,messages,"",NULL); @@ -43,7 +43,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ } }else{ /* Name. Go for it. */ -@@ -98,6 +110,16 @@ cdrom_drive *cdda_find_a_cdrom(int messa +@@ -98,6 +110,16 @@ } return(NULL); } @@ -60,7 +60,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ cdrom_drive *cdda_identify(const char *device, int messagedest,char **messages){ struct stat st; -@@ -117,8 +139,14 @@ cdrom_drive *cdda_identify(const char *d +@@ -117,8 +139,14 @@ } #endif @@ -75,7 +75,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ #ifdef CDDA_TEST if(!d)d=cdda_identify_test(device,messagedest,messages); -@@ -146,6 +174,7 @@ char *test_resolve_symlink(const char *f +@@ -146,6 +174,7 @@ cdrom_drive *cdda_identify_cooked(const char *dev, int messagedest, char **messages){ @@ -83,7 +83,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ cdrom_drive *d=NULL; struct stat st; int fd=-1; -@@ -273,8 +302,59 @@ cdrom_drive *cdda_identify_cooked(const +@@ -273,8 +302,59 @@ idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description); return(d); @@ -143,7 +143,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ struct sg_id { long l1; /* target | lun << 8 | channel << 16 | low_ino << 24 */ long l2; /* Unique id */ -@@ -289,12 +369,18 @@ typedef struct scsiid{ +@@ -289,12 +369,18 @@ /* Even *this* isn't as simple as it bloody well should be :-P */ /* SG has an easy interface, but SCSI overall does not */ static int get_scsi_id(int fd, scsiid *id){ @@ -162,7 +162,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ if(ioctl(fd,SCSI_IOCTL_GET_IDLUN,&argid))return(-1); id->bus=argid.l2; /* for now */ id->id=argid.l1&0xff; -@@ -302,6 +388,13 @@ static int get_scsi_id(int fd, scsiid *i +@@ -302,6 +388,13 @@ if(ioctl(fd,SCSI_IOCTL_GET_BUS_NUMBER,&busarg)==0) id->bus=busarg; @@ -176,7 +176,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ return(0); } -@@ -390,6 +483,7 @@ matchfail: +@@ -390,6 +483,7 @@ if(dev!=-1)close(dev); return(NULL); } @@ -184,7 +184,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ void strscat(char *a,char *b,int n){ int i; -@@ -401,6 +495,7 @@ void strscat(char *a,char *b,int n){ +@@ -401,6 +495,7 @@ strcat(a," "); } @@ -192,7 +192,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ /* At this point, we're going to punt compatability before SG2, and allow only SG2 and SG3 */ static int verify_SG_version(cdrom_drive *d,int messagedest, -@@ -430,7 +525,9 @@ static int verify_SG_version(cdrom_drive +@@ -430,7 +525,9 @@ idmessage(messagedest,messages,buffer,""); return(major); } @@ -202,7 +202,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ cdrom_drive *cdda_identify_scsi(const char *generic_device, const char *ioctl_device, int messagedest, char **messages){ -@@ -460,6 +557,7 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -460,6 +557,7 @@ generic_device); return(NULL); } @@ -210,7 +210,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ if((int)(g_st.st_rdev>>8)!=SCSI_GENERIC_MAJOR){ if((int)(g_st.st_rdev>>8)!=SCSI_CDROM_MAJOR){ idmessage(messagedest,messages,"\t\t%s is not a SCSI device", -@@ -471,6 +569,7 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -471,6 +569,7 @@ ioctl_device=temp; } } @@ -218,7 +218,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ } if(ioctl_device){ if(stat(ioctl_device,&i_st)){ -@@ -478,6 +577,7 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -478,6 +577,7 @@ ioctl_device); return(NULL); } @@ -226,7 +226,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ if((int)(i_st.st_rdev>>8)!=SCSI_CDROM_MAJOR){ if((int)(i_st.st_rdev>>8)!=SCSI_GENERIC_MAJOR){ idmessage(messagedest,messages,"\t\t%s is not a SCSI device", -@@ -489,6 +589,7 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -489,6 +589,7 @@ ioctl_device=temp; } } @@ -234,7 +234,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ } /* we need to resolve any symlinks for the lookup code to work */ -@@ -505,6 +606,7 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -505,6 +606,7 @@ } if(!generic_device || !ioctl_device){ @@ -242,17 +242,20 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ if(generic_device){ ioctl_device= scsi_match(generic_device,scsi_cdrom_prefixes, -@@ -520,6 +622,9 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -520,6 +622,12 @@ if(!generic_device) goto cdda_identify_scsi_fail; } +#else -+ goto cdda_identify_scsi_fail; ++ if(!generic_device) ++ generic_device = strdup(ioctl_device); ++ else ++ ioctl_device = strdup(generic_device); +#endif } idmessage(messagedest,messages,"\t\tgeneric device: %s",generic_device); -@@ -556,6 +661,7 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -556,6 +664,7 @@ type=(int)(i_st.st_rdev>>8); @@ -260,7 +263,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ if(type==SCSI_CDROM_MAJOR){ if (!S_ISBLK(i_st.st_mode)) { idmessage(messagedest,messages,"\t\tSCSI CDROM device %s not a " -@@ -567,8 +673,10 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -567,8 +676,10 @@ "major number",ioctl_device); goto cdda_identify_scsi_fail; } @@ -271,7 +274,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ if((int)(g_st.st_rdev>>8)==SCSI_GENERIC_MAJOR){ if (!S_ISCHR(g_st.st_mode)) { idmessage(messagedest,messages,"\t\tGeneric SCSI device %s not a " -@@ -580,6 +688,7 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -580,6 +691,7 @@ "major number",generic_device); goto cdda_identify_scsi_fail; } @@ -279,7 +282,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ d=calloc(1,sizeof(cdrom_drive)); -@@ -590,6 +699,7 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -590,6 +702,7 @@ d->bigendianp=-1; /* We don't know yet... */ d->nsectors=-1; @@ -287,7 +290,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ version=verify_SG_version(d,messagedest,messages); switch(version){ case -1:case 0:case 1: -@@ -599,6 +709,9 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -599,6 +712,9 @@ d->interface=GENERIC_SCSI; break; } @@ -297,7 +300,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ /* malloc our big buffer for scsi commands */ d->sg=malloc(MAX_BIG_BUFF_SIZE); -@@ -617,7 +730,16 @@ cdrom_drive *cdda_identify_scsi(const ch +@@ -617,7 +733,16 @@ /* It would seem some TOSHIBA CDROMs gets things wrong */ @@ -315,7 +318,7 @@ $NetBSD: patch-cf,v 1.4 2003/10/20 12:07:23 grant Exp $ !strncmp (p + 16, "CD-ROM", 6) && p[0] == TYPE_DISK) { p[0] = TYPE_ROM; -@@ -653,6 +775,87 @@ cdda_identify_scsi_fail: +@@ -653,6 +778,87 @@ if(g_fd!=-1)close(g_fd); return(NULL); } |