Mercurial > cpython-lru_cache-weakref
annotate Modules/dbmmodule.c @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 1834654bebe3 |
| children | 9fa2bd8a2b78 |
| 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 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
35 #include "Python.h" |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 #include <sys/types.h> |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 #include <sys/stat.h> |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 #include <fcntl.h> |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 #include <ndbm.h> |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 typedef struct { |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
43 PyObject_HEAD |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 int di_size; /* -1 means recompute */ |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 DBM *di_dbm; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 } dbmobject; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
48 staticforward PyTypeObject Dbmtype; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 #define is_dbmobject(v) ((v)->ob_type == &Dbmtype) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
52 static PyObject *DbmError; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
54 static PyObject * |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 newdbmobject(file, flags, mode) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
56 char *file; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
57 int flags; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
58 int mode; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 { |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 dbmobject *dp; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
62 dp = PyObject_NEW(dbmobject, &Dbmtype); |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 if (dp == NULL) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 return NULL; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 dp->di_size = -1; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 if ( (dp->di_dbm = dbm_open(file, flags, mode)) == 0 ) { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
67 PyErr_SetFromErrno(DbmError); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
68 Py_DECREF(dp); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
69 return NULL; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 } |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
71 return (PyObject *)dp; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 } |
|
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 /* Methods */ |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
75 |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 static void |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 dbm_dealloc(dp) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 register dbmobject *dp; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 { |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
80 if ( dp->di_dbm ) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
81 dbm_close(dp->di_dbm); |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
82 PyMem_DEL(dp); |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 } |
|
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 static int |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 dbm_length(dp) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 dbmobject *dp; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 { |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 if ( dp->di_size < 0 ) { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
90 datum key; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
91 int size; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
93 size = 0; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
94 for ( key=dbm_firstkey(dp->di_dbm); key.dptr; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
95 key = dbm_nextkey(dp->di_dbm)) |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
96 size++; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
97 dp->di_size = size; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
98 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
99 return dp->di_size; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
100 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
101 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
102 static PyObject * |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
103 dbm_subscript(dp, key) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
104 dbmobject *dp; |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
105 register PyObject *key; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
106 { |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
107 datum drec, krec; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
108 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
109 if (!PyArg_Parse(key, "s#", &krec.dptr, &krec.dsize) ) |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
110 return NULL; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
111 |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 drec = dbm_fetch(dp->di_dbm, krec); |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
113 if ( drec.dptr == 0 ) { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
114 PyErr_SetString(PyExc_KeyError, |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
115 PyString_AS_STRING((PyStringObject *)key)); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
116 return NULL; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
117 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
118 if ( dbm_error(dp->di_dbm) ) { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
119 dbm_clearerr(dp->di_dbm); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
120 PyErr_SetString(DbmError, ""); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
121 return NULL; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
122 } |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
123 return PyString_FromStringAndSize(drec.dptr, drec.dsize); |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
124 } |
|
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 static int |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
127 dbm_ass_sub(dp, v, w) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
128 dbmobject *dp; |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
129 PyObject *v, *w; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
130 { |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
131 datum krec, drec; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
132 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
133 if ( !PyArg_Parse(v, "s#", &krec.dptr, &krec.dsize) ) { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
134 PyErr_SetString(PyExc_TypeError, |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
135 "dbm mappings have string indices only"); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
136 return -1; |
|
906
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) { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
140 if ( dbm_delete(dp->di_dbm, krec) < 0 ) { |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
141 dbm_clearerr(dp->di_dbm); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
142 PyErr_SetString(PyExc_KeyError, |
|
4718
1834654bebe3
Opps, fixed a couple of newly introduced wrapping problems.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4717
diff
changeset
|
143 PyString_AS_STRING((PyStringObject *)v)); |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
144 return -1; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
145 } |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
146 } else { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
147 if ( !PyArg_Parse(w, "s#", &drec.dptr, &drec.dsize) ) { |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
148 PyErr_SetString(PyExc_TypeError, |
|
4718
1834654bebe3
Opps, fixed a couple of newly introduced wrapping problems.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4717
diff
changeset
|
149 "dbm mappings have string elements only"); |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
150 return -1; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
151 } |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
152 if ( dbm_store(dp->di_dbm, krec, drec, DBM_REPLACE) < 0 ) { |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
153 dbm_clearerr(dp->di_dbm); |
|
4718
1834654bebe3
Opps, fixed a couple of newly introduced wrapping problems.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4717
diff
changeset
|
154 PyErr_SetString(DbmError, |
|
1834654bebe3
Opps, fixed a couple of newly introduced wrapping problems.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4717
diff
changeset
|
155 "Cannot add item to database"); |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
156 return -1; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
157 } |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
158 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
159 if ( dbm_error(dp->di_dbm) ) { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
160 dbm_clearerr(dp->di_dbm); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
161 PyErr_SetString(DbmError, ""); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
162 return -1; |
|
906
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 return 0; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
165 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
166 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
167 static PyMappingMethods dbm_as_mapping = { |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1257
diff
changeset
|
168 (inquiry)dbm_length, /*mp_length*/ |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1257
diff
changeset
|
169 (binaryfunc)dbm_subscript, /*mp_subscript*/ |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1257
diff
changeset
|
170 (objobjargproc)dbm_ass_sub, /*mp_ass_subscript*/ |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
171 }; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
172 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
173 static PyObject * |
|
2805
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
174 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
|
175 register dbmobject *dp; |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
176 PyObject *args; |
|
2805
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
177 { |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
178 if ( !PyArg_NoArgs(args) ) |
|
2805
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
179 return NULL; |
|
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
180 if ( dp->di_dbm ) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
181 dbm_close(dp->di_dbm); |
|
2805
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
182 dp->di_dbm = NULL; |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
183 Py_INCREF(Py_None); |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
184 return Py_None; |
|
2805
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
185 } |
|
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
186 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
187 static PyObject * |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
188 dbm_keys(dp, args) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
189 register dbmobject *dp; |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
190 PyObject *args; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
191 { |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
192 register PyObject *v, *item; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
193 datum key; |
|
2268
ac6f69b1e993
plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents:
2061
diff
changeset
|
194 int err; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
195 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
196 if (!PyArg_NoArgs(args)) |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
197 return NULL; |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
198 v = PyList_New(0); |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
199 if (v == NULL) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
200 return NULL; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
201 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
|
202 key = dbm_nextkey(dp->di_dbm)) { |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
203 item = PyString_FromStringAndSize(key.dptr, key.dsize); |
|
2268
ac6f69b1e993
plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents:
2061
diff
changeset
|
204 if (item == NULL) { |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
205 Py_DECREF(v); |
|
2268
ac6f69b1e993
plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents:
2061
diff
changeset
|
206 return NULL; |
|
ac6f69b1e993
plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents:
2061
diff
changeset
|
207 } |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
208 err = PyList_Append(v, item); |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
209 Py_DECREF(item); |
|
2268
ac6f69b1e993
plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents:
2061
diff
changeset
|
210 if (err != 0) { |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
211 Py_DECREF(v); |
|
2268
ac6f69b1e993
plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents:
2061
diff
changeset
|
212 return NULL; |
|
ac6f69b1e993
plug leak and improve error handling in dbm_keys()
Guido van Rossum <guido@python.org>
parents:
2061
diff
changeset
|
213 } |
|
906
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 return v; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
216 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
217 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
218 static PyObject * |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
219 dbm_has_key(dp, args) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
220 register dbmobject *dp; |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
221 PyObject *args; |
|
906
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 datum key, val; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
224 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
225 if (!PyArg_Parse(args, "s#", &key.dptr, &key.dsize)) |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
226 return NULL; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
227 val = dbm_fetch(dp->di_dbm, key); |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
228 return PyInt_FromLong(val.dptr != NULL); |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
229 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
230 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
231 static PyMethodDef dbm_methods[] = { |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
232 {"close", (PyCFunction)dbm__close}, |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
233 {"keys", (PyCFunction)dbm_keys}, |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
234 {"has_key", (PyCFunction)dbm_has_key}, |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
235 {NULL, NULL} /* sentinel */ |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
236 }; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
237 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
238 static PyObject * |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
239 dbm_getattr(dp, name) |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
240 dbmobject *dp; |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
241 char *name; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
242 { |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
243 return Py_FindMethod(dbm_methods, (PyObject *)dp, name); |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
244 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
245 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
246 static PyTypeObject Dbmtype = { |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
247 PyObject_HEAD_INIT(&PyType_Type) |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
248 0, |
|
2805
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
249 "dbm", |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
250 sizeof(dbmobject), |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
251 0, |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
252 (destructor)dbm_dealloc, /*tp_dealloc*/ |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
253 0, /*tp_print*/ |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1257
diff
changeset
|
254 (getattrfunc)dbm_getattr, /*tp_getattr*/ |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
255 0, /*tp_setattr*/ |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
256 0, /*tp_compare*/ |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
257 0, /*tp_repr*/ |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
258 0, /*tp_as_number*/ |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
259 0, /*tp_as_sequence*/ |
|
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
260 &dbm_as_mapping, /*tp_as_mapping*/ |
|
906
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 /* ----------------------------------------------------------------- */ |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
264 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
265 static PyObject * |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
266 dbmopen(self, args) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
267 PyObject *self; |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
268 PyObject *args; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
269 { |
|
2805
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
270 char *name; |
|
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
271 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
|
272 int iflags; |
|
b7a06db85caf
normalized flag arg and made flag, mode default args; minor cosmetics
Guido van Rossum <guido@python.org>
parents:
2268
diff
changeset
|
273 int mode = 0666; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
274 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
275 if ( !PyArg_ParseTuple(args, "s|si", &name, &flags, &mode) ) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
276 return NULL; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
277 if ( strcmp(flags, "r") == 0 ) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
278 iflags = O_RDONLY; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
279 else if ( strcmp(flags, "w") == 0 ) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
280 iflags = O_RDWR; |
|
2805
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, "rw") == 0 ) /* B/W compat */ |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
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, "c") == 0 ) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
284 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
|
285 else if ( strcmp(flags, "n") == 0 ) |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
286 iflags = O_RDWR|O_CREAT|O_TRUNC; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
287 else { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
288 PyErr_SetString(DbmError, |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
289 "Flags should be one of 'r', 'w', 'c' or 'n'"); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
290 return NULL; |
|
906
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 return newdbmobject(name, iflags, mode); |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
293 } |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
294 |
|
4648
6dd851445c7d
renamed in a grand fashion.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
295 static PyMethodDef dbmmodule_methods[] = { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
296 { "open", (PyCFunction)dbmopen, 1 }, |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
297 { 0, 0 }, |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
298 }; |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
299 |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
300 void |
|
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
301 initdbm() { |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
302 PyObject *m, *d; |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
303 |
|
4717
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
304 m = Py_InitModule("dbm", dbmmodule_methods); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
305 d = PyModule_GetDict(m); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
306 DbmError = PyString_FromString("dbm.error"); |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
307 if ( DbmError == NULL || PyDict_SetItemString(d, "error", DbmError) ) |
|
12154d091316
Reindented via GvR recomendation ala Bwarsaw cppy-style.el
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4648
diff
changeset
|
308 Py_FatalError("can't define dbm.error"); |
|
906
63798cde582c
Added qgetfd() to cstubs for GL.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
309 } |
