rbcdio 0.01

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/AUTHORS +1 -0
  2. data/COPYING +340 -0
  3. data/ChangeLog +315 -0
  4. data/INSTALL +236 -0
  5. data/Makefile.am +163 -0
  6. data/Makefile.in +557 -0
  7. data/NEWS +5 -0
  8. data/README +75 -0
  9. data/Rakefile +234 -0
  10. data/THANKS +3 -0
  11. data/VERSION +1 -0
  12. data/VERSION.in +1 -0
  13. data/config.guess +1473 -0
  14. data/config.sub +1576 -0
  15. data/configure +4802 -0
  16. data/configure.ac +158 -0
  17. data/data/copying.iso +0 -0
  18. data/data/isofs-m1.bin +0 -0
  19. data/data/isofs-m1.cue +3 -0
  20. data/doc/created.rid +1 -0
  21. data/doc/fr_class_index.html +42 -0
  22. data/doc/fr_file_index.html +40 -0
  23. data/doc/fr_method_index.html +133 -0
  24. data/doc/index.html +24 -0
  25. data/doc/rdoc-style.css +208 -0
  26. data/example/COPYING +340 -0
  27. data/example/README +47 -0
  28. data/example/audio.rb +186 -0
  29. data/example/cd-read.rb +167 -0
  30. data/example/copying +340 -0
  31. data/example/device.rb +91 -0
  32. data/example/drivers.rb +63 -0
  33. data/example/drives.rb +63 -0
  34. data/example/eject.rb +69 -0
  35. data/example/iso1.rb +89 -0
  36. data/example/iso2.rb +106 -0
  37. data/example/iso3.rb +111 -0
  38. data/example/tracks.rb +83 -0
  39. data/ext/cdio/Makefile +139 -0
  40. data/ext/cdio/extconf.rb +9 -0
  41. data/ext/cdio/rubycdio_wrap.c +3410 -0
  42. data/ext/iso9660/Makefile +139 -0
  43. data/ext/iso9660/extconf.rb +10 -0
  44. data/ext/iso9660/rubyiso9660_wrap.c +3005 -0
  45. data/install-sh +323 -0
  46. data/lib/Makefile +7 -0
  47. data/lib/cdio.rb +1000 -0
  48. data/lib/iso9660.rb +566 -0
  49. data/missing +360 -0
  50. data/rubycdio.m4 +14 -0
  51. data/swig/Makefile +7 -0
  52. data/swig/audio.swg +63 -0
  53. data/swig/compat.swg +104 -0
  54. data/swig/device.swg +513 -0
  55. data/swig/device_const.swg +144 -0
  56. data/swig/disc.swg +96 -0
  57. data/swig/read.swg +164 -0
  58. data/swig/rubycdio.swg +86 -0
  59. data/swig/rubyiso9660.swg +827 -0
  60. data/swig/track.swg +206 -0
  61. data/swig/types.swg +65 -0
  62. data/test/Makefile +7 -0
  63. data/test/Rakefile +8 -0
  64. data/test/cdda.bin +0 -0
  65. data/test/cdda.cue +7 -0
  66. data/test/cdda.toc +14 -0
  67. data/test/cdiotest.rb +228 -0
  68. data/test/isocopy.rb +394 -0
  69. data/test/isotest.rb +187 -0
  70. metadata +116 -0
