aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-07-26 10:43:34 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2016-07-26 10:43:34 +0300
commit7fb0d1cbbf7842f2632b7dca0451d6f3918dd7ab (patch)
tree899bdcd5c62eb632de6fb3c660a192c1929446c9
parent465e893bfa0cdfb8f260500599fc3af458047a76 (diff)
downloadgdbm-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.c18
-rw-r--r--src/falloc.c5
-rw-r--r--src/findkey.c5
-rw-r--r--src/fullio.c23
-rw-r--r--src/gdbmdefs.h2
-rw-r--r--src/gdbmopen.c48
-rw-r--r--src/gdbmstore.c9
-rw-r--r--src/mmap.c6
-rw-r--r--src/recover.c20
-rw-r--r--src/update.c13
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));
diff --git a/src/mmap.c b/src/mmap.c
index d5fe5c0..7ec5fe3 100644
--- a/src/mmap.c
+++ b/src/mmap.c
@@ -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));

Return to:

Send suggestions and report system problems to the System administrator.