Kaydet (Commit) d9240d19 authored tarafından Roger E. Masse's avatar Roger E. Masse

Already renamed. Indented.

üst eca63b83
...@@ -90,7 +90,8 @@ newdbhashobject(file, flags, mode, ...@@ -90,7 +90,8 @@ newdbhashobject(file, flags, mode,
#ifdef O_BINARY #ifdef O_BINARY
flags |= O_BINARY; flags |= O_BINARY;
#endif #endif
if ((dp->di_bsddb = dbopen(file, flags, mode, DB_HASH, &info)) == NULL) { if ((dp->di_bsddb = dbopen(file, flags,
mode, DB_HASH, &info)) == NULL) {
PyErr_SetFromErrno(BsddbError); PyErr_SetFromErrno(BsddbError);
Py_DECREF(dp); Py_DECREF(dp);
return NULL; return NULL;
...@@ -132,7 +133,8 @@ newdbbtobject(file, flags, mode, ...@@ -132,7 +133,8 @@ newdbbtobject(file, flags, mode,
#ifdef O_BINARY #ifdef O_BINARY
flags |= O_BINARY; flags |= O_BINARY;
#endif #endif
if ((dp->di_bsddb = dbopen(file, flags, mode, DB_BTREE, &info)) == NULL) { if ((dp->di_bsddb = dbopen(file, flags,
mode, DB_BTREE, &info)) == NULL) {
PyErr_SetFromErrno(BsddbError); PyErr_SetFromErrno(BsddbError);
Py_DECREF(dp); Py_DECREF(dp);
return NULL; return NULL;
...@@ -174,7 +176,8 @@ newdbrnobject(file, flags, mode, ...@@ -174,7 +176,8 @@ newdbrnobject(file, flags, mode,
#ifdef O_BINARY #ifdef O_BINARY
flags |= O_BINARY; flags |= O_BINARY;
#endif #endif
if ((dp->di_bsddb = dbopen(file, flags, mode, DB_RECNO, &info)) == NULL) { if ((dp->di_bsddb = dbopen(file, flags, mode,
DB_RECNO, &info)) == NULL) {
PyErr_SetFromErrno(BsddbError); PyErr_SetFromErrno(BsddbError);
Py_DECREF(dp); Py_DECREF(dp);
return NULL; return NULL;
...@@ -193,7 +196,8 @@ bsddb_dealloc(dp) ...@@ -193,7 +196,8 @@ bsddb_dealloc(dp)
if (dp->di_bsddb != NULL) { if (dp->di_bsddb != NULL) {
if ((dp->di_bsddb->close)(dp->di_bsddb) != 0) if ((dp->di_bsddb->close)(dp->di_bsddb) != 0)
fprintf(stderr, fprintf(stderr,
"Python bsddb: close errno %d in dealloc\n", errno); "Python bsddb: close errno %d in dealloc\n",
errno);
} }
PyMem_DEL(dp); PyMem_DEL(dp);
} }
...@@ -206,9 +210,11 @@ bsddb_length(dp) ...@@ -206,9 +210,11 @@ bsddb_length(dp)
DBT krec, drec; DBT krec, drec;
int status; int status;
int size = 0; int size = 0;
for (status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec,R_FIRST); for (status = (dp->di_bsddb->seq)(dp->di_bsddb,
&krec, &drec,R_FIRST);
status == 0; status == 0;
status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, R_NEXT)) status = (dp->di_bsddb->seq)(dp->di_bsddb,
&krec, &drec, R_NEXT))
size++; size++;
if (status < 0) { if (status < 0) {
PyErr_SetFromErrno(BsddbError); PyErr_SetFromErrno(BsddbError);
...@@ -257,7 +263,8 @@ bsddb_ass_sub(dp, key, value) ...@@ -257,7 +263,8 @@ bsddb_ass_sub(dp, key, value)
int size; int size;
if (!PyArg_Parse(key, "s#", &data, &size)) { if (!PyArg_Parse(key, "s#", &data, &size)) {
PyErr_SetString(PyExc_TypeError, "bsddb key type must be string"); PyErr_SetString(PyExc_TypeError,
"bsddb key type must be string");
return -1; return -1;
} }
krec.data = data; krec.data = data;
...@@ -268,11 +275,23 @@ bsddb_ass_sub(dp, key, value) ...@@ -268,11 +275,23 @@ bsddb_ass_sub(dp, key, value)
} }
else { else {
if (!PyArg_Parse(value, "s#", &data, &size)) { if (!PyArg_Parse(value, "s#", &data, &size)) {
PyErr_SetString(PyExc_TypeError, "bsddb value type must be string"); PyErr_SetString(PyExc_TypeError,
"bsddb value type must be string");
return -1; return -1;
} }
drec.data = data; drec.data = data;
drec.size = size; drec.size = size;
#if 0
/* For RECNO, put fails with 'No space left on device'
after a few short records are added?? Looks fine
to this point... linked with 1.85 on Solaris Intel
Roger E. Masse 1/16/97
*/
printf("before put data: '%s', size: %d\n",
drec.data, drec.size);
printf("before put key= '%s', size= %d\n",
krec.data, krec.size);
#endif
status = (dp->di_bsddb->put)(dp->di_bsddb, &krec, &drec, 0); status = (dp->di_bsddb->put)(dp->di_bsddb, &krec, &drec, 0);
} }
if (status != 0) { if (status != 0) {
...@@ -327,8 +346,10 @@ bsddb_keys(dp, args) ...@@ -327,8 +346,10 @@ bsddb_keys(dp, args)
return NULL; return NULL;
for (status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, R_FIRST); for (status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, R_FIRST);
status == 0; status == 0;
status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, R_NEXT)) { status = (dp->di_bsddb->seq)(dp->di_bsddb,
item = PyString_FromStringAndSize((char *)krec.data, (int)krec.size); &krec, &drec, R_NEXT)) {
item = PyString_FromStringAndSize((char *)krec.data,
(int)krec.size);
if (item == NULL) { if (item == NULL) {
Py_DECREF(list); Py_DECREF(list);
return NULL; return NULL;
...@@ -346,7 +367,7 @@ bsddb_keys(dp, args) ...@@ -346,7 +367,7 @@ bsddb_keys(dp, args)
return NULL; return NULL;
} }
if (dp->di_size < 0) if (dp->di_size < 0)
dp->di_size = PyList_Size(list); /* We just did the work for this... */ dp->di_size = PyList_Size(list); /* We just did the work */
return list; return list;
} }
...@@ -398,7 +419,8 @@ bsddb_set_location(dp, key) ...@@ -398,7 +419,8 @@ bsddb_set_location(dp, key)
return NULL; return NULL;
} }
return Py_BuildValue("s#s#", krec.data, krec.size, drec.data, drec.size); return Py_BuildValue("s#s#", krec.data, krec.size,
drec.data, drec.size);
} }
static PyObject * static PyObject *
...@@ -416,7 +438,8 @@ bsddb_seq(dp, args, sequence_request) ...@@ -416,7 +438,8 @@ bsddb_seq(dp, args, sequence_request)
krec.data = 0; krec.data = 0;
krec.size = 0; krec.size = 0;
status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, sequence_request); status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec,
&drec, sequence_request);
if (status != 0) { if (status != 0) {
if (status < 0) if (status < 0)
PyErr_SetFromErrno(BsddbError); PyErr_SetFromErrno(BsddbError);
...@@ -425,7 +448,8 @@ bsddb_seq(dp, args, sequence_request) ...@@ -425,7 +448,8 @@ bsddb_seq(dp, args, sequence_request)
return NULL; return NULL;
} }
return Py_BuildValue("s#s#", krec.data, krec.size, drec.data, drec.size); return Py_BuildValue("s#s#", krec.data, krec.size,
drec.data, drec.size);
} }
static PyObject * static PyObject *
...@@ -526,10 +550,11 @@ bsdhashopen(self, args) ...@@ -526,10 +550,11 @@ bsdhashopen(self, args)
if (!PyArg_ParseTuple(args, "s|siiiiiii", if (!PyArg_ParseTuple(args, "s|siiiiiii",
&file, &flag, &mode, &file, &flag, &mode,
&bsize, &ffactor, &nelem, &cachesize, &hash, &lorder)) &bsize, &ffactor, &nelem, &cachesize,
&hash, &lorder))
return NULL; return NULL;
if (flag != NULL) { if (flag != NULL) {
/* XXX need a way to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */
if (flag[0] == 'r') if (flag[0] == 'r')
flags = O_RDONLY; flags = O_RDONLY;
else if (flag[0] == 'w') else if (flag[0] == 'w')
...@@ -550,7 +575,8 @@ bsdhashopen(self, args) ...@@ -550,7 +575,8 @@ bsdhashopen(self, args)
else else
flags |= O_EXLOCK; flags |= O_EXLOCK;
#else #else
PyErr_SetString(BsddbError, "locking not supported on this platform"); PyErr_SetString(BsddbError,
"locking not supported on this platform");
return NULL; return NULL;
#endif #endif
} }
...@@ -581,7 +607,7 @@ bsdbtopen(self, args) ...@@ -581,7 +607,7 @@ bsdbtopen(self, args)
&psize, &lorder)) &psize, &lorder))
return NULL; return NULL;
if (flag != NULL) { if (flag != NULL) {
/* XXX need a way to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */
if (flag[0] == 'r') if (flag[0] == 'r')
flags = O_RDONLY; flags = O_RDONLY;
else if (flag[0] == 'w') else if (flag[0] == 'w')
...@@ -602,7 +628,8 @@ bsdbtopen(self, args) ...@@ -602,7 +628,8 @@ bsdbtopen(self, args)
else else
flags |= O_EXLOCK; flags |= O_EXLOCK;
#else #else
PyErr_SetString(BsddbError, "locking not supported on this platform"); PyErr_SetString(BsddbError,
"locking not supported on this platform");
return NULL; return NULL;
#endif #endif
} }
...@@ -634,8 +661,22 @@ bsdrnopen(self, args) ...@@ -634,8 +661,22 @@ bsdrnopen(self, args)
&rnflags, &cachesize, &psize, &lorder, &rnflags, &cachesize, &psize, &lorder,
&reclen, &bval, &bfname)) &reclen, &bval, &bfname))
return NULL; return NULL;
# if 0
printf("file: %s\n", file);
printf("flag: %s\n", flag);
printf("mode: %d\n", mode);
printf("rnflags: 0x%x\n", rnflags);
printf("cachesize: %d\n", cachesize);
printf("psize: %d\n", psize);
printf("lorder: %d\n", 0);
printf("reclen: %d\n", reclen);
printf("bval: %c\n", bval[0]);
printf("bfname %s\n", bfname);
#endif
if (flag != NULL) { if (flag != NULL) {
/* XXX need a way to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */
if (flag[0] == 'r') if (flag[0] == 'r')
flags = O_RDONLY; flags = O_RDONLY;
else if (flag[0] == 'w') else if (flag[0] == 'w')
...@@ -656,7 +697,8 @@ bsdrnopen(self, args) ...@@ -656,7 +697,8 @@ bsdrnopen(self, args)
else else
flags |= O_EXLOCK; flags |= O_EXLOCK;
#else #else
PyErr_SetString(BsddbError, "locking not supported on this platform"); PyErr_SetString(BsddbError,
"locking not supported on this platform");
return NULL; return NULL;
#endif #endif
} }
...@@ -666,8 +708,8 @@ bsdrnopen(self, args) ...@@ -666,8 +708,8 @@ bsdrnopen(self, args)
return NULL; return NULL;
} }
} }
return newdbrnobject(file, flags, mode, return newdbrnobject(file, flags, mode, rnflags, cachesize,
rnflags, cachesize, psize, lorder, bval[0], bfname); psize, lorder, reclen, bval[0], bfname);
} }
static PyMethodDef bsddbmodule_methods[] = { static PyMethodDef bsddbmodule_methods[] = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment