aboutsummaryrefslogtreecommitdiff
path: root/NEWS
blob: c9ab6544d42c40b43bdaa628c8ab6abcd9fd2f97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
GNU dbm NEWS -- history of user-visible changes. 2016-07-12
Copyright (C) 1990-2016 Free Software Foundation, Inc.
See the end of file for copying conditions.

Please send gdbm bug reports to <bug-gdbm@gnu.org>.

Version 1.12.90 (Git)

* gdbm_fetch, gdbm_firstkey, and gdbm_nextkey behavior

If the requested key was not found, these functions return datum with
dptr pointing to NULL and set gdbm_errno to GDBM_ITEM_NOT_FOUND (in
prior releases, gdbm_errno was set to GDBM_NO_ERROR),

If an error occurred, dptr is set to NULL, and gdbm_errno to
the error code.

In any case gdbm_errno is guaranteed to have meaningful value upon
return.

The gdbm_fetch function no longer aborts on memory allocation errors.
Instead it sets gdbm_errno to GDBM_MALLOC_ERROR and returns NULL datum.

* Per-database error codes

* New functions

** gdbm_last_errno

** gdbm_clear_error

** gdbm_needs_recovery

* Line editing in gdbmtool

The gdbmtool utility now offers the usual line-editing facilities (if
the package has been compiled with GNU Readline.


Version 1.12, 2016-05-16

* New configuration variable COMPATINCLUDEDIR

When used with --enable-libgdbm-compat, this variable points to the
directory where the headers file dbm.h and ndbm.h will be installed.
Use this variable to avoid conflicts with already installed headers.
E.g.:

 ./configure --enable-libgdbm-compat COMPATINCLUDEDIR=/usr/include/gdbm

* Bugfixes
 

Version 1.11, 2013-12-25

* Improved dump format.

A new dump format is implemented, which encodes all data in base64 and
stores not only key/data pairs, but also the original database file
metadata, such as file name, mode and ownership.  Files in this format
can be sent without additional encapsulation over transmission
channels that normally allow only ASCII data.  Dumps in this format
allow for restoring an exact copy of the database, including file
ownership and privileges.

* New function: gdbm_count

    int gdbm_count (GDBM_FILE *file, gdbm_count *count);

Counts records in `file' and stores the result in the memory location
pointed to by `count'.

* New utilities: gdbm_dump and gdbm_load.

Gdbm_dump creates a plain-text dump of the GDBM database.  This dump
can be used to create an exact copy of the database afterward.

The gdbm_load performs the reverse: given the dump file, it creates a
GDBM database.  Apart from native GDBM dump formats, it also understands
the format generated by Berkeley DB db_dump utility.  Thus, an easy
way to convert a Berkeley DB database to GDBM is:

   db_dump input.db | gdbm_load output.db

* gdbmtool

The gdbmtool utility allows you to examine, modify or create GDBM
databases.  It provides an easy-to-use interactive shell and can
be used for scripting.  One of the unique features of gdbmtool is that
it allows to define datum structures for key and content parts, similarly
to the C "struct" declarations, and to input and display such
structured data.


Version 1.10, 2011-11-13

* Internationalization

This version of GDBM is fully internationalized.  The following
localizations are available: Finnish, German, Japanese, Polish and Ukrainian.

* Support for close-on-exec flag in gdbm_open (see GDBM_CLOEXEC in the docs).

* Improve testgdbm command system

The testgdbm tool now supports multicharacter commands.

* Bugfixes

Bug numbers below refer to the tracker at <http://puszcza.gnu.org.ua/bugs/?N>

** Bug #150.
Tolerate I/O operations returning less bytes than expected.  Retry I/O
if possible.

** Bug #151
Gdbm_open now initializes with zeros the memory allocated for file
header.  Previous versions left uninitialized portions intact, so
they contained whatever happened to be in that memory region at the
moment of allocation.  This created undesired security implications.

** Fix handling of NDBM databases in read-only mode.


Version 1.9.1

* Bugfix

Improperly used preprocessor directive caused compilation failure
when using gcc 4.4.4 or newer.


Version 1.9, 2011-08-12

* Use of mmap

To speed up I/O operations, mmap(2) is used when available.
It can be disabled at compile time using --disable-memory-mapped-io,
and at run time by giving GDBM_NOMMAP flag to gdbm_open.

* Changes in compatibility mode

The changes below fix several long-standing bugs in
ndbm compatibility code, which made it impossible to
use GDBM with Sendmail and Postfix.  Now that they are
fixed, GDBM can be used with these MTAs. 

** Locking is disabled.

Neither ndbm nor dbm functions lock their files.

This bug was reported, in particular, in
https://bugzilla.redhat.com/show_bug.cgi?id=663932

** Do not link pag to dir.

Instead of linking pag to dir as previous versions did, GDBM now
creates a separate dir file.  Consequently, dbm_pagfno and
dbm_dirfno return different file descriptors.

When opening an existing database as a writer, GDBM determines
if dir is linked to pag, and if so breaks the link and creates
a new dir file.  When such a database is opened in a read-only
mode, GDBM does not attempt to alter the link.

* gdbm_setopt

New options are implemented for use with gdbm_setopt function.
In particular, a set of options is provided for retrieving various
database parameters, such as the file name, memory mapping status,
etc.

* The testgdbm program is installed

Testgdbm is an interactive tool for manipulating GDBM database files.
It allows you to view or update existing databases, export
them to the portable flat file format and to create new database files.

* A testsuite is provided.

* Improved documentation.

Version 1.8.3

* Various configure related changes and additional updates.

Version 1.8.2

* Allow `NEWDB'-opened databases to actually, well, store records.

Version 1.8.1

* Lots of bug fixes, including a data corruption bug.
* Updated to current autoconf and libtool.
* Moved the dbm/ndbm compatibility routines to libgdbm_compat.

Version 1.8

* Added GDBM_CENTFREE functionality and option.
* Added GDBM_COALESCEBLKS functionality and option.
* Added GDBM_NOLOCK flag.
* Made ``fast'' mode the default, making GDBM_FAST obsolete, and adding
  the GDBM_SYNC flag and GDBM_SYNCMODE option.
* Switched to building with libtool.

Version 1.7.3

* Fixed a couple of last minute problems.

Namely, no autoconf.h in version.c, and no GDBM_FASTMODE in gdbm.h!

* Fixed some documentation bugs.

Version 1.7.2

* Enhanced portability and compile/installation changes.
* Additional, "fast mode" related gdbm_setopt() option.
* Growth problems bug fix.

Version 1.7.1

* Enhanced portabilty and compile/installation bug fixes.
* Switched over to using an auto config header.
* Slight documentation upgrade.

Version 1.7

* A new dynamic, delayed initialization, bucket cache.
* New gdbm_setopt(), gdbm_exists(), and gdbm_strerror() routines.
* Slightly improved dbm/ndbm compatibility.
* Greatly improved portability to 64 or 16 bit machines.
* Various bug fixes.

Version 1.6

* New documentation in both man and texinfo formats.
* Bug fixes.
* A New "writers" mode that does not fsync the database.
* Uses Autoconf now.

Version 1.5

* Minor bug fixes.  See the ChangeLog.
* Added gdbmconst.h to allow users to change the size of the
* bucket cache in the systems.h file.

Version 1.4

* Mainly bug fixes
* A define for "dbmclose()" was added to dbm.h for those few 
  implementaions that need that call.
* For details, see the ChangeLog.

Version 1.0

* Makefiles were combined into one and a few new things added to it.
* Several minor bugs were fixed including a cache bug.
* Two new calls (dbm_pagfno, dbm_dirfno) were added to the NDBM interface.
* A conversion program from dbm files to gdbm files was added.
* Reorganize was changed to allow complex file names. (dir/file form)
* testgdbm, testndbm, and testdbm were modified to return key and data
  pairs where needed and to take an optional file name as an argument.
  testgdbm had some command characters changed.
* The DBM and NDBM interfaces were separated.
* An include file for dbm users was added. (dbm.h)
* The include file for ndbm users was renamed ndbm.h. (It was gndbm.h.)

Version 0.9

* The hash function changed.
* The file format changed.
* There was a complete rewrite of falloc.c.
* There were added compatiblity routines for ndbm.
* The file names for dbm compatibility routines were made to look like dbm.
* Test programs changed.
* Support for System V.
* Various other small changes.
* The need for recovery and associated code was removed.


----------------------------------------------------------------------
Copyright information:

Copyright (C) 1990-2016 Free Software Foundation, Inc.

   Permission is granted to anyone to make or distribute verbatim copies
   of this document as received, in any medium, provided that the
   copyright notice and this permission notice are preserved,
   thus giving the recipient permission to redistribute in turn.

   Permission is granted to distribute modified versions
   of this document, or of portions of it,
   under the above conditions, provided also that they
   carry prominent notices stating who last changed them.

Local variables:
mode: outline
paragraph-separate: "[ 	]*$"
eval: (add-hook 'write-file-hooks 'time-stamp)
time-stamp-start: "changes. "
time-stamp-format: "%:y-%02m-%02d"
time-stamp-end: "\n"
end:

Return to:

Send suggestions and report system problems to the System administrator.