diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-07-26 10:43:34 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-07-26 10:43:34 +0300 |
commit | 7fb0d1cbbf7842f2632b7dca0451d6f3918dd7ab (patch) | |
tree | 899bdcd5c62eb632de6fb3c660a192c1929446c9 | |
parent | 465e893bfa0cdfb8f260500599fc3af458047a76 (diff) | |
download | gdbm-7fb0d1cbbf7842f2632b7dca0451d6f3918dd7ab.tar.gz gdbm-7fb0d1cbbf7842f2632b7dca0451d6f3918dd7ab.tar.bz2 |
Fix remaining uses of gdbm_set_errno function.
Use the GDBM_SET_ERRNO and GDBM_SET_ERRNO2 macros to make
sure the error gets reported in debug output.
* src/fullio.c (_gdbm_full_read)
(_gdbm_full_write): Return -1 and set gdbm_errno
on error.
* src/bucket.c: Use GDBM_SET_ERRNO(2?) or
GDBM_DEBUG where necessary.
* src/falloc.c: Likewise.
* src/findkey.c: Likewise.
* src/gdbmdefs.h: Likewise.
* src/gdbmopen.c: Likewise.
* src/gdbmstore.c: Likewise.
* src/mmap.c: Likewise.
* src/recover.c: Likewise.
* src/update.c: Likewise.
-rw-r--r-- | src/bucket.c | 18 | ||||
-rw-r--r-- | src/falloc.c | 5 | ||||
-rw-r--r-- | src/findkey.c | 5 | ||||
-rw-r--r-- | src/fullio.c | 23 | ||||
-rw-r--r-- | src/gdbmdefs.h | 2 | ||||
-rw-r--r-- | src/gdbmopen.c | 48 | ||||
-rw-r--r-- | src/gdbmstore.c | 9 | ||||
-rw-r--r-- | src/mmap.c | 6 | ||||
-rw-r--r-- | src/recover.c | 20 | ||||
-rw-r--r-- | src/update.c | 13 |
10 files changed, 79 insertions, 70 deletions
diff --git a/src/bucket.c b/src/bucket.c index 912a7b4..9f423f4 100644 --- a/src/bucket.c +++ b/src/bucket.c @@ -113,4 +113,7 @@ _gdbm_get_bucket (GDBM_FILE dbf, int dir_index) { - _gdbm_fatal (dbf, gdbm_strerror (rc)); - GDBM_SET_ERRNO (dbf, rc, TRUE); + GDBM_DEBUG (GDBM_DEBUG_ERR, + "%s: error reading bucket: %s", + dbf->name, gdbm_db_strerror (dbf)); + dbf->need_recovery = TRUE; + _gdbm_fatal (dbf, gdbm_db_strerror (dbf)); return -1; @@ -152,6 +155,7 @@ _gdbm_read_bucket_at (GDBM_FILE dbf, off_t off, hash_bucket *bucket, } - rc = _gdbm_full_read (dbf, bucket, size); - if (rc) + if (_gdbm_full_read (dbf, bucket, size)) { - GDBM_SET_ERRNO (dbf, rc, TRUE); + GDBM_DEBUG (GDBM_DEBUG_ERR, + "%s: error reading bucket: %s", + dbf->name, gdbm_db_strerror (dbf)); return -1; @@ -396,3 +400,5 @@ _gdbm_write_bucket (GDBM_FILE dbf, cache_elem *ca_entry) { - GDBM_SET_ERRNO (dbf, rc, TRUE); + GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, + "%s: error writing bucket: %s", + dbf->name, gdbm_db_strerror (dbf)); _gdbm_fatal (dbf, gdbm_strerror (rc)); diff --git a/src/falloc.c b/src/falloc.c index c5ffdc3..516a197 100644 --- a/src/falloc.c +++ b/src/falloc.c @@ -204,3 +204,2 @@ pop_avail_block (GDBM_FILE dbf) { - GDBM_SET_ERRNO (dbf, rc, TRUE); _gdbm_fatal (dbf, gdbm_strerror (rc)); @@ -323,3 +322,5 @@ push_avail_block (GDBM_FILE dbf) { - GDBM_SET_ERRNO (dbf, rc, TRUE); + GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, + "%s: error writing avail data: %s", + dbf->name, gdbm_db_strerror (dbf)); _gdbm_fatal (dbf, gdbm_strerror (rc)); diff --git a/src/findkey.c b/src/findkey.c index 135856b..b2e0e8c 100644 --- a/src/findkey.c +++ b/src/findkey.c @@ -81,3 +81,6 @@ _gdbm_read_entry (GDBM_FILE dbf, int elem_loc) { - GDBM_SET_ERRNO2 (dbf, rc, TRUE, GDBM_DEBUG_LOOKUP); + GDBM_DEBUG (GDBM_DEBUG_ERR|GDBM_DEBUG_LOOKUP|GDBM_DEBUG_READ, + "%s: error reading entry: %s", + dbf->name, gdbm_db_strerror (dbf)); + dbf->need_recovery = TRUE; _gdbm_fatal (dbf, gdbm_strerror (rc)); diff --git a/src/fullio.c b/src/fullio.c index adfff2c..0b65187 100644 --- a/src/fullio.c +++ b/src/fullio.c @@ -20,5 +20,5 @@ /* Read exactly SIZE bytes of data into BUFFER. Return value is 0 on - success, GDBM_FILE_EOF, if not enough data is available, and - GDBM_FILE_READ_ERROR, if a read error occurs. In the latter case - errno keeps actual system error code. */ + success, and -1 on error. In the latter case, gdbm_errno is set to + GDBM_FILE_EOF, if not enough data is available, and to + GDBM_FILE_READ_ERROR, if a read error occurs. */ int @@ -34,6 +34,10 @@ _gdbm_full_read (GDBM_FILE dbf, void *buffer, size_t size) continue; - return GDBM_FILE_READ_ERROR; + GDBM_SET_ERRNO (dbf, GDBM_FILE_READ_ERROR, FALSE); + return -1; } if (rdbytes == 0) - return GDBM_FILE_EOF; + { + GDBM_SET_ERRNO (dbf, GDBM_FILE_EOF, FALSE); + return -1; + } ptr += rdbytes; @@ -45,4 +49,3 @@ _gdbm_full_read (GDBM_FILE dbf, void *buffer, size_t size) /* Write exactly SIZE bytes of data from BUFFER tp DBF. Return 0 on - success, and GDBM_FILE_READ_ERROR on error. In the latter case errno - will keep actual system error code. */ + success, and -1 (setting gdbm_errno to GDBM_FILE_READ_ERROR) on error. */ int @@ -58,3 +61,4 @@ _gdbm_full_write (GDBM_FILE dbf, void *buffer, size_t size) continue; - return GDBM_FILE_WRITE_ERROR; + GDBM_SET_ERRNO (dbf, GDBM_FILE_WRITE_ERROR, TRUE); + return -1; } @@ -63,3 +67,4 @@ _gdbm_full_write (GDBM_FILE dbf, void *buffer, size_t size) errno = ENOSPC; - return GDBM_FILE_WRITE_ERROR; + GDBM_SET_ERRNO (dbf, GDBM_FILE_WRITE_ERROR, TRUE); + return -1; } diff --git a/src/gdbmdefs.h b/src/gdbmdefs.h index e1c143d..286f3fc 100644 --- a/src/gdbmdefs.h +++ b/src/gdbmdefs.h @@ -247,3 +247,3 @@ struct gdbm_file_info { \ - gdbm_set_errno (dbf, GDBM_NEED_RECOVERY, TRUE); \ + GDBM_SET_ERRNO (dbf, GDBM_NEED_RECOVERY, TRUE); \ return onerr; \ diff --git a/src/gdbmopen.c b/src/gdbmopen.c index 101d497..e444bc1 100644 --- a/src/gdbmopen.c +++ b/src/gdbmopen.c @@ -59,3 +59,2 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, int index; /* Used as a loop index. */ - int rc; /* temporary error code */ @@ -272,5 +271,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, /* Block 0 is the file header and active avail block. */ - rc = _gdbm_full_write (dbf, dbf->header, dbf->header->block_size); - if (rc) + if (_gdbm_full_write (dbf, dbf->header, dbf->header->block_size)) { + GDBM_DEBUG (GDBM_DEBUG_OPEN|GDBM_DEBUG_ERR, + "%s: error writing header: %s", + dbf->name, gdbm_db_strerror (dbf)); if (!(flags & GDBM_CLOERROR)) @@ -278,3 +279,2 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, SAVE_ERRNO (gdbm_close (dbf)); - gdbm_set_errno (NULL, rc, FALSE); return NULL; @@ -283,5 +283,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, /* Block 1 is the initial bucket directory. */ - rc = _gdbm_full_write (dbf, dbf->dir, dbf->header->dir_size); - if (rc) + if (_gdbm_full_write (dbf, dbf->dir, dbf->header->dir_size)) { + GDBM_DEBUG (GDBM_DEBUG_OPEN|GDBM_DEBUG_ERR, + "%s: error writing directory: %s", + dbf->name, gdbm_db_strerror (dbf)); if (!(flags & GDBM_CLOERROR)) @@ -289,3 +291,2 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, SAVE_ERRNO (gdbm_close (dbf)); - gdbm_set_errno (NULL, rc, FALSE); return NULL; @@ -294,5 +295,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, /* Block 2 is the only bucket. */ - rc = _gdbm_full_write (dbf, dbf->bucket, dbf->header->bucket_size); - if (rc) + if (_gdbm_full_write (dbf, dbf->bucket, dbf->header->bucket_size)) { + GDBM_DEBUG (GDBM_DEBUG_OPEN|GDBM_DEBUG_ERR, + "%s: error writing bucket: %s", + dbf->name, gdbm_db_strerror (dbf)); if (!(flags & GDBM_CLOERROR)) @@ -300,3 +303,2 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, SAVE_ERRNO (gdbm_close (dbf)); - gdbm_set_errno (NULL, rc, FALSE); return NULL; @@ -317,4 +319,3 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, /* Read the partial file header. */ - rc = _gdbm_full_read (dbf, &partial_header, sizeof (gdbm_file_header)); - if (rc) + if (_gdbm_full_read (dbf, &partial_header, sizeof (gdbm_file_header))) { @@ -322,3 +323,3 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, "%s: error reading partial header: %s", - dbf->name, strerror (errno)); + dbf->name, gdbm_db_strerror (dbf)); if (!(flags & GDBM_CLOERROR)) @@ -326,3 +327,2 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, SAVE_ERRNO (gdbm_close (dbf)); - gdbm_set_errno (NULL, rc, FALSE); return NULL; @@ -334,6 +334,2 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, { - GDBM_DEBUG (GDBM_DEBUG_ERR|GDBM_DEBUG_OPEN, - "%s: unexpected magic: %#4x", - dbf->name, partial_header.header_magic); - if (!(flags & GDBM_CLOERROR)) @@ -372,9 +368,8 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, memcpy (dbf->header, &partial_header, sizeof (gdbm_file_header)); - rc = _gdbm_full_read (dbf, &dbf->header->avail.av_table[1], - dbf->header->block_size - sizeof (gdbm_file_header)); - if (rc) + if (_gdbm_full_read (dbf, &dbf->header->avail.av_table[1], + dbf->header->block_size - sizeof (gdbm_file_header))) { GDBM_DEBUG (GDBM_DEBUG_ERR|GDBM_DEBUG_OPEN, - "%s: error reading av_table", - dbf->name); + "%s: error reading av_table: %s", + dbf->name, gdbm_db_strerror (dbf)); if (!(flags & GDBM_CLOERROR)) @@ -382,3 +377,2 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, SAVE_ERRNO (gdbm_close (dbf)); - gdbm_set_errno (NULL, rc, FALSE); return NULL; @@ -408,4 +402,3 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, - rc = _gdbm_full_read (dbf, dbf->dir, dbf->header->dir_size); - if (rc) + if (_gdbm_full_read (dbf, dbf->dir, dbf->header->dir_size)) { @@ -413,3 +406,3 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, "%s: error reading dir: %s", - dbf->name, strerror (errno)); + dbf->name, gdbm_db_strerror (dbf)); if (!(flags & GDBM_CLOERROR)) @@ -417,3 +410,2 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, SAVE_ERRNO (gdbm_close (dbf)); - gdbm_set_errno (NULL, rc, FALSE); return NULL; diff --git a/src/gdbmstore.c b/src/gdbmstore.c index 4cd7ad1..404687c 100644 --- a/src/gdbmstore.c +++ b/src/gdbmstore.c @@ -167,4 +167,4 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, - "%s: writing key: %s", dbf->name, strerror (errno)); - gdbm_set_errno (dbf, rc, TRUE); + "%s: error writing key: %s", + dbf->name, gdbm_db_strerror (dbf)); _gdbm_fatal (dbf, gdbm_strerror (rc)); @@ -179,5 +179,4 @@ gdbm_store (GDBM_FILE dbf, datum key, datum content, int flags) GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, - "%s: writing content: %s", - dbf->name, strerror (errno)); - gdbm_set_errno (dbf, rc, TRUE); + "%s: error writing content: %s", + dbf->name, gdbm_db_strerror (dbf)); _gdbm_fatal (dbf, gdbm_strerror (rc)); @@ -101,3 +101,3 @@ _gdbm_internal_remap (GDBM_FILE dbf, size_t size) dbf->mapped_region = NULL; - gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, FALSE); return -1; @@ -137,3 +137,3 @@ _gdbm_mapped_remap (GDBM_FILE dbf, off_t size, int flag) SAVE_ERRNO (_gdbm_mapped_unmap (dbf)); - gdbm_set_errno (dbf, GDBM_FILE_STAT_ERROR, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_FILE_STAT_ERROR, FALSE); return -1; @@ -332,3 +332,3 @@ _gdbm_mapped_lseek (GDBM_FILE dbf, off_t offset, int whence) { - gdbm_set_errno (dbf, GDBM_FILE_STAT_ERROR, FALSE); + GDBM_SET_ERRNO (dbf, GDBM_FILE_STAT_ERROR, FALSE); return -1; diff --git a/src/recover.c b/src/recover.c index 69644f9..ecf47c5 100644 --- a/src/recover.c +++ b/src/recover.c @@ -28,3 +28,3 @@ gdbm_copy_meta (GDBM_FILE dst, GDBM_FILE src) { - gdbm_set_errno (src, GDBM_FILE_STAT_ERROR, src->need_recovery); + GDBM_SET_ERRNO (src, GDBM_FILE_STAT_ERROR, src->need_recovery); return -1; @@ -33,3 +33,3 @@ gdbm_copy_meta (GDBM_FILE dst, GDBM_FILE src) { - gdbm_set_errno (dst, GDBM_ERR_FILE_OWNER, dst->need_recovery); + GDBM_SET_ERRNO (dst, GDBM_ERR_FILE_OWNER, dst->need_recovery); return -1; @@ -38,3 +38,3 @@ gdbm_copy_meta (GDBM_FILE dst, GDBM_FILE src) { - gdbm_set_errno (dst, GDBM_ERR_FILE_MODE, dst->need_recovery); + GDBM_SET_ERRNO (dst, GDBM_ERR_FILE_MODE, dst->need_recovery); return -1; @@ -119,3 +119,3 @@ _gdbm_finish_transfer (GDBM_FILE dbf, GDBM_FILE new_dbf, SAVE_ERRNO (gdbm_close (new_dbf)); - gdbm_set_errno (NULL, GDBM_BACKUP_FAILED, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_BACKUP_FAILED, FALSE); return -1; @@ -125,3 +125,3 @@ _gdbm_finish_transfer (GDBM_FILE dbf, GDBM_FILE new_dbf, SAVE_ERRNO (gdbm_close (new_dbf); free (bkname)); - gdbm_set_errno (NULL, GDBM_BACKUP_FAILED, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_BACKUP_FAILED, FALSE); return -1; @@ -135,3 +135,3 @@ _gdbm_finish_transfer (GDBM_FILE dbf, GDBM_FILE new_dbf, { - gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_REORGANIZE_FAILED, FALSE); gdbm_close (new_dbf); @@ -344,3 +344,3 @@ gdbm_recover (GDBM_FILE dbf, gdbm_recovery *rcvr, int flags) { - gdbm_set_errno (dbf, GDBM_READER_CANT_REORGANIZE, dbf->need_recovery); + GDBM_SET_ERRNO (dbf, GDBM_READER_CANT_REORGANIZE, dbf->need_recovery); return -1; @@ -367,3 +367,3 @@ gdbm_recover (GDBM_FILE dbf, gdbm_recovery *rcvr, int flags) { - gdbm_set_errno (NULL, GDBM_MALLOC_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_MALLOC_ERROR, FALSE); return -1; @@ -375,3 +375,3 @@ gdbm_recover (GDBM_FILE dbf, gdbm_recovery *rcvr, int flags) { - gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); free (new_name); @@ -389,3 +389,3 @@ gdbm_recover (GDBM_FILE dbf, gdbm_recovery *rcvr, int flags) { - gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, FALSE); + GDBM_SET_ERRNO (NULL, GDBM_REORGANIZE_FAILED, FALSE); return -1; diff --git a/src/update.c b/src/update.c index 90a6524..eb9f33b 100644 --- a/src/update.c +++ b/src/update.c @@ -36,3 +36,3 @@ write_header (GDBM_FILE dbf) { - 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")); @@ -46,4 +46,5 @@ write_header (GDBM_FILE dbf) { - gdbm_set_errno (dbf, rc, TRUE); - gdbm_set_errno (dbf, rc, TRUE); + GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, + "%s: error writing header: %s", + dbf->name, gdbm_db_strerror (dbf)); return -1; @@ -101,3 +102,3 @@ _gdbm_end_update (GDBM_FILE dbf) { - 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")); @@ -110,3 +111,5 @@ _gdbm_end_update (GDBM_FILE dbf) { - gdbm_set_errno (dbf, rc, TRUE); + GDBM_DEBUG (GDBM_DEBUG_STORE|GDBM_DEBUG_ERR, + "%s: error writing directory: %s", + dbf->name, gdbm_db_strerror (dbf)); _gdbm_fatal (dbf, gdbm_strerror (rc)); |