[Date Prev][Date Next]
Re: back-bdb2 <-> back-ldbm
Kurt Spanier writes:
> To avoid conflicts, I have moved ALL non-static functions in back-bdb2
> into their own name-space, bdb2_ and bdb2i_, respectively. That is the
> situation for the moment.
Oh, I see. Personally I wouldn't have moved any files until they needed
to be moved, but I guess that's a matter of taste.
> Now, how could you merge certain source files, when functions in those
> files will call backend-specific versions of functions that completely
> differ from each other ?
Compile bdb2 with -DUSE_BDB2 or something, and maybe back-ldbm with
-DUSE_LDBM. Then say
# define db_some_func bdb2i_some_func
# define db_some_func ldbm_some_func
and call/declare `db_some_func' in the .c file and proto-*.h file
instead of calling/declaring `bdb2_some_func' & `ldbm_some_func'.
> You had to decide on the functions' name at run-time, depending in the
> question, which backend you really use at the moment.
I don't see why anyone would use ldbm if they had bdb2, but if you do
need to support both at the same time, that's easy enough:
back-bdb2/foo.c could contain simply
or Makefile could compile ../back-ldbm/foo.c or copy it.
back-bdb2/Makefile would compile with -DUSE_BDB2, back-ldbm/Makefile
> Merging the code of both backends again would also be no alternative.
> Unless you really prefer one backend over the other, you had to include
> a lot of run-time decision code (not #ifdef, since that compile-time
> decision), that would make the implementation much more ugly, I fear.
I don't quite understand what you mean here, but I did assume that only
some files would be merged. Files that are too different would have
gotten an #ifdef mess which was worse than having 2 separate files.
> But if you have a look to
> libraries/libldbm/ldbm.c and include/ldbm.h it's easy to see, that
> Berkeley DB really is preferred over the others, once you have it. So
> running the others in parallel is a non-possibility, even with the 'old'
> back-ldbm. Why not really shut off back-ldbm when you configure
> '--with-bdb2' ? This would indeed give the possibility to merge the code
Agreed. And like I said, it wouldn't be hard to hack it to support both
anyway, if someone really wants it.