File Coverage

blib/lib/Linux/CDROM.pm
Criterion Covered Total %
statement 53 53 100.0
branch 3 4 75.0
condition n/a
subroutine 16 16 100.0
pod n/a
total 72 73 98.6


line stmt bran cond sub pod time code
1             package Linux::CDROM;
2              
3 1     1   6947 use 5.006;
  1         3  
  1         41  
4 1     1   6 use strict;
  1         2  
  1         33  
5 1     1   12 use warnings;
  1         7  
  1         43  
6 1     1   5 use Carp;
  1         2  
  1         82  
7              
8             require Exporter;
9 1     1   2312 use AutoLoader;
  1         1969  
  1         6  
10              
11             our @ISA = qw(Exporter);
12              
13             # Items to export into callers namespace by default. Note: do not export
14             # names by default without a very good reason. Use EXPORT_OK instead.
15             # Do not simply export all your public functions/methods/constants.
16              
17 1     1   65 use constant LINUX_CDROM_NO_ERROR => 0;
  1         2  
  1         116  
18 1     1   5 use constant LINUX_CDROM_NO_OPEN => 1;
  1         2  
  1         98  
19 1     1   6 use constant LINUX_CDROM_NO_CDROM => 2;
  1         2  
  1         43  
20 1     1   4 use constant LINUX_CDROM_NO_TOCHDR => 3;
  1         2  
  1         39  
21 1     1   6 use constant LINUX_CDROM_NO_AUDIO => 4;
  1         2  
  1         39  
22 1     1   5 use constant LINUX_CDROM_NO_DISC_STATUS => 5;
  1         2  
  1         41  
23 1     1   4 use constant LINUX_CDROM_IDX_OUT_OF_BOUNDS => 6;
  1         2  
  1         40  
24 1     1   4 use constant LINUX_CDROM_IOCTL_ERROR => 7;
  1         2  
  1         1330  
