return NULL; \
}
+static object *CdError; /* exception cd.error */
+
static object *
CD_allowremoval(self, args)
cdplayerobject *self;
return NULL;
if (!CDclose(self->ob_cdplayer)) {
- err_errno(IOError); /* XXX - ??? */
+ err_errno(CdError); /* XXX - ??? */
return NULL;
}
self->ob_cdplayer = NULL;
if (!CDeject(self->ob_cdplayer)) {
if (CDgetstatus(self->ob_cdplayer, &status) &&
status.state == CD_NODISC)
- err_setstr(IOError, "no disc in player");
+ err_setstr(CdError, "no disc in player");
else
- err_setstr(IOError, "eject failed");
+ err_setstr(CdError, "eject failed");
return NULL;
}
return NULL;
if (!CDgetstatus(self->ob_cdplayer, &status)) {
- err_errno(IOError); /* XXX - ??? */
+ err_errno(CdError); /* XXX - ??? */
return NULL;
}
if (!CDgettrackinfo(self->ob_cdplayer, track, &info)) {
if (CDgetstatus(self->ob_cdplayer, &status) &&
status.state == CD_NODISC)
- err_setstr(IOError, "no disc in player");
+ err_setstr(CdError, "no disc in player");
else
- err_setstr(IOError, "gettrackinfo failed");
+ err_setstr(CdError, "gettrackinfo failed");
return NULL;
}
if (!CDplay(self->ob_cdplayer, start, play)) {
if (CDgetstatus(self->ob_cdplayer, &status) &&
status.state == CD_NODISC)
- err_setstr(IOError, "no disc in player");
+ err_setstr(CdError, "no disc in player");
else
- err_setstr(IOError, "play failed");
+ err_setstr(CdError, "play failed");
return NULL;
}
if (!CDplayabs(self->ob_cdplayer, min, sec, frame, play)) {
if (CDgetstatus(self->ob_cdplayer, &status) &&
status.state == CD_NODISC)
- err_setstr(IOError, "no disc in player");
+ err_setstr(CdError, "no disc in player");
else
- err_setstr(IOError, "playabs failed");
+ err_setstr(CdError, "playabs failed");
return NULL;
}
if (!CDplaytrack(self->ob_cdplayer, start, play)) {
if (CDgetstatus(self->ob_cdplayer, &status) &&
status.state == CD_NODISC)
- err_setstr(IOError, "no disc in player");
+ err_setstr(CdError, "no disc in player");
else
- err_setstr(IOError, "playtrack failed");
+ err_setstr(CdError, "playtrack failed");
return NULL;
}
if (!CDplaytrackabs(self->ob_cdplayer, track, min, sec, frame, play)) {
if (CDgetstatus(self->ob_cdplayer, &status) &&
status.state == CD_NODISC)
- err_setstr(IOError, "no disc in player");
+ err_setstr(CdError, "no disc in player");
else
- err_setstr(IOError, "playtrackabs failed");
+ err_setstr(CdError, "playtrackabs failed");
return NULL;
}
n = CDreadda(self->ob_cdplayer, (CDFRAME *) getstringvalue(result), numframes);
if (n == -1) {
DECREF(result);
- err_errno(IOError);
+ err_errno(CdError);
return NULL;
}
if (n < numframes)
block = CDseek(self->ob_cdplayer, min, sec, frame);
if (block == -1) {
- err_errno(IOError);
+ err_errno(CdError);
return NULL;
}
block = CDseektrack(self->ob_cdplayer, track);
if (block == -1) {
- err_errno(IOError);
+ err_errno(CdError);
return NULL;
}
if (!CDstop(self->ob_cdplayer)) {
if (CDgetstatus(self->ob_cdplayer, &status) &&
status.state == CD_NODISC)
- err_setstr(IOError, "no disc in player");
+ err_setstr(CdError, "no disc in player");
else
- err_setstr(IOError, "stop failed");
+ err_setstr(CdError, "stop failed");
return NULL;
}
if (!CDtogglepause(self->ob_cdplayer)) {
if (CDgetstatus(self->ob_cdplayer, &status) &&
status.state == CD_NODISC)
- err_setstr(IOError, "no disc in player");
+ err_setstr(CdError, "no disc in player");
else
- err_setstr(IOError, "togglepause failed");
+ err_setstr(CdError, "togglepause failed");
return NULL;
}
cdp = CDopen(dev, direction);
if (cdp == NULL) {
- err_errno(IOError);
+ err_errno(CdError);
return NULL;
}
return NULL;
if (length % sizeof(CDFRAME) != 0) {
- err_setstr(RuntimeError, "bad length");
+ err_setstr(TypeError, "bad length");
return NULL;
}
return NULL;
if (type < 0 || type >= NCALLBACKS) {
- err_setstr(RuntimeError, "bad type");
+ err_setstr(TypeError, "bad type");
return NULL;
}
return NULL;
if (type < 0 || type >= NCALLBACKS) {
- err_setstr(RuntimeError, "bad type");
+ err_setstr(TypeError, "argument out of range");
return NULL;
}
return NULL;
cdp = CDcreateparser();
if (cdp == NULL) {
- err_setstr(IOError, "createparser failed");
+ err_setstr(CdError, "createparser failed");
return NULL;
}
return NULL;
if (length != sizeof(struct cdtimecode)) {
- err_setstr(RuntimeError, "bad length");
+ err_setstr(TypeError, "bad length");
return NULL;
}
void
initcd()
{
- (void) initmodule("cd", CD_methods);
+ object *m, *d;
+
+ m = initmodule("cd", CD_methods);
+ d = getmoduledict(m);
+
+ CdError = newstringobject("cd.error");
+ if (CdError == NULL || dictinsert(d, "error", CdError) != 0)
+ fatal("can't define cd.error");
}