blob: d24853a6361560d0dc53419b1a54d81a9e74224f (
plain)
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
64
65
66
67
|
$NetBSD: patch-ci,v 1.6 2009/08/14 15:51:06 drochner Exp $
--- interface/interface.c.orig 2008-09-11 12:43:52.000000000 +0200
+++ interface/interface.c
@@ -35,6 +35,10 @@ int cdda_close(cdrom_drive *d){
_clean_messages(d);
if(d->cdda_device_name)free(d->cdda_device_name);
+#if !defined(__FreeBSD__) && !defined(__DragonFly__)
+#if defined(__APPLE__) && defined(__MACH__)
+ if(d->fd != -1) close(d->fd);
+#else
if(d->ioctl_device_name)free(d->ioctl_device_name);
if(d->drive_model)free(d->drive_model);
if(d->cdda_fd!=-1)close(d->cdda_fd);
@@ -43,6 +47,19 @@ int cdda_close(cdrom_drive *d){
if(d->private->sg_hd)free(d->private->sg_hd);
free(d->private);
}
+#endif
+#else
+ if(d->drive_model)
+ free(d->drive_model);
+ if(d->ccb)
+ cam_freeccb(d->ccb);
+ if(d->dev)
+ cam_close_device(d->dev);
+ if(d->sg_buffer)
+ free(d->sg_buffer);
+ if(d->ioctl_fd != -1)
+ close(d->ioctl_fd);
+#endif
free(d);
}
@@ -55,22 +72,31 @@ int cdda_open(cdrom_drive *d){
if(d->opened)return(0);
switch(d->interface){
+#if defined(__APPLE__) && defined(__MACH__)
+ case OSX_IOKIT:
+ if((ret=osx_open_device(d)))
+ return ret;
+ break;
+#else
case SGIO_SCSI_BUGGY1:
case SGIO_SCSI:
case GENERIC_SCSI:
if((ret=scsi_init_drive(d)))
return(ret);
break;
+#ifndef __NetBSD__
case COOKED_IOCTL:
if((ret=cooked_init_drive(d)))
return(ret);
break;
+#endif
#ifdef CDDA_TEST
case TEST_INTERFACE:
if((ret=test_init_drive(d)))
return(ret);
break;
#endif
+#endif
default:
cderror(d,"100: Interface not supported\n");
return(-100);
|