aboutsummaryrefslogtreecommitdiff
path: root/src/gdbmreorg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gdbmreorg.c')
-rw-r--r--src/gdbmreorg.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/gdbmreorg.c b/src/gdbmreorg.c
index 8a0cc64..13fa7fc 100644
--- a/src/gdbmreorg.c
+++ b/src/gdbmreorg.c
@@ -71,26 +71,26 @@ gdbm_reorganize (GDBM_FILE dbf)
/* Readers can not reorganize! */
if (dbf->read_write == GDBM_READER)
{
- gdbm_set_errno (dbf, GDBM_READER_CANT_REORGANIZE, 0);
+ gdbm_set_errno (dbf, GDBM_READER_CANT_REORGANIZE, FALSE);
return -1;
}
/* Get the mode for the old file */
if (fstat (dbf->desc, &fileinfo))
{
- gdbm_set_errno (dbf, GDBM_FILE_STAT_ERROR, 0);
+ gdbm_set_errno (dbf, GDBM_FILE_STAT_ERROR, FALSE);
return -1;
}
/* Initialize the gdbm_errno variable. */
- gdbm_set_errno (dbf, GDBM_NO_ERROR, 0);
+ gdbm_set_errno (dbf, GDBM_NO_ERROR, FALSE);
/* Construct new name for temporary file. */
len = strlen (dbf->name);
new_name = (char *) malloc (len + 3);
if (new_name == NULL)
{
- gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, 0);
+ gdbm_set_errno (dbf, GDBM_MALLOC_ERROR, FALSE);
return -1;
}
strcpy (&new_name[0], dbf->name);
@@ -111,7 +111,7 @@ gdbm_reorganize (GDBM_FILE dbf)
if (new_dbf == NULL)
{
free (new_name);
- gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, 0);
+ gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, FALSE);
return -1;
}
@@ -128,7 +128,7 @@ gdbm_reorganize (GDBM_FILE dbf)
if (gdbm_store (new_dbf, key, data, GDBM_INSERT) != 0)
{
gdbm_close (new_dbf);
- gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, 0);
+ gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, FALSE);
unlink (new_name);
free (new_name);
return -1;
@@ -138,7 +138,7 @@ gdbm_reorganize (GDBM_FILE dbf)
{
/* ERROR! Abort and don't finish reorganize. */
gdbm_close (new_dbf);
- gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, 0);
+ gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, FALSE);
unlink (new_name);
free (new_name);
return -1;
@@ -150,7 +150,11 @@ gdbm_reorganize (GDBM_FILE dbf)
}
/* Write everything. */
- _gdbm_end_update (new_dbf);
+ if (_gdbm_end_update (new_dbf))
+ {
+ gdbm_close (new_dbf);
+ return -1;
+ }
gdbm_sync (new_dbf);
#if HAVE_MMAP
@@ -161,7 +165,7 @@ gdbm_reorganize (GDBM_FILE dbf)
if (rename (new_name, dbf->name) != 0)
{
- gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, 0);
+ gdbm_set_errno (NULL, GDBM_REORGANIZE_FAILED, FALSE);
gdbm_close (new_dbf);
free (new_name);
return -1;
@@ -214,7 +218,5 @@ gdbm_reorganize (GDBM_FILE dbf)
/* Force the right stuff for a correct bucket cache. */
dbf->cache_entry = &dbf->bucket_cache[0];
- _gdbm_get_bucket (dbf, 0);
-
- return 0;
+ return _gdbm_get_bucket (dbf, 0);
}

Return to:

Send suggestions and report system problems to the System administrator.