annotate Modules/dbmmodule.c @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents 65d2d8e67da3
children d36250aefb82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 /***********************************************************
2061
172ba04a5191 Added 1995 to copyright message.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
2 Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
172ba04a5191 Added 1995 to copyright message.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
3 The Netherlands.
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 All Rights Reserved
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
7 Permission to use, copy, modify, and distribute this software and its
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
8 documentation for any purpose and without fee is hereby granted,
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 provided that the above copyright notice appear in all copies and that
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
10 both that copyright notice and this permission notice appear in
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 supporting documentation, and that the names of Stichting Mathematisch
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
12 Centrum or CWI or Corporation for National Research Initiatives or
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
13 CNRI not be used in advertising or publicity pertaining to
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
14 distribution of the software without specific, written prior
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
15 permission.
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
17 While CWI is the initial source for this software, a modified version
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
18 is made available by the Corporation for National Research Initiatives
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
19 (CNRI) at the Internet address ftp://ftp.python.org.
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
20
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
21 STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
22 REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
23 MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
24 CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
25 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
26 PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
27 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 3014
diff changeset
28 PERFORMANCE OF THIS SOFTWARE.
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
29
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 ******************************************************************/
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
31
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 /* DBM module using dictionary interface */
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
33
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
34
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 #include "allobjects.h"
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 #include "modsupport.h"
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
37
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 #include <sys/types.h>
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 #include <sys/stat.h>
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 #include <fcntl.h>
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 #include <ndbm.h>
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
42
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 typedef struct {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 OB_HEAD
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 int di_size; /* -1 means recompute */
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 DBM *di_dbm;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 } dbmobject;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
48
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
49 staticforward typeobject Dbmtype;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
50
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 #define is_dbmobject(v) ((v)->ob_type == &Dbmtype)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
52
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 static object *DbmError;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
54
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 static object *
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 newdbmobject(file, flags, mode)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 char *file;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 int flags;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 int mode;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 dbmobject *dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
62
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 dp = NEWOBJ(dbmobject, &Dbmtype);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 if (dp == NULL)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 return NULL;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 dp->di_size = -1;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 if ( (dp->di_dbm = dbm_open(file, flags, mode)) == 0 ) {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 err_errno(DbmError);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 DECREF(dp);
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
70 return NULL;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 return (object *)dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
74
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 /* Methods */
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
76
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 static void
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 dbm_dealloc(dp)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 register dbmobject *dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 if ( dp->di_dbm )
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 dbm_close(dp->di_dbm);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 DEL(dp);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
85
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 static int
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 dbm_length(dp)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 dbmobject *dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 if ( dp->di_size < 0 ) {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 datum key;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 int size;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
93
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 size = 0;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 for ( key=dbm_firstkey(dp->di_dbm); key.dptr;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 key = dbm_nextkey(dp->di_dbm))
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 size++;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 dp->di_size = size;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 return dp->di_size;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
102
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 static object *
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 dbm_subscript(dp, key)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 dbmobject *dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 register object *key;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 object *v;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 datum drec, krec;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
110
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 if (!getargs(key, "s#", &krec.dptr, &krec.dsize) )
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 return NULL;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
113
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 drec = dbm_fetch(dp->di_dbm, krec);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 if ( drec.dptr == 0 ) {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 err_setstr(KeyError, GETSTRINGVALUE((stringobject *)key));
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
117 return NULL;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 if ( dbm_error(dp->di_dbm) ) {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 dbm_clearerr(dp->di_dbm);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 err_setstr(DbmError, "");
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
122 return NULL;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 return newsizedstringobject(drec.dptr, drec.dsize);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
126
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 static int
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 dbm_ass_sub(dp, v, w)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 dbmobject *dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 object *v, *w;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 datum krec, drec;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
133
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 if ( !getargs(v, "s#", &krec.dptr, &krec.dsize) ) {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 err_setstr(TypeError, "dbm mappings have string indices only");
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 return -1;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 dp->di_size = -1;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 if (w == NULL) {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 if ( dbm_delete(dp->di_dbm, krec) < 0 ) {
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
141 dbm_clearerr(dp->di_dbm);
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 err_setstr(KeyError, GETSTRINGVALUE((stringobject *)v));
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 return -1;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 } else {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 if ( !getargs(w, "s#", &drec.dptr, &drec.dsize) ) {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 err_setstr(TypeError,
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 "dbm mappings have string elements only");
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 return -1;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 if ( dbm_store(dp->di_dbm, krec, drec, DBM_REPLACE) < 0 ) {
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
152 dbm_clearerr(dp->di_dbm);
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 err_setstr(DbmError, "Cannot add item to database");
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 return -1;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 if ( dbm_error(dp->di_dbm) ) {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 dbm_clearerr(dp->di_dbm);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 err_setstr(DbmError, "");
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 return -1;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 return 0;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
164
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 static mapping_methods dbm_as_mapping = {
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
166 (inquiry)dbm_length, /*mp_length*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
167 (binaryfunc)dbm_subscript, /*mp_subscript*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
168 (objobjargproc)dbm_ass_sub, /*mp_ass_subscript*/
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 };
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
170
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 static object *
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
172 dbm__close(dp, args)
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
173 register dbmobject *dp;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
174 object *args;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
175 {
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
176 if ( !getnoarg(args) )
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
177 return NULL;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
178 if ( dp->di_dbm )
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
179 dbm_close(dp->di_dbm);
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
180 dp->di_dbm = NULL;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
181 INCREF(None);
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
182 return None;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
183 }
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
184
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
185 static object *
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 dbm_keys(dp, args)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 register dbmobject *dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 object *args;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 register object *v, *item;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 datum key;
2268
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
192 int err;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
193
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 if (!getnoarg(args))
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 return NULL;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 v = newlistobject(0);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 if (v == NULL)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
198 return NULL;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
199 for (key = dbm_firstkey(dp->di_dbm); key.dptr;
2268
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
200 key = dbm_nextkey(dp->di_dbm)) {
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
201 item = newsizedstringobject(key.dptr, key.dsize);
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
202 if (item == NULL) {
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
203 DECREF(v);
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
204 return NULL;
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
205 }
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
206 err = addlistitem(v, item);
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
207 DECREF(item);
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
208 if (err != 0) {
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
209 DECREF(v);
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
210 return NULL;
ac6f69b1e993 plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
211 }
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
213 return v;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
214 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
215
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
216 static object *
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
217 dbm_has_key(dp, args)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 register dbmobject *dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 object *args;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
220 {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 datum key, val;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
222
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
223 if (!getargs(args, "s#", &key.dptr, &key.dsize))
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
224 return NULL;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
225 val = dbm_fetch(dp->di_dbm, key);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
226 return newintobject(val.dptr != NULL);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
227 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
228
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
229 static struct methodlist dbm_methods[] = {
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
230 {"close", (method)dbm__close},
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
231 {"keys", (method)dbm_keys},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
232 {"has_key", (method)dbm_has_key},
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 {NULL, NULL} /* sentinel */
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 };
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
235
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
236 static object *
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
237 dbm_getattr(dp, name)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
238 dbmobject *dp;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
239 char *name;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
240 {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
241 return findmethod(dbm_methods, (object *)dp, name);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
242 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
243
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
244 static typeobject Dbmtype = {
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 OB_HEAD_INIT(&Typetype)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
246 0,
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
247 "dbm",
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 sizeof(dbmobject),
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 0,
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
250 (destructor)dbm_dealloc, /*tp_dealloc*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
251 0, /*tp_print*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
252 (getattrfunc)dbm_getattr, /*tp_getattr*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
253 0, /*tp_setattr*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
254 0, /*tp_compare*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
255 0, /*tp_repr*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
256 0, /*tp_as_number*/
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1257
diff changeset
257 0, /*tp_as_sequence*/
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
258 &dbm_as_mapping, /*tp_as_mapping*/
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
259 };
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
260
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
261 /* ----------------------------------------------------------------- */
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
262
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
263 static object *
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
264 dbmopen(self, args)
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
265 object *self;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
266 object *args;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 {
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
268 char *name;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
269 char *flags = "r";
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
270 int iflags;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
271 int mode = 0666;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
272
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
273 if ( !newgetargs(args, "s|si", &name, &flags, &mode) )
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
274 return NULL;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
275 if ( strcmp(flags, "r") == 0 )
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
276 iflags = O_RDONLY;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
277 else if ( strcmp(flags, "w") == 0 )
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
278 iflags = O_RDWR;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
279 else if ( strcmp(flags, "rw") == 0 ) /* B/W compat */
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
280 iflags = O_RDWR|O_CREAT;
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
281 else if ( strcmp(flags, "c") == 0 )
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
282 iflags = O_RDWR|O_CREAT;
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
283 else if ( strcmp(flags, "n") == 0 )
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
284 iflags = O_RDWR|O_CREAT|O_TRUNC;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
285 else {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
286 err_setstr(DbmError,
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
287 "Flags should be one of 'r', 'w', 'c' or 'n'");
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
288 return NULL;
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
289 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 return newdbmobject(name, iflags, mode);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
291 }
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
292
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
293 static struct methodlist dbmmodule_methods[] = {
2805
b7a06db85caf normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents: 2268
diff changeset
294 { "open", (method)dbmopen, 1 },
906
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 { 0, 0 },
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 };
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
297
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
298 void
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
299 initdbm() {
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
300 object *m, *d;
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
301
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
302 m = initmodule("dbm", dbmmodule_methods);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
303 d = getmoduledict(m);
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
304 DbmError = newstringobject("dbm.error");
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
305 if ( DbmError == NULL || dictinsert(d, "error", DbmError) )
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
306 fatal("can't define dbm.error");
63798cde582c Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff changeset
307 }