Skip to content

Commit c3c7ac8

Browse files
committed
Wanneer er geen disk in de speler zit falen sommige routines. De
exceptie heeft nu in dat geval als argument "no disc in player", behalve wanneer de bibliotheek routine errno zet. In dat laatste geval wordt (nog steeds) err_errno() gebruikt. Wanneer een routine uit de bibliotheek faalt wordt nu altijd een IOError gegenereerd. Een RuntimeError treedt alleen op bij verkeerde argumenten.
1 parent cbcdff7 commit c3c7ac8

1 file changed

Lines changed: 58 additions & 58 deletions

File tree

Modules/cdmodule.c

Lines changed: 58 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -81,47 +81,6 @@ CD_preventremoval(self, args)
8181
return None;
8282
}
8383

84-
static object *
85-
CD_getvolume(self, args)
86-
cdplayerobject *self;
87-
object *args;
88-
{
89-
CDVOLUME vol;
90-
int retval;
91-
92-
CheckPlayer(self);
93-
94-
if (!getnoarg(args))
95-
return NULL;
96-
97-
#if 0
98-
if (!CDgetvolume(self->ob_cdplayer, &vol)) {
99-
err_setstr(RuntimeError, "getvolume failed");
100-
return NULL;
101-
}
102-
#endif
103-
retval = CDgetvolume(self->ob_cdplayer, &vol);
104-
return mkvalue("(iiiii)", retval,
105-
vol.chan0, vol.chan1, vol.chan2, vol.chan3);
106-
}
107-
108-
static object *
109-
CD_setvolume(self, args)
110-
cdplayerobject *self;
111-
object *args;
112-
{
113-
CDVOLUME vol;
114-
int retval;
115-
116-
CheckPlayer(self);
117-
118-
if (!getargs(args, "(bbbb)", &vol.chan0, &vol.chan1,
119-
&vol.chan2, &vol.chan3))
120-
return NULL;
121-
122-
return newintobject(CDsetvolume(self->ob_cdplayer, &vol));
123-
}
124-
12584
static object *
12685
CD_bestreadsize(self, args)
12786
cdplayerobject *self;
@@ -146,7 +105,7 @@ CD_close(self, args)
146105
return NULL;
147106

