[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: More on ldbm_initialize in libraries/libldbm/ldbm.c



I added the backend "directory" directive to easily set a db
home for the (shared) db environment.  Namely, I got annoyed
at the __db... files getting created in the current working
directory.  As you noted, the current approach doesn't work
as intended.  It either should be fixed or removed.  I was
planning on removing it... but am open to suggestions (or
running code).

Kurt

At 03:43 PM 6/20/2001, Randy Kunkee wrote:
>The home that is passed to ldbm_initialize (from back-ldbm/init.c) is
>not yet initialized (ie. points to NULL), and therefore has no effect on
>the underlying database calls.  However, your new routine,
>ldbm_initialize_env, is called later to initialize DB3, with the a
>different structure member (li->li_directory) that does contains the
>home.  This has the unfortunate consequence of breaking the ldbm_open
>calls in the tests, because relative directory paths are used in
>slapd.conf (but only for DB3 at this time).
>
>It seems that by the time ldbm_initialize is called, lbi->lbi_directory
>should be set, but it isn't.  Actually, I don't even know why they
>bother having an lbi_directory member there -- it makes no sense.  At
>that point it is not yet time to deal with backend-specific
>configurations, and none are available.  The easiest fix right now would
>be to not set the home at all, although there are certainly advantages
>in setting it.
>
>If I gather correctly, ldbm_back_open is the function to initialize the
>portion of the backend environment that will be shared by all instances
>of a given type of backend (in this case back-ldbm).  For back-ldbm, it
>allocates a  private structure, of type ldbm_backend_info, which has the
>member lbi_directory.
>
>Later, the function ldbm_back_db_open(BackendDB *be) has
>li->li_directory available, and is initialized.  Thinking out loud
>here.  I'm open to suggestions.
>
>Randy