Skip to content

Commit 46927ba

Browse files
Defined exception cd.error which is used for errors other than
TypeError, MemoryError and such.
1 parent e7daaa3 commit 46927ba

File tree

1 file changed

+37
-28
lines changed

1 file changed

+37
-28
lines changed

Modules/cdmodule.c

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ typedef struct {
4848
return NULL; \
4949
}
5050

51+
static object *CdError; /* exception cd.error */
52+
5153
static object *
5254
CD_allowremoval(self, args)
5355
cdplayerobject *self;
@@ -104,7 +106,7 @@ CD_close(self, args)
104106
return NULL;
105107

106108
if (!CDclose(self->ob_cdplayer)) {
107-
err_errno(IOError); /* XXX - ??? */
109+
err_errno(CdError); /* XXX - ??? */
108110
return NULL;
109111
}
110112
self->ob_cdplayer = NULL;
@@ -128,9 +130,9 @@ CD_eject(self, args)
128130
if (!CDeject(self->ob_cdplayer)) {
129131
if (CDgetstatus(self->ob_cdplayer, &status) &&
130132
status.state == CD_NODISC)
131-
err_setstr(IOError, "no disc in player");
133+
err_setstr(CdError, "no disc in player");
132134
else
133-
err_setstr(IOError, "eject failed");
135+
err_setstr(CdError, "eject failed");
134136
return NULL;
135137
}
136138

@@ -151,7 +153,7 @@ CD_getstatus(self, args)
151153
return NULL;
152154

153155
if (!CDgetstatus(self->ob_cdplayer, &status)) {
154-
err_errno(IOError); /* XXX - ??? */
156+
err_errno(CdError); /* XXX - ??? */
155157
return NULL;
156158
}
157159

@@ -181,9 +183,9 @@ CD_gettrackinfo(self, args)
181183
if (!CDgettrackinfo(self->ob_cdplayer, track, &info)) {
182184
if (CDgetstatus(self->ob_cdplayer, &status) &&
183185
status.state == CD_NODISC)
184-
err_setstr(IOError, "no disc in player");
186+
err_setstr(CdError, "no disc in player");
185187
else
186-
err_setstr(IOError, "gettrackinfo failed");
188+
err_setstr(CdError, "gettrackinfo failed");
187189
return NULL;
188190
}
189191

@@ -225,9 +227,9 @@ CD_play(self, args)
225227
if (!CDplay(self->ob_cdplayer, start, play)) {
226228
if (CDgetstatus(self->ob_cdplayer, &status) &&
227229
status.state == CD_NODISC)
228-
err_setstr(IOError, "no disc in player");
230+
err_setstr(CdError, "no disc in player");
229231
else
230-
err_setstr(IOError, "play failed");
232+
err_setstr(CdError, "play failed");
231233
return NULL;
232234
}
233235

@@ -251,9 +253,9 @@ CD_playabs(self, args)
251253
if (!CDplayabs(self->ob_cdplayer, min, sec, frame, play)) {
252254
if (CDgetstatus(self->ob_cdplayer, &status) &&
253255
status.state == CD_NODISC)
254-
err_setstr(IOError, "no disc in player");
256+
err_setstr(CdError, "no disc in player");
255257
else
256-
err_setstr(IOError, "playabs failed");
258+
err_setstr(CdError, "playabs failed");
257259
return NULL;
258260
}
259261

@@ -277,9 +279,9 @@ CD_playtrack(self, args)
277279
if (!CDplaytrack(self->ob_cdplayer, start, play)) {
278280
if (CDgetstatus(self->ob_cdplayer, &status) &&
279281
status.state == CD_NODISC)
280-
err_setstr(IOError, "no disc in player");
282+
err_setstr(CdError, "no disc in player");
281283
else
282-
err_setstr(IOError, "playtrack failed");
284+
err_setstr(CdError, "playtrack failed");
283285
return NULL;
284286
}
285287

@@ -303,9 +305,9 @@ CD_playtrackabs(self, args)
303305
if (!CDplaytrackabs(self->ob_cdplayer, track, min, sec, frame, play)) {
304306
if (CDgetstatus(self->ob_cdplayer, &status) &&
305307
status.state == CD_NODISC)
306-
err_setstr(IOError, "no disc in player");
308+
err_setstr(CdError, "no disc in player");
307309
else
308-
err_setstr(IOError, "playtrackabs failed");
310+
err_setstr(CdError, "playtrackabs failed");
309311
return NULL;
310312
}
311313

