]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Wanneer er geen disk in de speler zit falen sommige routines. De
authorGuido van Rossum <guido@python.org>
Wed, 6 May 1992 09:48:30 +0000 (09:48 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 6 May 1992 09:48:30 +0000 (09:48 +0000)
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.

Modules/cdmodule.c

index 40a12fca81cc45e0d0be7c88b749ce3afcaa2635..4f118672e61c88f0a1bd14a362800773d3a37fe0 100644 (file)
@@ -81,47 +81,6 @@ CD_preventremoval(self, args)
        return None;
 }
 
-static object *
-CD_getvolume(self, args)
-       cdplayerobject *self;
-       object *args;
-{
-       CDVOLUME vol;
-       int retval;
-
-       CheckPlayer(self);
-
-       if (!getnoarg(args))
-               return NULL;
-
-#if 0
-       if (!CDgetvolume(self->ob_cdplayer, &vol)) {
-               err_setstr(RuntimeError, "getvolume failed");
-               return NULL;
-       }
-#endif
-       retval = CDgetvolume(self->ob_cdplayer, &vol);
-       return mkvalue("(iiiii)", retval,
-                      vol.chan0, vol.chan1, vol.chan2, vol.chan3);
-}
-
-static object *
-CD_setvolume(self, args)
-       cdplayerobject *self;
-       object *args;
-{
-       CDVOLUME vol;
-       int retval;
-
-       CheckPlayer(self);
-
-       if (!getargs(args, "(bbbb)", &vol.chan0, &vol.chan1,
-                    &vol.chan2, &vol.chan3))
-               return NULL;
-
-       return newintobject(CDsetvolume(self->ob_cdplayer, &vol));
-}
-
 static object *
 CD_bestreadsize(self, args)
        cdplayerobject *self;
@@ -146,7 +105,7 @@ CD_close(self, args)
                return NULL;
 
        if (!CDclose(self->ob_cdplayer)) {
-               err_errno(RuntimeError); /* XXX - ??? */
+               err_errno(IOError); /* XXX - ??? */
                return NULL;
        }
        self->ob_cdplayer = NULL;
