annotate Modules/cdmodule.c @ 16798:258dcafe2d0b legacy-trunk

Gustavo Niemeyer <niemeyer@conectiva.com>: Fixed recno support (keys are integers rather than strings). Work around DB bug that cause stdin to be closed by rnopen() when the DB file needed to exist but did not (no longer segfaults). This closes SF tracker patch #403445. Also wrapped some long lines and added whitespace around operators -- FLD.
author Fred Drake <fdrake@acm.org>
date Tue, 27 Feb 2001 18:56:46 +0000
parents 6f6f965c5e2d
children 91dd223829c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 /* CD module -- interface to Mark Callow's and Roger Chickering's */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 /* CD Audio Library (CD). */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 #include <sys/types.h>
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 #include <cdaudio.h>
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
6 #include "Python.h"
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 #define NCALLBACKS 8
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 typedef struct {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
11 PyObject_HEAD
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 CDPLAYER *ob_cdplayer;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 } cdplayerobject;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
15 static PyObject *CdError; /* exception cd.error */
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
16
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
17 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
18 CD_allowremoval(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 {
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
20 if (!PyArg_ParseTuple(args, ":allowremoval"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 CDallowremoval(self->ob_cdplayer);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
25 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
26 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
29 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
30 CD_preventremoval(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 {
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
32 if (!PyArg_ParseTuple(args, ":preventremoval"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 CDpreventremoval(self->ob_cdplayer);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
37 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
38 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
41 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
42 CD_bestreadsize(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 {
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
44 if (!PyArg_ParseTuple(args, ":bestreadsize"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
47 return PyInt_FromLong((long) CDbestreadsize(self->ob_cdplayer));
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
50 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
51 CD_close(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 {
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
53 if (!PyArg_ParseTuple(args, ":close"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 if (!CDclose(self->ob_cdplayer)) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
57 PyErr_SetFromErrno(CdError); /* XXX - ??? */
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 self->ob_cdplayer = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
62 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
63 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
66 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
67 CD_eject(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
69 CDSTATUS status;
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
70
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
71 if (!PyArg_ParseTuple(args, ":eject"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 if (!CDeject(self->ob_cdplayer)) {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
75 if (CDgetstatus(self->ob_cdplayer, &status) &&
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
76 status.state == CD_NODISC)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
77 PyErr_SetString(CdError, "no disc in player");
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
78 else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
79 PyErr_SetString(CdError, "eject failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
83 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
84 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
87 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
88 CD_getstatus(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 CDSTATUS status;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
92 if (!PyArg_ParseTuple(args, ":getstatus"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 if (!CDgetstatus(self->ob_cdplayer, &status)) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
96 PyErr_SetFromErrno(CdError); /* XXX - ??? */
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
100 return Py_BuildValue("(ii(iii)(iii)(iii)iiii)", status.state,
830
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
101 status.track, status.min, status.sec, status.frame,
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
102 status.abs_min, status.abs_sec, status.abs_frame,
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
103 status.total_min, status.total_sec, status.total_frame,
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
104 status.first, status.last, status.scsi_audio,
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
105 status.cur_block);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
108 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
109 CD_gettrackinfo(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 int track;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 CDTRACKINFO info;
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
113 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
115 if (!PyArg_ParseTuple(args, "i:gettrackinfo", &track))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 if (!CDgettrackinfo(self->ob_cdplayer, track, &info)) {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
119 if (CDgetstatus(self->ob_cdplayer, &status) &&
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
120 status.state == CD_NODISC)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
121 PyErr_SetString(CdError, "no disc in player");
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
122 else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
123 PyErr_SetString(CdError, "gettrackinfo failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
127 return Py_BuildValue("((iii)(iii))",
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 info.start_min, info.start_sec, info.start_frame,
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 info.total_min, info.total_sec, info.total_frame);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
131
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
132 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
133 CD_msftoblock(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 int min, sec, frame;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
137 if (!PyArg_ParseTuple(args, "iii:msftoblock", &min, &sec, &frame))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
140 return PyInt_FromLong((long) CDmsftoblock(self->ob_cdplayer,
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
141 min, sec, frame));
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
144 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
145 CD_play(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 int start, play;
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
148 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
149
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
150 if (!PyArg_ParseTuple(args, "ii:play", &start, &play))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
152
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 if (!CDplay(self->ob_cdplayer, start, play)) {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
154 if (CDgetstatus(self->ob_cdplayer, &status) &&
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
155 status.state == CD_NODISC)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
156 PyErr_SetString(CdError, "no disc in player");
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
157 else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
158 PyErr_SetString(CdError, "play failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
161
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
162 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
163 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
165
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
166 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
167 CD_playabs(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 int min, sec, frame, play;
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
170 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
172 if (!PyArg_ParseTuple(args, "iiii:playabs", &min, &sec, &frame, &play))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 if (!CDplayabs(self->ob_cdplayer, min, sec, frame, play)) {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
176 if (CDgetstatus(self->ob_cdplayer, &status) &&
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
177 status.state == CD_NODISC)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
178 PyErr_SetString(CdError, "no disc in player");
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
179 else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
180 PyErr_SetString(CdError, "playabs failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
183
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
184 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
185 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
187
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
188 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
189 CD_playtrack(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 int start, play;
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
192 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
194 if (!PyArg_ParseTuple(args, "ii:playtrack", &start, &play))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
196
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 if (!CDplaytrack(self->ob_cdplayer, start, play)) {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
198 if (CDgetstatus(self->ob_cdplayer, &status) &&
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
199 status.state == CD_NODISC)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
200 PyErr_SetString(CdError, "no disc in player");
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
201 else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
202 PyErr_SetString(CdError, "playtrack failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
203 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
204 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
205
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
206 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
207 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
208 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
209
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
210 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
211 CD_playtrackabs(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
213 int track, min, sec, frame, play;
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
214 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
215
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
216 if (!PyArg_ParseTuple(args, "iiiii:playtrackabs", &track, &min, &sec,
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
217 &frame, &play))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
219
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
220 if (!CDplaytrackabs(self->ob_cdplayer, track, min, sec, frame, play)) {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
221 if (CDgetstatus(self->ob_cdplayer, &status) &&
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
222 status.state == CD_NODISC)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
223 PyErr_SetString(CdError, "no disc in player");
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
224 else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
225 PyErr_SetString(CdError, "playtrackabs failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
226 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
227 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
228
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
229 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
230 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
232
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
233 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
234 CD_readda(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
236 int numframes, n;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
237 PyObject *result;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
238
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
239 if (!PyArg_ParseTuple(args, "i:readda", &numframes))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
240 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
241
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
242 result = PyString_FromStringAndSize(NULL, numframes * sizeof(CDFRAME));
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 if (result == NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
245
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
246 n = CDreadda(self->ob_cdplayer,
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
247 (CDFRAME *) PyString_AsString(result), numframes);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 if (n == -1) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
249 Py_DECREF(result);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
250 PyErr_SetFromErrno(CdError);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
251 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
252 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
253 if (n < numframes)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
254 if (_PyString_Resize(&result, n * sizeof(CDFRAME)))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
256
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
257 return result;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
258 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
259
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
260 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
261 CD_seek(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
262 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
263 int min, sec, frame;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
264 long PyTryBlock;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
265
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
266 if (!PyArg_ParseTuple(args, "iii:seek", &min, &sec, &frame))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
268
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
269 PyTryBlock = CDseek(self->ob_cdplayer, min, sec, frame);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
270 if (PyTryBlock == -1) {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
271 PyErr_SetFromErrno(CdError);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
272 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
273 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
274
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
275 return PyInt_FromLong(PyTryBlock);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
276 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
277
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
278 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
279 CD_seektrack(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
280 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
281 int track;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
282 long PyTryBlock;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
283
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
284 if (!PyArg_ParseTuple(args, "i:seektrack", &track))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
285 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
286
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
287 PyTryBlock = CDseektrack(self->ob_cdplayer, track);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
288 if (PyTryBlock == -1) {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
289 PyErr_SetFromErrno(CdError);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
291 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
292
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
293 return PyInt_FromLong(PyTryBlock);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
294 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
295
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
296 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
297 CD_seekblock(cdplayerobject *self, PyObject *args)
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
298 {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
299 unsigned long PyTryBlock;
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
300
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
301 if (!PyArg_ParseTuple(args, "l:seekblock", &PyTryBlock))
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
302 return NULL;
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
303
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
304 PyTryBlock = CDseekblock(self->ob_cdplayer, PyTryBlock);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
305 if (PyTryBlock == (unsigned long) -1) {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
306 PyErr_SetFromErrno(CdError);
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
307 return NULL;
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
308 }
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
309
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
310 return PyInt_FromLong(PyTryBlock);
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
311 }
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
312
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
313 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
314 CD_stop(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
315 {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
316 CDSTATUS status;
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
317
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
318 if (!PyArg_ParseTuple(args, ":stop"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
319 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
320
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 if (!CDstop(self->ob_cdplayer)) {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
322 if (CDgetstatus(self->ob_cdplayer, &status) &&
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
323 status.state == CD_NODISC)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
324 PyErr_SetString(CdError, "no disc in player");
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
325 else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
326 PyErr_SetString(CdError, "stop failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
327 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
328 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
329
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
330 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
331 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
333
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
334 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
335 CD_togglepause(cdplayerobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
336 {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
337 CDSTATUS status;
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
338
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
339 if (!PyArg_ParseTuple(args, ":togglepause"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
340 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
341
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
342 if (!CDtogglepause(self->ob_cdplayer)) {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
343 if (CDgetstatus(self->ob_cdplayer, &status) &&
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
344 status.state == CD_NODISC)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
345 PyErr_SetString(CdError, "no disc in player");
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
346 else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
347 PyErr_SetString(CdError, "togglepause failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
348 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
349 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
350
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
351 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
352 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
354
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
355 static PyMethodDef cdplayer_methods[] = {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
356 {"allowremoval", (PyCFunction)CD_allowremoval, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
357 {"bestreadsize", (PyCFunction)CD_bestreadsize, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
358 {"close", (PyCFunction)CD_close, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
359 {"eject", (PyCFunction)CD_eject, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
360 {"getstatus", (PyCFunction)CD_getstatus, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
361 {"gettrackinfo", (PyCFunction)CD_gettrackinfo, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
362 {"msftoblock", (PyCFunction)CD_msftoblock, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
363 {"play", (PyCFunction)CD_play, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
364 {"playabs", (PyCFunction)CD_playabs, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
365 {"playtrack", (PyCFunction)CD_playtrack, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
366 {"playtrackabs", (PyCFunction)CD_playtrackabs, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
367 {"preventremoval", (PyCFunction)CD_preventremoval, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
368 {"readda", (PyCFunction)CD_readda, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
369 {"seek", (PyCFunction)CD_seek, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
370 {"seekblock", (PyCFunction)CD_seekblock, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
371 {"seektrack", (PyCFunction)CD_seektrack, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
372 {"stop", (PyCFunction)CD_stop, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
373 {"togglepause", (PyCFunction)CD_togglepause, 1},
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
374 {NULL, NULL} /* sentinel */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
375 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
376
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
377 static void
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
378 cdplayer_dealloc(cdplayerobject *self)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
379 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
380 if (self->ob_cdplayer != NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
381 CDclose(self->ob_cdplayer);
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 11882
diff changeset
382 PyObject_Del(self);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
383 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
384
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
385 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
386 cdplayer_getattr(cdplayerobject *self, char *name)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
387 {
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
388 if (self->ob_cdplayer == NULL) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
389 PyErr_SetString(PyExc_RuntimeError, "no player active");
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
390 return NULL;
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
391 }
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
392 return Py_FindMethod(cdplayer_methods, (PyObject *)self, name);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
393 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
394
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
395 PyTypeObject CdPlayertype = {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
396 PyObject_HEAD_INIT(&PyType_Type)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
397 0, /*ob_size*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
398 "cdplayer", /*tp_name*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
399 sizeof(cdplayerobject), /*tp_size*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
400 0, /*tp_itemsize*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
401 /* methods */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1313
diff changeset
402 (destructor)cdplayer_dealloc, /*tp_dealloc*/
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
403 0, /*tp_print*/
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1313
diff changeset
404 (getattrfunc)cdplayer_getattr, /*tp_getattr*/
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
405 0, /*tp_setattr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
406 0, /*tp_compare*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
407 0, /*tp_repr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
408 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
409
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
410 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
411 newcdplayerobject(CDPLAYER *cdp)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
412 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
413 cdplayerobject *p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
414
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 11882
diff changeset
415 p = PyObject_New(cdplayerobject, &CdPlayertype);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
416 if (p == NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
417 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
418 p->ob_cdplayer = cdp;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
419 return (PyObject *) p;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
420 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
421
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
422 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
423 CD_open(PyObject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
424 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
425 char *dev, *direction;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
426 CDPLAYER *cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
427
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
428 /*
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
429 * Variable number of args.
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
430 * First defaults to "None", second defaults to "r".
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
431 */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
432 dev = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
433 direction = "r";
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
434 if (!PyArg_ParseTuple(args, "|zs:open", &dev, &direction))
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
435 return NULL;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
436
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
437 cdp = CDopen(dev, direction);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
438 if (cdp == NULL) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
439 PyErr_SetFromErrno(CdError);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
440 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
441 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
442
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
443 return newcdplayerobject(cdp);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
444 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
445
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
446 typedef struct {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
447 PyObject_HEAD
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
448 CDPARSER *ob_cdparser;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
449 struct {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
450 PyObject *ob_cdcallback;
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
451 PyObject *ob_cdcallbackarg;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
452 } ob_cdcallbacks[NCALLBACKS];
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
453 } cdparserobject;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
454
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
455 static void
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
456 CD_callback(void *arg, CDDATATYPES type, void *data)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
457 {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
458 PyObject *result, *args, *v = NULL;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
459 char *p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
460 int i;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
461 cdparserobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
462
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
463 self = (cdparserobject *) arg;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
464 args = PyTuple_New(3);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
465 if (args == NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
466 return;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
467 Py_INCREF(self->ob_cdcallbacks[type].ob_cdcallbackarg);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
468 PyTuple_SetItem(args, 0, self->ob_cdcallbacks[type].ob_cdcallbackarg);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
469 PyTuple_SetItem(args, 1, PyInt_FromLong((long) type));
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
470 switch (type) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
471 case cd_audio:
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
472 v = PyString_FromStringAndSize(data, CDDA_DATASIZE);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
473 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
474 case cd_pnum:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
475 case cd_index:
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
476 v = PyInt_FromLong(((CDPROGNUM *) data)->value);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
477 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
478 case cd_ptime:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
479 case cd_atime:
830
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
480 #define ptr ((struct cdtimecode *) data)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
481 v = Py_BuildValue("(iii)",
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
482 ptr->mhi * 10 + ptr->mlo,
830
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
483 ptr->shi * 10 + ptr->slo,
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
484 ptr->fhi * 10 + ptr->flo);
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
485 #undef ptr
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
486 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
487 case cd_catalog:
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
488 v = PyString_FromStringAndSize(NULL, 13);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
489 p = PyString_AsString(v);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
490 for (i = 0; i < 13; i++)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
491 *p++ = ((char *) data)[i] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
492 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
493 case cd_ident:
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
494 #define ptr ((struct cdident *) data)
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
495 v = PyString_FromStringAndSize(NULL, 12);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
496 p = PyString_AsString(v);
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
497 CDsbtoa(p, ptr->country, 2);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
498 p += 2;
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
499 CDsbtoa(p, ptr->owner, 3);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
500 p += 3;
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
501 *p++ = ptr->year[0] + '0';
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
502 *p++ = ptr->year[1] + '0';
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
503 *p++ = ptr->serial[0] + '0';
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
504 *p++ = ptr->serial[1] + '0';
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
505 *p++ = ptr->serial[2] + '0';
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
506 *p++ = ptr->serial[3] + '0';
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
507 *p++ = ptr->serial[4] + '0';
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
508 #undef ptr
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
509 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
510 case cd_control:
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
511 v = PyInt_FromLong((long) *((unchar *) data));
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
512 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 }
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
514 PyTuple_SetItem(args, 2, v);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
515 if (PyErr_Occurred()) {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
516 Py_DECREF(args);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
517 return;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
518 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
519
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
520 result = PyEval_CallObject(self->ob_cdcallbacks[type].ob_cdcallback,
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
521 args);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
522 Py_DECREF(args);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
523 Py_XDECREF(result);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
524 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
525
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
526 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
527 CD_deleteparser(cdparserobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
528 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
529 int i;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
530
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
531 if (!PyArg_ParseTuple(args, ":deleteparser"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
532 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
533
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
534 CDdeleteparser(self->ob_cdparser);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
535 self->ob_cdparser = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
536
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
537 /* no sense in keeping the callbacks, so remove them */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
538 for (i = 0; i < NCALLBACKS; i++) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
539 Py_XDECREF(self->ob_cdcallbacks[i].ob_cdcallback);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
540 self->ob_cdcallbacks[i].ob_cdcallback = NULL;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
541 Py_XDECREF(self->ob_cdcallbacks[i].ob_cdcallbackarg);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
542 self->ob_cdcallbacks[i].ob_cdcallbackarg = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
543 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
544
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
545 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
546 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
547 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
548
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
549 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
550 CD_parseframe(cdparserobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
551 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
552 char *cdfp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
553 int length;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
554 CDFRAME *p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
555
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
556 if (!PyArg_ParseTuple(args, "s#:parseframe", &cdfp, &length))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
557 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
558
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
559 if (length % sizeof(CDFRAME) != 0) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
560 PyErr_SetString(PyExc_TypeError, "bad length");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
561 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
562 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
563
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
564 p = (CDFRAME *) cdfp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
565 while (length > 0) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
566 CDparseframe(self->ob_cdparser, p);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
567 length -= sizeof(CDFRAME);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
568 p++;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
569 if (PyErr_Occurred())
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
570 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
571 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
572
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
573 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
574 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
575 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
576
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
577 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
578 CD_removecallback(cdparserobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
579 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
580 int type;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
581
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
582 if (!PyArg_ParseTuple(args, "i:removecallback", &type))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
583 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
584
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
585 if (type < 0 || type >= NCALLBACKS) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
586 PyErr_SetString(PyExc_TypeError, "bad type");
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
587 return NULL;
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
588 }
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
589
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
590 CDremovecallback(self->ob_cdparser, (CDDATATYPES) type);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
591
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
592 Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallback);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
593 self->ob_cdcallbacks[type].ob_cdcallback = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
594
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
595 Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
596 self->ob_cdcallbacks[type].ob_cdcallbackarg = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
597
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
598 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
599 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
600 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
601
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
602 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
603 CD_resetparser(cdparserobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
604 {
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
605 if (!PyArg_ParseTuple(args, ":resetparser"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
606 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
607
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
608 CDresetparser(self->ob_cdparser);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
609
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
610 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
611 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
612 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
613
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
614 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
615 CD_addcallback(cdparserobject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
616 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
617 int type;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
618 PyObject *func, *funcarg;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
619
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
620 /* XXX - more work here */
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
621 if (!PyArg_ParseTuple(args, "iOO:addcallback", &type, &func, &funcarg))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
622 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
623
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
624 if (type < 0 || type >= NCALLBACKS) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
625 PyErr_SetString(PyExc_TypeError, "argument out of range");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
626 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
627 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
628
1071
2291da05f178 Changed an ifdef from IRIX_405 to CDsetcallback.
Sjoerd Mullender <sjoerd@acm.org>
parents: 1063
diff changeset
629 #ifdef CDsetcallback
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
630 CDaddcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback,
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
631 (void *) self);
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
632 #else
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
633 CDsetcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback,
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
634 (void *) self);
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
635 #endif
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
636 Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallback);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
637 Py_INCREF(func);
1313
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
638 self->ob_cdcallbacks[type].ob_cdcallback = func;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
639 Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
640 Py_INCREF(funcarg);
1313
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
641 self->ob_cdcallbacks[type].ob_cdcallbackarg = funcarg;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
642
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
643 /*
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
644 if (type == cd_audio) {
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
645 sigfpe_[_UNDERFL].repls = _ZERO;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
646 handle_sigfpes(_ON, _EN_UNDERFL, NULL,
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
647 _ABORT_ON_ERROR, NULL);
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
648 }
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
649 */
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
650
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
651 Py_INCREF(Py_None);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
652 return Py_None;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
653 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
654
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
655 static PyMethodDef cdparser_methods[] = {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
656 {"addcallback", (PyCFunction)CD_addcallback, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
657 {"deleteparser", (PyCFunction)CD_deleteparser, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
658 {"parseframe", (PyCFunction)CD_parseframe, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
659 {"removecallback", (PyCFunction)CD_removecallback, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
660 {"resetparser", (PyCFunction)CD_resetparser, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
661 /* backward compatibility */
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
662 {"setcallback", (PyCFunction)CD_addcallback, 1},
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
663 {NULL, NULL} /* sentinel */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
664 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
665
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
666 static void
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
667 cdparser_dealloc(cdparserobject *self)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
668 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
669 int i;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
670
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
671 for (i = 0; i < NCALLBACKS; i++) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
672 Py_XDECREF(self->ob_cdcallbacks[i].ob_cdcallback);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
673 self->ob_cdcallbacks[i].ob_cdcallback = NULL;
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
674 Py_XDECREF(self->ob_cdcallbacks[i].ob_cdcallbackarg);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
675 self->ob_cdcallbacks[i].ob_cdcallbackarg = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
676 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
677 CDdeleteparser(self->ob_cdparser);
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 11882
diff changeset
678 PyObject_Del(self);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
679 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
680
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
681 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
682 cdparser_getattr(cdparserobject *self, char *name)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
683 {
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
684 if (self->ob_cdparser == NULL) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
685 PyErr_SetString(PyExc_RuntimeError, "no parser active");
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
686 return NULL;
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
687 }
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
688
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
689 return Py_FindMethod(cdparser_methods, (PyObject *)self, name);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
690 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
691
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
692 PyTypeObject CdParsertype = {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
693 PyObject_HEAD_INIT(&PyType_Type)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
694 0, /*ob_size*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
695 "cdparser", /*tp_name*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
696 sizeof(cdparserobject), /*tp_size*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
697 0, /*tp_itemsize*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
698 /* methods */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1313
diff changeset
699 (destructor)cdparser_dealloc, /*tp_dealloc*/
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
700 0, /*tp_print*/
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1313
diff changeset
701 (getattrfunc)cdparser_getattr, /*tp_getattr*/
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
702 0, /*tp_setattr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
703 0, /*tp_compare*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
704 0, /*tp_repr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
705 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
706
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
707 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
708 newcdparserobject(CDPARSER *cdp)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
710 cdparserobject *p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
711 int i;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
712
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 11882
diff changeset
713 p = PyObject_New(cdparserobject, &CdParsertype);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 if (p == NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
715 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 p->ob_cdparser = cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
717 for (i = 0; i < NCALLBACKS; i++) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
718 p->ob_cdcallbacks[i].ob_cdcallback = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
719 p->ob_cdcallbacks[i].ob_cdcallbackarg = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
720 }
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
721 return (PyObject *) p;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
722 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
723
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
724 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
725 CD_createparser(PyObject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
726 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
727 CDPARSER *cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
728
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
729 if (!PyArg_ParseTuple(args, ":createparser"))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
730 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
731 cdp = CDcreateparser();
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
732 if (cdp == NULL) {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
733 PyErr_SetString(CdError, "createparser failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
734 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
735 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
736
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
737 return newcdparserobject(cdp);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
738 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
739
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
740 static PyObject *
13514
5304b88fe3cc ANSI-fication of the SGI modules (note that svmodule.c and sgimodule.c
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
741 CD_msftoframe(PyObject *self, PyObject *args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
742 {
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
743 int min, sec, frame;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
744
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 6370
diff changeset
745 if (!PyArg_ParseTuple(args, "iii:msftoframe", &min, &sec, &frame))
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
746 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
747
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
748 return PyInt_FromLong((long) CDmsftoframe(min, sec, frame));
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
749 }
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
750
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
751 static PyMethodDef CD_methods[] = {
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
752 {"open", (PyCFunction)CD_open, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
753 {"createparser", (PyCFunction)CD_createparser, 1},
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
754 {"msftoframe", (PyCFunction)CD_msftoframe, 1},
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
755 {NULL, NULL} /* Sentinel */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
757
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
758 void
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13514
diff changeset
759 initcd(void)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
760 {
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
761 PyObject *m, *d;
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
762
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
763 m = Py_InitModule("cd", CD_methods);
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
764 d = PyModule_GetDict(m);
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
765
6370
36405309397f Oops, forgot one.
Guido van Rossum <guido@python.org>
parents: 4892
diff changeset
766 CdError = PyErr_NewException("cd.error", NULL, NULL);
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
767 PyDict_SetItemString(d, "error", CdError);
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
768
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
769 /* Identifiers for the different types of callbacks from the parser */
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
770 PyDict_SetItemString(d, "audio", PyInt_FromLong((long) cd_audio));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
771 PyDict_SetItemString(d, "pnum", PyInt_FromLong((long) cd_pnum));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
772 PyDict_SetItemString(d, "index", PyInt_FromLong((long) cd_index));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
773 PyDict_SetItemString(d, "ptime", PyInt_FromLong((long) cd_ptime));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
774 PyDict_SetItemString(d, "atime", PyInt_FromLong((long) cd_atime));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
775 PyDict_SetItemString(d, "catalog", PyInt_FromLong((long) cd_catalog));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
776 PyDict_SetItemString(d, "ident", PyInt_FromLong((long) cd_ident));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
777 PyDict_SetItemString(d, "control", PyInt_FromLong((long) cd_control));
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
778
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
779 /* Block size information for digital audio data */
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
780 PyDict_SetItemString(d, "DATASIZE",
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
781 PyInt_FromLong((long) CDDA_DATASIZE));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
782 PyDict_SetItemString(d, "BLOCKSIZE",
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
783 PyInt_FromLong((long) CDDA_BLOCKSIZE));
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
784
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
785 /* Possible states for the cd player */
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
786 PyDict_SetItemString(d, "ERROR", PyInt_FromLong((long) CD_ERROR));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
787 PyDict_SetItemString(d, "NODISC", PyInt_FromLong((long) CD_NODISC));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
788 PyDict_SetItemString(d, "READY", PyInt_FromLong((long) CD_READY));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
789 PyDict_SetItemString(d, "PLAYING", PyInt_FromLong((long) CD_PLAYING));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
790 PyDict_SetItemString(d, "PAUSED", PyInt_FromLong((long) CD_PAUSED));
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
791 PyDict_SetItemString(d, "STILL", PyInt_FromLong((long) CD_STILL));
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
792 #ifdef CD_CDROM /* only newer versions of the library */
4892
1c089c5b66e9 Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4600
diff changeset
793 PyDict_SetItemString(d, "CDROM", PyInt_FromLong((long) CD_CDROM));
2603
4084ecf276cf Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents: 2061
diff changeset
794 #endif
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
795 }