25              
26             our %EXPORT_TAGS = ( 'all' => [ qw(
27             LINUX_CDROM_NO_ERROR
28             LINUX_CDROM_NO_OPEN
29             LINUX_CDROM_NO_CDROM
30             LINUX_CDROM_NO_TOCHDR
31             LINUX_CDROM_NO_AUDIO
32             LINUX_CDROM_NO_DISC_STATUS
33             LINUX_CDROM_IDX_OUT_OF_BOUNDS
34             LINUX_CDROM_IOCTL_ERROR
35             CDC_CD_R
36             CDC_CD_RW
37             CDC_CLOSE_TRAY
38             CDC_DRIVE_STATUS
39             CDC_DVD
40             CDC_DVD_R
41             CDC_DVD_RAM
42             CDC_GENERIC_PACKET
43             CDC_IOCTLS
44             CDC_LOCK
45             CDC_MCN
46             CDC_MEDIA_CHANGED
47             CDC_MULTI_SESSION
48             CDC_OPEN_TRAY
49             CDC_PLAY_AUDIO
50             CDC_RESET
51             CDC_SELECT_DISC
52             CDC_SELECT_SPEED
53             CDO_AUTO_CLOSE
54             CDO_AUTO_EJECT
55             CDO_CHECK_TYPE
56             CDO_LOCK
57             CDO_USE_FFLAGS
58             CDROMAUDIOBUFSIZ
59             CDROMCLOSETRAY
60             CDROMEJECT
61             CDROMEJECT_SW
62             CDROMGETSPINDOWN
63             CDROMMULTISESSION
64             CDROMPAUSE
65             CDROMPLAYBLK
66             CDROMPLAYMSF
67             CDROMPLAYTRKIND
68             CDROMREADALL
69             CDROMREADAUDIO
70             CDROMREADCOOKED
71             CDROMREADMODE1
72             CDROMREADMODE2
73             CDROMREADRAW
74             CDROMREADTOCENTRY
75             CDROMREADTOCHDR
76             CDROMRESET
77             CDROMRESUME
78             CDROMSEEK
79             CDROMSETSPINDOWN
80             CDROMSTART
81             CDROMSTOP
82             CDROMSUBCHNL
83             CDROMVOLCTRL
84             CDROMVOLREAD
85             CDROM_AUDIO_COMPLETED
86             CDROM_AUDIO_ERROR
87             CDROM_AUDIO_INVALID
88             CDROM_AUDIO_NO_STATUS
89             CDROM_AUDIO_PAUSED
90             CDROM_AUDIO_PLAY
91             CDROM_CHANGER_NSLOTS
92             CDROM_CLEAR_OPTIONS
93             CDROM_DATA_TRACK
94             CDROM_DEBUG
95             CDROM_DISC_STATUS
96             CDROM_DRIVE_STATUS
97             CDROM_GET_CAPABILITY
98             CDROM_GET_MCN
99             CDROM_GET_UPC
100             CDROM_LAST_WRITTEN
101             CDROM_LBA
102             CDROM_LEADOUT
103             CDROM_LOCKDOOR
104             CDROM_MAX_SLOTS
105             CDROM_MEDIA_CHANGED
106             CDROM_MSF
107             CDROM_NEXT_WRITABLE
108             CDROM_PACKET_SIZE
109             CDROM_SELECT_DISC
110             CDROM_SELECT_SPEED
111             CDROM_SEND_PACKET
112             CDROM_SET_OPTIONS
113             CDSL_CURRENT
114             CDSL_NONE
115             CDS_AUDIO
116             CDS_DATA_1
117             CDS_DATA_2
118             CDS_DISC_OK
119             CDS_DRIVE_NOT_READY
120             CDS_MIXED
121             CDS_NO_DISC
122             CDS_NO_INFO
123             CDS_TRAY_OPEN
124             CDS_XA_2_1
125             CDS_XA_2_2
126             CD_CHUNK_SIZE
127             CD_ECC_SIZE
128             CD_EDC_SIZE
129             CD_FRAMES
130             CD_FRAMESIZE
131             CD_FRAMESIZE_RAW
132             CD_FRAMESIZE_RAW0
133             CD_FRAMESIZE_RAW1
134             CD_FRAMESIZE_RAWER
135             CD_FRAMESIZE_SUB
136             CD_HEAD_SIZE
137             CD_MINS
138             CD_MSF_OFFSET
139             CD_NUM_OF_CHUNKS
140             CD_PART_MASK
141             CD_PART_MAX
142             CD_SECS
143             CD_SUBHEAD_SIZE
144             CD_SYNC_SIZE
145             CD_XA_HEAD
146             CD_XA_SYNC_HEAD
147             CD_XA_TAIL
148             CD_ZERO_SIZE
149             CGC_DATA_NONE
150             CGC_DATA_READ
151             CGC_DATA_UNKNOWN
152             CGC_DATA_WRITE
153             DVD_AUTH
154             DVD_AUTH_ESTABLISHED
155             DVD_AUTH_FAILURE
156             DVD_CGMS_RESTRICTED
157             DVD_CGMS_SINGLE
158             DVD_CGMS_UNRESTRICTED
159             DVD_CPM_COPYRIGHTED
160             DVD_CPM_NO_COPYRIGHT
161             DVD_CP_SEC_EXIST
162             DVD_CP_SEC_NONE
163             DVD_HOST_SEND_CHALLENGE
164             DVD_HOST_SEND_KEY2
165             DVD_HOST_SEND_RPC_STATE
166             DVD_INVALIDATE_AGID
167             DVD_LAYERS
168             DVD_LU_SEND_AGID
169             DVD_LU_SEND_ASF
170             DVD_LU_SEND_CHALLENGE
171             DVD_LU_SEND_KEY1
172             DVD_LU_SEND_RPC_STATE
173             DVD_LU_SEND_TITLE_KEY
174             DVD_READ_STRUCT
175             DVD_STRUCT_BCA
176             DVD_STRUCT_COPYRIGHT
177             DVD_STRUCT_DISCKEY
178             DVD_STRUCT_MANUFACT
179             DVD_STRUCT_PHYSICAL
180             DVD_WRITE_STRUCT
181             EDRIVE_CANT_DO_THIS
182             GPCMD_BLANK
183             GPCMD_CLOSE_TRACK
184             GPCMD_FLUSH_CACHE
185             GPCMD_FORMAT_UNIT
186             GPCMD_GET_CONFIGURATION
187             GPCMD_GET_EVENT_STATUS_NOTIFICATION
188             GPCMD_GET_MEDIA_STATUS
189             GPCMD_GET_PERFORMANCE
190             GPCMD_INQUIRY
191             GPCMD_LOAD_UNLOAD
192             GPCMD_MECHANISM_STATUS
193             GPCMD_MODE_SELECT_10
194             GPCMD_MODE_SENSE_10
195             GPCMD_PAUSE_RESUME
196             GPCMD_PLAYAUDIO_TI
197             GPCMD_PLAY_AUDIO_10
198             GPCMD_PLAY_AUDIO_MSF
199             GPCMD_PLAY_AUDIO_TI
200             GPCMD_PLAY_CD
201             GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL
202             GPCMD_READ_10
203             GPCMD_READ_12
204             GPCMD_READ_CD
205             GPCMD_READ_CDVD_CAPACITY
206             GPCMD_READ_CD_MSF
207             GPCMD_READ_DISC_INFO
208             GPCMD_READ_DVD_STRUCTURE
209             GPCMD_READ_FORMAT_CAPACITIES
210             GPCMD_READ_HEADER
211             GPCMD_READ_SUBCHANNEL
212             GPCMD_READ_TOC_PMA_ATIP
213             GPCMD_READ_TRACK_RZONE_INFO
214             GPCMD_REPAIR_RZONE_TRACK
215             GPCMD_REPORT_KEY
216             GPCMD_REQUEST_SENSE
217             GPCMD_RESERVE_RZONE_TRACK
218             GPCMD_SCAN
219             GPCMD_SEEK
220             GPCMD_SEND_DVD_STRUCTURE
221             GPCMD_SEND_EVENT
222             GPCMD_SEND_KEY
223             GPCMD_SEND_OPC
224             GPCMD_SET_READ_AHEAD
225             GPCMD_SET_SPEED
226             GPCMD_SET_STREAMING
227             GPCMD_START_STOP_UNIT
228             GPCMD_STOP_PLAY_SCAN
229             GPCMD_TEST_UNIT_READY
230             GPCMD_VERIFY_10
231             GPCMD_WRITE_10
232             GPCMD_WRITE_AND_VERIFY_10
233             GPMODE_ALL_PAGES
234             GPMODE_AUDIO_CTL_PAGE
235             GPMODE_CAPABILITIES_PAGE
236             GPMODE_CDROM_PAGE
237             GPMODE_FAULT_FAIL_PAGE
238             GPMODE_POWER_PAGE
239             GPMODE_R_W_ERROR_PAGE
240             GPMODE_TO_PROTECT_PAGE
241             GPMODE_WRITE_PARMS_PAGE
242             mechtype_caddy
243             mechtype_cartridge_changer
244             mechtype_individual_changer
245             mechtype_popup
246             mechtype_tray
247             ) ] );
248              
249             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
250              
251             our @EXPORT = qw(
252             DEVICE_CDROM_NO_ERROR
253             DEVICE_CDROM_NO_OPEN
254             DEVICE_CDROM_NO_CDROM
255             DEVICE_CDROM_NO_TOCHDR
256             DEVICE_CDROM_NO_AUDIO
257             DEVICE_CDROM_NO_DISC_STATUS
258             DEVICE_CDROM_IDX_OUT_OF_BOUNDS
259             DEVICE_CDROM_IOCTL_ERROR
260             CDC_CD_R
261             CDC_CD_RW
262             CDC_CLOSE_TRAY
263             CDC_DRIVE_STATUS
264             CDC_DVD
265             CDC_DVD_R
266             CDC_DVD_RAM
267             CDC_GENERIC_PACKET
268             CDC_IOCTLS
269             CDC_LOCK
270             CDC_MCN
271             CDC_MEDIA_CHANGED
272             CDC_MULTI_SESSION
273             CDC_OPEN_TRAY
274             CDC_PLAY_AUDIO
275             CDC_RESET
276             CDC_SELECT_DISC
277             CDC_SELECT_SPEED
278             CDROM_AUDIO_COMPLETED
279             CDROM_AUDIO_ERROR
280             CDROM_AUDIO_INVALID
281             CDROM_AUDIO_NO_STATUS
282             CDROM_AUDIO_PAUSED
283             CDROM_AUDIO_PLAY
284             CDROM_DATA_TRACK
285             CDROM_LBA
286             CDROM_LEADOUT
287             CDROM_MAX_SLOTS
288             CDROM_MSF
289             CDROM_PACKET_SIZE
290             CDSL_CURRENT
291             CDSL_NONE
292             CDS_AUDIO
293             CDS_DATA_1
294             CDS_DATA_2
295             CDS_DISC_OK
296             CDS_DRIVE_NOT_READY
297             CDS_MIXED
298             CDS_NO_DISC
299             CDS_NO_INFO
300             CDS_TRAY_OPEN
301             CDS_XA_2_1
302             CDS_XA_2_2
303             CD_CHUNK_SIZE
304             CD_ECC_SIZE
305             CD_EDC_SIZE
306             CD_FRAMES
307             CD_FRAMESIZE
308             CD_FRAMESIZE_RAW
309             CD_FRAMESIZE_RAW0
310             CD_FRAMESIZE_RAW1
311             CD_FRAMESIZE_RAWER
312             CD_FRAMESIZE_SUB
313             CD_HEAD_SIZE
314             CD_MINS
315             CD_MSF_OFFSET
316             CD_NUM_OF_CHUNKS
317             CD_PART_MASK
318             CD_PART_MAX
319             CD_SECS
320             CD_SUBHEAD_SIZE
321             CD_SYNC_SIZE
322             CD_XA_HEAD
323             CD_XA_SYNC_HEAD
324             CD_XA_TAIL
325             CD_ZERO_SIZE
326             CGC_DATA_NONE
327             CGC_DATA_READ
328             CGC_DATA_UNKNOWN
329             CGC_DATA_WRITE
330             EDRIVE_CANT_DO_THIS
331             );
332              
333             our $VERSION = '0.02';
334              
335             sub AUTOLOAD {
336             # This AUTOLOAD is used to 'autoload' constants from the constant()
337             # XS function.
338              
339 71     71   11112 my $constname;
340 71         75 our $AUTOLOAD;
341 71         287 ($constname = $AUTOLOAD) =~ s/.*:://;
342 71 50       159 croak "&Linux::CDROM::constant not defined" if $constname eq 'constant';
343 71         227 my ($error, $val) = constant($constname);
344 71 100       125 if ($error) { croak $error; }
  2         368  
345             {
346 1     1   8 no strict 'refs';
  1         2  
  1         125  
  69         70  
347             # Fixed between 5.005_53 and 5.005_61
348             #XXX if ($] >= 5.00561) {
349             #XXX *$AUTOLOAD = sub () { $val };
350             #XXX }
351             #XXX else {
352 69     69   346 *$AUTOLOAD = sub { $val };
  69         984  
353             #XXX }
354             }
355 69         198 goto &$AUTOLOAD;
356             }
357              
358             require XSLoader;
359             XSLoader::load('Linux::CDROM', $VERSION);
360              
361             1;
362             __END__