Mail Archives: djgpp/2016/05/29/18:21:10
This is a port of GNU dbm 1.12 to MSDOS/DJGPP.
GNU dbm (gdbm) is a set of database routines that use extendible hashing
and works similar to the standard UNIX dbm routines. The library provides
also an optional compatibility layer for UNIX-like dbm and ndbm calls.
These routines are provided to a programmer needing to create and manipulate
a hashed database. gdbm is NOT a complete database package for an end user.
DJGPP specific changes.
=======================
In this port the support for DJGPP 2.03 has been droped. This port version
is compiled using DJGPP 2.05 and will offer file locking support if the used
OS provides the locking capability. All other changes concern DOS specific
issues like the reading and writing in binary mode, the handling of mixed
slashes and backslashes in paths, the closing of destination and source files
before renaming them and the correct initialization of the hash table
directory for a new data base files. This initialization is very dependent
on the st_blksize value returned by fstat(). This value must always be an
integral multiple of 512 or the initialization will fail and no new data base
file will be created.
The dbm and ndbm specific functions have been moved into a separate library.
This means that there are two libraries:
- libgdbm.a containing all gdbm specific functions and
- libgdbm_compat.a containing all dbm specific functions
If you need to compile an application using the old unix dbm functions you
will have to put the compat lib before the gdbm lib like this:
gcc application.c -lgdbm_compat -lgdbm
Now you will have access to the dbm compatibility functions. Please note,
that these compatibility functions are mapped to the equivalent gdbm functions
so you must link both libraries in the order shown in the example above.
The port does neither support mmap() for I/O operations nor the close-on-exec
flag in gdbm_open (GDBM_CLOEXEC).
Apart from the standard config.bat options like nls, cache and no-dep, the
following option flags can be selected to configure and build the sources:
compat or no-compat, if not specified, "compat" is the default.
Build and install libgdbm_compat, a compatibility layer which provides
UNIX-like dbm and ndbm interfaces.
export or no-export, if not specified, "export" is the default.
Build and install gdbmexport with the specified gdbm 1.8 library.
If this option is specified, the configure script will get
--with-gdbm183-library=-lgdbm
passed as option and GDBM183_LIBDIR and GDBM183_INCLUDEDIR will be
set to /dev/env/DJDIR/lib and /dev/env/DJDIR/include repectively.
This means that you must have gdbm183b installed before you can
build gdbmexport.exe. gdbmexport.exe will be linked with the
library of gdbm183b.
The port has been configured and compiled with NLS support enabled using the
latest ports of libiconv, libunistring and gettext.
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/licv114br2.zip
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/luns093br2.zip
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/gtxt194b.zip
The port has been tested by using it. I have used it on WinXP only.
It has worked flawlessly. I do not konw if this will ever be the case on
FreeDOS. I have never used/tested them in that environment.
The port has been configured and compiled on WinXP SP3 and Win98SE using
gcc484b and bnu226br3. There is no guarantee that this may be possible
with any other DOS-like OS. Due to the massive use of long file names it
will not be possible to configure and compile without LFN support.
As usual, all djgpp specific files (diffs, README files, etc.) are stored in
the /djgpp directory. The sources have been configured to be build in the
/_build directory. If for some reason it does not work for you, delete its
contents and configure from scratch again.
For further information about GNU dbm please read the info docs and NEWS file.
This is an verbatim extract of the NEWS file:
-------------------------------------------------------------------------------
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
-------------------------------------------------------------------------------
The port consists of the usual three packages produced using djdev205
that can be downloaded from ftp.delorie.com and mirrors as (time stamp 2016-05-29):
GNU dbm 1.12 binaries, headers, libraries, info and man
format documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/gdbm112b.zip
GNU dbm 1.12 dvi, html, pdf and ps format documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/gdbm112d.zip
GNU dbm 1.12 source:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/gdbm112s.zip
Send GNU dbm specific bug reports to <bug-gdbm AT gnu DOT org>.
Send suggestions and bug reports concerning the DJGPP port to
comp.os.msdos.djgpp or <djgpp AT delorie DOT com>.
Enjoy.
Guerrero, Juan Manuel <juan DOT guerrero AT gmx DOT de>
- Raw text -