From 030e685eb9df82f63d73a1bf206da84b7aa52374 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sun, 1 Jul 2018 10:08:55 +0300 Subject: Change return value of gdbm_close and gdbm_sync * src/gdbm.h.in (gdbm_close, gdbm_sync): Return int (GDBM_FILE_CLOSE_ERROR, GDBM_FILE_SYNC_ERROR): New error codes. * src/gdbmclose.c (gdbm_close): Return 0 on success, -1 on failure. Set gdbm_errno and errno. * src/gdbmsync.c (gdbm_sync): Likewise. * src/gdbmerrno.c: Handle new error codes. * src/mmap.c (_gdbm_mapped_sync): Set gdbm_errno. * src/proto.h (gdbm_file_sync): Set gdbm_errno. * doc/gdbm.3: Document changes. * doc/gdbm.texi: Document changes. * NEWS: Document changes. * configure.ac: Set patchlevel. * tests/Makefile.am: Add new test. * tests/testsuite.at: Add new test. * tests/closerr.at: New test case. * tests/closerr.c: New test program. * tests/gtdel.c: Check gdbm_close return. * tests/gtdump.c: Likewise. * tests/gtfetch.c: Likewise. * tests/gtload.c: Likewise. * tests/gtopt.c: Likewise. * tests/gtrecover.c: Likewise. --- doc/gdbm.3 | 10 +++++----- doc/gdbm.texi | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 9 deletions(-) (limited to 'doc') diff --git a/doc/gdbm.3 b/doc/gdbm.3 index 6107d9a..d803748 100644 --- a/doc/gdbm.3 +++ b/doc/gdbm.3 @@ -13,7 +13,7 @@ .\" .\" You should have received a copy of the GNU General Public License .\" along with GDBM. If not, see . */ -.TH GDBM 3 "July 8, 2016" "GDBM" "GDBM User Reference" +.TH GDBM 3 "July 1, 2018" "GDBM" "GDBM User Reference" .SH NAME GDBM \- The GNU database manager. Includes \fBdbm\fR and \fBndbm\fR compatibility. @@ -31,7 +31,7 @@ compatibility. .ti +21 .BI "void (*" fatal_func ")(const char *))"; .br -.BI "void gdbm_close (GDBM_FILE " dbf ");" +.BI "int gdbm_close (GDBM_FILE " dbf ");" .br .BI "int gdbm_store (GDBM_FILE " dbf ", datum " key ", datum " content ", int " flag ); .br @@ -45,7 +45,7 @@ compatibility. .br .BI "int gdbm_reorganize (GDBM_FILE " dbf ");" .br -.BI "void gdbm_sync (GDBM_FILE " dbf ");" +.BI "int gdbm_sync (GDBM_FILE " dbf ");" .br .BI "int gdbm_exists (GDBM_FILE " dbf ", datum " key ); .br @@ -183,7 +183,7 @@ returned from \fBgdbm_open\fR. It is important that every file opened is also closed. This is needed to update the reader/writer count on the file. This is done by: -.BI "void gdbm_close (GDBM_FILE " dbf ");" +.BI "int gdbm_close (GDBM_FILE " dbf ");" The database is used by 3 primary routines. The first stores data in the database. @@ -308,7 +308,7 @@ wait for writes to be flushed to the disk before continuing. The following routine can be used to guarantee that the database is physically written to the disk file. -.BI "void gdbm_sync (GDBM_FILE " dbf ");" +.BI "int gdbm_sync (GDBM_FILE " dbf ");" It will not return until the disk file state is syncronized with the in-memory state of the database. diff --git a/doc/gdbm.texi b/doc/gdbm.texi index b5ba53d..4a0b1a7 100644 --- a/doc/gdbm.texi +++ b/doc/gdbm.texi @@ -215,14 +215,14 @@ contains a definition of these functions. #include GDBM_FILE gdbm_open(name, block_size, flags, mode, fatal_func); -void gdbm_close(dbf); +int gdbm_close(dbf); int gdbm_store(dbf, key, content, flag); datum gdbm_fetch(dbf, key); int gdbm_delete(dbf, key); datum gdbm_firstkey(dbf); datum gdbm_nextkey(dbf, key); int gdbm_reorganize(dbf); -void gdbm_sync(dbf); +int gdbm_sync(dbf); int gdbm_exists(dbf, key); char *gdbm_strerror(errno); int gdbm_setopt(dbf, option, value, size); @@ -369,7 +369,7 @@ Copy file ownership and mode from @var{src} to @var{dst}. It is important that every file opened is also closed. This is needed to update the reader/writer count on the file: -@deftypefn {gdbm interface} void gdbm_close (GDBM_FILE @var{dbf}) +@deftypefn {gdbm interface} int gdbm_close (GDBM_FILE @var{dbf}) This function closes the @code{gdbm} file and frees all memory associated with it. The parameter is: @@ -377,6 +377,10 @@ associated with it. The parameter is: @item dbf The pointer returned by @code{gdbm_open}. @end table + +@code{Gdbm_close} returns 0 on success. On error, it sets +@code{gdbm_errno} and system @code{errno} variables to the codes +describing the error and returns -1. @end deftypefn @node Count @@ -678,7 +682,7 @@ abnormal fashion. The following function allows the programmer to make sure the disk version of the database has been completely updated with all changes to the current time. -@deftypefn {gdbm interface} void gdbm_sync (GDBM_FILE @var{dbf}) +@deftypefn {gdbm interface} int gdbm_sync (GDBM_FILE @var{dbf}) Synchronizes the changes in @var{dbf} with its disk file. The parameter is a pointer returned by @code{gdbm_open}. @@ -687,6 +691,10 @@ have been made to the database and before some long waiting time. The @code{gdbm_close} function automatically calls the equivalent of @code{gdbm_sync} so no call is needed if the database is to be closed immediately after the set of changes have been made. + +@code{Gdbm_sync} returns 0 on success. On error, it sets +@code{gdbm_errno} and system @code{errno} variables to the codes +describing the error and returns -1. @end deftypefn @node Flat files -- cgit v1.2.1