@@ -333,7 +335,7 @@ CD_readda(self, args)
333335
n = CDreadda(self->ob_cdplayer, (CDFRAME *) getstringvalue(result), numframes);
334336
if (n == -1) {
335337
DECREF(result);
336-
err_errno(IOError);
338+
err_errno(CdError);
337339
return NULL;
338340
}
339341
if (n < numframes)
@@ -358,7 +360,7 @@ CD_seek(self, args)
358360

359361
block = CDseek(self->ob_cdplayer, min, sec, frame);
360362
if (block == -1) {
361-
err_errno(IOError);
363+
err_errno(CdError);
362364
return NULL;
363365
}
364366

@@ -380,7 +382,7 @@ CD_seektrack(self, args)
380382

381383
block = CDseektrack(self->ob_cdplayer, track);
382384
if (block == -1) {
383-
err_errno(IOError);
385+
err_errno(CdError);
384386
return NULL;
385387
}
386388

@@ -402,9 +404,9 @@ CD_stop(self, args)
402404
if (!CDstop(self->ob_cdplayer)) {
403405
if (CDgetstatus(self->ob_cdplayer, &status) &&
404406
status.state == CD_NODISC)
405-
err_setstr(IOError, "no disc in player");
407+
err_setstr(CdError, "no disc in player");
406408
else
407-
err_setstr(IOError, "stop failed");
409+
err_setstr(CdError, "stop failed");
408410
return NULL;
409411
}
410412

@@ -427,9 +429,9 @@ CD_togglepause(self, args)
427429
if (!CDtogglepause(self->ob_cdplayer)) {
428430
if (CDgetstatus(self->ob_cdplayer, &status) &&
429431
status.state == CD_NODISC)
430-
err_setstr(IOError, "no disc in player");
432+
err_setstr(CdError, "no disc in player");
431433
else
432-
err_setstr(IOError, "togglepause failed");
434+
err_setstr(CdError, "togglepause failed");
433435
return NULL;
434436
}
435437

@@ -527,7 +529,7 @@ CD_open(self, args)
527529

528530
cdp = CDopen(dev, direction);
529531
if (cdp == NULL) {
530-
err_errno(IOError);
532+
err_errno(CdError);
531533
return NULL;
532534
}
533535

@@ -655,7 +657,7 @@ CD_parseframe(self, args)
655657
return NULL;
656658

657659
if (length % sizeof(CDFRAME) != 0) {
658-
err_setstr(RuntimeError, "bad length");
660+
err_setstr(TypeError, "bad length");
659661
return NULL;
660662
}
661663

@@ -685,7 +687,7 @@ CD_removecallback(self, args)
685687
return NULL;
686688

687689
if (type < 0 || type >= NCALLBACKS) {
688-
err_setstr(RuntimeError, "bad type");
690+
err_setstr(TypeError, "bad type");
689691
return NULL;
690692
}
691693

@@ -732,7 +734,7 @@ CD_addcallback(self, args)
732734
return NULL;
733735

734736
if (type < 0 || type >= NCALLBACKS) {
735-
err_setstr(RuntimeError, "bad type");
737+
err_setstr(TypeError, "argument out of range");
736738
return NULL;
737739
}
738740

@@ -829,7 +831,7 @@ CD_createparser(self, args)
829831
return NULL;
830832
cdp = CDcreateparser();
831833
if (cdp == NULL) {
832-
err_setstr(IOError, "createparser failed");
834+
err_setstr(CdError, "createparser failed");
833835
return NULL;
834836
}
835837

@@ -865,7 +867,7 @@ CD_timetoa(self, args)
865867
return NULL;
866868

867869
if (length != sizeof(struct cdtimecode)) {
868-
err_setstr(RuntimeError, "bad length");
870+
err_setstr(TypeError, "bad length");
869871
return NULL;
870872
}
871873

@@ -885,5 +887,12 @@ static struct methodlist CD_methods[] = {
885887
void
886888
initcd()
887889
{
888-
(void) initmodule("cd", CD_methods);
890+
object *m, *d;
891+
892+
m = initmodule("cd", CD_methods);
893+
d = getmoduledict(m);
894+
895+
CdError = newstringobject("cd.error");
896+
if (CdError == NULL || dictinsert(d, "error", CdError) != 0)
897+
fatal("can't define cd.error");
889898
}

0 commit comments

Comments
 (0)