summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgarbled <garbled>1998-11-04 08:27:38 +0000
committergarbled <garbled>1998-11-04 08:27:38 +0000
commit68b97479441dae017501834538ecb11368a9844a (patch)
tree2a31b987a77b3166149dff9cc55d7eb8514fd11e
parent2af6c5b319dbd902a5030f66ff0bf04e710ecbea (diff)
downloadpkgsrc-68b97479441dae017501834538ecb11368a9844a.tar.gz
Patches to fix PR's: 6270 and 6391.
Mainly dealing with cdd's assumption that /dev/rcd0d is the correct raw device. It now handles multiple drives, and guesses the right raw device. Thanks to Rene Hexel for the patch for the multiple devices.
-rw-r--r--audio/cdd/patches/patch-ab161
-rw-r--r--audio/cdd/patches/patch-ac11
2 files changed, 172 insertions, 0 deletions
diff --git a/audio/cdd/patches/patch-ab b/audio/cdd/patches/patch-ab
new file mode 100644
index 00000000000..52170eabfd4
--- /dev/null
+++ b/audio/cdd/patches/patch-ab
@@ -0,0 +1,161 @@
+$NetBSD: patch-ab,v 1.1 1998/11/04 08:27:38 garbled Exp $
+--- cdd.c.orig Wed Nov 4 01:14:06 1998
++++ cdd.c Wed Nov 4 01:14:11 1998
+@@ -56,8 +56,10 @@
+ #include <sys/stat.h>
+ #include <sys/uio.h>
+ #include <unistd.h>
++#include <ctype.h>
+ #include <fcntl.h>
+ #include <scsi.h>
++#include <util.h>
+ #include "cdd.h"
+ #include "cdd_cdcmds.h"
+ #include "cdd_util.h"
+@@ -68,11 +70,13 @@
+ OPTS G_opts;
+
+ int F_cdctlfd;
++char cd_raw_partition[11];
+
+ int main(int argc, char *argv[])
+ {
+ CDTOC cdtoc;
+ int count;
++char ctldev[MAXPATHLEN];
+
+ strcpy(G_opts.workdir, "/tmp");
+ G_opts.onlyaudio = FALSE;
+@@ -83,27 +87,12 @@
+ G_opts.bequiet = FALSE;
+ G_opts.dostdout = FALSE;
+ G_opts.cddb = FALSE;
++strcpy(G_opts.cddev, "cd0");
+
+ signal(SIGINT, resetcd);
+ signal(SIGBUS, resetcd);
+ signal(SIGSEGV, resetcd);
+
+-#ifdef __NetBSD__
+-F_cdctlfd=scsi_open("/dev/rcd0d", O_RDWR);
+-#else
+-F_cdctlfd=scsi_open("/dev/rcd0.ctl", O_RDWR);
+-#endif
+-
+-if(F_cdctlfd < 0)
+- {
+-#ifdef __NetBSD__
+- fprintf(stderr,"Unable to open /dev/rcd0d [%d]\n", errno);
+-#else
+- fprintf(stderr,"Unable to open /dev/rcd0.ctl [%d]\n", errno);
+-#endif
+- exit(0);
+- }
+-
+ for(count=1;count<argc;count++)
+ {
+ if(argv[count][0] != '-') strcpy(G_opts.workdir, argv[count]);
+@@ -126,7 +115,6 @@
+ if(count+1 == argc)
+ {
+ fprintf(stderr,"Copy what track ?\n");
+- close(F_cdctlfd);
+ exit(0);
+ }
+
+@@ -134,14 +122,27 @@
+ count++;
+ }
+
++ if(strncasecmp(argv[count],"-c", 2) == 0)
++ {
++ if(count+1 == argc)
++ {
++ fprintf(stderr,"Use which device ?\n");
++ exit(0);
++ }
++
++ strncpy(G_opts.cddev, argv[count+1], sizeof(G_opts.cddev)-1);
++ count++;
++ }
++
+ if(strncasecmp(argv[count],"-h", 2) == 0)
+ {
+ fprintf(stderr,"\nCDD v%s, Copyright (C) 1996, ", VERSION);
+ fprintf(stderr,"Charles R. Henrich, All Rights Reserved.\n\n");
+
+- fprintf(stderr,"Usage: %s [-t #][-a][-d][-r][-n][-noed][-h]", argv[0]);
++ fprintf(stderr,"Usage: %s [-t #][-c <dev>][-a][-d][-r][-n][-noed][-h]", argv[0]);
+ fprintf(stderr,"[-p][-q][destdir|-]\n\n");
+ fprintf(stderr," -h This help\n");
++ fprintf(stderr," -c dev Use CD-ROM drive <dev> (default: %s)\n", G_opts.cddev);
+ fprintf(stderr," -t # Copy only Track #\n");
+ fprintf(stderr," -a Copy only AUDIO tracks\n");
+ fprintf(stderr," -p Play AUDIO during Copy\n");
+@@ -155,11 +156,27 @@
+ fprintf(stderr,"any error checking\n\n");
+ fprintf(stderr,"Running CDD with no options will show the table of ");
+ fprintf(stderr,"contents of the CD in the \ndrive\n\n");
+- close(F_cdctlfd);
+ exit(0);
+ }
+ }
+
++#ifdef __NetBSD__
++if (G_opts.cddev[0] == '/')
++ strcpy(ctldev, G_opts.cddev);
++else
++ sprintf(ctldev, "/dev/r%s%c", G_opts.cddev, getrawpartition() + 'a');
++#else
++sprintf(ctldev, "/dev/r%s.ctl", G_opts.cddev);
++#endif
++
++F_cdctlfd=scsi_open(ctldev, O_RDWR);
++
++if(F_cdctlfd < 0)
++ {
++ fprintf(stderr,"Unable to open %s [%d]\n", ctldev, errno);
++ exit(0);
++ }
++
+ cdd_printf("\nCDD v%s, Copyright (C) 1996, ", VERSION);
+ cdd_printf("Charles R. Henrich, All Rights Reserved.\n\n");
+
+@@ -367,7 +384,8 @@
+ #ifdef __NetBSD__
+ ifd=dup(F_cdctlfd);
+ #else
+-ifd=open("/dev/rcd0c", O_RDONLY, 0600);
++sprintf(buffer, "/dev/r%sc", G_opts.cddev);
++ifd=open(buffer, O_RDONLY, 0600);
+ #endif
+
+ if(ifd < 0)
+@@ -375,7 +393,7 @@
+ #ifdef __NetBSD__
+ fprintf(stderr,"Unable to dup descriptor\n");
+ #else
+- fprintf(stderr,"Unable to open /dev/rcd0c\n");
++ fprintf(stderr,"Unable to open %s\n", buffer);
+ #endif
+ close(F_cdctlfd);
+ exit(0);
+@@ -435,7 +453,8 @@
+ #ifdef __NetBSD__
+ ifd=dup(F_cdctlfd);
+ #else
+-ifd=open("/dev/rcd0c", O_RDONLY);
++sprintf(buffer, "/dev/r%sc", G_opts.cddev);
++ifd=open(buffer, O_RDONLY);
+ #endif
+
+ if(ifd < 0)
+@@ -443,7 +462,7 @@
+ #ifdef __NetBSD__
+ fprintf(stderr,"Unable to dup descriptor\n");
+ #else
+- fprintf(stderr,"Unable to open /dev/rcd0c\n");
++ fprintf(stderr,"Unable to open %s\n", buffer);
+ #endif
+ close(F_cdctlfd);
+ exit(0);
diff --git a/audio/cdd/patches/patch-ac b/audio/cdd/patches/patch-ac
new file mode 100644
index 00000000000..a3e8f2dfb4d
--- /dev/null
+++ b/audio/cdd/patches/patch-ac
@@ -0,0 +1,11 @@
+$NetBSD: patch-ac,v 1.1 1998/11/04 08:27:38 garbled Exp $
+--- cdd.h.orig Mon Jul 14 02:56:31 1997
++++ cdd.h Sun Nov 1 19:18:58 1998
+@@ -85,6 +85,7 @@
+ int bequiet;
+ int dostdout;
+ int cddb;
++ char cddev[MAXPATHLEN];
+ } OPTS;
+
+ typedef struct tocentry