diff options
Diffstat (limited to 'src/gdbmstore.c')
-rw-r--r-- | src/gdbmstore.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/gdbmstore.c b/src/gdbmstore.c index 3ba882e..f166ba9 100644 --- a/src/gdbmstore.c +++ b/src/gdbmstore.c | |||
@@ -50,7 +50,7 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) | |||
50 | /* First check to make sure this guy is a writer. */ | 50 | /* First check to make sure this guy is a writer. */ |
51 | if (dbf->read_write == GDBM_READER) | 51 | if (dbf->read_write == GDBM_READER) |
52 | { | 52 | { |
53 | gdbm_errno = GDBM_READER_CANT_STORE; | 53 | gdbm_set_errno (dbf, GDBM_READER_CANT_STORE, 0); |
54 | return -1; | 54 | return -1; |
55 | } | 55 | } |
56 | 56 | ||
@@ -58,12 +58,12 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) | |||
58 | NULL dptr returned by a lookup procedure indicates an error. */ | 58 | NULL dptr returned by a lookup procedure indicates an error. */ |
59 | if ((key.dptr == NULL) || (content.dptr == NULL)) | 59 | if ((key.dptr == NULL) || (content.dptr == NULL)) |
60 | { | 60 | { |
61 | gdbm_errno = GDBM_ILLEGAL_DATA; | 61 | gdbm_set_errno (dbf, GDBM_ILLEGAL_DATA, 0); |
62 | return -1; | 62 | return -1; |
63 | } | 63 | } |
64 | 64 | ||
65 | /* Initialize the gdbm_errno variable. */ | 65 | /* Initialize the gdbm_errno variable. */ |
66 | gdbm_errno = GDBM_NO_ERROR; | 66 | gdbm_set_errno (dbf, GDBM_NO_ERROR, 0); |
67 | 67 | ||
68 | /* Look for the key in the file. | 68 | /* Look for the key in the file. |
69 | A side effect loads the correct bucket and calculates the hash value. */ | 69 | A side effect loads the correct bucket and calculates the hash value. */ |
@@ -94,11 +94,13 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) | |||
94 | } | 94 | } |
95 | else | 95 | else |
96 | { | 96 | { |
97 | gdbm_errno = GDBM_CANNOT_REPLACE; | 97 | gdbm_set_errno (dbf, GDBM_CANNOT_REPLACE, 0); |
98 | return 1; | 98 | return 1; |
99 | } | 99 | } |
100 | } | 100 | } |
101 | else if (gdbm_errno != GDBM_ITEM_NOT_FOUND) | 101 | else if (gdbm_errno == GDBM_ITEM_NOT_FOUND) |
102 | gdbm_set_errno (dbf, GDBM_NO_ERROR, 0); //clear error state | ||
103 | else | ||
102 | return -1; | 104 | return -1; |
103 | 105 | ||
104 | /* Get the file address for the new space. | 106 | /* Get the file address for the new space. |