@@ -160,13 +119,19 @@ CD_eject(self, args)
        cdplayerobject *self;
        object *args;
 {
+       CDSTATUS status;
+
        CheckPlayer(self);
 
        if (!getnoarg(args))
                return NULL;
 
        if (!CDeject(self->ob_cdplayer)) {
-               err_setstr(RuntimeError, "eject failed");
+               if (CDgetstatus(self->ob_cdplayer, &status) &&
+                   status.state == CD_NODISC)
+                       err_setstr(IOError, "no disc in player");
+               else
+                       err_setstr(IOError, "eject failed");
                return NULL;
        }
 
@@ -187,7 +152,7 @@ CD_getstatus(self, args)
                return NULL;
 
        if (!CDgetstatus(self->ob_cdplayer, &status)) {
-               err_errno(RuntimeError); /* XXX - ??? */
+               err_errno(IOError); /* XXX - ??? */
                return NULL;
        }
 
@@ -207,6 +172,7 @@ CD_gettrackinfo(self, args)
 {
        int track;
        CDTRACKINFO info;
+       CDSTATUS status;
 
        CheckPlayer(self);
 
@@ -214,7 +180,11 @@ CD_gettrackinfo(self, args)
                return NULL;
 
        if (!CDgettrackinfo(self->ob_cdplayer, track, &info)) {
-               err_setstr(RuntimeError, "gettrackinfo failed");
+               if (CDgetstatus(self->ob_cdplayer, &status) &&
+                   status.state == CD_NODISC)
+                       err_setstr(IOError, "no disc in player");
+               else
+                       err_setstr(IOError, "gettrackinfo failed");
                return NULL;
        }
 
@@ -246,6 +216,7 @@ CD_play(self, args)
        object *args;
 {
        int start, play;
+       CDSTATUS status;
 
        CheckPlayer(self);
 
@@ -253,7 +224,11 @@ CD_play(self, args)
                return NULL;
 
        if (!CDplay(self->ob_cdplayer, start, play)) {
-               err_setstr(RuntimeError, "play failed");
+               if (CDgetstatus(self->ob_cdplayer, &status) &&
+                   status.state == CD_NODISC)
+                       err_setstr(IOError, "no disc in player");
+               else
+                       err_setstr(IOError, "play failed");
                return NULL;
        }
 
@@ -267,6 +242,7 @@ CD_playabs(self, args)
        object *args;
 {
        int min, sec, frame, play;
+       CDSTATUS status;
 
        CheckPlayer(self);
 
@@ -274,7 +250,11 @@ CD_playabs(self, args)
                return NULL;
 
        if (!CDplayabs(self->ob_cdplayer, min, sec, frame, play)) {
-               err_setstr(RuntimeError, "playabs failed");
+               if (CDgetstatus(self->ob_cdplayer, &status) &&
+                   status.state == CD_NODISC)
+                       err_setstr(IOError, "no disc in player");
+               else
+                       err_setstr(IOError, "playabs failed");
                return NULL;
        }
 
@@ -288,6 +268,7 @@ CD_playtrack(self, args)
        object *args;
 {
        int start, play;
+       CDSTATUS status;
 
        CheckPlayer(self);
 
@@ -295,7 +276,11 @@ CD_playtrack(self, args)
                return NULL;
 
        if (!CDplaytrack(self->ob_cdplayer, start, play)) {
-               err_setstr(RuntimeError, "playtrack failed");
+               if (CDgetstatus(self->ob_cdplayer, &status) &&
+                   status.state == CD_NODISC)
+                       err_setstr(IOError, "no disc in player");
+               else
+                       err_setstr(IOError, "playtrack failed");
                return NULL;
        }
 
@@ -309,6 +294,7 @@ CD_playtrackabs(self, args)
        object *args;
 {
        int track, min, sec, frame, play;
+       CDSTATUS status;
 
        CheckPlayer(self);
 
@@ -316,7 +302,11 @@ CD_playtrackabs(self, args)
                return NULL;
 
        if (!CDplaytrackabs(self->ob_cdplayer, track, min, sec, frame, play)) {
-               err_setstr(RuntimeError, "playtrackabs failed");
+               if (CDgetstatus(self->ob_cdplayer, &status) &&
+                   status.state == CD_NODISC)
+                       err_setstr(IOError, "no disc in player");
+               else
+                       err_setstr(IOError, "playtrackabs failed");
                return NULL;
        }
 
@@ -344,7 +334,7 @@ CD_readda(self, args)
        n = CDreadda(self->ob_cdplayer, (CDFRAME *) getstringvalue(result), numframes);
        if (n == -1) {
                DECREF(result);
-               err_errno(RuntimeError); /* XXX - ??? (seems to work) */
+               err_errno(IOError); /* XXX - ??? (seems to work) */
                return NULL;
        }
        if (n < numframes)
@@ -369,7 +359,7 @@ CD_seek(self, args)
 
        block = CDseek(self->ob_cdplayer, min, sec, frame);
        if (block == -1) {
-               err_errno(RuntimeError);
+               err_errno(IOError);
                return NULL;
        }
 
@@ -391,7 +381,7 @@ CD_seektrack(self, args)
 
        block = CDseektrack(self->ob_cdplayer, track);
        if (block == -1) {
-               err_errno(RuntimeError);
+               err_errno(IOError);
                return NULL;
        }
 
@@ -403,13 +393,19 @@ CD_stop(self, args)
        cdplayerobject *self;
        object *args;
 {
+       CDSTATUS status;
+
        CheckPlayer(self);
 
        if (!getnoarg(args))
                return NULL;
 
        if (!CDstop(self->ob_cdplayer)) {
-               err_setstr(RuntimeError, "stop failed");
+               if (CDgetstatus(self->ob_cdplayer, &status) &&
+                   status.state == CD_NODISC)
+                       err_setstr(IOError, "no disc in player");
+               else
+                       err_setstr(IOError, "stop failed");
                return NULL;
        }
 
@@ -422,13 +418,19 @@ CD_togglepause(self, args)
        cdplayerobject *self;
        object *args;
 {
+       CDSTATUS status;
+
        CheckPlayer(self);
 
        if (!getnoarg(args))
                return NULL;
 
        if (!CDtogglepause(self->ob_cdplayer)) {
-               err_setstr(RuntimeError, "togglepause failed");
+               if (CDgetstatus(self->ob_cdplayer, &status) &&
+                   status.state == CD_NODISC)
+                       err_setstr(IOError, "no disc in player");
+               else
+                       err_setstr(IOError, "togglepause failed");
                return NULL;
        }
 
@@ -443,7 +445,6 @@ static struct methodlist cdplayer_methods[] = {
        {"eject",               CD_eject},
        {"getstatus",           CD_getstatus},
        {"gettrackinfo",        CD_gettrackinfo},
-       {"getvolume",           CD_getvolume},
        {"msftoblock",          CD_msftoblock},
        {"play",                CD_play},
        {"playabs",             CD_playabs},
@@ -453,7 +454,6 @@ static struct methodlist cdplayer_methods[] = {
        {"readda",              CD_readda},
        {"seek",                CD_seek},
        {"seektrack",           CD_seektrack},
-       {"setvolume",           CD_setvolume},
        {"stop",                CD_stop},
        {"togglepause",         CD_togglepause},
        {NULL,                  NULL}           /* sentinel */
@@ -528,7 +528,7 @@ CD_open(self, args)
 
        cdp = CDopen(dev, direction);
        if (cdp == NULL) {
-               err_errno(RuntimeError);
+               err_errno(IOError);
                return NULL;
        }
 
@@ -820,7 +820,7 @@ CD_createparser(self, args)
                return NULL;
        cdp = CDcreateparser();
        if (cdp == NULL) {
-               err_setstr(RuntimeError, "createparser failed");
+               err_setstr(IOError, "createparser failed");
                return NULL;
        }