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
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
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 }