aboutsummaryrefslogtreecommitdiff
path: root/src/gdbmtool.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-07-08 11:28:53 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2016-07-08 14:12:34 +0300
commit4aef6b36f862e46723403bc6422ac47058a5ef19 (patch)
treefa7afe6ed8f1abf080fa764bda1bbc81e07f407b /src/gdbmtool.c
parent260102cf7f75db3c87d04a06eb8054853cacce97 (diff)
downloadgdbm-4aef6b36f862e46723403bc6422ac47058a5ef19.tar.gz
gdbm-4aef6b36f862e46723403bc6422ac47058a5ef19.tar.bz2
Fix error handling in gdbm_fetch, gdbm_firstkey, and gdbm_nextkey.
* src/gdbmfetch.c: Hanlde out of memory error. * src/findkey.c: Set gdbm_errno to GDBM_ITEM_NOT_FOUND if nothing was found. * src/gdbmdelete.c: Don't set gdbm_errno after _gdbm_findkey returns -1. It's been done already. * src/gdbmexp.c (gdbm_export_to_file): Return -1 if gdbm_fetch fails. * src/gdbmseq.c (get_next_key): Set gdbm_errno to GDBM_ITEM_NOT_FOUND if there's no next key. Don't call _gdbm_fatal on out of memory condition. (gdbm_nextkey): Set gdbm_errno to GDBM_ITEM_NOT_FOUND if there's no next key. * src/gdbmtool.c (fetch_handler) (firstkey_handler,nextkey_handler): Check gdbm_errno. * src/gdbmstore.c: Handle error return from _gdbm_findkey. * tests/gtdump.c: Likewise. * tests/gtfetch.c: Likewise. * doc/gdbm.texi: Document changes. * doc/gdbm.3: Likewise. * configure.ac: Version 1.12.90 * NEWS: Update. * .gitignore: Update.
Diffstat (limited to 'src/gdbmtool.c')
-rw-r--r--src/gdbmtool.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/gdbmtool.c b/src/gdbmtool.c
index 69acacd..65b6740 100644
--- a/src/gdbmtool.c
+++ b/src/gdbmtool.c
@@ -415,7 +415,7 @@ delete_handler (struct handler_param *param)
if (gdbm_errno == GDBM_ITEM_NOT_FOUND)
terror (_("Item not found"));
else
- terror (_("Can't delete: %s"), gdbm_strerror (gdbm_errno));
+ terror (_("Can't delete: %s"), gdbm_strerror (gdbm_errno));
}
}
@@ -430,8 +430,10 @@ fetch_handler (struct handler_param *param)
fputc ('\n', param->fp);
free (return_data.dptr);
}
- else
+ else if (gdbm_errno == GDBM_ITEM_NOT_FOUND)
fprintf (stderr, _("No such item found.\n"));
+ else
+ terror (_("Can't fetch data: %s"), gdbm_strerror (gdbm_errno));
}
/* store KEY DATA - store data */
@@ -463,8 +465,10 @@ firstkey_handler (struct handler_param *param)
free (return_data.dptr);
}
- else
+ else if (gdbm_errno == GDBM_ITEM_NOT_FOUND)
fprintf (param->fp, _("No such item found.\n"));
+ else
+ terror (_("Can't find key: %s"), gdbm_strerror (gdbm_errno));
}
/* next [KEY] - next key */
@@ -492,12 +496,14 @@ nextkey_handler (struct handler_param *param)
free (return_data.dptr);
}
- else
+ else if (gdbm_errno == GDBM_ITEM_NOT_FOUND)
{
fprintf (stderr, _("No such item found.\n"));
free (key_data.dptr);
key_data.dptr = NULL;
}
+ else
+ terror (_("Can't find key: %s"), gdbm_strerror (gdbm_errno));
}
/* reorganize */

Return to:

Send suggestions and report system problems to the System administrator.