rb_cdio 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog.txt +26 -0
- data/LICENSE +340 -0
- data/README.EXT +1051 -0
- data/README.txt +16 -0
- data/VERSION +1 -0
- data/doc/classes/CdIo.html +523 -0
- data/doc/classes/CdIo.src/M000001.html +17 -0
- data/doc/classes/CdIo.src/M000002.html +17 -0
- data/doc/classes/CdIo.src/M000003.html +17 -0
- data/doc/classes/CdIo.src/M000004.html +17 -0
- data/doc/classes/CdIo.src/M000005.html +17 -0
- data/doc/classes/CdIo.src/M000006.html +17 -0
- data/doc/classes/CdIo.src/M000007.html +17 -0
- data/doc/classes/CdIo.src/M000008.html +17 -0
- data/doc/classes/CdIo.src/M000009.html +17 -0
- data/doc/classes/CdIo.src/M000010.html +17 -0
- data/doc/classes/CdIo.src/M000011.html +17 -0
- data/doc/classes/CdIo.src/M000012.html +17 -0
- data/doc/classes/CdIo.src/M000013.html +17 -0
- data/doc/classes/CdIo.src/M000014.html +17 -0
- data/doc/classes/CdIo.src/M000015.html +17 -0
- data/doc/classes/CdIo.src/M000016.html +17 -0
- data/doc/classes/CdIo/Cd.html +348 -0
- data/doc/classes/CdIo/Cd.src/M000011.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000012.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000013.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000014.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000015.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000016.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000017.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000018.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000019.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000021.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000022.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000023.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000024.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000025.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000026.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000027.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000028.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000029.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000030.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000031.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000032.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000033.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000034.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000035.html +17 -0
- data/doc/classes/CdIo/Cd.src/M000036.html +17 -0
- data/doc/classes/CdIo/CdText.html +111 -0
- data/doc/classes/CdIo/Device.html +111 -0
- data/doc/classes/CdIo/Track.html +246 -0
- data/doc/classes/CdIo/Track.src/M000009.html +17 -0
- data/doc/classes/CdIo/Track.src/M000010.html +17 -0
- data/doc/classes/CdIo/Track.src/M000011.html +17 -0
- data/doc/classes/CdIo/Track.src/M000017.html +17 -0
- data/doc/classes/CdIo/Track.src/M000018.html +17 -0
- data/doc/classes/CdIo/Track.src/M000019.html +17 -0
- data/doc/classes/CdIo/Track.src/M000020.html +17 -0
- data/doc/classes/CdIo/TrackIso9660.html +159 -0
- data/doc/classes/CdIo/Tracks.html +199 -0
- data/doc/classes/CdIo/Tracks.src/M000020.html +17 -0
- data/doc/classes/CdIo/Tracks.src/M000021.html +17 -0
- data/doc/classes/CdIo/Tracks.src/M000022.html +17 -0
- data/doc/created.rid +1 -0
- data/doc/files/rb_cdio_def_rb.html +169 -0
- data/doc/files/test/testall_rb.html +110 -0
- data/doc/fr_class_index.html +31 -0
- data/doc/fr_file_index.html +27 -0
- data/doc/fr_method_index.html +48 -0
- data/doc/index.html +24 -0
- data/ext/CdIo.c +41 -20
- data/ext/CdIo.h +19 -9
- data/ext/CdIo_Cd.c +35 -52
- data/ext/CdIo_Common.c +56 -12
- data/ext/CdIo_Modulo.c +54 -34
- data/ext/CdIo_Track.c +24 -7
- data/ext/CdIo_TrackIso9660.c +1 -1
- data/ext/CdIo_Tracks.c +66 -0
- data/mkmf.log +26 -0
- data/rb_cdio.def.rb +187 -0
- data/svn-commit.tmp +5 -0
- data/tags +47 -0
- data/test/testclose.rb +19 -0
- data/test/testmethods.rb +28 -0
- metadata +253 -20
- data/ext/CdIo.o +0 -0
- data/ext/CdIo_Cd.o +0 -0
- data/ext/CdIo_Common.o +0 -0
- data/ext/CdIo_Modulo.o +0 -0
- data/ext/CdIo_Track.o +0 -0
- data/ext/CdIo_TrackIso9660.o +0 -0
- data/ext/Makefile +0 -127
- data/test/data/Makefile +0 -677
- data/test/data/Makefile.am +0 -78
- data/test/data/Makefile.in +0 -677
- data/test/data/testassert +0 -117
- data/test/data/testbincue +0 -117
- data/test/data/testdefault +0 -117
- data/test/data/testischar +0 -117
- data/test/data/testiso9660 +0 -117
- data/test/data/testtoc +0 -117
data/doc/index.html
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
|
5
|
+
|
|
6
|
+
<!--
|
|
7
|
+
|
|
8
|
+
RDoc Documentation
|
|
9
|
+
|
|
10
|
+
-->
|
|
11
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
12
|
+
<head>
|
|
13
|
+
<title>RDoc Documentation</title>
|
|
14
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
15
|
+
</head>
|
|
16
|
+
<frameset rows="20%, 80%">
|
|
17
|
+
<frameset cols="25%,35%,45%">
|
|
18
|
+
<frame src="fr_file_index.html" title="Files" name="Files" />
|
|
19
|
+
<frame src="fr_class_index.html" name="Classes" />
|
|
20
|
+
<frame src="fr_method_index.html" name="Methods" />
|
|
21
|
+
</frameset>
|
|
22
|
+
<frame src="files/rb_cdio_def_rb.html" name="docwin" />
|
|
23
|
+
</frameset>
|
|
24
|
+
</html>
|
data/ext/CdIo.c
CHANGED
|
@@ -13,11 +13,10 @@ Init_rb_cdio()
|
|
|
13
13
|
{
|
|
14
14
|
/** module CdIo */
|
|
15
15
|
mCdIo = rb_define_module("CdIo");
|
|
16
|
-
rb_define_module_function(mCdIo, "
|
|
17
|
-
|
|
18
|
-
rb_define_module_function(mCdIo, "get_default_device",
|
|
16
|
+
rb_define_module_function(mCdIo, "devices", rb_cdio_get_devices, -1);
|
|
17
|
+
rb_define_module_function(mCdIo, "default_device",
|
|
19
18
|
rb_cdio_get_default_device, -1);
|
|
20
|
-
rb_define_module_function(mCdIo, "
|
|
19
|
+
rb_define_module_function(mCdIo, "drive_cap_dev",
|
|
21
20
|
rb_cdio_get_drive_cap_dev, 1);
|
|
22
21
|
rb_define_module_function(mCdIo, "discmode_describe",
|
|
23
22
|
rb_cdio_discmode_describe, 1);
|
|
@@ -34,7 +33,7 @@ Init_rb_cdio()
|
|
|
34
33
|
rb_define_module_function(mCdIo, "is_cuefile", rb_cdio_is_cuefile, 1);
|
|
35
34
|
rb_define_module_function(mCdIo, "is_nrg", rb_cdio_is_nrg, 1);
|
|
36
35
|
rb_define_module_function(mCdIo, "is_tocfile", rb_cdio_is_tocfile, 1);
|
|
37
|
-
rb_define_module_function(mCdIo, "is_device",rb_cdio_is_device
|
|
36
|
+
rb_define_module_function(mCdIo, "is_device", rb_cdio_is_device, -1);
|
|
38
37
|
|
|
39
38
|
/**
|
|
40
39
|
* class CdIo::Cd
|
|
@@ -43,39 +42,48 @@ Init_rb_cdio()
|
|
|
43
42
|
rb_define_singleton_method(cCdIoCd, "new", rb_cdio_cd_new, -1);
|
|
44
43
|
rb_define_method(cCdIoCd, "initialize", rb_cdio_cd_init, 2);
|
|
45
44
|
int i;
|
|
46
|
-
|
|
47
|
-
const char
|
|
45
|
+
#define CDIO_ATTR 9
|
|
46
|
+
const char *attr[CDIO_ATTR] =
|
|
48
47
|
{ "device", "mcn", "driver_name", "driver_id", "first_track_num",
|
|
49
48
|
"discmode", "num_tracks", "stat_size", "cddb_id"
|
|
50
49
|
};
|
|
51
50
|
for (i = 0; i < CDIO_ATTR; i++) {
|
|
52
51
|
rb_define_attr(cCdIoCd, attr[i], 1, 0);
|
|
53
52
|
}
|
|
54
|
-
rb_define_method(cCdIoCd, "
|
|
55
|
-
rb_define_method(cCdIoCd, "
|
|
53
|
+
rb_define_method(cCdIoCd, "tracks", rb_cdio_cd_get_tracks, 0);
|
|
54
|
+
rb_define_method(cCdIoCd, "first_track",
|
|
56
55
|
rb_cdio_cd_get_first_track, 0);
|
|
57
56
|
rb_define_method(cCdIoCd, "get_arg", rb_cdio_cd_get_arg, 1);
|
|
58
57
|
|
|
59
58
|
rb_define_method(cCdIoCd, "is_cd?", rb_cdio_cd_is_cd, 0);
|
|
60
59
|
rb_define_method(cCdIoCd, "is_dvd?", rb_cdio_cd_is_dvd, 0);
|
|
61
|
-
rb_define_method(cCdIoCd, "
|
|
62
|
-
rb_define_method(cCdIoCd, "
|
|
60
|
+
rb_define_method(cCdIoCd, "freedb", rb_cdio_cd_get_freedb, 0);
|
|
61
|
+
rb_define_method(cCdIoCd, "cdtext", rb_cdio_cd_get_cdtext, 0);
|
|
63
62
|
// device methods
|
|
64
|
-
rb_define_method(cCdIoCd, "
|
|
65
|
-
|
|
66
|
-
rb_define_method(cCdIoCd, "get_hwinfo", rb_cdio_cd_get_hwinfo, 0);
|
|
63
|
+
rb_define_method(cCdIoCd, "drive_cap", rb_cdio_cd_get_drive_cap, 0);
|
|
64
|
+
rb_define_method(cCdIoCd, "hwinfo", rb_cdio_cd_get_hwinfo, 0);
|
|
67
65
|
rb_define_method(cCdIoCd, "close", rb_cdio_cd_close, 0);
|
|
66
|
+
/** class CdIo::Tracks */
|
|
67
|
+
cCdIoTracks = rb_define_class_under(mCdIo, "Tracks", rb_cObject);
|
|
68
|
+
rb_include_module(cCdIoTracks, rb_mEnumerable);
|
|
69
|
+
rb_define_method(cCdIoTracks, "initialize", rb_cdio_tracks_init, 1);
|
|
70
|
+
rb_define_method(cCdIoTracks, "each", rb_cdio_tracks_each, -1);
|
|
71
|
+
rb_define_method(cCdIoTracks, "<=>", rb_cdio_tracks_diff, 2);
|
|
72
|
+
rb_define_method(cCdIoTracks, "[]", rb_cdio_tracks_index, 1);
|
|
73
|
+
rb_define_attr(cCdIoTracks, "cd", 1, 0);
|
|
74
|
+
rb_define_attr(cCdIoTracks, "tracks", 1, 0);
|
|
68
75
|
/** class CdIo::Track */
|
|
69
76
|
cCdIoTrack = rb_define_class_under(mCdIo, "Track", rb_cObject);
|
|
70
77
|
rb_define_method(cCdIoTrack, "initialize", rb_cdio_track_init, 2);
|
|
71
78
|
rb_define_method(cCdIoTrack, "green?", rb_cdio_track_green, 0);
|
|
72
|
-
rb_define_method(cCdIoTrack, "
|
|
79
|
+
rb_define_method(cCdIoTrack, "cdtext", rb_cdio_track_get_cdtext, 0);
|
|
73
80
|
/** :cd :number :format, :green, :lba,:lsn,min,sec,frames,:sec_count*/
|
|
74
|
-
|
|
81
|
+
#define CDIO_TRACK_ATTR 12
|
|
82
|
+
const char *attr2[CDIO_TRACK_ATTR] =
|
|
75
83
|
{ "cd", "number", "format", "lba", "lsn", "min", "sec", "frames",
|
|
76
|
-
"msf", "sec_count", "track_type"
|
|
84
|
+
"msf", "sec_count", "track_type", "leadout"
|
|
77
85
|
};
|
|
78
|
-
for (i = 0; i <
|
|
86
|
+
for (i = 0; i < CDIO_TRACK_ATTR; i++) {
|
|
79
87
|
rb_define_attr(cCdIoTrack, attr2[i], 1, 0);
|
|
80
88
|
}
|
|
81
89
|
/** class CdIo::TrackIso9660 < CdIo::Track */
|
|
@@ -91,7 +99,7 @@ Init_rb_cdio()
|
|
|
91
99
|
}
|
|
92
100
|
rb_define_method(cCdIoTrackIso9660, "initialize",
|
|
93
101
|
rb_cdio_trackiso9660_init, 2);
|
|
94
|
-
// const for
|
|
102
|
+
// const for DRIVER
|
|
95
103
|
rb_define_const(mCdIo, "DRIVER_UNKNOWN", INT2FIX(DRIVER_UNKNOWN));
|
|
96
104
|
rb_define_const(mCdIo, "DRIVER_FREEBSD", INT2FIX(DRIVER_FREEBSD));
|
|
97
105
|
rb_define_const(mCdIo, "DRIVER_LINUX", INT2FIX(DRIVER_LINUX));
|
|
@@ -102,7 +110,7 @@ Init_rb_cdio()
|
|
|
102
110
|
rb_define_const(mCdIo, "DRIVER_BINCUE", INT2FIX(DRIVER_BINCUE));
|
|
103
111
|
rb_define_const(mCdIo, "DRIVER_NRG", INT2FIX(DRIVER_NRG));
|
|
104
112
|
rb_define_const(mCdIo, "DRIVER_DEVICE", INT2FIX(DRIVER_DEVICE));
|
|
105
|
-
// const for
|
|
113
|
+
// const for CD types
|
|
106
114
|
rb_define_const(mCdIo, "CDIO_DISC_MODE_CD_DA",
|
|
107
115
|
INT2FIX(CDIO_DISC_MODE_CD_DA));
|
|
108
116
|
rb_define_const(mCdIo, "CDIO_DISC_MODE_CD_DATA",
|
|
@@ -129,4 +137,17 @@ Init_rb_cdio()
|
|
|
129
137
|
INT2FIX(CDIO_DISC_MODE_NO_INFO));
|
|
130
138
|
rb_define_const(mCdIo, "CDIO_DISC_MODE_ERROR",
|
|
131
139
|
INT2FIX(CDIO_DISC_MODE_ERROR));
|
|
140
|
+
rb_define_const(mCdIo, "TRACK_FORMAT_AUDIO",
|
|
141
|
+
INT2FIX(TRACK_FORMAT_AUDIO));
|
|
142
|
+
rb_define_const(mCdIo, "TRACK_FORMAT_CDI", INT2FIX(TRACK_FORMAT_CDI));
|
|
143
|
+
/**< CD-i. How this is different from DATA below? */
|
|
144
|
+
rb_define_const(mCdIo, "TRACK_FORMAT_XA", INT2FIX(TRACK_FORMAT_XA));
|
|
145
|
+
/**< Mode2 of some sort */
|
|
146
|
+
rb_define_const(mCdIo, "TRACK_FORMAT_DATA",
|
|
147
|
+
INT2FIX(TRACK_FORMAT_DATA));
|
|
148
|
+
/**< Mode1 of some sort */
|
|
149
|
+
rb_define_const(mCdIo, "TRACK_FORMAT_PSX", INT2FIX(TRACK_FORMAT_PSX));
|
|
150
|
+
rb_define_const(mCdIo, "TRACK_FORMAT_ERROR", INT2FIX(TRACK_FORMAT_ERROR)); /**< Dunno what is, or some other error. */
|
|
151
|
+
rb_define_const(mCdIo, "CDIO_CDROM_LEADOUT_TRACK",
|
|
152
|
+
INT2FIX(CDIO_CDROM_LEADOUT_TRACK));
|
|
132
153
|
}
|
data/ext/CdIo.h
CHANGED
|
@@ -43,6 +43,7 @@ VALUE mCdIo;
|
|
|
43
43
|
VALUE cCdIoCd;
|
|
44
44
|
VALUE cCdIoTrack;
|
|
45
45
|
VALUE cCdIoTrackIso9660;
|
|
46
|
+
VALUE cCdIoTracks;
|
|
46
47
|
int Init_CdIo();
|
|
47
48
|
// Metodos para el m�dulo CdIo
|
|
48
49
|
|
|
@@ -64,13 +65,13 @@ VALUE rb_cdio_discmode_describe(VALUE module, VALUE discmode); // creada
|
|
|
64
65
|
// por
|
|
65
66
|
// mi
|
|
66
67
|
|
|
67
|
-
VALUE rb_cdio_is_binfile(VALUE module, VALUE name);
|
|
68
|
-
VALUE rb_cdio_is_cuefile(VALUE module, VALUE name);
|
|
69
|
-
VALUE rb_cdio_is_nrg(VALUE module, VALUE name);
|
|
70
|
-
VALUE rb_cdio_is_tocfile(VALUE module, VALUE name);
|
|
71
|
-
VALUE rb_cdio_is_device(int argc, VALUE * argv, VALUE module);
|
|
68
|
+
VALUE rb_cdio_is_binfile(VALUE module, VALUE name);
|
|
69
|
+
VALUE rb_cdio_is_cuefile(VALUE module, VALUE name);
|
|
70
|
+
VALUE rb_cdio_is_nrg(VALUE module, VALUE name);
|
|
71
|
+
VALUE rb_cdio_is_tocfile(VALUE module, VALUE name);
|
|
72
|
+
VALUE rb_cdio_is_device(int argc, VALUE * argv, VALUE module);
|
|
73
|
+
|
|
72
74
|
|
|
73
|
-
|
|
74
75
|
/*
|
|
75
76
|
* M�todos para clase CdIo::Cd
|
|
76
77
|
*/
|
|
@@ -87,16 +88,24 @@ VALUE rb_cdio_cd_get_drive_cap(VALUE obj);
|
|
|
87
88
|
VALUE rb_cdio_cd_get_hwinfo(VALUE obj);
|
|
88
89
|
VALUE rb_cdio_cd_close(VALUE obj);
|
|
89
90
|
VALUE rb_cdio_cd_get_cdtext(VALUE obj);
|
|
91
|
+
/**
|
|
92
|
+
* M�todos para la clase CdIo::Tracks
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
VALUE rb_cdio_tracks_init(VALUE obj, VALUE cd);
|
|
96
|
+
VALUE rb_cdio_tracks_each(int argc, VALUE * argv, VALUE obj);
|
|
97
|
+
VALUE rb_cdio_tracks_diff(VALUE obj, VALUE a, VALUE b);
|
|
98
|
+
VALUE rb_cdio_tracks_index(VALUE obj, VALUE index);
|
|
90
99
|
/*
|
|
91
100
|
* M�todos para la clase CdIo::Track
|
|
92
101
|
*/
|
|
93
|
-
|
|
102
|
+
|
|
94
103
|
VALUE rb_cdio_track_init(VALUE obj, VALUE oCd, VALUE i_track); // ok
|
|
95
104
|
VALUE rb_cdio_track_green(VALUE obj); // ok
|
|
96
105
|
VALUE rb_cdio_track_get_cdtext(VALUE obj);
|
|
97
106
|
|
|
98
107
|
/* TrackIso9660*/
|
|
99
|
-
|
|
108
|
+
|
|
100
109
|
VALUE rb_cdio_trackiso9660_init(VALUE obj, VALUE oCd, VALUE i_track);
|
|
101
110
|
/*
|
|
102
111
|
* M�todos comunes
|
|
@@ -104,5 +113,6 @@ VALUE rb_cdio_trackiso9660_init(VALUE obj, VALUE oCd, VALUE i_track);
|
|
|
104
113
|
VALUE get_cap(cdio_drive_read_cap_t * read_cap,
|
|
105
114
|
cdio_drive_write_cap_t * write_cap,
|
|
106
115
|
cdio_drive_misc_cap_t * misc_cap);
|
|
107
|
-
VALUE get_cdtext(const cdtext_t *cdtext);
|
|
116
|
+
VALUE get_cdtext(const cdtext_t * cdtext);
|
|
117
|
+
VALUE get_track(VALUE obj, track_t i);
|
|
108
118
|
#endif
|
data/ext/CdIo_Cd.c
CHANGED
|
@@ -8,57 +8,28 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Implementation of CdIo::Cd
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
#include "CdIo.h"
|
|
15
15
|
// Libera el puntero al objeto CdIo creado en Cd.new
|
|
16
|
+
/**
|
|
17
|
+
* Free resources for CdIo* in CdIo::Cd
|
|
18
|
+
*/
|
|
16
19
|
static void
|
|
17
20
|
_cdio_cd_destroy(void *p)
|
|
18
21
|
{
|
|
22
|
+
|
|
19
23
|
/*
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*/
|
|
24
|
+
* static int i; printf("\nDestruyendo cdio %d\n",i++);
|
|
25
|
+
*/
|
|
23
26
|
cdio_destroy(p);
|
|
24
27
|
}
|
|
25
28
|
|
|
26
|
-
// lanza true si el tipo de disco es un ISO9660
|
|
27
29
|
|
|
28
|
-
static bool
|
|
29
|
-
_cdio_cd_is_iso(CdIo * p_cdio, track_t track)
|
|
30
|
-
{
|
|
31
|
-
cdio_fs_anal_t fs;
|
|
32
|
-
cdio_iso_analysis_t iso_analysis;
|
|
33
|
-
fs = cdio_guess_cd_type(p_cdio, 0, track, &iso_analysis);
|
|
34
|
-
switch (CDIO_FSTYPE(fs)) {
|
|
35
|
-
case CDIO_FS_ISO_9660:
|
|
36
|
-
case CDIO_FS_ISO_9660_INTERACTIVE:
|
|
37
|
-
case CDIO_FS_ISO_HFS:
|
|
38
|
-
case CDIO_FS_ISO_UDF:
|
|
39
|
-
return true;
|
|
40
|
-
default:
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
30
|
|
|
45
|
-
/*
|
|
46
|
-
* Devuelve un objeto CdIo::Track o de una subclase, a partir de un objeto
|
|
47
|
-
* Cd y un n?mero de pista
|
|
48
|
-
*/
|
|
49
31
|
|
|
50
|
-
|
|
51
|
-
_track_by_type(VALUE obj, track_t i)
|
|
52
|
-
{
|
|
53
|
-
GET_CDIO(obj, p_cdio);
|
|
54
|
-
VALUE track;
|
|
55
|
-
if (_cdio_cd_is_iso(p_cdio, i)) {
|
|
56
|
-
track = rb_cdio_trackiso9660_new(obj, i);
|
|
57
|
-
} else {
|
|
58
|
-
track = rb_cdio_track_new(obj, i);
|
|
59
|
-
}
|
|
60
|
-
return track;
|
|
61
|
-
}
|
|
32
|
+
|
|
62
33
|
|
|
63
34
|
/**
|
|
64
35
|
* CDDB
|
|
@@ -110,8 +81,12 @@ cddb_discid(CdIo * p_cdio, int i_tracks)
|
|
|
110
81
|
}
|
|
111
82
|
|
|
112
83
|
/**
|
|
113
|
-
|
|
114
|
-
|
|
84
|
+
Create a new Cd::CdIo object.
|
|
85
|
+
The first argument is an String for a device or a cue/bin/toc/nrg file
|
|
86
|
+
The seconf argument is the constant for a Driver (default CdIo::DRIVER_UNKNOWN)
|
|
87
|
+
* CdIo::Cd.new()
|
|
88
|
+
* CdIo::Cd.new("/dev/cdrom")
|
|
89
|
+
* CdIo::Cd.new("/dev/cdrom", CdIo::DRIVER_UNKNOWN)
|
|
115
90
|
*/
|
|
116
91
|
|
|
117
92
|
VALUE
|
|
@@ -142,7 +117,7 @@ rb_cdio_cd_new(int argc, VALUE * argv, VALUE class)
|
|
|
142
117
|
p_cdio = cdio_open(device, driver);
|
|
143
118
|
|
|
144
119
|
if (p_cdio == NULL) {
|
|
145
|
-
|
|
120
|
+
rb_raise(rb_eException, "I can't create a pointer");
|
|
146
121
|
return Qnil;
|
|
147
122
|
} else {
|
|
148
123
|
VALUE c_argv[2];
|
|
@@ -156,7 +131,10 @@ rb_cdio_cd_new(int argc, VALUE * argv, VALUE class)
|
|
|
156
131
|
}
|
|
157
132
|
|
|
158
133
|
/**
|
|
159
|
-
|
|
134
|
+
CdIo::Cd.initialize
|
|
135
|
+
Initialize the CdIo::Cd object
|
|
136
|
+
The first argument is an String for a device or a cue/bin/toc/nrg file
|
|
137
|
+
The seconf argument is the constant for a driver
|
|
160
138
|
*/
|
|
161
139
|
VALUE
|
|
162
140
|
rb_cdio_cd_init(VALUE self, VALUE device, VALUE driver)
|
|
@@ -202,11 +180,15 @@ rb_cdio_cd_init(VALUE self, VALUE device, VALUE driver)
|
|
|
202
180
|
}
|
|
203
181
|
|
|
204
182
|
/**
|
|
205
|
-
*
|
|
183
|
+
* Returns an array with the tracks of the cd
|
|
184
|
+
* cd.get_tracks #=> [<CdIo::Track>,<CdIo::Track>]
|
|
206
185
|
*/
|
|
207
186
|
VALUE
|
|
208
187
|
rb_cdio_cd_get_tracks(VALUE self)
|
|
209
188
|
{
|
|
189
|
+
VALUE argv[1];
|
|
190
|
+
argv[0] = self;
|
|
191
|
+
return rb_class_new_instance(1, argv, cCdIoTracks);
|
|
210
192
|
VALUE aTracks;
|
|
211
193
|
aTracks = rb_ary_new();
|
|
212
194
|
GET_CDIO(self, p_cdio);
|
|
@@ -219,7 +201,7 @@ rb_cdio_cd_get_tracks(VALUE self)
|
|
|
219
201
|
int j,
|
|
220
202
|
i = first_track_num;
|
|
221
203
|
for (j = 0; j < num_tracks; i++, j++) {
|
|
222
|
-
rb_ary_push(aTracks,
|
|
204
|
+
rb_ary_push(aTracks, get_track(self, i));
|
|
223
205
|
}
|
|
224
206
|
return aTracks;
|
|
225
207
|
}
|
|
@@ -232,7 +214,7 @@ rb_cdio_cd_get_first_track(VALUE self)
|
|
|
232
214
|
{
|
|
233
215
|
GET_CDIO(self, p_cdio);
|
|
234
216
|
track_t first_track_num = cdio_get_first_track_num(p_cdio);
|
|
235
|
-
return
|
|
217
|
+
return get_track(self, first_track_num);
|
|
236
218
|
}
|
|
237
219
|
|
|
238
220
|
/**
|
|
@@ -264,7 +246,7 @@ rb_cdio_cd_is_dvd(VALUE obj)
|
|
|
264
246
|
return (discmode_is_dvd(cdio_get_discmode(p_cdio))) ? Qtrue : Qfalse;
|
|
265
247
|
}
|
|
266
248
|
|
|
267
|
-
static
|
|
249
|
+
static VALUE
|
|
268
250
|
_get_freedb(VALUE obj)
|
|
269
251
|
{
|
|
270
252
|
rb_require("freedb");
|
|
@@ -274,7 +256,7 @@ _get_freedb(VALUE obj)
|
|
|
274
256
|
rb_iv_get(obj, "@device"));
|
|
275
257
|
}
|
|
276
258
|
|
|
277
|
-
static
|
|
259
|
+
static VALUE
|
|
278
260
|
_get_freedb_error(VALUE obj, VALUE error_info)
|
|
279
261
|
{
|
|
280
262
|
rb_raise(rb_eLoadError,
|
|
@@ -331,15 +313,16 @@ rb_cdio_cd_get_hwinfo(VALUE obj)
|
|
|
331
313
|
VALUE
|
|
332
314
|
rb_cdio_cd_close(VALUE obj)
|
|
333
315
|
{
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
*/
|
|
316
|
+
rb_gc_start();
|
|
317
|
+
obj = Qnil;
|
|
337
318
|
return Qnil;
|
|
338
319
|
}
|
|
339
320
|
|
|
340
321
|
|
|
341
|
-
VALUE
|
|
342
|
-
|
|
343
|
-
|
|
322
|
+
VALUE
|
|
323
|
+
rb_cdio_cd_get_cdtext(VALUE obj)
|
|
324
|
+
{
|
|
325
|
+
GET_CDIO(obj, p_cdio);
|
|
326
|
+
const cdtext_t *cdtext = cdio_get_cdtext(p_cdio, 0);
|
|
344
327
|
return get_cdtext(cdtext);
|
|
345
328
|
}
|
data/ext/CdIo_Common.c
CHANGED
|
@@ -67,18 +67,62 @@ get_cap(cdio_drive_read_cap_t * read_cap,
|
|
|
67
67
|
#undef CAP
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
VALUE
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
VALUE
|
|
71
|
+
get_cdtext(const cdtext_t * cdtext)
|
|
72
|
+
{
|
|
73
|
+
if (NULL == cdtext) {
|
|
74
|
+
return Qnil;
|
|
75
|
+
} else {
|
|
76
|
+
VALUE ret;
|
|
77
|
+
ret = rb_hash_new();
|
|
78
|
+
int i;
|
|
79
|
+
for (i = 0; i < MAX_CDTEXT_FIELDS; i++) {
|
|
80
|
+
if (cdtext->field[i]) {
|
|
81
|
+
rb_hash_aset(ret, rb_str_new2(cdtext_field2str(i)),
|
|
82
|
+
rb_str_new2(cdtext->field[i]));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return ret;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* true if track is iso
|
|
91
|
+
*/
|
|
92
|
+
bool
|
|
93
|
+
_cdio_cd_is_iso(CdIo * p_cdio, track_t track)
|
|
94
|
+
{
|
|
95
|
+
cdio_fs_anal_t fs;
|
|
96
|
+
cdio_iso_analysis_t iso_analysis;
|
|
97
|
+
fs = cdio_guess_cd_type(p_cdio, 0, track, &iso_analysis);
|
|
98
|
+
switch (CDIO_FSTYPE(fs)) {
|
|
99
|
+
case CDIO_FS_ISO_9660:
|
|
100
|
+
case CDIO_FS_ISO_9660_INTERACTIVE:
|
|
101
|
+
case CDIO_FS_ISO_HFS:
|
|
102
|
+
case CDIO_FS_ISO_UDF:
|
|
103
|
+
return true;
|
|
104
|
+
default:
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Returns an object CdIo::Track or a subclass, with an object CdIo::Cd and
|
|
111
|
+
* a track number
|
|
112
|
+
* @param CdIo::Cd object
|
|
113
|
+
* @param track
|
|
114
|
+
* @return CdIo::Track
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
VALUE
|
|
118
|
+
get_track(VALUE obj, track_t i)
|
|
119
|
+
{
|
|
120
|
+
GET_CDIO(obj, p_cdio);
|
|
121
|
+
VALUE track;
|
|
122
|
+
if (_cdio_cd_is_iso(p_cdio, i)) {
|
|
123
|
+
track = rb_cdio_trackiso9660_new(obj, i);
|
|
73
124
|
} else {
|
|
74
|
-
|
|
75
|
-
ret=rb_hash_new();
|
|
76
|
-
int i;
|
|
77
|
-
for (i=0;i < MAX_CDTEXT_FIELDS;i++) {
|
|
78
|
-
if(cdtext->field[i]) {
|
|
79
|
-
rb_hash_aset(ret,rb_str_new2(cdtext_field2str(i)), rb_str_new2(cdtext->field[i]));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return ret;
|
|
125
|
+
track = rb_cdio_track_new(obj, i);
|
|
83
126
|
}
|
|
127
|
+
return track;
|
|
84
128
|
}
|