diff options
-rw-r--r-- | src/base64.c | 2 | ||||
-rw-r--r-- | src/bucket.c | 14 | ||||
-rw-r--r-- | src/falloc.c | 12 | ||||
-rw-r--r-- | src/findkey.c | 9 | ||||
-rw-r--r-- | src/gdbm_load.c | 4 | ||||
-rw-r--r-- | src/gdbmdefs.h | 14 | ||||
-rw-r--r-- | src/gdbmdelete.c | 2 | ||||
-rw-r--r-- | src/gdbmdump.c | 14 | ||||
-rw-r--r-- | src/gdbmexp.c | 12 | ||||
-rw-r--r-- | src/gdbmfetch.c | 2 | ||||
-rw-r--r-- | src/gdbmimp.c | 10 | ||||
-rw-r--r-- | src/gdbmload.c | 12 | ||||
-rw-r--r-- | src/gdbmopen.c | 57 | ||||
-rw-r--r-- | src/gdbmseq.c | 9 | ||||
-rw-r--r-- | src/gdbmsetopt.c | 38 | ||||
-rw-r--r-- | src/gdbmstore.c | 17 | ||||
-rw-r--r-- | src/gdbmtool.c | 8 |
17 files changed, 123 insertions, 113 deletions
diff --git a/src/base64.c b/src/base64.c index a4edf49..b34e788 100644 --- a/src/base64.c +++ b/src/base64.c @@ -1,5 +1,5 @@ /* This file is part of GDBM, the GNU data base manager. - Copyright (C) 2011, 2013 Free Software Foundation, Inc. + Copyright (C) 2011, 2013, 2016 Free Software Foundation, Inc. GDBM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/bucket.c b/src/bucket.c index cd9575c..912a7b4 100644 --- a/src/bucket.c +++ b/src/bucket.c @@ -103,7 +103,7 @@ _gdbm_get_bucket (GDBM_FILE dbf, int dir_index) if (file_pos != bucket_adr) { _gdbm_fatal (dbf, _("lseek error")); - gdbm_set_errno (dbf, GDBM_FILE_SEEK_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_FILE_SEEK_ERROR, TRUE); return -1; } @@ -112,7 +112,7 @@ _gdbm_get_bucket (GDBM_FILE dbf, int dir_index) if (rc) { _gdbm_fatal (dbf, gdbm_strerror (rc)); - gdbm_set_errno (dbf, rc, TRUE); + GDBM_SET_ERRNO (dbf, rc, TRUE); return -1; } } @@ -147,13 +147,13 @@ _gdbm_read_bucket_at (GDBM_FILE dbf, off_t off, hash_bucket *bucket, file_pos = __lseek (dbf, off, SEEK_SET); if (file_pos != off) { - gdbm_set_errno (dbf, GDBM_FILE_SEEK_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_FILE_SEEK_ERROR, TRUE); return -1; } rc = _gdbm_full_read (dbf, bucket, size); if (rc) { - gdbm_set_errno (dbf, rc, TRUE); + GDBM_SET_ERRNO (dbf, rc, TRUE); return -1; } return 0; @@ -254,7 +254,7 @@ _gdbm_split_bucket (GDBM_FILE dbf, int next_insert) malloc (dir_size)); if (new_dir == NULL) { - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, TRUE); _gdbm_fatal (dbf, _("malloc error")); return -1; } @@ -386,7 +386,7 @@ _gdbm_write_bucket (GDBM_FILE dbf, cache_elem *ca_entry) __lseek (dbf, ca_entry->ca_adr, SEEK_SET)); if (file_pos != ca_entry->ca_adr) { - gdbm_set_errno (dbf, GDBM_FILE_SEEK_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_FILE_SEEK_ERROR, TRUE); _gdbm_fatal (dbf, _("lseek error")); return -1; } @@ -394,7 +394,7 @@ _gdbm_write_bucket (GDBM_FILE dbf, cache_elem *ca_entry) _gdbm_full_write (dbf, ca_entry->ca_bucket, dbf->header->bucket_size)); if (rc) { - gdbm_set_errno (dbf, rc, TRUE); + GDBM_SET_ERRNO (dbf, rc, TRUE); _gdbm_fatal (dbf, gdbm_strerror (rc)); return -1; } diff --git a/src/falloc.c b/src/falloc.c index 8e53a61..c5ffdc3 100644 --- a/src/falloc.c +++ b/src/falloc.c @@ -183,7 +183,7 @@ pop_avail_block (GDBM_FILE dbf) malloc (new_el.av_size)); if (new_blk == NULL) { - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, TRUE); _gdbm_fatal(dbf, _("malloc failed")); return -1; } @@ -193,7 +193,7 @@ pop_avail_block (GDBM_FILE dbf) __lseek (dbf, new_el.av_adr, SEEK_SET)); if (file_pos != new_el.av_adr) { - gdbm_set_errno (dbf, GDBM_FILE_SEEK_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_FILE_SEEK_ERROR, TRUE); _gdbm_fatal (dbf, _("lseek error")); return -1; } @@ -202,7 +202,7 @@ pop_avail_block (GDBM_FILE dbf) _gdbm_full_read (dbf, new_blk, new_el.av_size)); if (rc) { - gdbm_set_errno (dbf, rc, TRUE); + GDBM_SET_ERRNO (dbf, rc, TRUE); _gdbm_fatal (dbf, gdbm_strerror (rc)); return -1; } @@ -282,7 +282,7 @@ push_avail_block (GDBM_FILE dbf) malloc (av_size)); if (temp == NULL) { - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, TRUE); _gdbm_fatal (dbf, _("malloc error")); return -1; } @@ -312,7 +312,7 @@ push_avail_block (GDBM_FILE dbf) __lseek (dbf, av_adr, SEEK_SET)); if (file_pos != av_adr) { - gdbm_set_errno (dbf, GDBM_FILE_SEEK_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_FILE_SEEK_ERROR, TRUE); _gdbm_fatal (dbf, _("lseek error")); return -1; } @@ -321,7 +321,7 @@ push_avail_block (GDBM_FILE dbf) _gdbm_full_write (dbf, temp, av_size)); if (rc) { - gdbm_set_errno (dbf, rc, TRUE); + GDBM_SET_ERRNO (dbf, rc, TRUE); _gdbm_fatal (dbf, gdbm_strerror (rc)); return -1; } diff --git a/src/findkey.c b/src/findkey.c index a757d92..135856b 100644 --- a/src/findkey.c +++ b/src/findkey.c @@ -59,7 +59,7 @@ _gdbm_read_entry (GDBM_FILE dbf, int elem_loc) data_ca->dptr = (char *) malloc (key_size + data_size); if (data_ca->dptr == NULL) { - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (dbf, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_LOOKUP); _gdbm_fatal (dbf, _("malloc error")); return NULL; } @@ -70,7 +70,7 @@ _gdbm_read_entry (GDBM_FILE dbf, int elem_loc) SEEK_SET)); if (file_pos != dbf->bucket->h_table[elem_loc].data_pointer) { - gdbm_set_errno (dbf, GDBM_FILE_SEEK_ERROR, TRUE); + GDBM_SET_ERRNO2 (dbf, GDBM_FILE_SEEK_ERROR, TRUE, GDBM_DEBUG_LOOKUP); _gdbm_fatal (dbf, _("lseek error")); return NULL; } @@ -79,7 +79,7 @@ _gdbm_read_entry (GDBM_FILE dbf, int elem_loc) _gdbm_full_read (dbf, data_ca->dptr, key_size+data_size)); if (rc) { - gdbm_set_errno (dbf, rc, TRUE); + GDBM_SET_ERRNO2 (dbf, rc, TRUE, GDBM_DEBUG_LOOKUP); _gdbm_fatal (dbf, gdbm_strerror (rc)); return NULL; } @@ -184,8 +184,7 @@ _gdbm_findkey (GDBM_FILE dbf, datum key, char **ret_dptr, int *ret_hash_val) } /* If we get here, we never found the key. */ - GDBM_DEBUG (GDBM_DEBUG_LOOKUP, "%s: not found", dbf->name); - gdbm_set_errno (dbf, GDBM_ITEM_NOT_FOUND, FALSE); + GDBM_SET_ERRNO2 (dbf, GDBM_ITEM_NOT_FOUND, FALSE, GDBM_DEBUG_LOOKUP); return -1; } diff --git a/src/gdbm_load.c b/src/gdbm_load.c index c4b9ee6..c24e3c2 100644 --- a/src/gdbm_load.c +++ b/src/gdbm_load.c @@ -53,13 +53,13 @@ set_meta_info (GDBM_FILE dbf) { if (fchown (fd, owner_uid, owner_gid)) { - gdbm_set_errno (dbf, GDBM_ERR_FILE_OWNER, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_ERR_FILE_OWNER, FALSE); return 1; } } if ((meta_mask & GDBM_META_MASK_MODE) && fchmod (fd, mode)) { - gdbm_set_errno (dbf, GDBM_ERR_FILE_OWNER, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_ERR_FILE_OWNER, FALSE); return 1; } } diff --git a/src/gdbmdefs.h b/src/gdbmdefs.h index 631c9cd..e1c143d 100644 --- a/src/gdbmdefs.h +++ b/src/gdbmdefs.h @@ -288,6 +288,16 @@ struct gdbm_file_info } \ while (0) +# define GDBM_SET_ERRNO2(dbf, ec, fatal, m) \ + do \ + { \ + GDBM_DEBUG((m) | GDBM_DEBUG_ERR, "%s: error " #ec "%s", \ + ((dbf) ? ((GDBM_FILE)dbf)->name : "<nodbf>"), \ + ((fatal) ? " (needs recovery)" : "")); \ + gdbm_set_errno(dbf, ec, fatal); \ + } \ + while (0) + typedef int (*gdbm_debug_hook) (char const *, int, char const *, void *); extern void _gdbm_debug_hook_install (char const *, gdbm_debug_hook, void *); extern void _gdbm_debug_hook_remove (char const *); @@ -304,7 +314,11 @@ extern int _gdbm_debug_hook_val (char const *); # define GDBM_DEBUG_HOOK(id) 0 # define GDBM_DEBUG_OVERRIDE(id, stmt) (stmt) # define GDBM_DEBUG_ALLOC(id, stmt) (stmt) +# define GDBM_SET_ERRNO2(dbf, ec, fatal, m) gdbm_set_errno (dbf, ec, fatal) #endif + +# define GDBM_SET_ERRNO(dbf, ec, fatal) GDBM_SET_ERRNO2 (dbf, ec, fatal, 0) + /* Now define all the routines in use. */ #include "proto.h" diff --git a/src/gdbmdelete.c b/src/gdbmdelete.c index a735d0d..cb64210 100644 --- a/src/gdbmdelete.c +++ b/src/gdbmdelete.c @@ -41,7 +41,7 @@ gdbm_delete (GDBM_FILE dbf, datum key) /* First check to make sure this guy is a writer. */ if (dbf->read_write == GDBM_READER) { - gdbm_set_errno (dbf, GDBM_READER_CANT_DELETE, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_READER_CANT_DELETE, FALSE); return -1; } diff --git a/src/gdbmdump.c b/src/gdbmdump.c index d4ec5b6..4779acb 100644 --- a/src/gdbmdump.c +++ b/src/gdbmdump.c @@ -99,7 +99,7 @@ _gdbm_dump_ascii (GDBM_FILE dbf, FILE *fp) { free (key.dptr); free (data.dptr); - gdbm_set_errno (dbf, rc, FALSE); + GDBM_SET_ERRNO (dbf, rc, FALSE); break; } } @@ -142,13 +142,13 @@ gdbm_dump_to_file (GDBM_FILE dbf, FILE *fp, int format) break; default: - gdbm_set_errno (NULL, GDBM_BAD_OPEN_FLAGS, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_BAD_OPEN_FLAGS, FALSE); return EINVAL; } if (rc == 0 && ferror (fp)) { - gdbm_set_errno (NULL, GDBM_FILE_WRITE_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_WRITE_ERROR, FALSE); rc = -1; } @@ -172,7 +172,7 @@ gdbm_dump (GDBM_FILE dbf, const char *filename, int fmt, int open_flags, nfd = open (filename, O_WRONLY | O_CREAT | O_EXCL, mode); if (nfd == -1) { - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); return -1; } break; @@ -180,12 +180,12 @@ gdbm_dump (GDBM_FILE dbf, const char *filename, int fmt, int open_flags, nfd = open (filename, O_WRONLY | O_CREAT | O_TRUNC, mode); if (nfd == -1) { - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); return -1; } break; default: - gdbm_set_errno (NULL, GDBM_BAD_OPEN_FLAGS, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_BAD_OPEN_FLAGS, FALSE); return -1; } @@ -193,7 +193,7 @@ gdbm_dump (GDBM_FILE dbf, const char *filename, int fmt, int open_flags, if (!fp) { close (nfd); - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); return -1; } rc = gdbm_dump_to_file (dbf, fp, fmt); diff --git a/src/gdbmexp.c b/src/gdbmexp.c index 4092c62..668d6a0 100644 --- a/src/gdbmexp.c +++ b/src/gdbmexp.c @@ -84,7 +84,7 @@ gdbm_export_to_file (GDBM_FILE dbf, FILE *fp) write_fail: - gdbm_set_errno (NULL, GDBM_FILE_WRITE_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_WRITE_ERROR, FALSE); return -1; } @@ -101,7 +101,7 @@ gdbm_export (GDBM_FILE dbf, const char *exportfile, int flags, int mode) nfd = open (exportfile, O_WRONLY | O_CREAT | O_EXCL, mode); if (nfd == -1) { - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); return -1; } break; @@ -109,15 +109,15 @@ gdbm_export (GDBM_FILE dbf, const char *exportfile, int flags, int mode) nfd = open (exportfile, O_WRONLY | O_CREAT | O_TRUNC, mode); if (nfd == -1) { - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); return -1; } break; default: #ifdef GDBM_BAD_OPEN_FLAGS - gdbm_set_errno (NULL, GDBM_BAD_OPEN_FLAGS, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_BAD_OPEN_FLAGS, FALSE); #else - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); #endif return -1; } @@ -126,7 +126,7 @@ gdbm_export (GDBM_FILE dbf, const char *exportfile, int flags, int mode) if (!fp) { close (nfd); - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); return -1; } diff --git a/src/gdbmfetch.c b/src/gdbmfetch.c index 4710cda..6a2fb25 100644 --- a/src/gdbmfetch.c +++ b/src/gdbmfetch.c @@ -59,7 +59,7 @@ gdbm_fetch (GDBM_FILE dbf, datum key) return_val.dptr = (char *) malloc (return_val.dsize); if (return_val.dptr == NULL) { - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (dbf, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_READ); return return_val; } memcpy (return_val.dptr, find_data, return_val.dsize); diff --git a/src/gdbmimp.c b/src/gdbmimp.c index fc2710d..09a408f 100644 --- a/src/gdbmimp.c +++ b/src/gdbmimp.c @@ -47,7 +47,7 @@ gdbm_import_from_file (GDBM_FILE dbf, FILE *fp, int flag) { if ((rret = fgetc (fp)) == -1) { - gdbm_set_errno (NULL, GDBM_FILE_READ_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_READ_ERROR, FALSE); return -1; } @@ -69,7 +69,7 @@ gdbm_import_from_file (GDBM_FILE dbf, FILE *fp, int flag) kbuffer = malloc (kbufsize); if (kbuffer == NULL) { - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_MALLOC_ERROR, FALSE); return -1; } dbufsize = GDBM_MIN_BLOCK_SIZE; @@ -77,7 +77,7 @@ gdbm_import_from_file (GDBM_FILE dbf, FILE *fp, int flag) if (dbuffer == NULL) { free (kbuffer); - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_MALLOC_ERROR, FALSE); return -1; } @@ -163,7 +163,7 @@ gdbm_import_from_file (GDBM_FILE dbf, FILE *fp, int flag) if (ec == GDBM_NO_ERROR) return count; - gdbm_set_errno (NULL, ec, FALSE); + GDBM_SET_ERRNO (NULL, ec, FALSE); return -1; } @@ -176,7 +176,7 @@ gdbm_import (GDBM_FILE dbf, const char *importfile, int flag) fp = fopen (importfile, "r"); if (!fp) { - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); return -1; } rc = gdbm_import_from_file (dbf, fp, flag); diff --git a/src/gdbmload.c b/src/gdbmload.c index ab250d7..7711d1e 100644 --- a/src/gdbmload.c +++ b/src/gdbmload.c @@ -374,13 +374,13 @@ _set_gdbm_meta_info (GDBM_FILE dbf, char *param, int meta_mask) } if (fchown (fd, owner_uid, owner_gid)) { - gdbm_set_errno (dbf, GDBM_ERR_FILE_OWNER, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_ERR_FILE_OWNER, FALSE); rc = 1; } } if ((meta_flags & META_MODE) && fchmod (fd, mode)) { - gdbm_set_errno (dbf, GDBM_ERR_FILE_OWNER, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_ERR_FILE_OWNER, FALSE); rc = 1; } } @@ -582,7 +582,7 @@ gdbm_load_from_file (GDBM_FILE *pdbf, FILE *fp, int replace, *line = 0; if (!*pdbf) { - gdbm_set_errno (NULL, GDBM_NO_DBNAME, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_NO_DBNAME, FALSE); return -1; } if (gdbm_import_from_file (*pdbf, fp, replace) == -1) @@ -597,7 +597,7 @@ gdbm_load_from_file (GDBM_FILE *pdbf, FILE *fp, int replace, { if (!*pdbf) { - gdbm_set_errno (NULL, GDBM_NO_DBNAME, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_NO_DBNAME, FALSE); return -1; } rc = gdbm_load_bdb_dump (&df, *pdbf, replace); @@ -609,7 +609,7 @@ gdbm_load_from_file (GDBM_FILE *pdbf, FILE *fp, int replace, { if (line) *line = df.line; - gdbm_set_errno (NULL, rc, FALSE); + GDBM_SET_ERRNO (NULL, rc, FALSE); return -1; } return 0; @@ -626,7 +626,7 @@ gdbm_load (GDBM_FILE *pdbf, const char *filename, int replace, fp = fopen (filename, "r"); if (!fp) { - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); return -1; } rc = gdbm_load_from_file (pdbf, fp, replace, meta_mask, line); diff --git a/src/gdbmopen.c b/src/gdbmopen.c index ce739c2..101d497 100644 --- a/src/gdbmopen.c +++ b/src/gdbmopen.c @@ -67,7 +67,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, { if (flags & GDBM_CLOERROR) SAVE_ERRNO (close (fd)); - gdbm_set_errno (NULL, GDBM_FILE_STAT_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_FILE_STAT_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } @@ -77,7 +77,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, { if (flags & GDBM_CLOERROR) SAVE_ERRNO (close (fd)); - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } @@ -105,7 +105,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, if (flags & GDBM_CLOERROR) close (fd); free (dbf); - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } @@ -142,7 +142,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, close (dbf->desc); free (dbf->name); free (dbf); - gdbm_set_errno (NULL, GDBM_EMPTY_DATABASE, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_EMPTY_DATABASE, FALSE, GDBM_DEBUG_OPEN); return NULL; } @@ -158,9 +158,11 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, close (dbf->desc); free (dbf->name); free (dbf); - gdbm_set_errno (NULL, - (flags & GDBM_OPENMASK) == GDBM_READER - ? GDBM_CANT_BE_READER : GDBM_CANT_BE_WRITER, 0); + GDBM_SET_ERRNO2 (NULL, + (flags & GDBM_OPENMASK) == GDBM_READER + ? GDBM_CANT_BE_READER : GDBM_CANT_BE_WRITER, + FALSE, + GDBM_DEBUG_OPEN); return NULL; } } @@ -196,7 +198,8 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, if (!(flags & GDBM_CLOERROR)) dbf->desc = -1; gdbm_close (dbf); - gdbm_set_errno (NULL, GDBM_BLOCK_SIZE_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_BLOCK_SIZE_ERROR, FALSE, + GDBM_DEBUG_OPEN); return NULL; } else @@ -212,7 +215,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, if (!(flags & GDBM_CLOERROR)) dbf->desc = -1; gdbm_close (dbf); - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } @@ -229,7 +232,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, if (!(flags & GDBM_CLOERROR)) dbf->desc = -1; gdbm_close (dbf); - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } dbf->header->dir = dbf->header->block_size; @@ -245,7 +248,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, if (!(flags & GDBM_CLOERROR)) dbf->desc = -1; gdbm_close (dbf); - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } _gdbm_new_bucket (dbf, dbf->bucket, 0); @@ -341,14 +344,17 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, case GDBM_OMAGIC_SWAP: case GDBM_MAGIC32_SWAP: case GDBM_MAGIC64_SWAP: - gdbm_set_errno (NULL, GDBM_BYTE_SWAPPED, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_BYTE_SWAPPED, FALSE, + GDBM_DEBUG_OPEN); break; case GDBM_MAGIC32: case GDBM_MAGIC64: - gdbm_set_errno (NULL, GDBM_BAD_FILE_OFFSET, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_BAD_FILE_OFFSET, FALSE, + GDBM_DEBUG_OPEN); break; default: - gdbm_set_errno (NULL, GDBM_BAD_MAGIC_NUMBER, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_BAD_MAGIC_NUMBER, FALSE, + GDBM_DEBUG_OPEN); } return NULL; } @@ -357,13 +363,10 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, dbf->header = (gdbm_file_header *) malloc (partial_header.block_size); if (dbf->header == NULL) { - GDBM_DEBUG (GDBM_DEBUG_ERR|GDBM_DEBUG_OPEN, - "%s: can't allocate header", - dbf->name); if (!(flags & GDBM_CLOERROR)) dbf->desc = -1; - gdbm_close (dbf); - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + SAVE_ERRNO (gdbm_close (dbf)); + GDBM_SET_ERRNO2 (NULL, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } memcpy (dbf->header, &partial_header, sizeof (gdbm_file_header)); @@ -385,13 +388,10 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, dbf->dir = (off_t *) malloc (dbf->header->dir_size); if (dbf->dir == NULL) { - GDBM_DEBUG (GDBM_DEBUG_ERR|GDBM_DEBUG_OPEN, - "%s: can't allocate directory", - dbf->name); if (!(flags & GDBM_CLOERROR)) dbf->desc = -1; gdbm_close (dbf); - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } @@ -399,13 +399,10 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, file_pos = __lseek (dbf, dbf->header->dir, SEEK_SET); if (file_pos != dbf->header->dir) { - GDBM_DEBUG (GDBM_DEBUG_ERR|GDBM_DEBUG_OPEN, - "%s: __lseek: %s", - dbf->name, strerror (errno)); if (!(flags & GDBM_CLOERROR)) dbf->desc = -1; SAVE_ERRNO (gdbm_close (dbf)); - gdbm_set_errno (NULL, GDBM_FILE_SEEK_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_FILE_SEEK_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } @@ -512,7 +509,7 @@ gdbm_open (const char *file, int block_size, int flags, int mode, fd = open (file, fbits, mode); if (fd < 0) { - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO2 (NULL, GDBM_FILE_OPEN_ERROR, FALSE, GDBM_DEBUG_OPEN); return NULL; } return gdbm_fd_open (fd, file, block_size, flags | GDBM_CLOERROR, @@ -531,7 +528,7 @@ _gdbm_init_cache (GDBM_FILE dbf, size_t size) malloc (sizeof(cache_elem) * size)); if (dbf->bucket_cache == NULL) { - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, TRUE); return -1; } dbf->cache_size = size; @@ -543,7 +540,7 @@ _gdbm_init_cache (GDBM_FILE dbf, size_t size) malloc (dbf->header->bucket_size)); if ((dbf->bucket_cache[index]).ca_bucket == NULL) { - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, TRUE); + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, TRUE); return -1; } (dbf->bucket_cache[index]).ca_adr = 0; diff --git a/src/gdbmseq.c b/src/gdbmseq.c index 08a8f10..29a34b1 100644 --- a/src/gdbmseq.c +++ b/src/gdbmseq.c @@ -64,7 +64,8 @@ get_next_key (GDBM_FILE dbf, int elem_loc, datum *return_val) else { /* No next key, just return. */ - gdbm_set_errno (dbf, GDBM_ITEM_NOT_FOUND, FALSE); + GDBM_SET_ERRNO2 (dbf, GDBM_ITEM_NOT_FOUND, FALSE, + GDBM_DEBUG_LOOKUP); return; } } @@ -83,7 +84,7 @@ get_next_key (GDBM_FILE dbf, int elem_loc, datum *return_val) if (return_val->dptr == NULL) { return_val->dsize = 0; - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO2 (dbf, GDBM_MALLOC_ERROR, FALSE, GDBM_DEBUG_LOOKUP); } else memcpy (return_val->dptr, find_data, return_val->dsize); @@ -147,7 +148,9 @@ gdbm_nextkey (GDBM_FILE dbf, datum key) if (key.dptr == NULL) { GDBM_DEBUG (GDBM_DEBUG_READ, "%s: key not found", dbf->name); - gdbm_set_errno (dbf, GDBM_ITEM_NOT_FOUND, FALSE); /* FIXME: special error code perhaps */ + GDBM_SET_ERRNO2 (dbf, GDBM_ITEM_NOT_FOUND, /* FIXME: special error code perhaps */ + FALSE, + GDBM_DEBUG_LOOKUP); return return_val; } diff --git a/src/gdbmsetopt.c b/src/gdbmsetopt.c index f2cf55e..ddd033e 100644 --- a/src/gdbmsetopt.c +++ b/src/gdbmsetopt.c @@ -57,13 +57,13 @@ setopt_gdbm_setcachesize (GDBM_FILE dbf, void *optval, int optlen) /* Optval will point to the new size of the cache. */ if (dbf->bucket_cache != NULL) { - gdbm_set_errno (dbf, GDBM_OPT_ALREADY_SET, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ALREADY_SET, FALSE); return -1; } if (get_size (optval, optlen, &sz)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } return _gdbm_init_cache (dbf, (sz > 9) ? sz : 10); @@ -74,7 +74,7 @@ setopt_gdbm_getcachesize (GDBM_FILE dbf, void *optval, int optlen) { if (!optval || optlen != sizeof (size_t)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } *(size_t*) optval = dbf->cache_size; @@ -89,7 +89,7 @@ setopt_gdbm_fastmode (GDBM_FILE dbf, void *optval, int optlen) if ((n = getbool (optval, optlen)) == -1) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } dbf->fast_write = n; @@ -104,7 +104,7 @@ setopt_gdbm_setsyncmode (GDBM_FILE dbf, void *optval, int optlen) /* Optval will point to either true or false. */ if ((n = getbool (optval, optlen)) == -1) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } dbf->fast_write = !n; @@ -116,7 +116,7 @@ setopt_gdbm_getsyncmode (GDBM_FILE dbf, void *optval, int optlen) { if (!optval || optlen != sizeof (int)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } *(int*) optval = !dbf->fast_write; @@ -132,7 +132,7 @@ setopt_gdbm_setcentfree (GDBM_FILE dbf, void *optval, int optlen) /* Optval will point to either true or false. */ if ((n = getbool (optval, optlen)) == -1) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } dbf->central_free = n; @@ -144,7 +144,7 @@ setopt_gdbm_getcentfree (GDBM_FILE dbf, void *optval, int optlen) { if (!optval || optlen != sizeof (int)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } *(int*) optval = !dbf->central_free; @@ -160,7 +160,7 @@ setopt_gdbm_setcoalesceblks (GDBM_FILE dbf, void *optval, int optlen) /* Optval will point to either true or false. */ if ((n = getbool (optval, optlen)) == -1) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } dbf->coalesce_blocks = n; @@ -172,7 +172,7 @@ setopt_gdbm_getcoalesceblks (GDBM_FILE dbf, void *optval, int optlen) { if (!optval || optlen != sizeof (int)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } *(int*) optval = dbf->coalesce_blocks; @@ -187,7 +187,7 @@ setopt_gdbm_setmmap (GDBM_FILE dbf, void *optval, int optlen) if ((n = getbool (optval, optlen)) == -1) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } __fsync (dbf); @@ -213,7 +213,7 @@ setopt_gdbm_getmmap (GDBM_FILE dbf, void *optval, int optlen) { if (!optval || optlen != sizeof (int)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } *(int*) optval = dbf->memory_mapping; @@ -229,7 +229,7 @@ setopt_gdbm_setmaxmapsize (GDBM_FILE dbf, void *optval, int optlen) if (get_size (optval, optlen, &sz)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } dbf->mapped_size_max = ((sz + page_size - 1) / page_size) * page_size; @@ -242,7 +242,7 @@ setopt_gdbm_getmaxmapsize (GDBM_FILE dbf, void *optval, int optlen) { if (!optval || optlen != sizeof (size_t)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } *(size_t*) optval = dbf->mapped_size_max; @@ -254,7 +254,7 @@ setopt_gdbm_getflags (GDBM_FILE dbf, void *optval, int optlen) { if (!optval || optlen != sizeof (int)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } else @@ -277,7 +277,7 @@ setopt_gdbm_getdbname (GDBM_FILE dbf, void *optval, int optlen) { if (!optval || optlen != sizeof (char*)) { - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } else @@ -285,7 +285,7 @@ setopt_gdbm_getdbname (GDBM_FILE dbf, void *optval, int optlen) char *p = strdup (dbf->name); if (!p) { - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, FALSE); return -1; } *(char**) optval = p; @@ -302,7 +302,7 @@ setopt_gdbm_getblocksize (GDBM_FILE dbf, void *optval, int optlen) return 0; } - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } @@ -339,6 +339,6 @@ gdbm_setopt (GDBM_FILE dbf, int optflag, void *optval, int optlen) && optflag < sizeof (setopt_handler_tab) / sizeof (setopt_handler_tab[0])) return setopt_handler_tab[optflag] (dbf, optval, optlen); - gdbm_set_errno (dbf, GDBM_OPT_ILLEGAL, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_OPT_ILLEGAL, FALSE); return -1; } diff --git a/src/gdbmstore.c b/src/gdbmstore.c index 050b0a9..4cd7ad1 100644 --- a/src/gdbmstore.c +++ b/src/gdbmstore.c @@ -55,9 +55,8 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) /* First check to make sure this guy is a writer. */ if (dbf->read_write == GDBM_READER) { - GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, - "%s: can't store: not a writer", dbf->name); - gdbm_set_errno (dbf, GDBM_READER_CANT_STORE, FALSE); + GDBM_SET_ERRNO2 (dbf, GDBM_READER_CANT_STORE, FALSE, + GDBM_DEBUG_STORE); return -1; } @@ -65,9 +64,8 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) NULL dptr returned by a lookup procedure indicates an error. */ if ((key.dptr == NULL) || (content.dptr == NULL)) { - GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, - "%s: can't store: invalid key or content", dbf->name); - gdbm_set_errno (dbf, GDBM_ILLEGAL_DATA, FALSE); + GDBM_SET_ERRNO2 (dbf, GDBM_ILLEGAL_DATA, FALSE, + GDBM_DEBUG_STORE); return -1; } @@ -103,9 +101,8 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) } else { - GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, - "%s: cannot replace", dbf->name); - gdbm_set_errno (dbf, GDBM_CANNOT_REPLACE, FALSE); + GDBM_SET_ERRNO2 (dbf, GDBM_CANNOT_REPLACE, FALSE, + GDBM_DEBUG_STORE); return 1; } } @@ -158,7 +155,7 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) { GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, "%s: lseek: %s", dbf->name, strerror (errno)); - gdbm_set_errno (dbf, GDBM_FILE_SEEK_ERROR, TRUE); + GDBM_SET_ERRNO2 (dbf, GDBM_FILE_SEEK_ERROR, TRUE, GDBM_DEBUG_STORE); _gdbm_fatal (dbf, _("lseek error")); return -1; } diff --git a/src/gdbmtool.c b/src/gdbmtool.c index a1bcfcd..53b4e36 100644 --- a/src/gdbmtool.c +++ b/src/gdbmtool.c @@ -1031,7 +1031,7 @@ status_handler (struct handler_param *param) dsprint (param->fp, DS_CONTENT, dsdef[DS_CONTENT]); } -#ifdef GDBM_DEBUG_ENABLE +#if GDBM_DEBUG_ENABLE static int debug_flag_printer (void *data, int flag, char const *tok) { @@ -1044,7 +1044,7 @@ debug_flag_printer (void *data, int flag, char const *tok) void debug_handler (struct h |