148107
if (!CDclose(self->ob_cdplayer)) {
149-
err_errno(RuntimeError); /* XXX - ??? */
108+
err_errno(IOError); /* XXX - ??? */
150109
return NULL;
151110
}
152111
self->ob_cdplayer = NULL;
@@ -160,13 +119,19 @@ CD_eject(self, args)
160119
cdplayerobject *self;
161120
object *args;
162121
{
122+
CDSTATUS status;
123+
163124
CheckPlayer(self);
164125

165126
if (!getnoarg(args))
166127
return NULL;
167128

168129
if (!CDeject(self->ob_cdplayer)) {
169-
err_setstr(RuntimeError, "eject failed");
130+
if (CDgetstatus(self->ob_cdplayer, &status) &&
131+
status.state == CD_NODISC)
132+
err_setstr(IOError, "no disc in player");
133+
else
134+
err_setstr(IOError, "eject failed");
170135
return NULL;
171136
}
172137

@@ -187,7 +152,7 @@ CD_getstatus(self, args)
187152
return NULL;
188153

189154
if (!CDgetstatus(self->ob_cdplayer, &status)) {
190-
err_errno(RuntimeError); /* XXX - ??? */
155+
err_errno(IOError); /* XXX - ??? */
191156
return NULL;
192157
}
193158

@@ -207,14 +172,19 @@ CD_gettrackinfo(self, args)
207172
{
208173
int track;
209174
CDTRACKINFO info;
175+
CDSTATUS status;
210176

211177
CheckPlayer(self);
212178

213179
if (!getargs(args, "i", &track))
214180
return NULL;
215181

216182
if (!CDgettrackinfo(self->ob_cdplayer, track, &info)) {
217-
err_setstr(RuntimeError, "gettrackinfo failed");
183+
if (CDgetstatus(self->ob_cdplayer, &status) &&
184+
status.state == CD_NODISC)
185+
err_setstr(IOError, "no disc in player");
186+
else
187+
err_setstr(IOError, "gettrackinfo failed");
218188
return NULL;
219189
}
220190

@@ -246,14 +216,19 @@ CD_play(self, args)
246216
object *args;
247217
{
248218
int start, play;
219+
CDSTATUS status;
249220

250221
CheckPlayer(self);
251222

252223
if (!getargs(args, "(ii)", &start, &play))
253224
return NULL;
254225

255226
if (!CDplay(self->ob_cdplayer, start, play)) {
256-
err_setstr(RuntimeError, "play failed");
227+
if (CDgetstatus(self->ob_cdplayer, &status) &&
228+
status.state == CD_NODISC)
229+
err_setstr(IOError, "no disc in player");
230+
else
231+
err_setstr(IOError, "play failed");
257232
return NULL;
258233
}
259234

@@ -267,14 +242,19 @@ CD_playabs(self, args)
267242
object *args;
268243
{
269244
int min, sec, frame, play;
245+
CDSTATUS status;
270246

271247
CheckPlayer(self);
272248

273249
if (!getargs(args, "(iiii)", &min, &sec, &frame, &play))
274250
return NULL;
275251

276252
if (!CDplayabs(self->ob_cdplayer, min, sec, frame, play)) {
277-
err_setstr(RuntimeError, "playabs failed");
253+
if (CDgetstatus(self->ob_cdplayer, &status) &&
254+
status.state == CD_NODISC)
255+
err_setstr(IOError, "no disc in player");
256+
else
257+
err_setstr(IOError, "playabs failed");
278258
return NULL;
279259
}
280260

@@ -288,14 +268,19 @@ CD_playtrack(self, args)
288268
object *args;
289269
{
290270
int start, play;
271+
CDSTATUS status;
291272

292273
CheckPlayer(self);
293274

294275
if (!getargs(args, "(ii)", &start, &play))
295276
return NULL;
296277

297278
if (!CDplaytrack(self->ob_cdplayer, start, play)) {
298-
err_setstr(RuntimeError, "playtrack failed");
279+
if (CDgetstatus(self->ob_cdplayer, &status) &&
280+
status.state == CD_NODISC)
281+
err_setstr(IOError, "no disc in player");
282+
else
283+
err_setstr(IOError, "playtrack failed");
299284
return NULL;
300285
}
301286

@@ -309,14 +294,19 @@ CD_playtrackabs(self, args)
309294
object *args;
310295
{
311296
int track, min, sec, frame, play;
297+
CDSTATUS status;
312298

313299
CheckPlayer(self);
314300

315301
if (!getargs(args, "(iiiii)", &track, &min, &sec, &frame, &play))
316302
return NULL;
317303

318304
if (!CDplaytrackabs(self->ob_cdplayer, track, min, sec, frame, play)) {
319-
err_setstr(RuntimeError, "playtrackabs failed");
305+
if (CDgetstatus(self->ob_cdplayer, &status) &&
306+
status.state == CD_NODISC)
307+
err_setstr(IOError, "no disc in player");
308+
else
309+
err_setstr(IOError, "playtrackabs failed");
320310
return NULL;
321311
}
322312

@@ -344,7 +334,7 @@ CD_readda(self, args)
344334
n = CDreadda(self->ob_cdplayer, (CDFRAME *) getstringvalue(result), numframes);
345335
if (n == -1) {
346336
DECREF(result);
347-
err_errno(RuntimeError); /* XXX - ??? (seems to work) */
337+
err_errno(IOError); /* XXX - ??? (seems to work) */
348338
return NULL;
349339
}
350340
if (n < numframes)
@@ -369,7 +359,7 @@ CD_seek(self, args)
369359

370360
block = CDseek(self->ob_cdplayer, min, sec, frame);
371361
if (block == -1) {
372-
err_errno(RuntimeError);
362+
err_errno(IOError);
373363
return NULL;
374364
}
375365

@@ -391,7 +381,7 @@ CD_seektrack(self, args)
391381

392382
block = CDseektrack(self->ob_cdplayer, track);
393383
if (block == -1) {
394-
err_errno(RuntimeError);
384+
err_errno(IOError);
395385
return NULL;
396386
}
397387

@@ -403,13 +393,19 @@ CD_stop(self, args)
403393
cdplayerobject *self;
404394
object *args;
405395
{
396+
CDSTATUS status;
397+
406398
CheckPlayer(self);
407399

408400
if (!getnoarg(args))
409401
return NULL;
410402

411403
if (!CDstop(self->ob_cdplayer)) {
412-
err_setstr(RuntimeError, "stop failed");
404+
if (CDgetstatus(self->ob_cdplayer, &status) &&
405+
status.state == CD_NODISC)
406+
err_setstr(IOError, "no disc in player");
407+
else
408+
err_setstr(IOError, "stop failed");
413409
return NULL;
414410
}
415411

@@ -422,13 +418,19 @@ CD_togglepause(self, args)
422418
cdplayerobject *self;
423419
object *args;
424420
{
421+
CDSTATUS status;
422+
425423
CheckPlayer(self);
426424

427425
if (!getnoarg(args))
428426
return NULL;
429427

430428
if (!CDtogglepause(self->ob_cdplayer)) {
431-
err_setstr(RuntimeError, "togglepause failed");
429+
if (CDgetstatus(self->ob_cdplayer, &status) &&
430+
status.state == CD_NODISC)
431+
err_setstr(IOError, "no disc in player");
432+
else
433+
err_setstr(IOError, "togglepause failed");
432434
return NULL;
433435
}
434436

@@ -443,7 +445,6 @@ static struct methodlist cdplayer_methods[] = {
443445
{"eject", CD_eject},
444446
{"getstatus", CD_getstatus},
445447
{"gettrackinfo", CD_gettrackinfo},
446-
{"getvolume", CD_getvolume},
447448
{"msftoblock", CD_msftoblock},
448449
{"play", CD_play},
449450
{"playabs", CD_playabs},
@@ -453,7 +454,6 @@ static struct methodlist cdplayer_methods[] = {
453454
{"readda", CD_readda},
454455
{"seek", CD_seek},
455456
{"seektrack", CD_seektrack},
456-
{"setvolume", CD_setvolume},
457457
{"stop", CD_stop},
458458
{"togglepause", CD_togglepause},
459459
{NULL, NULL} /* sentinel */
@@ -528,7 +528,7 @@ CD_open(self, args)
528528

529529
cdp = CDopen(dev, direction);
530530
if (cdp == NULL) {
531-
err_errno(RuntimeError);
531+
err_errno(IOError);
532532
return NULL;
533533
}
534534

@@ -820,7 +820,7 @@ CD_createparser(self, args)
820820
return NULL;
821821
cdp = CDcreateparser();
822822
if (cdp == NULL) {
823-
err_setstr(RuntimeError, "createparser failed");
823+
err_setstr(IOError, "createparser failed");
824824
return NULL;
825825
}
826826

0 commit comments

Comments
 (0)