data/swig/device.swg ADDED
@@ -0,0 +1,513 @@
1
+ /* -*- c -*-
2
+ $Id: device.swg,v 1.10 2006/12/08 13:42:20 rocky Exp $
3
+
4
+ Copyright (C) 2006 Rocky Bernstein <rocky@gnu.org>
5
+
6
+ This program is free software; you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation; either version 2 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
+ 02110-1301 USA.
20
+ */
21
+ /* See <cdio/device.h> for more extensive documentation. */
22
+
23
+ %include "device_const.swg"
24
+
25
+ /* Set up to allow functions returning device lists of type "char
26
+ **". We'll use a typedef so we can make sure to isolate this. I
27
+ don't think we need to in this program, but it I think it makes
28
+ thing clearer.
29
+ */
30
+ %inline %{
31
+ typedef char ** DeviceList_t;
32
+ %}
33
+
34
+ %typemap(out) DeviceList_t {
35
+ // $1 is of type DeviceList_t
36
+ char **p = result;
37
+
38
+ if (result) {
39
+ VALUE aDevices = rb_ary_new();
40
+ for (p = $1; *p; p++) {
41
+ rb_ary_push(aDevices, rb_str_new2(*p));
42
+ }
43
+ cdio_free_device_list($1);
44
+ return aDevices;
45
+ } else {
46
+ return Qnil;
47
+ }
48
+ }
49
+
50
+ /*
51
+ close_tray(drive=undef, driver_id=DRIVER_UNKNOWN) -> [status, driver_id]
52
+
53
+ close media tray in CD drive if there is a routine to do so.
54
+ */
55
+ %apply driver_id_t *OUTPUT { driver_id_t *p_out_driver_id };
56
+ driver_return_code_t close_tray(const char *psz_drive,
57
+ driver_id_t p_driver_id=DRIVER_UNKNOWN,
58
+ driver_id_t *p_out_driver_id);
59
+ %inline %{
60
+ driver_return_code_t
61
+ close_tray(const char *psz_drive, driver_id_t p_driver_id,
62
+ driver_id_t *p_out_driver_id)
63
+ {
64
+ *p_out_driver_id = p_driver_id;
65
+ return cdio_close_tray(psz_drive, p_out_driver_id);
66
+ }
67
+ %}
68
+
69
+ %rename cdio_destroy close;
70
+ %feature("autodoc",
71
+ "destroy(p_cdio)
72
+ Free resources associated with p_cdio. Call this when done using
73
+ using CD reading/control operations for the current device.
74
+ ");
75
+ void cdio_destroy(CdIo_t *p_cdio);
76
+
77
+ #if LIBCDIO_VERSION_NUM > 76
78
+ /* cdio_driver_errmsg first appears in 0.77 code
79
+ */
80
+ %rename cdio_driver_errmsg driver_errmsg;
81
+ /*!
82
+ @param drc the return code you want interpreted.
83
+ @return the string information about drc
84
+ */
85
+ const char *cdio_driver_errmsg(driver_return_code_t drc);
86
+ #else
87
+ const char *driver_errmsg(driver_return_code_t drc);
88
+ %inline %{
89
+ const char *
90
+ driver_errmsg(driver_return_code_t drc)
91
+ {
92
+ switch(drc) {
93
+ case DRIVER_OP_SUCCESS:
94
+ return "driver operation was successful";
95
+ case DRIVER_OP_ERROR:
96
+ return "driver I/O error";
97
+ case DRIVER_OP_UNSUPPORTED:
98
+ return "driver operatation not supported";
99
+ case DRIVER_OP_UNINIT:
100
+ return "driver not initialized";
101
+ case DRIVER_OP_NOT_PERMITTED:
102
+ return "driver operatation not permitted";
103
+ case DRIVER_OP_BAD_PARAMETER:
104
+ return "bad parameter passed";
105
+ case DRIVER_OP_BAD_POINTER:
106
+ return "bad pointer to memory area";
107
+ case DRIVER_OP_NO_DRIVER:
108
+ return "driver not available";
109
+ default:
110
+ return "unknown or bad driver return status";
111
+ }
112
+ }
113
+ %}
114
+ #endif /* LIBCDIO_VERSION_NUM > 76 */
115
+ %feature("autodoc",
116
+ "eject_media(cdio)->return_code
117
+
118
+ Eject media in CD drive if there is a routine to do so.
119
+ ");
120
+ driver_return_code_t eject_media (CdIo_t *p_cdio);
121
+ %inline %{
122
+ driver_return_code_t
123
+ eject_media (CdIo_t *p_cdio)
124
+ {
125
+ /* libcdio routines uses a Cdio_t **p_cdio, so we have to pass in
126
+ something it can clobber.
127
+ */
128
+ CdIo_t **pp_cdio = &p_cdio;
129
+ return cdio_eject_media (pp_cdio);
130
+ }
131
+ %}
132
+
133
+
134
+ %rename cdio_eject_media_drive eject_media_drive;
135
+ %feature("autodoc",
136
+ "eject_media_drive(drive=nil)->return_code
137
+ Eject media in CD drive if there is a routine to do so.
138
+
139
+ psz_drive: the name of the device to be acted upon.
140
+ The operation status is returned.");
141
+ driver_return_code_t cdio_eject_media_drive (const char *psz_drive=NULL);
142
+
143
+ %rename cdio_get_arg get_arg;
144
+ %feature("autodoc",
145
+ "get_arg(p_cdio, key)->string
146
+
147
+ Get the value associatied with key.");
148
+ const char *cdio_get_arg (const CdIo_t *p_cdio, const char key[]);
149
+
150
+ %newobject cdio_get_default_device; // free malloc'd return value
151
+ %rename cdio_get_default_device get_device;
152
+ %feature("autodoc",
153
+ "get_device(cdio)->str
154
+
155
+ Get the CD device associated with cdio.
156
+ If cdio is NULL (we haven't initialized a specific device driver),
157
+ then find a suitable one and return the default device for that.
158
+
159
+ In some situations of drivers or OS's we can't find a CD device if
160
+ there is no media in it and it is possible for this routine to return
161
+ nil even though there may be a hardware CD-ROM.");
162
+ char *cdio_get_default_device (const CdIo_t *p_cdio=NULL);
163
+
164
+ %newobject get_default_device_driver; // free malloc'd return value
165
+ %feature("autodoc",
166
+ "get_default_device_driver(driver_id=nil)->[device, driver]
167
+ Return a string containing the default CD device if none is specified.
168
+ if p_driver_id is DRIVER_UNKNOWN or DRIVER_DEVICE then find a suitable
169
+ one set the default device for that.
170
+
171
+ nil is returned as the device if we couldn't get a default device.");
172
+ %apply driver_id_t *OUTPUT { driver_id_t *p_out_driver_id };
173
+ char *get_default_device_driver (driver_id_t p_driver_id,
174
+ driver_id_t *p_out_driver_id);
175
+ %inline %{
176
+ char *
177
+ get_default_device_driver(driver_id_t driver_id, driver_id_t *p_out_driver_id)
178
+ {
179
+ *p_out_driver_id = driver_id;
180
+ return cdio_get_default_device_driver(p_out_driver_id);
181
+ }
182
+ %}
183
+
184
+ %rename cdio_get_devices get_devices;
185
+ /*! Return an array of device names. If you want a specific
186
+ devices for a driver, give that device. If you want hardware
187
+ devices, give DRIVER_DEVICE and if you want all possible devices,
188
+ image drivers and hardware drivers give DRIVER_UNKNOWN.
189
+
190
+ NULL is returned if we couldn't return a list of devices.
191
+
192
+ In some situations of drivers or OS's we can't find a CD device if
193
+ there is no media in it and it is possible for this routine to return
194
+ NULL even though there may be a hardware CD-ROM.
195
+ */
196
+ DeviceList_t cdio_get_devices (driver_id_t driver_id);
197
+
198
+ /* Like cdio_get_devices, but we may change the p_driver_id if we
199
+ were given DRIVER_DEVICE or DRIVER_UNKNOWN. This is because
200
+ often one wants to get a drive name and then *open* it
201
+ afterwards. Giving the driver back facilitates this, and speeds
202
+ things up for libcdio as well.
203
+ */
204
+
205
+ DeviceList_t get_devices_ret (driver_id_t driver_id,
206
+ driver_id_t *p_out_driver_id);
207
+ %inline %{
208
+ DeviceList_t get_devices_ret (driver_id_t driver_id,
209
+ driver_id_t *p_out_driver_id) {
210
+ *p_out_driver_id = driver_id;
211
+ return cdio_get_devices_ret (p_out_driver_id);
212
+ }
213
+ %}
214
+
215
+ %feature("autodoc",
216
+ "get_devices_with_cap(capabilities, any)->[device1, device2...]
217
+ Get an array of device names in search_devices that have at least
218
+ the capabilities listed by the capabities parameter.
219
+
220
+ If any is False then every capability listed in the
221
+ extended portion of capabilities (i.e. not the basic filesystem)
222
+ must be satisified. If any is True, then if any of the
223
+ capabilities matches, we call that a success.
224
+
225
+ To find a CD-drive of any type, use the mask CDIO_FS_MATCH_ALL.
226
+
227
+ The array of device names is returned or NULL if we couldn't get a
228
+ default device. It is also possible to return a non NULL but after
229
+ dereferencing the the value is NULL. This also means nothing was
230
+ found.");
231
+ DeviceList_t get_devices_with_cap (unsigned int capabilities, bool b_any);
232
+ %inline %{
233
+ DeviceList_t
234
+ get_devices_with_cap (unsigned int capabilities, bool b_any) {
235
+ /* FIXME: ? libcdio allows one to specify a list (char **) of devices
236
+ to search. Don't know how to do that via SWIG though. */
237
+ return cdio_get_devices_with_cap (NULL, (cdio_fs_anal_t) capabilities,
238
+ b_any);
239
+ }
240
+ %}
241
+
242
+ %apply driver_id_t *OUTPUT { driver_id_t *p_out_driver_id };
243
+ %newobject get_devices_with_cap_ret;
244
+ %feature("autodoc",
245
+ "Like cdio_get_devices_with_cap but we return the driver we found
246
+ as well. This is because often one wants to search for kind of drive
247
+ and then *open* it afterwards. Giving the driver back facilitates this,
248
+ and speeds things up for libcdio as well.");
249
+ DeviceList_t get_devices_with_cap_ret (unsigned int capabilities, bool b_any,
250
+ driver_id_t *p_out_driver_id);
251
+ %inline %{
252
+ DeviceList_t
253
+ get_devices_with_cap_ret (unsigned int capabilities, bool b_any,
254
+ driver_id_t *p_out_driver_id) {
255
+ /* FIXME: ? libcdio allows one to specify a list (char **) of devices
256
+ to search. Don't know how to do that via SWIG though. */
257
+ return cdio_get_devices_with_cap_ret (NULL,
258
+ (cdio_fs_anal_t) capabilities, b_any,
259
+ p_out_driver_id);
260
+ }
261
+ %}
262
+
263
+ %rename cdio_get_drive_cap get_drive_cap;
264
+ %feature("autodoc",
265
+ "get_drive_cap()->(read_cap, write_cap, misc_cap)
266
+
267
+ Get drive capabilities of device.
268
+
269
+ In some situations of drivers or OS's we can't find a CD device if
270
+ there is no media in it. In this situation capabilities will show up as
271
+ empty even though there is a hardware CD-ROM.");
272
+ %apply uint32_t *OUTPUT { uint32_t *p_read_cap,
273
+ uint32_t *p_write_cap,
274
+ uint32_t *p_misc_cap };
275
+ void cdio_get_drive_cap (const CdIo_t *p_cdio,
276
+ uint32_t *p_read_cap,
277
+ uint32_t *p_write_cap,
278
+ uint32_t *p_misc_cap);
279
+
280
+ %rename cdio_get_drive_cap_dev get_drive_cap;
281
+ %feature("autodoc",
282
+ "get_drive_cap_dev()->(read_cap, write_cap, misc_cap)
283
+
284
+ Get drive capabilities of device.
285
+
286
+ In some situations of drivers or OS's we can't find a CD device if
287
+ there is no media in it. In this situation capabilities will show up as
288
+ empty even though there is a hardware CD-ROM.");
289
+
290
+ void cdio_get_drive_cap_dev(const char *device=NULL,
291
+ uint32_t *p_read_cap,
292
+ uint32_t *p_write_cap,
293
+ uint32_t *p_misc_cap);
294
+
295
+ %rename cdio_get_driver_name get_driver_name;
296
+ %feature("autodoc",
297
+ "get_driver_name(cdio)-> string
298
+
299
+ return a string containing the name of the driver in use.
300
+ ");
301
+ const char *cdio_get_driver_name (const CdIo_t *p_cdio);
302
+
303
+ %rename cdio_get_driver_id get_driver_id;
304
+ %feature("autodoc",
305
+ "get_driver_id(cdio)-> int
306
+
307
+ Return the driver id of the driver in use.
308
+ if cdio has not been initialized or is nil,
309
+ return pycdio.DRIVER_UNKNOWN.");
310
+ driver_id_t cdio_get_driver_id (const CdIo_t *p_cdio);
311
+
312
+ %rename cdio_get_last_session get_last_session;
313
+ %apply int32_t *OUTPUT { lsn_t *i_last_session };
314
+ driver_return_code_t cdio_get_last_session (CdIo_t *p_cdio,
315
+ lsn_t *i_last_session);
316
+
317
+ %feature("autodoc",
318
+ "have_driver(driver_id) -> int
319
+
320
+ Return 1 if we have driver driver_id, 0 if not and -1
321
+ if driver id is out of range.");
322
+ %inline %{
323
+ int
324
+ have_driver (unsigned int driver_id)
325
+ {
326
+ if (driver_id < CDIO_MIN_DRIVER || driver_id > CDIO_MAX_DRIVER)
327
+ return -1;
328
+ if (cdio_have_driver(driver_id)) return 1;
329
+ return 0;
330
+ }
331
+ %}
332
+
333
+ %rename have_ATAPI "ATAPI?";
334
+ %feature("autodoc",
335
+ "ATAPI?(CdIo_t *p_cdio)->bool
336
+ return True if CD-ROM understand ATAPI commands.");
337
+ %inline %{
338
+ /*! True if CD-ROM understand ATAPI commands. */
339
+ bool
340
+ have_ATAPI (CdIo_t *p_cdio)
341
+ {
342
+ return cdio_have_atapi(p_cdio) == yep;
343
+ }
344
+ %}
345
+
346
+ %inline %{
347
+ typedef char * buf_t;
348
+ %}
349
+
350
+ %rename cdio_is_binfile is_binfile;
351
+ %feature("autodoc",
352
+ "is_binfile(binfile_name)->cue_name
353
+
354
+ Determine if binfile_name is the BIN file part of a CDRWIN CD disk
355
+ image.
356
+
357
+ Return the corresponding CUE file if bin_name is a BIN file or
358
+ nil if not a BIN file.");
359
+ buf_t cdio_is_binfile(const char *bin_name);
360
+
361
+ %rename cdio_is_cuefile is_cuefile;
362
+ %feature("autodoc",
363
+ "is_cuefile(cuefile_name)->bin_name
364
+
365
+ Determine if cuefile_name is the CUE file part of a CDRWIN CD disk
366
+ image.
367
+
368
+ Return the corresponding BIN file if bin_name is a CUE file or
369
+ nil if not a CUE file.");
370
+ buf_t cdio_is_cuefile(const char *cue_name);
371
+
372
+ %rename is_device "device?";
373
+
374
+ bool cdio_is_device(const char *psz_source,
375
+ driver_id_t driver_id=DRIVER_UNKNOWN);
376
+
377
+ %inline %{
378
+ bool
379
+ is_device(const char *psz_source, driver_id_t driver_id)
380
+ {
381
+ #if LIBCDIO_VERSION_NUM <= 76
382
+ /* There is a bug in the 0.76 code when driver_id==DRIVER_UNKNOWN
383
+ or DRIVER_DEVICE, so here we'll use code from compat.swg.
384
+ */
385
+ if (DRIVER_UNKNOWN == driver_id || DRIVER_DEVICE == driver_id) {
386
+ char *psz_drive = cdio_get_default_device_driver(&driver_id);
387
+ /* We don't need the psz_drive, just the driver_id */
388
+ free(psz_drive);
389
+ }
390
+ #endif /* LIBCDIO_VERSION_NUM <= 76 */
391
+ return cdio_is_device(psz_source, driver_id);
392
+ }
393
+ %}
394
+ bool cdio_is_device(const char *psz_source,
395
+ driver_id_t driver_id=DRIVER_UNKNOWN);
396
+
397
+ %rename cdio_is_nrg "nrg?";
398
+ %feature("autodoc",
399
+ "nrg?(cue_name)->bool
400
+
401
+ Determine if nrg_name is a Nero CD disc image");
402
+ bool cdio_is_nrg(const char *nrg_name);
403
+
404
+ %rename cdio_is_tocfile "tocfile?";
405
+ %feature("autodoc",
406
+ "tocfile?(tocfile_name)->bool
407
+
408
+ Determine if tocfile_name is a cdrdao CD disc image");
409
+ bool cdio_is_tocfile(const char *tocfile_name);
410
+
411
+ %rename cdio_get_media_changed get_media_changed;
412
+ %feature("autodoc",
413
+ "get_media_changed(cdio) -> int
414
+
415
+ Find out if media has changed since the last call.
416
+ Return 1 if media has changed since last call, 0 if not. Error
417
+ return codes are the same as driver_return_code_t");
418
+ int cdio_get_media_changed(CdIo_t *p_cdio);
419
+
420
+ /* Set up to allow returning hardware info. We'll use a typedef so we
421
+ can make sure to isolate this.
422
+ */
423
+
424
+ %inline %{
425
+ typedef struct {
426
+ cdio_hwinfo_t hw;
427
+ bool result;
428
+ } HWInfo_t;
429
+ %}
430
+
431
+
432
+ %typemap(out) HWInfo_t {
433
+ // $1 is of type HWInfo_t
434
+ VALUE ret;
435
+ if ($1.result == 0)
436
+ return Qnil;
437
+ else {
438
+ ret = rb_hash_new();
439
+ rb_hash_aset(ret, rb_str_new2("vendor"),
440
+ rb_str_new2($1.hw.psz_vendor));
441
+ rb_hash_aset(ret, rb_str_new2("model"),
442
+ rb_str_new2($1.hw.psz_model));
443
+ rb_hash_aset(ret, rb_str_new2("revision"),
444
+ rb_str_new2($1.hw.psz_revision));
445
+ return ret;
446
+ }
447
+ }
448
+
449
+ /*
450
+ get_hwinfo(p_cdio)->[vendor, model, release]
451
+ Get the CD-ROM hardware info via a SCSI MMC INQUIRY command.
452
+ An exception is raised if we had an error.
453
+ */
454
+ const HWInfo_t get_hwinfo ( const CdIo_t *p_cdio);
455
+
456
+ %inline %{
457
+ const
458
+ HWInfo_t get_hwinfo ( const CdIo_t *p_cdio)
459
+ {
460
+ static HWInfo_t info;
461
+ info.result = cdio_get_hwinfo(p_cdio, &info.hw);
462
+ return info;
463
+ }
464
+ %}
465
+
466
+ %rename cdio_set_blocksize set_blocksize;
467
+ %feature("autodoc",
468
+ "set_blocksize(cdio, blocksize)->return_status
469
+
470
+ Set the blocksize for subsequent reads.");
471
+ driver_return_code_t cdio_set_blocksize ( const CdIo_t *p_cdio,
472
+ int i_blocksize );
473
+
474
+ %rename cdio_set_speed set_speed;
475
+ %feature("autodoc",
476
+ "cdio_set_speed(cdio, speed)->return_status
477
+ Set the drive speed.");
478
+ driver_return_code_t cdio_set_speed ( const CdIo_t *p_cdio, int i_speed );
479
+
480
+
481
+ /**** Using the name open() conflicts with some C routine.
482
+ So we use open_cd() instead.
483
+ ***/
484
+ %feature("autodoc",
485
+ "open_cd(source=NULL, driver_id=nil, access_mode=nil)
486
+
487
+ Sets up to read from place specified by source, driver_id and
488
+ access mode. This should be called before using any other routine
489
+ except those that act on a CD-ROM drive by name.
490
+
491
+ If nil is given as the source, we'll use the default driver device.
492
+ If nil is given as the driver_id, we'll find a suitable device driver.
493
+
494
+ Return the a pointer than can be used in subsequent operations or
495
+ nil on error or no device.");
496
+ CdIo_t *open_cd(const char *psz_source,
497
+ driver_id_t driver_id=DRIVER_UNKNOWN,
498
+ const char *psz_access_mode=NULL);
499
+
500
+ %inline %{
501
+ CdIo_t *open_cd(const char *psz_orig_source, driver_id_t driver_id,
502
+ const char *psz_orig_access_mode)
503
+ {
504
+ const char *psz_source = psz_orig_source;
505
+ const char *psz_access_mode = psz_orig_access_mode;
506
+
507
+ if (psz_source && strlen(psz_source) == 0)
508
+ psz_source = NULL;
509
+ if (psz_access_mode || strlen(psz_access_mode) == 0)
510
+ psz_access_mode = NULL;
511
+ return cdio_open_am(psz_source, driver_id, psz_access_mode);
512
+ }
513
+ %}
@@ -0,0 +1,144 @@
1
+ /* -*- c -*-
2
+ $Id: device_const.swg,v 1.1.1.1 2006/11/13 05:13:33 rocky Exp $
3
+
4
+ Copyright (C) 2006 Rocky Bernstein <rocky@cpan.org>
5
+
6
+ This program is free software; you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation; either version 2 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
+ */
20
+ /* See <cdio/device.h> for more extensive documentation. */
21
+
22
+ /**** ALL OF THESE ARE CONSTANTS *** */
23
+ %immutable;
24
+
25
+ /* Drive types returned by cdio_get_drive_cap() */
26
+ %constant long int DRIVE_CAP_ERROR = CDIO_DRIVE_CAP_ERROR;
27
+ %constant long int DRIVE_CAP_UNKNOWN = CDIO_DRIVE_CAP_UNKNOWN;
28
+ %constant long int DRIVE_CAP_MISC_CLOSE_TRAY = CDIO_DRIVE_CAP_MISC_CLOSE_TRAY;
29
+ %constant long int DRIVE_CAP_MISC_EJECT = CDIO_DRIVE_CAP_MISC_EJECT;
30
+ %constant long int DRIVE_CAP_MISC_LOCK = CDIO_DRIVE_CAP_MISC_LOCK ;
31
+ %constant long int DRIVE_CAP_MISC_SELECT_SPEED = CDIO_DRIVE_CAP_MISC_SELECT_SPEED;
32
+ %constant long int DRIVE_CAP_MISC_SELECT_DISC = CDIO_DRIVE_CAP_MISC_SELECT_DISC;
33
+ %constant long int DRIVE_CAP_MISC_MULTI_SESSION = CDIO_DRIVE_CAP_MISC_MULTI_SESSION;
34
+ %constant long int DRIVE_CAP_MISC_MEDIA_CHANGED = CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED;
35
+ %constant long int DRIVE_CAP_MISC_RESET = CDIO_DRIVE_CAP_MISC_RESET;
36
+ %constant long int DRIVE_CAP_MISC_FILE = CDIO_DRIVE_CAP_MISC_FILE;
37
+
38
+ /* Reading masks.. */
39
+ %constant long int DRIVE_CAP_READ_AUDIO = CDIO_DRIVE_CAP_READ_AUDIO;
40
+ %constant long int DRIVE_CAP_READ_CD_DA = CDIO_DRIVE_CAP_READ_CD_DA;
41
+ %constant long int DRIVE_CAP_READ_CD_G = CDIO_DRIVE_CAP_READ_CD_G;
42
+ %constant long int DRIVE_CAP_READ_CD_R = CDIO_DRIVE_CAP_READ_CD_R;
43
+ %constant long int DRIVE_CAP_READ_CD_RW = CDIO_DRIVE_CAP_READ_CD_RW;
44
+ %constant long int DRIVE_CAP_READ_DVD_R = CDIO_DRIVE_CAP_READ_DVD_R;
45
+ %constant long int DRIVE_CAP_READ_DVD_PR = CDIO_DRIVE_CAP_READ_DVD_PR;
46
+ %constant long int DRIVE_CAP_READ_DVD_RAM = CDIO_DRIVE_CAP_READ_DVD_RAM;
47
+ %constant long int DRIVE_CAP_READ_DVD_ROM = CDIO_DRIVE_CAP_READ_DVD_ROM;
48
+ %constant long int DRIVE_CAP_READ_DVD_RW = CDIO_DRIVE_CAP_READ_DVD_RW;
49
+ %constant long int DRIVE_CAP_READ_DVD_RPW = CDIO_DRIVE_CAP_READ_DVD_RPW;
50
+ %constant long int DRIVE_CAP_READ_C2_ERRS = CDIO_DRIVE_CAP_READ_C2_ERRS;
51
+ %constant long int DRIVE_CAP_READ_MODE2_FORM1 = CDIO_DRIVE_CAP_READ_MODE2_FORM1;
52
+ %constant long int DRIVE_CAP_READ_MODE2_FORM2 = CDIO_DRIVE_CAP_READ_MODE2_FORM2;
53
+ %constant long int DRIVE_CAP_READ_MCN = CDIO_DRIVE_CAP_READ_MCN;
54
+ %constant long int DRIVE_CAP_READ_ISRC = CDIO_DRIVE_CAP_READ_ISRC;
55
+
56
+ /* Writing masks.. */
57
+ %constant long int DRIVE_CAP_WRITE_CD_R = CDIO_DRIVE_CAP_WRITE_CD_R;
58
+ %constant long int DRIVE_CAP_WRITE_CD_RW = CDIO_DRIVE_CAP_WRITE_CD_RW;
59
+ %constant long int DRIVE_CAP_WRITE_DVD_R = CDIO_DRIVE_CAP_WRITE_DVD_R;
60
+ %constant long int DRIVE_CAP_WRITE_DVD_PR = CDIO_DRIVE_CAP_WRITE_DVD_PR;
61
+ %constant long int DRIVE_CAP_WRITE_DVD_RAM = CDIO_DRIVE_CAP_WRITE_DVD_RAM;
62
+ %constant long int DRIVE_CAP_WRITE_DVD_RW = CDIO_DRIVE_CAP_WRITE_DVD_RW ;
63
+ %constant long int DRIVE_CAP_WRITE_DVD_RPW = CDIO_DRIVE_CAP_WRITE_DVD_RPW;
64
+ %constant long int DRIVE_CAP_WRITE_MT_RAINIER = CDIO_DRIVE_CAP_WRITE_MT_RAINIER;
65
+ %constant long int DRIVE_CAP_WRITE_BURN_PROOF = CDIO_DRIVE_CAP_WRITE_BURN_PROOF;
66
+
67
+ /*** Masks derived from above... ***/
68
+ /* Has some sort of CD writer ability. */
69
+ %constant long int DRIVE_CAP_WRITE_CD = CDIO_DRIVE_CAP_WRITE_CD;
70
+ /* Has some sort of DVD writer ability */
71
+ %constant long int DRIVE_CAP_WRITE_DVD = CDIO_DRIVE_CAP_WRITE_DVD;
72
+ %constant long int DRIVE_CAP_WRITE = CDIO_DRIVE_CAP_WRITE;
73
+
74
+ /*! Size of fields returned by an INQUIRY command */
75
+ %constant long int MMC_HW_VENDOR_LEN = CDIO_MMC_HW_VENDOR_LEN;
76
+ %constant long int MMC_HW_MODEL_LEN = CDIO_MMC_HW_MODEL_LEN;
77
+ %constant long int MMC_HW_REVISION_LEN = CDIO_MMC_HW_REVISION_LEN;
78
+
79
+ /**! Flags specifying the category of device to open or is opened. */
80
+ %constant long int SRC_IS_DISK_IMAGE_MASK = CDIO_SRC_IS_DISK_IMAGE_MASK;
81
+ %constant long int SRC_IS_DEVICE_MASK = CDIO_SRC_IS_DEVICE_MASK;
82
+ %constant long int SRC_IS_SCSI_MASK = CDIO_SRC_IS_SCSI_MASK;
83
+ %constant long int SRC_IS_NATIVE_MASK = CDIO_SRC_IS_NATIVE_MASK;
84
+
85
+ /* driver_id_t enums. */
86
+ %constant long int DRIVER_UNKNOWN = DRIVER_UNKNOWN;
87
+ %constant long int DRIVER_AIX = DRIVER_AIX;
88
+ %constant long int DRIVER_BSDI = DRIVER_BSDI;
89
+ %constant long int DRIVER_FREEBSD = DRIVER_FREEBSD;
90
+ %constant long int DRIVER_LINUX = DRIVER_LINUX;
91
+ %constant long int DRIVER_SOLARIS = DRIVER_SOLARIS;
92
+ %constant long int DRIVER_OSX = DRIVER_OSX;
93
+ %constant long int DRIVER_WIN32 = DRIVER_WIN32;
94
+ %constant long int DRIVER_CDRDAO = DRIVER_CDRDAO;
95
+ %constant long int DRIVER_BINCUE = DRIVER_BINCUE;
96
+ %constant long int DRIVER_NRG = DRIVER_NRG;
97
+ %constant long int DRIVER_DEVICE = DRIVER_DEVICE;
98
+
99
+ %constant long int MIN_DRIVER = CDIO_MIN_DRIVER;
100
+ %constant long int MIN_DEVICE_DRIVER = CDIO_MIN_DEVICE_DRIVER;
101
+ %constant long int MAX_DRIVER = CDIO_MAX_DRIVER;
102
+ %constant long int MAX_DEVICE_DRIVER = CDIO_MAX_DEVICE_DRIVER;
103
+
104
+
105
+ %constant long int DRIVER_OP_SUCCESS = DRIVER_OP_SUCCESS;
106
+ %constant long int DRIVER_OP_ERROR = DRIVER_OP_ERROR;
107
+ %constant long int DRIVER_OP_UNSUPPORTED = DRIVER_OP_UNSUPPORTED;
108
+ %constant long int DRIVER_OP_UNINIT = DRIVER_OP_UNINIT;
109
+ %constant long int DRIVER_OP_NOT_PERMITTED = DRIVER_OP_NOT_PERMITTED;
110
+ %constant long int DRIVER_OP_BAD_PARAMETER = DRIVER_OP_BAD_PARAMETER;
111
+ %constant long int DRIVER_OP_BAD_POINTER = DRIVER_OP_BAD_POINTER;
112
+ %constant long int DRIVER_OP_NO_DRIVER = DRIVER_OP_NO_DRIVER;
113
+
114
+ %constant unsigned int FS_AUDIO = CDIO_FS_AUDIO;
115
+ %constant unsigned int FS_HIGH_SIERRA = CDIO_FS_HIGH_SIERRA;
116
+ %constant unsigned int FS_ISO_9660 = CDIO_FS_ISO_9660;
117
+ %constant unsigned int FS_INTERACTIVE = CDIO_FS_INTERACTIVE;
118
+ %constant unsigned int FS_HFS = CDIO_FS_HFS;
119
+ %constant unsigned int FS_UFS = CDIO_FS_UFS;
120
+ %constant unsigned int FS_EXT2 = CDIO_FS_EXT2;
121
+ %constant unsigned int FS_ISO_HFS = CDIO_FS_ISO_HFS;
122
+ %constant unsigned int FS_ISO_9660_INTERACTIVE = CDIO_FS_ISO_9660_INTERACTIVE;
123
+ %constant unsigned int FS_3DO = CDIO_FS_3DO;
124
+ %constant unsigned int FS_XISO = CDIO_FS_XISO;
125
+ %constant unsigned int FS_UDFX = CDIO_FS_UDFX;
126
+ %constant unsigned int FS_UDF = CDIO_FS_UDF;
127
+ %constant unsigned int FS_ISO_UDF = CDIO_FS_ISO_UDF;
128
+
129
+ %constant unsigned int FS_ANAL_XA = CDIO_FS_ANAL_XA;
130
+ %constant unsigned int FS_ANAL_MULTISESSION = CDIO_FS_ANAL_MULTISESSION;
131
+ %constant unsigned int FS_ANAL_PHOTO_CD = CDIO_FS_ANAL_PHOTO_CD;
132
+ %constant unsigned int FS_ANAL_HIDDEN_TRACK = CDIO_FS_ANAL_HIDDEN_TRACK;
133
+ %constant unsigned int FS_ANAL_CDTV = CDIO_FS_ANAL_CDTV;
134
+ %constant unsigned int FS_ANAL_BOOTABLE = CDIO_FS_ANAL_BOOTABLE;
135
+ %constant unsigned int FS_ANAL_VIDEOCD = CDIO_FS_ANAL_VIDEOCD;
136
+ %constant unsigned int FS_ANAL_ROCKRIDGE = CDIO_FS_ANAL_ROCKRIDGE;
137
+ %constant unsigned int FS_ANAL_JOLIET = CDIO_FS_ANAL_JOLIET;
138
+ %constant unsigned int FS_ANAL_SVCD = CDIO_FS_ANAL_SVCD;
139
+ %constant unsigned int FS_ANAL_CVD = CDIO_FS_ANAL_CVD;
140
+ %constant unsigned int FS_ANAL_XISO = CDIO_FS_ANAL_XISO;
141
+ %constant unsigned int FS_MATCH_ALL = CDIO_FS_MATCH_ALL;
142
+ %constant unsigned int FS_UNKNOWN = CDIO_FS_UNKNOWN;
143
+
144
+ %mutable;