summaryrefslogtreecommitdiff
path: root/sysutils/cdrtools/files/patch-readcd::readcd.c
blob: 4d2f2502011f9c1383eca0eb901456d2bef00bd9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
--- readcd/readcd.c.original	Sun Jan 15 17:14:03 2006
+++ readcd/readcd.c	Sun Jan 15 17:24:47 2006
@@ -253,9 +256,9 @@
 	int	fcount;
 	int	cac;
 	char	* const *cav;
-	int	scsibus	= 0;
-	int	target	= 0;
-	int	lun	= 0;
+	int	scsibus	= -1;
+	int	target	= -1;
+	int	lun	= -1;
 	int	silent	= 0;
 	int	verbose	= 0;
 	int	kdebug	= 0;
@@ -335,20 +338,22 @@
 				usage(EX_BAD);
 				/* NOTREACHED */
 			}
-		} else {
-			scsibus = 0;
 		}
 		cac--;
 		cav++;
 	}
 /*error("dev: '%s'\n", dev);*/
-
 	if (!scanbus)
 		cdr_defaults(&dev, NULL, NULL, NULL);
 	if (debug) {
 		printf("dev: '%s'\n", dev);
 	}
-	if (dev) {
+	if (!scanbus && dev == NULL &&
+	    scsibus == -1 && (target == -1 || lun == -1)) {
+		errmsgno(EX_BAD, "No SCSI device specified.\n");
+		usage(EX_BAD);
+	}
+	if (dev || scanbus) {
 		char	errstr[80];
 
 		/*
@@ -357,8 +362,9 @@
 		 * remote routines that are located inside libscg.
 		 */
 		scg_remote();
-		if ((strncmp(dev, "HELP", 4) == 0) ||
-		    (strncmp(dev, "help", 4) == 0)) {
+		if (dev != NULL &&
+		    ((strncmp(dev, "HELP", 4) == 0) ||
+		    (strncmp(dev, "help", 4) == 0))) {
 			scg_help(stderr);
 			exit(0);
 		}
@@ -1629,7 +1656,7 @@
 		end = scgp->cap->c_baddr + 1;
 	scgp->silent--;
 
-	if (end <= 0 || isrange || (askrange && scg_yes("Ignore disk size? ")))
+	if ((end <= 0 && isrange) || (askrange && scg_yes("Ignore disk size? ")))
 		end = 10000000;	/* Hack to read empty (e.g. blank=fast) disks */
 
 	if (parmp) {