annotate Modules/cdmodule.c @ 1590:ac2e5cc29949 legacy-trunk

Added tests for missing host to open_http and open_gopher
author Guido van Rossum <guido@python.org>
date Mon, 18 Apr 1994 09:39:56 +0000
parents 6ee380349c84
children 1940892d2fe3
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 /**********************************************************
1257
1cabc2b6c970 * Changed all copyright messages to include 1993.
Guido van Rossum <guido@python.org>
parents: 1071
diff changeset
2 Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
1cabc2b6c970 * Changed all copyright messages to include 1993.
Guido van Rossum <guido@python.org>
parents: 1071
diff changeset
3 Amsterdam, The Netherlands.
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 All Rights Reserved
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 Permission to use, copy, modify, and distribute this software and its
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 documentation for any purpose and without fee is hereby granted,
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 provided that the above copyright notice appear in all copies and that
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 both that copyright notice and this permission notice appear in
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 supporting documentation, and that the names of Stichting Mathematisch
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 Centrum or CWI not be used in advertising or publicity pertaining to
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 distribution of the software without specific, written prior permission.
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
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 ******************************************************************/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 /* CD module -- interface to Mark Callow's and Roger Chickering's */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 /* CD Audio Library (CD). */
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 #include <sys/types.h>
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 #include <cdaudio.h>
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 #include "allobjects.h"
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 #include "import.h"
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 #include "modsupport.h"
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 #include "ceval.h"
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 #define NCALLBACKS 8
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 typedef struct {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 OB_HEAD
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 CDPLAYER *ob_cdplayer;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 } cdplayerobject;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 #define CheckPlayer(self) if ((self)->ob_cdplayer == NULL) { \
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 err_setstr(RuntimeError, "no player active"); \
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 return NULL; \
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 #define CheckParser(self) if ((self)->ob_cdparser == NULL) { \
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 err_setstr(RuntimeError, "no parser active"); \
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 return NULL; \
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
51 static object *CdError; /* exception cd.error */
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
52
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 CD_allowremoval(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 CheckPlayer(self);
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 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 CDallowremoval(self->ob_cdplayer);
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 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 CD_preventremoval(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 object *args;
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 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 CDpreventremoval(self->ob_cdplayer);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 CD_bestreadsize(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 object *args;
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 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 if (!getnoarg(args))
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 return newintobject((long) CDbestreadsize(self->ob_cdplayer));
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 CD_close(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 if (!CDclose(self->ob_cdplayer)) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
109 err_errno(CdError); /* XXX - ??? */
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 self->ob_cdplayer = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
113
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 }
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 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 CD_eject(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
123 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
124
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 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
131 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
132 status.state == CD_NODISC)
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
133 err_setstr(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
134 else
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
135 err_setstr(CdError, "eject failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 }
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 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 CD_getstatus(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 CDSTATUS status;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
149
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
151
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
154
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 if (!CDgetstatus(self->ob_cdplayer, &status)) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
156 err_errno(CdError); /* XXX - ??? */
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
159
830
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
160 return mkvalue("(ii(iii)(iii)(iii)iiii(iii))", status.state,
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
161 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
162 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
163 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
164 status.first, status.last, status.scsi_audio,
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
165 status.cur_block, status.polyfilla[0],
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
166 status.polyfilla[1], status.polyfilla[2]);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 }
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 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 CD_gettrackinfo(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 int track;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 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
176 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
177
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
179
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 if (!getargs(args, "i", &track))
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 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
184 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
185 status.state == CD_NODISC)
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
186 err_setstr(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
187 else
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
188 err_setstr(CdError, "gettrackinfo failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 return NULL;
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
830
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
192 return mkvalue("((iii)(iii))",
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 info.start_min, info.start_sec, info.start_frame,
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 info.total_min, info.total_sec, info.total_frame);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 }
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 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
198 CD_msftoblock(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
199 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
200 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
201 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 int min, sec, frame;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
203 unsigned long block;
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 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
206
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 if (!getargs(args, "(iii)", &min, &sec, &frame))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
208 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
209
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
210 block = CDmsftoblock(self->ob_cdplayer, min, sec, frame);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 return newintobject((long) block);
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
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
214 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
215 CD_play(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
216 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
217 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 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
220 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
221
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
222 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
223
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
224 if (!getargs(args, "(ii)", &start, &play))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
225 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
226
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
227 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
228 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
229 status.state == CD_NODISC)
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
230 err_setstr(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
231 else
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
232 err_setstr(CdError, "play failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 }
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 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
237 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
238 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
239
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
240 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
241 CD_playabs(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
242 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 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
246 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
247
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
249
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
250 if (!getargs(args, "(iiii)", &min, &sec, &frame, &play))
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 (!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
254 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
255 status.state == CD_NODISC)
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
256 err_setstr(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
257 else
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
258 err_setstr(CdError, "playabs failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
259 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
260 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
261
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
262 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
263 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
264 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
265
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
266 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 CD_playtrack(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
268 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
269 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
270 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
271 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
272 CDSTATUS status;
820
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 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
275
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
276 if (!getargs(args, "(ii)", &start, &play))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
277 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
278
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
279 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
280 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
281 status.state == CD_NODISC)
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
282 err_setstr(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
283 else
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
284 err_setstr(CdError, "playtrack failed");
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 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
287
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
288 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
289 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 }
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 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
293 CD_playtrackabs(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
294 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
297 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
298 CDSTATUS status;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
299
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
300 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
301
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
302 if (!getargs(args, "(iiiii)", &track, &min, &sec, &frame, &play))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
303 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
304
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
305 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
306 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
307 status.state == CD_NODISC)
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
308 err_setstr(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
309 else
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
310 err_setstr(CdError, "playtrackabs failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
311 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
312 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
313
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
314 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
315 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
316 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
317
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
318 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
319 CD_readda(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
320 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
322 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
323 int numframes, n;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
324 object *result;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
325
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
326 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
327
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
328 if (!getargs(args, "i", &numframes))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
329 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
330
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
331 result = newsizedstringobject(NULL, numframes * sizeof(CDFRAME));
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 if (result == NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
333 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
334
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
335 n = CDreadda(self->ob_cdplayer, (CDFRAME *) getstringvalue(result), numframes);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
336 if (n == -1) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
337 DECREF(result);
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
338 err_errno(CdError);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
339 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
340 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
341 if (n < numframes)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
342 if (resizestring(&result, n * sizeof(CDFRAME)))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
343 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
344
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
345 return result;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
346 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
347
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
348 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
349 CD_seek(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
350 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
351 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
352 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 int min, sec, frame;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
354 long block;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
355
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
356 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
357
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
358 if (!getargs(args, "(iii)", &min, &sec, &frame))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
359 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
360
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
361 block = CDseek(self->ob_cdplayer, min, sec, frame);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
362 if (block == -1) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
363 err_errno(CdError);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
364 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
365 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
366
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
367 return newintobject(block);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
368 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
369
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
370 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
371 CD_seektrack(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
372 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
373 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
374 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
375 int track;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
376 long block;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
377
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
378 CheckPlayer(self);
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 (!getargs(args, "i", &track))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
381 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
382
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
383 block = CDseektrack(self->ob_cdplayer, track);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
384 if (block == -1) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
385 err_errno(CdError);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
386 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
387 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
388
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
389 return newintobject(block);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
390 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
391
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
392 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
393 CD_stop(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
394 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
395 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
396 {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
397 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
398
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
399 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
400
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
401 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
402 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
403
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
404 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
405 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
406 status.state == CD_NODISC)
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
407 err_setstr(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
408 else
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
409 err_setstr(CdError, "stop failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
410 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
411 }
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 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
414 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
415 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
416
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
417 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
418 CD_togglepause(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
419 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
420 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
421 {
849
fe6a5f2640a2 Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents: 848
diff changeset
422 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
423
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
424 CheckPlayer(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
425
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
426 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
427 return NULL;
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 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
430 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
431 status.state == CD_NODISC)
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
432 err_setstr(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
433 else
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
434 err_setstr(CdError, "togglepause failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
435 return NULL;
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
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
438 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
440 }
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 static struct methodlist cdplayer_methods[] = {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
443 {"allowremoval", CD_allowremoval},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
444 {"bestreadsize", CD_bestreadsize},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
445 {"close", CD_close},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
446 {"eject", CD_eject},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
447 {"getstatus", CD_getstatus},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
448 {"gettrackinfo", CD_gettrackinfo},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
449 {"msftoblock", CD_msftoblock},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
450 {"play", CD_play},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
451 {"playabs", CD_playabs},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
452 {"playtrack", CD_playtrack},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
453 {"playtrackabs", CD_playtrackabs},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
454 {"preventremoval", CD_preventremoval},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
455 {"readda", CD_readda},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
456 {"seek", CD_seek},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
457 {"seektrack", CD_seektrack},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
458 {"stop", CD_stop},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
459 {"togglepause", CD_togglepause},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
460 {NULL, NULL} /* sentinel */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
461 };
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 static void
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
464 cdplayer_dealloc(self)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
465 cdplayerobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
466 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
467 if (self->ob_cdplayer != NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
468 CDclose(self->ob_cdplayer);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
469 DEL(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
470 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
471
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
472 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
473 cdplayer_getattr(cdp, name)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
474 cdplayerobject *cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
475 char *name;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
476 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
477 return findmethod(cdplayer_methods, (object *)cdp, name);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
478 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
479
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
480 typeobject CdPlayertype = {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
481 OB_HEAD_INIT(&Typetype)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
482 0, /*ob_size*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
483 "cdplayer", /*tp_name*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
484 sizeof(cdplayerobject), /*tp_size*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
485 0, /*tp_itemsize*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
486 /* methods */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
487 cdplayer_dealloc, /*tp_dealloc*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
488 0, /*tp_print*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
489 cdplayer_getattr, /*tp_getattr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
490 0, /*tp_setattr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
491 0, /*tp_compare*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
492 0, /*tp_repr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
493 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
494
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
495 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
496 newcdplayerobject(cdp)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
497 CDPLAYER *cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
498 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
499 cdplayerobject *p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
500
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
501 p = NEWOBJ(cdplayerobject, &CdPlayertype);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
502 if (p == NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
503 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
504 p->ob_cdplayer = cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
505 return (object *) p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
506 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
507
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
508 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
509 CD_open(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
510 object *self, *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
511 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
512 char *dev, *direction;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 CDPLAYER *cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
514
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
515 /*
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
516 * Variable number of args.
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
517 * First defaults to "None", second defaults to "r".
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 dev = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
520 direction = "r";
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
521 if (!getnoarg(args)) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
522 err_clear();
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
523 if (!getargs(args, "z", &dev)) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
524 err_clear();
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
525 if (!getargs(args, "(zs)", &dev, &direction))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
526 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
527 }
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
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
530 cdp = CDopen(dev, direction);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
531 if (cdp == NULL) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
532 err_errno(CdError);
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
533 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
534 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
535
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
536 return newcdplayerobject(cdp);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
537 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
538
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
539 typedef struct {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
540 OB_HEAD
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
541 CDPARSER *ob_cdparser;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
542 struct {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
543 object *ob_cdcallback;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
544 object *ob_cdcallbackarg;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
545 } ob_cdcallbacks[NCALLBACKS];
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
546 } cdparserobject;
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 static void
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
549 CD_callback(arg, type, data)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
550 void *arg;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
551 CDDATATYPES type;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
552 void *data;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
553 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
554 object *result, *args, *v;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
555 char *p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
556 int i;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
557 cdparserobject *self;
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 self = (cdparserobject *) arg;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
560 args = newtupleobject(3);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
561 if (args == NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
562 return;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
563 INCREF(self->ob_cdcallbacks[type].ob_cdcallbackarg);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
564 settupleitem(args, 0, self->ob_cdcallbacks[type].ob_cdcallbackarg);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
565 settupleitem(args, 1, newintobject((long) type));
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
566 switch (type) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
567 case cd_audio:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
568 v = newsizedstringobject(data, CDDA_DATASIZE);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
569 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
570 case cd_pnum:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
571 case cd_index:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
572 v = newintobject(((CDPROGNUM *) data)->value);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
573 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
574 case cd_ptime:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
575 case cd_atime:
830
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
576 #define ptr ((struct cdtimecode *) data)
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
577 v = mkvalue("(iii)", ptr->mhi * 10 + ptr->mlo,
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
578 ptr->shi * 10 + ptr->slo,
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
579 ptr->fhi * 10 + ptr->flo);
ea5072de7427 Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents: 820
diff changeset
580 #undef ptr
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
581 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
582 case cd_catalog:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
583 v = newsizedstringobject(NULL, 13);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
584 p = getstringvalue(v);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
585 for (i = 0; i < 13; i++)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
586 *p++ = ((char *) data)[i] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
587 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
588 case cd_ident:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
589 v = newsizedstringobject(NULL, 12);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
590 p = getstringvalue(v);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
591 CDsbtoa(p, ((struct cdident *) data)->country, 2);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
592 p += 2;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
593 CDsbtoa(p, ((struct cdident *) data)->owner, 3);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
594 p += 3;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
595 *p++ = ((struct cdident *) data)->year[0] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
596 *p++ = ((struct cdident *) data)->year[1] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
597 *p++ = ((struct cdident *) data)->serial[0] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
598 *p++ = ((struct cdident *) data)->serial[1] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
599 *p++ = ((struct cdident *) data)->serial[2] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
600 *p++ = ((struct cdident *) data)->serial[3] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
601 *p++ = ((struct cdident *) data)->serial[4] + '0';
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
602 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
603 case cd_control:
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
604 v = newintobject((long) *((unchar *) data));
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
605 break;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
606 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
607 settupleitem(args, 2, v);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
608 if (err_occurred()) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
609 DECREF(args);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
610 return;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
611 }
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 result = call_object(self->ob_cdcallbacks[type].ob_cdcallback, args);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
614 DECREF(args);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
615 XDECREF(result);
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
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
618 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
619 CD_deleteparser(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
620 cdparserobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
621 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
622 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
623 int i;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
624
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
625 CheckParser(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
626
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
627 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
628 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
629
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
630 CDdeleteparser(self->ob_cdparser);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
631 self->ob_cdparser = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
632
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
633 /* no sense in keeping the callbacks, so remove them */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
634 for (i = 0; i < NCALLBACKS; i++) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
635 XDECREF(self->ob_cdcallbacks[i].ob_cdcallback);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
636 self->ob_cdcallbacks[i].ob_cdcallback = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
637 XDECREF(self->ob_cdcallbacks[i].ob_cdcallbackarg);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
638 self->ob_cdcallbacks[i].ob_cdcallbackarg = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
639 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
640
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
641 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
642 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
643 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
644
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
645 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
646 CD_parseframe(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
647 cdparserobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
648 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
649 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
650 char *cdfp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
651 int length;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
652 CDFRAME *p;
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 CheckParser(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
655
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
656 if (!getargs(args, "s#", &cdfp, &length))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
657 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
658
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
659 if (length % sizeof(CDFRAME) != 0) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
660 err_setstr(TypeError, "bad length");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
661 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
662 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
663
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
664 p = (CDFRAME *) cdfp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
665 while (length > 0) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
666 CDparseframe(self->ob_cdparser, p);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
667 length -= sizeof(CDFRAME);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
668 p++;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
669 if (err_occurred())
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
670 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
671 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
672
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
673 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
674 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
675 }
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 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
678 CD_removecallback(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
679 cdparserobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
680 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
681 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
682 int type;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
683
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
684 CheckParser(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
685
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
686 if (!getargs(args, "i", &type))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
687 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
688
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
689 if (type < 0 || type >= NCALLBACKS) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
690 err_setstr(TypeError, "bad type");
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
691 return NULL;
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
692 }
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
693
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
694 CDremovecallback(self->ob_cdparser, (CDDATATYPES) type);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
695
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
696 XDECREF(self->ob_cdcallbacks[type].ob_cdcallback);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
697 self->ob_cdcallbacks[type].ob_cdcallback = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
698
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
699 XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
700 self->ob_cdcallbacks[type].ob_cdcallbackarg = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
701
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
702 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
703 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
704 }
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 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
707 CD_resetparser(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
708 cdparserobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
710 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
711 CheckParser(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
712
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
713 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
715
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 CDresetparser(self->ob_cdparser);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
717
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
718 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
719 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
720 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
721
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
722 static object *
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
723 CD_addcallback(self, args)
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
724 cdparserobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
725 object *args;
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 int type;
1313
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
728 object *func, *funcarg;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
729
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
730 CheckParser(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
731
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
732 /* XXX - more work here */
1313
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
733 if (!getargs(args, "(iOO)", &type, &func, &funcarg))
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 if (type < 0 || type >= NCALLBACKS) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
737 err_setstr(TypeError, "argument out of range");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
738 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
739 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
740
1071
2291da05f178 Changed an ifdef from IRIX_405 to CDsetcallback.
Sjoerd Mullender <sjoerd@acm.org>
parents: 1063
diff changeset
741 #ifdef CDsetcallback
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
742 CDaddcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback, (void *) self);
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
743 #else
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
744 CDsetcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback, (void *) self);
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
745 #endif
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
746 XDECREF(self->ob_cdcallbacks[type].ob_cdcallback);
1313
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
747 INCREF(func);
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
748 self->ob_cdcallbacks[type].ob_cdcallback = func;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
749 XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg);
1313
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
750 INCREF(funcarg);
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
751 self->ob_cdcallbacks[type].ob_cdcallbackarg = funcarg;
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
752
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
753 INCREF(None);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
754 return None;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
755 }
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 static struct methodlist cdparser_methods[] = {
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
758 {"addcallback", CD_addcallback},
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
759 {"deleteparser", CD_deleteparser},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
760 {"parseframe", CD_parseframe},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
761 {"removecallback", CD_removecallback},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
762 {"resetparser", CD_resetparser},
921
8078834996ec cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents: 849
diff changeset
763 {"setcallback", CD_addcallback}, /* backward compatibility */
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
764 {NULL, NULL} /* sentinel */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
765 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
766
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
767 static void
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
768 cdparser_dealloc(self)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
769 cdparserobject *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
770 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
771 int i;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
772
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
773 for (i = 0; i < NCALLBACKS; i++) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
774 XDECREF(self->ob_cdcallbacks[i].ob_cdcallback);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
775 self->ob_cdcallbacks[i].ob_cdcallback = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
776 XDECREF(self->ob_cdcallbacks[i].ob_cdcallbackarg);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
777 self->ob_cdcallbacks[i].ob_cdcallbackarg = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
778 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
779 CDdeleteparser(self->ob_cdparser);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
780 DEL(self);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
781 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
782
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
783 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
784 cdparser_getattr(cdp, name)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
785 cdparserobject *cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
786 char *name;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
787 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
788 return findmethod(cdparser_methods, (object *)cdp, name);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
789 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
790
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
791 typeobject CdParsertype = {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
792 OB_HEAD_INIT(&Typetype)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
793 0, /*ob_size*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
794 "cdparser", /*tp_name*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
795 sizeof(cdparserobject), /*tp_size*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
796 0, /*tp_itemsize*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
797 /* methods */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
798 cdparser_dealloc, /*tp_dealloc*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
799 0, /*tp_print*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
800 cdparser_getattr, /*tp_getattr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
801 0, /*tp_setattr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
802 0, /*tp_compare*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
803 0, /*tp_repr*/
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
804 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
805
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
806 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
807 newcdparserobject(cdp)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
808 CDPARSER *cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
809 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
810 cdparserobject *p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
811 int i;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
812
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
813 p = NEWOBJ(cdparserobject, &CdParsertype);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
814 if (p == NULL)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
815 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
816 p->ob_cdparser = cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
817 for (i = 0; i < NCALLBACKS; i++) {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
818 p->ob_cdcallbacks[i].ob_cdcallback = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
819 p->ob_cdcallbacks[i].ob_cdcallbackarg = NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
820 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
821 return (object *) p;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
822 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
823
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
824 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
825 CD_createparser(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
826 object *self, *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
827 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
828 CDPARSER *cdp;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
829
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
830 if (!getnoarg(args))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
831 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
832 cdp = CDcreateparser();
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
833 if (cdp == NULL) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
834 err_setstr(CdError, "createparser failed");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
835 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
836 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
837
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
838 return newcdparserobject(cdp);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
839 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
840
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
841 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
842 CD_sbtoa(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
843 object *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
844 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
845 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
846 char *sb;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
847 int length;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
848 object *result;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
849
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
850 if (!getargs(args, "s#", &sb, &length))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
851 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
852 result = newsizedstringobject(NULL, length);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
853 CDsbtoa(getstringvalue(result), (unchar *) sb, length);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
854 return result;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
855 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
856
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
857 static object *
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
858 CD_timetoa(self, args)
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
859 object *self;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
860 object *args;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
861 {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
862 char *tc;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
863 int length;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
864 object *result;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
865
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
866 if (!getargs(args, "s#", &tc, &length))
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
867 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
868
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
869 if (length != sizeof(struct cdtimecode)) {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
870 err_setstr(TypeError, "bad length");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
871 return NULL;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
872 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
873
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
874 result = newsizedstringobject(NULL, 8);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
875 CDtimetoa(getstringvalue(result), (struct cdtimecode *) tc);
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
876 return result;
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
877 }
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
878
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
879 static struct methodlist CD_methods[] = {
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
880 {"sbtoa", CD_sbtoa},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
881 {"open", CD_open},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
882 {"createparser",CD_createparser},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
883 {"timetoa", CD_timetoa},
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
884 {NULL, NULL} /* Sentinel */
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
885 };
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
886
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
887 void
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
888 initcd()
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
889 {
1063
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
890 object *m, *d;
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
891
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
892 m = initmodule("cd", CD_methods);
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
893 d = getmoduledict(m);
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
894
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
895 CdError = newstringobject("cd.error");
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
896 if (CdError == NULL || dictinsert(d, "error", CdError) != 0)
aaa3bccb143a Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents: 926
diff changeset
897 fatal("can't define cd.error");
820
09c69a1ec7b0 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
898 }