From petede@sac.sfbay.sun.com Tue Oct 21 07:55:34 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LEtX5p005374
	for <psarc-ext@sac.sfbay.Sun.COM>; Tue, 21 Oct 2008 07:55:34 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m9LEtTbi019112;
	Tue, 21 Oct 2008 22:55:32 +0800 (SGT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9300701G4I6Y00@nwk-avmta-2.sfbay.sun.com>; Tue,
 21 Oct 2008 07:55:30 -0700 (PDT)
Received: from dm-sfbay-01.sfbay.sun.com ([129.145.155.118])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K93005NXG4HWQ30@nwk-avmta-2.sfbay.sun.com>; Tue,
 21 Oct 2008 07:55:30 -0700 (PDT)
Received: from sac.sfbay.sun.com (new-sac.SFBay.Sun.COM [129.146.175.65])
	by dm-sfbay-01.sfbay.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2)
 with ESMTP id m9LEtSxc003717; Tue, 21 Oct 2008 07:55:28 -0700 (PDT)
Received: from sac.sfbay.sun.com (localhost [127.0.0.1])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LEtRkX005363; Tue,
 21 Oct 2008 07:55:27 -0700 (PDT)
Received: (from petede@localhost)
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8/Submit) id m9LEtRh5005359; Tue,
 21 Oct 2008 07:55:27 -0700 (PDT)
Date: Tue, 21 Oct 2008 07:55:27 -0700 (PDT)
From: Peter Dennis <petede@sac.sfbay.sun.com>
Subject: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack timeout
 10/28/2008]
To: PSARC-ext@sun.com
Cc: Martina.Tomisova@sun.com
Message-id: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
Status: RO
Content-Length: 2846


Template Version: @(#)sac_nextcase %I% %G% SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
	 Integrate gbm (gnu-dbm) into Solaris
    1.2. Name of Document Author/Supplier:
	 Author:  Martina Tomisova
    1.3  Date of This Document:
	21 October, 2008
4. Technical Description
Proposal:

        Integrate gbm (gnu-dbm) into Solaris.

Detail:

        A set of database routines that use extensible hashing. It works
        like ndbm, however it adds support for arbitrary length data in
        the database, as previously (at dbm or ndbm) all data had had a
        fixed maximum length.

        It also contains the compatibility library which behaves exactly
        like dbm or ndbm library (including header files so it can fully
        supply those libraries).

        The current version of gdbm is 1.8.3 at the time of this case.

	Example man page in the case's materials directory.

Release Binding:

	Micro


Exported Interfaces:

        SUNWgnu-dbm                       Committed     Package name

        /usr/lib/libgdbm.so               Uncommitted   Shared object
                                                        library API's

        /usr/lib/libgdbm.so.3             Uncommitted   Symbolic link to
							libgdbm.so

        /usr/lib/libgdbm.so.3.0.0         Uncommitted   Symbolic link
							libgdbm.so

        /usr/lib/libgdbm_compat.so        Uncommitted   Shared object
                                                        library
                                                        compatibility
							API's

        /usr/lib/libgdbm_compat.so.3      Uncommitted   Symbolic link
                                                    to libgdbm_compat.so

        /usr/lib/libgdbm_compat.so.3.0.0  Uncommitted   Symbolic link
                                                    to libgdbm_compat.so

        /usr/include/gdbm/                Uncommitted   Directory*

        /usr/include/gdbm/gdbm.h          Uncommitted   Header file

        /usr/include/gdbm/ndbm.h          Uncommitted   Header file

        /usr/include/gdbm/dbm.h           Uncommitted   Header file

        * This /usr/include/gdbm/ directory should point out that these
        header files does not belong to the original libraries and are
        the part of gdbm compatibility routines. So there could be also
        installed original libraries simultaneously. That's why there is
        this directory.


References:

 [1] http://www.gnu.org/software/gdbm/
     Leader(s) of gdbm project: Jason Downs <downsj@downsj.com>
 [2] 6744694 - Integrate gdbm into Solaris.


6. Resources and Schedule
    6.4. Steering Committee requested information
   	6.4.1. Consolidation C-team Name:
		SFW
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


From ro@techfak.uni-bielefeld.de Tue Oct 21 08:13:28 2008
Received: from sunmail2sca.sfbay.sun.com (sunmail2sca.SFBay.Sun.COM [129.145.155.234])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LFDRk4005777
	for <psarc-ext@sac.sfbay.sun.com>; Tue, 21 Oct 2008 08:13:27 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail2sca.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9LFDPcO007338;
	Tue, 21 Oct 2008 08:13:26 -0700 (PDT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K930070NGYDQB00@nwk-avmta-2.sfbay.sun.com>; Tue,
 21 Oct 2008 08:13:25 -0700 (PDT)
Received: from sca-ea-mail-4.sun.com ([192.18.43.22])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K93005P4GYCWQ60@nwk-avmta-2.sfbay.sun.com>; Tue,
 21 Oct 2008 08:13:24 -0700 (PDT)
Received: from relay14i.sun.com
 (ip124.net129179-4.block1.us.syntegra.com [129.179.4.124])
	by sca-ea-mail-4.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m9LFA5Tf024252;
 Tue, 21 Oct 2008 15:13:24 +0000 (GMT)
Received: from mmp13es.mmp.us.syntegra.com ([160.41.208.13] [160.41.208.13])
 by relay14i.sun.com with ESMTP id BT-MMP-332508; Tue,
 21 Oct 2008 15:13:23 +0000 (Z)
Received: from relay13i.sun.com (relay13i.sun.com [129.179.4.123])
 by mmp13es.mmp.us.syntegra.com with ESMTP id BT-MMP-8374; Tue,
 21 Oct 2008 15:13:23 +0000 (Z)
Received: from smarthost.TechFak.Uni-Bielefeld.DE
 ([129.70.137.17] [129.70.137.17]) by relay1i.sun.com with ESMTP id
 BT-MMP-17970859; Tue, 21 Oct 2008 15:13:22 +0000 (Z)
Received: from manam.TechFak.Uni-Bielefeld.DE
 (manam.TechFak.Uni-Bielefeld.DE [129.70.137.47])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)	by smarthost.TechFak.Uni-Bielefeld.DE
 (Postfix) with ESMTP id 64E4548333; Tue, 21 Oct 2008 17:13:22 +0200 (CEST)
Date: Tue, 21 Oct 2008 17:13:22 +0200
From: Rainer Orth <ro@techfak.uni-bielefeld.de>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 	10/28/2008]
In-reply-to: Peter Dennis's message of "Tue, 21 Oct 2008 07:55:27 -0700 (PDT)"
Sender: ro@techfak.uni-bielefeld.de
To: Peter Dennis <petede@sac.sfbay.sun.com>
Cc: PSARC-ext@sun.com, Martina.Tomisova@sun.com
Message-id: <yddabcyt20d.fsf@manam.TechFak.Uni-Bielefeld.DE>
MIME-version: 1.0
X-Mailer: Gnus v5.6.44/Emacs 19.34
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
X-Brightmail-Tracker: AAAAAA==
X-Antispam: No, score=0.0/5.0, scanned in 0.329sec at (localhost [127.0.0.1])
	by smf-spamd v1.3.1 - http://smfs.sf.net/
Lines: 20
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
Status: RO
Content-Length: 934

Peter Dennis <petede@sac.sfbay.sun.com> writes:

>         It also contains the compatibility library which behaves exactly
>         like dbm or ndbm library (including header files so it can fully
>         supply those libraries).

I don't see the point of installing those compat headers and library.  To
my understanding, they are present only for those platforms that otherwise
lack libdbm and dbm.h/ndbm.h, which isn't true for Solaris.  (They are only
installed by the non-default install-compat Makefile target, btw.)  To me,
it seems far more natural to only install libgdbm and have gdbm.h in
/usr/include where it can be easily found.  I don't know of any other
platform which installs the headers into /usr/include/gdbm, so the library
will not be found easily otherwise.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University

From Mike.Oliver@sun.com Tue Oct 21 12:39:44 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LJdhrA016675
	for <psarc-ext@sac.sfbay.Sun.COM>; Tue, 21 Oct 2008 12:39:44 -0700 (PDT)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m9LJdbbj016185
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 22 Oct 2008 03:39:43 +0800 (SGT)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9300F03TA4IN00@nwk-avmta-1.sfbay.Sun.COM> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Tue, 21 Oct 2008 12:39:40 -0700 (PDT)
Received: from sca-es-mail-1.sun.com ([192.18.43.132])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K93004VCTA48DE0@nwk-avmta-1.sfbay.Sun.COM> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 21 Oct 2008 12:39:40 -0700 (PDT)
Received: from fe-sfbay-10.sun.com ([192.18.43.129])
	by sca-es-mail-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9LJdd24024144	for
 <PSARC-ext@sun.com>; Tue, 21 Oct 2008 12:39:39 -0700 (PDT)
Received: from conversion-daemon.fe-sfbay-10.sun.com by fe-sfbay-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9300H01T0MR200@fe-sfbay-10.sun.com>
 (original mail from Mike.Oliver@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 21 Oct 2008 12:39:39 -0700 (PDT)
Received: from sunray4.SFBay.Sun.COM ([10.6.102.104])
 by fe-sfbay-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb
 28 2007)) with ESMTPSA id <0K9300JETT9JU210@fe-sfbay-10.sun.com>; Tue,
 21 Oct 2008 12:39:20 -0700 (PDT)
Date: Tue, 21 Oct 2008 12:39:19 -0700
From: Mike Oliver <Mike.Oliver@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008]
In-reply-to: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
Sender: Mike.Oliver@sun.com
To: Peter Dennis <petede@sac.sfbay.sun.com>
Cc: PSARC-ext@sun.com, Martina.Tomisova@sun.com
Message-id: <48FE2FE7.3080102@sun.com>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
User-Agent: Thunderbird 2.0.0.18pre (X11/20081005)
Status: RO
Content-Length: 703

Peter Dennis wrote:

> Exported Interfaces:
[...]
>         /usr/lib/libgdbm.so               Uncommitted   Shared object
>                                                         library API's
> 
>         /usr/lib/libgdbm.so.3             Uncommitted   Symbolic link to
> 							libgdbm.so
> 
>         /usr/lib/libgdbm.so.3.0.0         Uncommitted   Symbolic link
> 							libgdbm.so
> 

This is upside-down.  The .so and .so.3 items should be symlinks to
the .so.3.0.0 item, which should be the actual shared object.  Also,
please confirm that the SONAME embedded in the shared object will be
"libgdbm.so.3".

Similarly for the libgdbm_compat items, if you ship them.

Mike.
-- 
mike.oliver@sun.com

From Mike.Oliver@sun.com Tue Oct 21 13:46:31 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LKkUFJ020091
	for <psarc-ext@sac.sfbay.Sun.COM>; Tue, 21 Oct 2008 13:46:31 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m9LKkH1R008078
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 22 Oct 2008 04:46:30 +0800 (SGT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9300309WDHXK00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Tue, 21 Oct 2008 14:46:29 -0600 (MDT)
Received: from sca-es-mail-1.sun.com ([192.18.43.132])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K93008U1WDG5SE0@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 21 Oct 2008 14:46:28 -0600 (MDT)
Received: from fe-sfbay-10.sun.com ([192.18.43.129])
	by sca-es-mail-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9LKkSXp002282	for
 <PSARC-ext@sun.com>; Tue, 21 Oct 2008 13:46:28 -0700 (PDT)
Received: from conversion-daemon.fe-sfbay-10.sun.com by fe-sfbay-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9300301VLDIJ00@fe-sfbay-10.sun.com>
 (original mail from Mike.Oliver@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 21 Oct 2008 13:46:28 -0700 (PDT)
Received: from sunray4.SFBay.Sun.COM ([10.6.102.104])
 by fe-sfbay-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb
 28 2007)) with ESMTPSA id <0K93000W1WD7SZD0@fe-sfbay-10.sun.com>; Tue,
 21 Oct 2008 13:46:20 -0700 (PDT)
Date: Tue, 21 Oct 2008 13:46:19 -0700
From: Mike Oliver <Mike.Oliver@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008]
In-reply-to: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
Sender: Mike.Oliver@sun.com
To: Peter Dennis <petede@sac.sfbay.sun.com>
Cc: PSARC-ext@sun.com, Martina.Tomisova@sun.com
Message-id: <48FE3F9B.4060906@sun.com>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
User-Agent: Thunderbird 2.0.0.18pre (X11/20081005)
Status: RO
Content-Length: 222

Peter Dennis wrote:
[...]
> 	Example man page in the case's materials directory.

Will man page(s) be delivered to the target system?  The Exported
Interfaces table makes no mention of them.

Mike.
-- 
mike.oliver@sun.com

From roehrich@kickball-mn.Central.Sun.COM Tue Oct 21 14:25:15 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LLPELk021701
	for <psarc-ext@sac.sfbay.sun.com>; Tue, 21 Oct 2008 14:25:15 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9LLPAJq025770
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Tue, 21 Oct 2008 22:25:14 +0100 (BST)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K930060MY5ZQK00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Tue, 21 Oct 2008 15:25:11 -0600 (MDT)
Received: from dm-central-02.central.sun.com ([129.147.62.5])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K93006QVY5ZHQ00@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 21 Oct 2008 15:25:11 -0600 (MDT)
Received: from kickball-mn.Central.Sun.COM
 (kickball-mn.Central.Sun.COM [10.1.170.217])	by dm-central-02.central.sun.com
 (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9LLP9nq029683; Tue,
 21 Oct 2008 15:25:09 -0600 (MDT)
Received: from kickball-mn.Central.Sun.COM (localhost [127.0.0.1])
	by kickball-mn.Central.Sun.COM (8.13.6+Sun/8.13.6)
 with ESMTP id m9LLHdoH024081; Tue, 21 Oct 2008 16:17:39 -0500 (CDT)
Received: (from roehrich@localhost)	by kickball-mn.Central.Sun.COM
 (8.13.6+Sun/8.13.6/Submit) id m9LLHdj2024080; Tue,
 21 Oct 2008 16:17:39 -0500 (CDT)
Date: Tue, 21 Oct 2008 16:17:39 -0500
From: Dean Roehrich <Dean.Roehrich@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008]
In-reply-to: <48FE3F9B.4060906@sun.com>
To: Mike Oliver <Mike.Oliver@sun.com>
Cc: Peter Dennis <petede@sac.sfbay.sun.com>, PSARC-ext@sun.com,
        Martina.Tomisova@sun.com
Message-id: <20081021211739.GA23974@kickball-mn.Central.Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
Content-disposition: inline
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <48FE3F9B.4060906@sun.com>
User-Agent: Mutt/1.5.9i
Status: RO
Content-Length: 519

On Tue, Oct 21, 2008 at 01:46:19PM -0700, Mike Oliver wrote:
> Peter Dennis wrote:
> [...]
> >	Example man page in the case's materials directory.
> 
> Will man page(s) be delivered to the target system?  The Exported
> Interfaces table makes no mention of them.

The manpages belong in the References section.

Or so I've been told,

	"Looks mostly good -- one nit: man pages aren't actually interfaces.
	But we'll collectively pretend we didn't see that.  ;-}"
		-- James Carlson, 13 June 2008, LSARC/2008/373.

Dean

From John.Plocher@sun.com Tue Oct 21 14:42:57 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LLguAc022196
	for <psarc-ext@sac.sfbay.Sun.COM>; Tue, 21 Oct 2008 14:42:56 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m9LLgrEU026083
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 22 Oct 2008 05:42:55 +0800 (SGT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K930080VYZI0300@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Tue, 21 Oct 2008 15:42:54 -0600 (MDT)
Received: from sca-es-mail-1.sun.com ([192.18.43.132])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9300674YZHHS40@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 21 Oct 2008 15:42:53 -0600 (MDT)
Received: from fe-sfbay-10.sun.com ([192.18.43.129])
	by sca-es-mail-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9LLgrlv009514	for
 <PSARC-ext@sun.com>; Tue, 21 Oct 2008 14:42:53 -0700 (PDT)
Received: from conversion-daemon.fe-sfbay-10.sun.com by fe-sfbay-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9300E01WYDJT00@fe-sfbay-10.sun.com>
 (original mail from John.Plocher@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 21 Oct 2008 14:42:53 -0700 (PDT)
Received: from wp668.SFBay.Sun.COM ([129.146.226.219])
 by fe-sfbay-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb
 28 2007)) with ESMTPSA id <0K9300E85YZELF50@fe-sfbay-10.sun.com>; Tue,
 21 Oct 2008 14:42:51 -0700 (PDT)
Date: Tue, 21 Oct 2008 14:42:46 -0700
From: John Plocher <John.Plocher@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008]
In-reply-to: <20081021211739.GA23974@kickball-mn.Central.Sun.COM>
Sender: John.Plocher@sun.com
To: Dean Roehrich <Dean.Roehrich@sun.com>
Cc: Mike Oliver <Mike.Oliver@sun.com>, PSARC-ext@sun.com,
        Martina.Tomisova@sun.com, Peter Dennis <petede@sac.sfbay.sun.com>
Message-id: <48FE4CD6.70505@Sun.Com>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <48FE3F9B.4060906@sun.com> <20081021211739.GA23974@kickball-mn.Central.Sun.COM>
User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914)
Status: RO
Content-Length: 1000

Dean Roehrich wrote:
> On Tue, Oct 21, 2008 at 01:46:19PM -0700, Mike Oliver wrote:
>> Peter Dennis wrote:
>> [...]
>>> 	Example man page in the case's materials directory.
>> Will man page(s) be delivered to the target system?  The Exported
>> Interfaces table makes no mention of them.
> 
> The manpages belong in the References section.
> 
> Or so I've been told,
> 
> 	"Looks mostly good -- one nit: man pages aren't actually interfaces.
> 	But we'll collectively pretend we didn't see that.  ;-}"
> 		-- James Carlson, 13 June 2008, LSARC/2008/373.


Man pages are not exported interfaces, but they certainly import (or 
adhere to) the interfaces defined by the man page project 
(directories, formats, names...)

Having them enumerated in a pkg manifest is usually sufficient, 
especially if they are going into the "right places".  The project's 
spec needs to note what those "right places" are in this situation; 
the easy place to do this is one line in the interface table :-)

   -John



From carlsonj@phorcys.east.sun.com Tue Oct 21 14:47:33 2008
Received: from sunmail2sca.sfbay.sun.com (sunmail2sca.SFBay.Sun.COM [129.145.155.234])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LLlX25022366
	for <psarc-ext@sac.sfbay.sun.com>; Tue, 21 Oct 2008 14:47:33 -0700 (PDT)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail2sca.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9LLlV3p027136;
	Tue, 21 Oct 2008 14:47:31 -0700 (PDT)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9300609Z77B800@nwk-avmta-1.sfbay.Sun.COM>; Tue,
 21 Oct 2008 14:47:31 -0700 (PDT)
Received: from phorcys.east.sun.com ([129.148.174.143])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9300GNCZ740H90@nwk-avmta-1.sfbay.Sun.COM>; Tue,
 21 Oct 2008 14:47:29 -0700 (PDT)
Received: from phorcys.east.sun.com (localhost [127.0.0.1])
	by phorcys.east.sun.com (8.14.3+Sun/8.14.3) with ESMTP id m9LLlRfM008804; Tue,
 21 Oct 2008 17:47:27 -0400 (EDT)
Received: (from carlsonj@localhost)
	by phorcys.east.sun.com (8.14.3+Sun/8.14.3/Submit) id m9LLlReS008801; Tue,
 21 Oct 2008 17:47:27 -0400 (EDT)
Date: Tue, 21 Oct 2008 17:47:27 -0400
From: James Carlson <james.d.carlson@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
	timeout 10/28/2008]
In-reply-to: <20081021211739.GA23974@kickball-mn.Central.Sun.COM>
To: Dean Roehrich <Dean.Roehrich@sun.com>
Cc: Mike Oliver <Mike.Oliver@sun.com>, PSARC-ext@sun.com,
        Martina.Tomisova@sun.com, Peter Dennis <petede@sac.sfbay.sun.com>
Message-id: <18686.19951.915935.581209@gargle.gargle.HOWL>
MIME-version: 1.0
X-Mailer: VM 7.01 under Emacs 21.3.1
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <48FE3F9B.4060906@sun.com> <20081021211739.GA23974@kickball-mn.Central.Sun.COM>
Status: RO
Content-Length: 523

Dean Roehrich writes:
> The manpages belong in the References section.

Yep.  It's assumed that appropriate documentation will be delivered.

It's not a bad idea to mention it, but documentation itself is not an
interface.  (Unless you or someone else is somehow parsing the text
automatically ...)

-- 
James Carlson, Solaris Networking              <james.d.carlson@sun.com>
Sun Microsystems / 35 Network Drive        71.232W   Vox +1 781 442 2084
MS UBUR02-212 / Burlington MA 01803-2757   42.496N   Fax +1 781 442 1677

From roehrich@kickball-mn.Central.Sun.COM Tue Oct 21 15:05:09 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9LM58Q6023050
	for <psarc-ext@sac.sfbay.sun.com>; Tue, 21 Oct 2008 15:05:08 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9LM55AE011227
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Tue, 21 Oct 2008 23:05:07 +0100 (BST)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K940090D00HL100@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Tue, 21 Oct 2008 16:05:05 -0600 (MDT)
Received: from dm-central-02.central.sun.com ([129.147.62.5])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K94006L400GHS90@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 21 Oct 2008 16:05:04 -0600 (MDT)
Received: from kickball-mn.Central.Sun.COM
 (kickball-mn.Central.Sun.COM [10.1.170.217])	by dm-central-02.central.sun.com
 (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9LM52P7053445; Tue,
 21 Oct 2008 16:05:02 -0600 (MDT)
Received: from kickball-mn.Central.Sun.COM (localhost [127.0.0.1])
	by kickball-mn.Central.Sun.COM (8.13.6+Sun/8.13.6)
 with ESMTP id m9LLvWgR029178; Tue, 21 Oct 2008 16:57:32 -0500 (CDT)
Received: (from roehrich@localhost)	by kickball-mn.Central.Sun.COM
 (8.13.6+Sun/8.13.6/Submit) id m9LLvWPX029177; Tue,
 21 Oct 2008 16:57:32 -0500 (CDT)
Date: Tue, 21 Oct 2008 16:57:32 -0500
From: Dean Roehrich <Dean.Roehrich@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008]
In-reply-to: <48FE4CD6.70505@Sun.Com>
To: John Plocher <John.Plocher@sun.com>
Cc: Mike Oliver <Mike.Oliver@sun.com>, PSARC-ext@sun.com,
        Martina.Tomisova@sun.com, Peter Dennis <petede@sac.sfbay.sun.com>
Message-id: <20081021215732.GA29103@kickball-mn.Central.Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
Content-disposition: inline
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <48FE3F9B.4060906@sun.com>
 <20081021211739.GA23974@kickball-mn.Central.Sun.COM> <48FE4CD6.70505@Sun.Com>
User-Agent: Mutt/1.5.9i
Status: RO
Content-Length: 1494

On Tue, Oct 21, 2008 at 02:42:46PM -0700, John Plocher wrote:
> Dean Roehrich wrote:
> >On Tue, Oct 21, 2008 at 01:46:19PM -0700, Mike Oliver wrote:
> >>Peter Dennis wrote:
> >>[...]
> >>>	Example man page in the case's materials directory.
> >>Will man page(s) be delivered to the target system?  The Exported
> >>Interfaces table makes no mention of them.
> >
> >The manpages belong in the References section.
> >
> >Or so I've been told,
> >
> >	"Looks mostly good -- one nit: man pages aren't actually interfaces.
> >	But we'll collectively pretend we didn't see that.  ;-}"
> >		-- James Carlson, 13 June 2008, LSARC/2008/373.
> 
> 
> Man pages are not exported interfaces, but they certainly import (or 
> adhere to) the interfaces defined by the man page project 
> (directories, formats, names...)
> 
> Having them enumerated in a pkg manifest is usually sufficient, 
> especially if they are going into the "right places".  The project's 
> spec needs to note what those "right places" are in this situation; 
> the easy place to do this is one line in the interface table :-)

I would have expected another entry in the References section, something
like this:

	References:
	 [1] http://www.gnu.org/software/gdbm/
	     Leader(s) of gdbm project: Jason Downs <downsj@downsj.com>
	 [2] 6744694 - Integrate gdbm into Solaris.
	 [3] gdbm.3c


In my past encounters with ARC members, that seemed to be what they were
looking for.  That should answer the question of "right place".

Dean

From Martina.Tomisova@Sun.COM Mon Oct 27 02:39:54 2008
Received: from sunmail2sca.sfbay.sun.com (sunmail2sca.SFBay.Sun.COM [129.145.155.234])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9R9dsss000530
	for <psarc-ext@sac.sfbay.sun.com>; Mon, 27 Oct 2008 02:39:54 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail2sca.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9R9drIL005027
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Mon, 27 Oct 2008 02:39:54 -0700 (PDT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9E007095IIWL00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Mon, 27 Oct 2008 03:39:54 -0600 (MDT)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9E00GBV5IH8E90@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 27 Oct 2008 03:39:54 -0600 (MDT)
Received: from fe-emea-10.sun.com (gmp-eb-lb-1-fe3.eu.sun.com [192.18.6.10])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9R9drdg019416	for
 <PSARC-ext@sun.com>; Mon, 27 Oct 2008 09:39:53 +0000 (GMT)
Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9E00H014M03000@fe-emea-10.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 27 Oct 2008 09:39:53 +0000 (GMT)
Received: from [129.157.16.191] by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K9E00B1V5HD6590@fe-emea-10.sun.com>; Mon,
 27 Oct 2008 09:39:15 +0000 (GMT)
Date: Mon, 27 Oct 2008 10:39:13 +0100
From: Martina Tomisova <Martina.Tomisova@Sun.COM>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008]
In-reply-to: <48FE2FE7.3080102@sun.com>
Sender: Martina.Tomisova@Sun.COM
To: Mike Oliver <Mike.Oliver@Sun.COM>
Cc: Peter Dennis <petede@sac.sfbay.sun.com>, PSARC-ext@Sun.COM
Message-id: <49058C41.8010600@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <48FE2FE7.3080102@sun.com>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 400

Hi Mike,

> This is upside-down.  The .so and .so.3 items should be symlinks to
> the .so.3.0.0 item, which should be the actual shared object. 
sorry, sure it should be as you write :)

> Also,
> please confirm that the SONAME embedded in the shared object will be
> "libgdbm.so.3".
Yes, it will.

> 
> Similarly for the libgdbm_compat items, if you ship them.
> 
> Mike.

Have a nice day,
Martina


From Martina.Tomisova@sun.com Mon Oct 27 03:01:09 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9RA18Ab000960
	for <psarc-ext@sac.sfbay.sun.com>; Mon, 27 Oct 2008 03:01:09 -0700 (PDT)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9RA13TF024612
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Mon, 27 Oct 2008 10:01:07 GMT
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9E002036HT0U00@nwk-avmta-1.sfbay.Sun.COM> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Mon, 27 Oct 2008 03:01:05 -0700 (PDT)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9E007Q26HSPDE0@nwk-avmta-1.sfbay.Sun.COM> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 27 Oct 2008 03:01:05 -0700 (PDT)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9RA143Z023414	for
 <PSARC-ext@sun.com>; Mon, 27 Oct 2008 10:01:04 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9E00M015PKTW00@fe-emea-09.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 27 Oct 2008 10:01:04 +0000 (GMT)
Received: from [129.157.16.191] by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K9E00AFC6HL28A0@fe-emea-09.sun.com>; Mon,
 27 Oct 2008 10:00:58 +0000 (GMT)
Date: Mon, 27 Oct 2008 11:00:57 +0100
From: Martina Tomisova <Martina.Tomisova@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008]
In-reply-to: <48FE3F9B.4060906@sun.com>
Sender: Martina.Tomisova@sun.com
To: Mike Oliver <Mike.Oliver@sun.com>
Cc: Peter Dennis <petede@sac.sfbay.sun.com>, PSARC-ext@sun.com
Message-id: <49059159.1050604@Sun.COM>
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_5qaYPupvIfdSR9w6GZOHgw)"
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <48FE3F9B.4060906@sun.com>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 18181

This is a multi-part message in MIME format.

--Boundary_(ID_5qaYPupvIfdSR9w6GZOHgw)
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT

Yes, there will be gdbm.3 file - the file is attached.

On 10/21/08 22:46, Mike Oliver wrote:
> Peter Dennis wrote:
> [...]
>>     Example man page in the case's materials directory.
> 
> Will man page(s) be delivered to the target system?  The Exported
> Interfaces table makes no mention of them.
> 
> Mike.


--Boundary_(ID_5qaYPupvIfdSR9w6GZOHgw)
Content-type: text/plain; name=gdbm.3
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=gdbm.3


Introduction to Library Functions                         GDBM(3)

NAME
     GDBM - The GNU database manager.  Includes dbm and ndbm com-
     patability. (Version 1.8.3.)

SYNOPSIS
     #include <gdbm/gdbm.h>

     extern gdbm_error
     gdbm_errno

     extern char
     *gdbm_version

     GDBM_FILE
     gdbm_open (name, block_size, read_write, mode, fatal_func)
     char * name;
     int block_size, read_write, mode;
     void (*fatal_func) ();

     void
     gdbm_close (dbf)
     GDBM_FILE dbf;

     int
     gdbm_store (dbf, key, content, flag)
     GDBM_FILE dbf;
     datum key, content;
     int flag;

     datum
     gdbm_fetch (dbf, key)
     GDBM_FILE dbf;
     datum key;

     int
     gdbm_delete (dbf, key)
     GDBM_FILE dbf;
     datum key;

     datum
     gdbm_firstkey (dbf)
     GDBM_FILE dbf;

     datum
     gdbm_nextkey (dbf, key)
     GDBM_FILE dbf;
     datum key;

     int
     gdbm_reorganize (dbf)
     GDBM_FILE dbf;

SunOS 5.10           Last change: 10/15/2002                    1

Introduction to Library Functions                         GDBM(3)

     void
     gdbm_sync (dbf)
     GDBM_FILE dbf;

     int
     gdbm_exists (dbf, key)
     GDBM_FILE dbf;
     datum key;

     char *
     gdbm_strerror (errno)
     gdbm_error errno;

     int
     gdbm_setopt (dbf, option, value, size)
     GDBM_FILE dbf;
     int option;
     int *value;
     int size;

     int
     gdbm_fdesc (dbf)
     GDBM_FILE dbf;

     DBM Compatability routines:

     #include <gdbm/dbm.h>

     int
     dbminit (name)
     char *name;

     int
     store (key, content)
     datum key, content;

     datum
     fetch (key)
     datum key;

     int
     delete (key)
     datum key;

     datum
     firstkey ()

     datum
     nextkey (key)
     datum key;

SunOS 5.10           Last change: 10/15/2002                    2

Introduction to Library Functions                         GDBM(3)

     int
     dbmclose ()

     NDBM Compatability routines:

     #include <gdbm/ndbm.h>

     DBM
     *dbm_open (name, flags, mode)
     char *name;
     int flags, mode;

     void
     dbm_close (file)
     DBM *file;

     datum
     dbm_fetch (file, key)
     DBM *file;
     datum key;

     int
     dbm_store (file, key, content, flags)
     DBM *file;
     datum key, content;
     int flags;

     int
     dbm_delete (file, key)
     DBM *file;
     datum key;

     datum
     dbm_firstkey (file)
     DBM *file;

     datum
     dbm_nextkey (file)
     DBM *file;

     int
     dbm_error (file)
     DBM *file;

     int
     dbm_clearerr (file)
     DBM *file;

     int
     dbm_pagfno (file)
     DBM *file;

SunOS 5.10           Last change: 10/15/2002                    3

Introduction to Library Functions                         GDBM(3)

     int
     dbm_dirfno (file)
     DBM *file;

     int
     dbm_rdonly (file)
     DBM *file;

DESCRIPTION
     GNU dbm is a library of routines  that  manages  data  files
     that contain key/data pairs.  The access provided is that of
     storing, retrieval, and deletion by  key  and  a  non-sorted
     traversal of all keys.  A process is allowed to use multiple
     data files at the same time.

     A process that opens a gdbm file is designated as a "reader"
     or  a  "writer".   Only  one writer may open a gdbm file and
     many readers may open the file.  Readers and writers can not
     open the gdbm file at the same time. The procedure for open-
     ing a gdbm file is:

       GDBM_FILE dbf;

       dbf = gdbm_open  (  name,  block_size,  read_write,  mode,
     fatal_func )

     Name is the name of the file (the complete name,  gdbm  does
     not  append any characters to this name).  Block_size is the
     size of a single transfer from disk to memory. This  parame-
     ter  is  ignored unless the file is a new file.  The minimum
     size is 512.  If it is less than 512, dbm will use the  stat
     block  size for the file system.  Read_write can have one of
     the following values:
     GDBM_READER reader
     GDBM_WRITER writer
     GDBM_WRCREAT writer - if database does not exist create  new
     one
     GDBM_NEWDB writer - create new database  regardless  if  one
     exists
     For the last three (writers of the database)  the  following
     may  be added added to read_write by bitwise or:  GDBM_SYNC,
     which causes all database operations to be  synchronized  to
     the  disk,  and GDBM_NOLOCK, which prevents the library from
     performing any locking on the  database  file.   The  option
     GDBM_FAST  is  now  obsolete, since gdbm defaults to no-sync
     mode.
     Mode is the file mode (see chmod(2) and open(2)) if the file
     is  created.  (*Fatal_func) () is a function for dbm to call
     if it detects a fatal error.  The  only  parameter  of  this
     function  is  a string.  If the value of 0 is provided, gdbm

SunOS 5.10           Last change: 10/15/2002                    4

Introduction to Library Functions                         GDBM(3)

     will use a default function.

     The return value dbf is the pointer needed by all other rou-
     tines  to  access that gdbm file.  If the return is the NULL
     pointer, gdbm_open was not successful.  The  errors  can  be
     found  in gdbm_errno for gdbm errors and in errno for system
     errors.  (For error codes, see gdbmerrno.h.)

     In all of the following calls, the parameter dbf  refers  to
     the pointer returned from gdbm_open.

     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:
       gdbm_close (dbf);

     The database is used  by  3  primary  routines.   The  first
     stores data in the database.

       ret = gdbm_store ( dbf, key, content, flag )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data.   Content  is  the data to be associated with the key.
     Flag can have one of the following values:
     GDBM_INSERT insert only, generate an error if key exists
     GDBM_REPLACE replace contents if key exists.

     If a reader calls gdbm_store, the return value will be   -1.
     If  called  with GDBM_INSERT and key is in the database, the
     return value will be 1.  Otherwise, the return value is 0.

     NOTICE: If you store data for a key that is already  in  the
     data  base,  gdbm replaces the old data with the new data if
     called with GDBM_REPLACE.  You do not get two data items for
     the same key and you do not get an error from gdbm_store.

     NOTICE: The size in gdbm is not restricted like dbm or ndbm.
     Your data can be as large as you want.

     To search for some data:

       content = gdbm_fetch ( dbf, key )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data.

     If the dptr element of the return value is NULL, no data was
     found.  Otherwise the return value is a pointer to the found

SunOS 5.10           Last change: 10/15/2002                    5

Introduction to Library Functions                         GDBM(3)

     data.  The storage space for the dptr element  is  allocated
     using  malloc(3C).   Gdbm  does  not automatically free this
     data.  It is the programmer's responsibility  to  free  this
     storage when it is no longer needed.

     To search for some data, without retrieving it:

       ret = gdbm_exists ( dbf, key )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data to search for.

     If the key is found within the database,  the  return  value
     ret  will be true.  If nothing appropiate is found, ret will
     be false.  This routine is useful for checking for the exis-
     tance  of a record, without performing the memory allocation
     done by gdbm_fetch.

     To remove some data from the database:

       ret = gdbm_delete ( dbf, key )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data.

     The return value is -1 if the item is  not  present  or  the
     requester is a reader.  The return value is 0 if there was a
     successful delete.

     The next two routines allow for accessing all items  in  the
     database.   This  access  is  not  key sequential, but it is
     guaranteed to visit every key in the  database  once.   (The
     order has to do with the hash values.)

       key = gdbm_firstkey ( dbf )

       nextkey = gdbm_nextkey ( dbf, key )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data.

     The return values are both of type datum.  If the dptr  ele-
     ment  of  the return value is NULL, there is no first key or
     next key.  Again notice that dptr points to  data  allocated
     by malloc(3C) and gdbm will not free it for you.

     These functions were  intended  to  visit  the  database  in
     read-only algorithms, for instance, to validate the database
     or similar operations.

SunOS 5.10           Last change: 10/15/2002                    6

Introduction to Library Functions                         GDBM(3)

     File `visiting' is based on  a  `hash  table'.   gdbm_delete
     re-arranges  the hash table to make sure that any collisions
     in the table do not leave some item `un-findable'.  The ori-
     ginal key order is NOT guaranteed to remain unchanged in ALL
     instances.  It is possible that some key will not be visited
     if a loop like the following is executed:

        key = gdbm_firstkey ( dbf );
        while ( key.dptr ) {
           nextkey = gdbm_nextkey ( dbf, key );
           if ( some condition ) {
              gdbm_delete ( dbf, key );
              free ( key.dptr );
           }
           key = nextkey;
        }

     The following routine should be used very infrequently.

       ret = gdbm_reorganize ( dbf )

     If you have had a lot of deletions and would like to  shrink
     the  space used by the gdbm file, this routine will reorgan-
     ize the database.  Gdbm will not shorten  the  length  of  a
     gdbm  file  except  by  using this reorganization.  (Deleted
     file space will be reused.)

     Unless your database was opened  with  the  GDBM_SYNC  flag,
     gdbm  does  not  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.

       gdbm_sync ( dbf )

     It will not return until the disk file state is  syncronized
     with the in-memory state of the database.

     To convert a gdbm error code into  English  text,  use  this
     routine:

       ret = gdbm_strerror ( errno )

     Where errno is of type gdbm_error, usually the global  vari-
     able gdbm_errno.  The appropiate phrase is returned.

     Gdbm now supports the ability to set certain options  on  an
     already open database.

SunOS 5.10           Last change: 10/15/2002                    7

Introduction to Library Functions                         GDBM(3)

       ret = gdbm_setopt ( dbf, option, value, size )

     Where dbf is the  return  value  from  a  previous  call  to
     gdbm_open,  and  option  specifies which option to set.  The
     valid options are currently:

       GDBM_CACHESIZE - Set the size of the internal bucket
       cache. This option may only be set once on each GDBM_FILE
       descriptor, and is set automatically to 100 upon the first
       access to the database.

       GDBM_FASTMODE - Set fast mode to either on or off.  This
       allows fast mode to be toggled on an already open and
       active database. value (see below) should be set to either
       TRUE or FALSE.  This option is now obsolete.

       GDBM_SYNCMODE - Turn on or off file system synchronization
     operations.
       This setting defaults to off; value (see below) should  be
     set to either
       TRUE or FALSE.

       GDBM_CENTFREE - Set central free block pool to  either  on
     or off.
       The default is off, which is how previous versions of Gdbm
       handled free blocks. If set, this option causes all subse-
     quent free
       blocks to be placed  in  the  global  pool,  allowing  (in
     thoery)
       more file space to be  reused  more  quickly.  value  (see
     below) should
       be set to either TRUE or FALSE.
       NOTICE: This feature is still under study.

       GDBM_COALESCEBLKS - Set free block merging to either on or
     off.
       The default is off, which is how previous versions of Gdbm
       handled free blocks. If set, this option  causes  adjacent
     free blocks
       to be merged. This can become a CPU expensive process with
     time, though,
       especially if  used  in  conjunction  with  GDBM_CENTFREE.
     value
       (see below) should be set to either TRUE or FALSE.
       NOTICE: This feature is still under study.

     value is the value to set option to, specified as an integer
     pointer.   size is the size of the data pointed to by value.
     The return value will be -1 upon failure, or 0 upon success.
     The global variable gdbm_errno will be set upon failure.

     For instance, to set a database to use a cache of 10,  after

SunOS 5.10           Last change: 10/15/2002                    8

Introduction to Library Functions                         GDBM(3)

     opening  it with gdbm_open, but prior to accessing it in any
     way, the following code could be used:

       int value = 10;

       ret   =   gdbm_setopt(   dbf,   GDBM_CACHESIZE,    &value,
     sizeof(int));

     If the database was opened with the  GDBM_NOLOCK  flag,  the
     user may wish to perform their own file locking on the data-
     base file in order to prevent multiple writers operating  on
     the same file simultaneously.

     In order to support this, the  gdbm_fdesc  routine  is  pro-
     vided.

       ret = gdbm_fdesc ( dbf )

     Where dbf is the  return  value  from  a  previous  call  to
     gdbm_open.   The return value will be the file descriptor of
     the database.

     The following two external variables may be useful:

     gdbm_errno is the variable that  contains  more  information
     about gdbm errors.  (gdbm.h has the definitions of the error
     values and defines gdbm_errno as an external variable.)
     gdbm_version is the string containing the  version  informa-
     tion.

     There are a few more things of interest.  First, gdbm  files
     are  not  "sparse".   You  can copy them with the UNIX cp(1)
     command and they will not expand  in  the  copying  process.
     Also,  there  is  a compatibility mode for use with programs
     that already use UNIX dbm.  In this compatibility  mode,  no
     gdbm  file  pointer  is required by the programmer, and only
     one file may be opened at a time.  All users in  compatibil-
     ity  mode  are assumed to be writers.  If the gdbm file is a
     read only, it will fail as a writer, but will  also  try  to
     open  it as a reader.  All returned pointers in datum struc-
     tures point to data that gdbm WILL  free.   They  should  be
     treated as static pointers (as standard UNIX dbm does).

LINKING
     This library is accessed by specifying -lgdbm  as  the  last
     parameter to the compile line, e.g.:

          gcc -o prog prog.c -lgdbm

SunOS 5.10           Last change: 10/15/2002                    9

Introduction to Library Functions                         GDBM(3)

     If you wish to use the dbm or ndbm  compatibility  routines,
     you must link in the gdbm_compat library as well.  For exam-
     ple:

          gcc -o prog proc.c -lgdbm -lgdbm_compat

BUGS
SEE ALSO
     dbm, ndbm

AUTHOR
     by Philip A. Nelson and Jason Downs.  Copyright (C)  1990  -
     1999 Free Software Foundation, Inc.

     GDBM is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as pub-
     lished by the Free Software Foundation; either version 1, or
     (at your option) any later version.

     GDBM is distributed in the hope that it will be useful,  but
     WITHOUT  ANY  WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A  PARTICULAR  PURPOSE.   See
     the GNU General Public License for more details.

     You should have received a copy of the  GNU  General  Public
     License  along  with  GDBM;  see  the file COPYING.  If not,
     write to the Free Software Foundation, 675  Mass  Ave,  Cam-
     bridge, MA 02139, USA.

     You may contact the original author by:
        e-mail:  phil@cs.wwu.edu
       us-mail:  Philip A. Nelson
     Computer Science Department
     Western Washington University
     Bellingham, WA 98226

     You may contact the current maintainer by:
        e-mail:  downsj@downsj.com

ATTRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:

SunOS 5.10           Last change: 10/15/2002                   10

Introduction to Library Functions                         GDBM(3)

     _______________________________________
    |   ATTRIBUTE TYPE   |  ATTRIBUTE VALUE|
    |____________________|_________________|
    | Availability       |  SUNWgnu-dbm    |
    |____________________|_________________|
    | Interface Stability|  Uncommitted    |
    |____________________|_________________|

NOTES
     Source for gdbm is available on http://opensolaris.org.

SunOS 5.10           Last change: 10/15/2002                   11



--Boundary_(ID_5qaYPupvIfdSR9w6GZOHgw)--

From Martina.Tomisova@sun.com Mon Oct 27 03:17:15 2008
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9RAH4Su001034
	for <psarc-ext@sac.sfbay.sun.com>; Mon, 27 Oct 2008 03:17:14 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9RAGpRk027426
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Mon, 27 Oct 2008 04:16:54 -0600 (MDT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9E006077847Q00@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Mon, 27 Oct 2008 03:16:52 -0700 (PDT)
Received: from gmp-eb-inf-2.sun.com ([192.18.6.24])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9E0005F77X6XC0@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 27 Oct 2008 03:16:51 -0700 (PDT)
Received: from fe-emea-10.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11])
	by gmp-eb-inf-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9RAGigI025306	for
 <PSARC-ext@sun.com>; Mon, 27 Oct 2008 10:16:44 +0000 (GMT)
Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9E00A016382000@fe-emea-10.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 27 Oct 2008 10:16:44 +0000 (GMT)
Received: from [129.157.16.191] by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K9E00BO477U65B0@fe-emea-10.sun.com>; Mon,
 27 Oct 2008 10:16:43 +0000 (GMT)
Date: Mon, 27 Oct 2008 11:16:42 +0100
From: Martina Tomisova <Martina.Tomisova@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 	10/28/2008]
In-reply-to: <yddabcyt20d.fsf@manam.TechFak.Uni-Bielefeld.DE>
Sender: Martina.Tomisova@sun.com
To: Rainer Orth <ro@techfak.uni-bielefeld.de>
Cc: Peter Dennis <petede@sac.sfbay.sun.com>, PSARC-ext@sun.com
Message-id: <4905950A.8000703@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <yddabcyt20d.fsf@manam.TechFak.Uni-Bielefeld.DE>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 960

Hi Rainer,

> I don't see the point of installing those compat headers and library.  To
> my understanding, they are present only for those platforms that otherwise
> lack libdbm and dbm.h/ndbm.h, which isn't true for Solaris.  (They are only
> installed by the non-default install-compat Makefile target, btw.) To me,
> it seems far more natural to only install libgdbm and have gdbm.h 
I install those because they are the part of gnu-dbm project. If I 
install them too the user will be able to choose which libraries he 
would use - the originals or new ones (gdbm compatible). However I agree 
that this part is debatable.

> in /usr/include where it can be easily found.

That's right however the directory /usr/include/gdbm/ can imho be easily 
found too.

> I don't know of any other
> platform which installs the headers into /usr/include/gdbm, so the library
> will not be found easily otherwise.
> 
> 	Rainer
> 
Thank you and enjoy the day,
Martina

From Martina.Tomisova@sun.com Mon Oct 27 04:33:09 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9RBX84j002244
	for <psarc-ext@sac.sfbay.sun.com>; Mon, 27 Oct 2008 04:33:08 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9RBX4Sv027439
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Mon, 27 Oct 2008 11:33:07 GMT
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9E00G01AR6TF00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@Sun.COM); Mon, 27 Oct 2008 05:33:06 -0600 (MDT)
Received: from gmp-eb-inf-2.sun.com ([192.18.6.24])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9E00GLUAR483C0@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@Sun.COM); Mon,
 27 Oct 2008 05:33:05 -0600 (MDT)
Received: from fe-emea-10.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11])
	by gmp-eb-inf-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9RBX4W1008892	for
 <PSARC-ext@Sun.COM>; Mon, 27 Oct 2008 11:33:04 +0000 (GMT)
Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9E00F01A95AI00@fe-emea-10.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@Sun.COM (ORCPT PSARC-ext@Sun.COM); Mon,
 27 Oct 2008 11:33:04 +0000 (GMT)
Received: from [129.157.16.191] by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K9E003SBAQY3P10@fe-emea-10.sun.com> for PSARC-ext@Sun.COM
 (ORCPT PSARC-ext@Sun.COM); Mon, 27 Oct 2008 11:32:59 +0000 (GMT)
Date: Mon, 27 Oct 2008 12:32:58 +0100
From: Martina Tomisova <Martina.Tomisova@sun.com>
Subject: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack timeout
 10/28/2008] update
Sender: Martina.Tomisova@sun.com
To: PSARC-ext@sun.com
Message-id: <4905A6EA.2080304@Sun.COM>
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_YhGvZ5xf2aklEFeYZ+p2+g)"
X-PMX-Version: 5.4.1.325704
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 20532

This is a multi-part message in MIME format.

--Boundary_(ID_YhGvZ5xf2aklEFeYZ+p2+g)
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT

Hi all,

there is a new proposal (with bugs you have found repaired):



Proposal:

         Integrate gbm (gnu-dbm) into Solaris.

Detail:

         A set of database routines that use extensible hashing. It works
         like ndbm, however it adds support for arbitrary length data in
         the database, as previously (at dbm or ndbm) all data had had a
         fixed maximum length.

         It also contains the compatibility library which behaves exactly
         like dbm or ndbm library (including header files so it can fully
         supply those libraries).

         The current version of gdbm is 1.8.3 at the time of this case.

	Example man page in the case's materials directory.

Release Binding:

	Micro


Exported Interfaces:

         SUNWgnu-dbm                       Committed     Package name

         /usr/lib/libgdbm.so               Uncommitted  Symbolic link to
							libgdbm.so.3.0.0

         /usr/lib/libgdbm.so.3             Uncommitted   Symbolic link to
							libgdbm.so.3.0.0

         /usr/lib/libgdbm.so.3.0.0         Uncommitted   Shared object
                                                         library API's

         /usr/lib/libgdbm_compat.so        Uncommitted   Symbolic link
                                               to libgdbm_compat.so.3.0.0

         /usr/lib/libgdbm_compat.so.3      Uncommitted   Symbolic link
                                               to libgdbm_compat.so.3.0.0

         /usr/lib/libgdbm_compat.so.3.0.0  Uncommitted   Shared object
                                                         library
                                                         compatibility
							API's

         /usr/include/gdbm/                Uncommitted   Directory*

         /usr/include/gdbm/gdbm.h          Uncommitted   Header file

         /usr/include/gdbm/ndbm.h          Uncommitted   Header file

         /usr/include/gdbm/dbm.h           Uncommitted   Header file

         * This /usr/include/gdbm/ directory should point out that these
         header files does not belong to the original libraries and are
         the part of gdbm compatibility routines. So there could be also
         installed original libraries simultaneously. That's why there is
         this directory.


References:

  [1] http://www.gnu.org/software/gdbm/
      Leader(s) of gdbm project: Jason Downs <downsj@downsj.com>
  [2] 6744694 - Integrate gdbm into Solaris.
  [3] gdbm.3 - man page (attached)


6. Resources and Schedule
     6.4. Steering Committee requested information
    	6.4.1. Consolidation C-team Name:
		SFW
     6.5. ARC review type: FastTrack
     6.6. ARC Exposure: open

--Boundary_(ID_YhGvZ5xf2aklEFeYZ+p2+g)
Content-type: text/plain; name=gdbm.3
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=gdbm.3


Introduction to Library Functions                         GDBM(3)

NAME
     GDBM - The GNU database manager.  Includes dbm and ndbm com-
     patability. (Version 1.8.3.)

SYNOPSIS
     #include <gdbm/gdbm.h>

     extern gdbm_error
     gdbm_errno

     extern char
     *gdbm_version

     GDBM_FILE
     gdbm_open (name, block_size, read_write, mode, fatal_func)
     char * name;
     int block_size, read_write, mode;
     void (*fatal_func) ();

     void
     gdbm_close (dbf)
     GDBM_FILE dbf;

     int
     gdbm_store (dbf, key, content, flag)
     GDBM_FILE dbf;
     datum key, content;
     int flag;

     datum
     gdbm_fetch (dbf, key)
     GDBM_FILE dbf;
     datum key;

     int
     gdbm_delete (dbf, key)
     GDBM_FILE dbf;
     datum key;

     datum
     gdbm_firstkey (dbf)
     GDBM_FILE dbf;

     datum
     gdbm_nextkey (dbf, key)
     GDBM_FILE dbf;
     datum key;

     int
     gdbm_reorganize (dbf)
     GDBM_FILE dbf;

SunOS 5.10           Last change: 10/15/2002                    1

Introduction to Library Functions                         GDBM(3)

     void
     gdbm_sync (dbf)
     GDBM_FILE dbf;

     int
     gdbm_exists (dbf, key)
     GDBM_FILE dbf;
     datum key;

     char *
     gdbm_strerror (errno)
     gdbm_error errno;

     int
     gdbm_setopt (dbf, option, value, size)
     GDBM_FILE dbf;
     int option;
     int *value;
     int size;

     int
     gdbm_fdesc (dbf)
     GDBM_FILE dbf;

     DBM Compatability routines:

     #include <gdbm/dbm.h>

     int
     dbminit (name)
     char *name;

     int
     store (key, content)
     datum key, content;

     datum
     fetch (key)
     datum key;

     int
     delete (key)
     datum key;

     datum
     firstkey ()

     datum
     nextkey (key)
     datum key;

SunOS 5.10           Last change: 10/15/2002                    2

Introduction to Library Functions                         GDBM(3)

     int
     dbmclose ()

     NDBM Compatability routines:

     #include <gdbm/ndbm.h>

     DBM
     *dbm_open (name, flags, mode)
     char *name;
     int flags, mode;

     void
     dbm_close (file)
     DBM *file;

     datum
     dbm_fetch (file, key)
     DBM *file;
     datum key;

     int
     dbm_store (file, key, content, flags)
     DBM *file;
     datum key, content;
     int flags;

     int
     dbm_delete (file, key)
     DBM *file;
     datum key;

     datum
     dbm_firstkey (file)
     DBM *file;

     datum
     dbm_nextkey (file)
     DBM *file;

     int
     dbm_error (file)
     DBM *file;

     int
     dbm_clearerr (file)
     DBM *file;

     int
     dbm_pagfno (file)
     DBM *file;

SunOS 5.10           Last change: 10/15/2002                    3

Introduction to Library Functions                         GDBM(3)

     int
     dbm_dirfno (file)
     DBM *file;

     int
     dbm_rdonly (file)
     DBM *file;

DESCRIPTION
     GNU dbm is a library of routines  that  manages  data  files
     that contain key/data pairs.  The access provided is that of
     storing, retrieval, and deletion by  key  and  a  non-sorted
     traversal of all keys.  A process is allowed to use multiple
     data files at the same time.

     A process that opens a gdbm file is designated as a "reader"
     or  a  "writer".   Only  one writer may open a gdbm file and
     many readers may open the file.  Readers and writers can not
     open the gdbm file at the same time. The procedure for open-
     ing a gdbm file is:

       GDBM_FILE dbf;

       dbf = gdbm_open  (  name,  block_size,  read_write,  mode,
     fatal_func )

     Name is the name of the file (the complete name,  gdbm  does
     not  append any characters to this name).  Block_size is the
     size of a single transfer from disk to memory. This  parame-
     ter  is  ignored unless the file is a new file.  The minimum
     size is 512.  If it is less than 512, dbm will use the  stat
     block  size for the file system.  Read_write can have one of
     the following values:
     GDBM_READER reader
     GDBM_WRITER writer
     GDBM_WRCREAT writer - if database does not exist create  new
     one
     GDBM_NEWDB writer - create new database  regardless  if  one
     exists
     For the last three (writers of the database)  the  following
     may  be added added to read_write by bitwise or:  GDBM_SYNC,
     which causes all database operations to be  synchronized  to
     the  disk,  and GDBM_NOLOCK, which prevents the library from
     performing any locking on the  database  file.   The  option
     GDBM_FAST  is  now  obsolete, since gdbm defaults to no-sync
     mode.
     Mode is the file mode (see chmod(2) and open(2)) if the file
     is  created.  (*Fatal_func) () is a function for dbm to call
     if it detects a fatal error.  The  only  parameter  of  this
     function  is  a string.  If the value of 0 is provided, gdbm

SunOS 5.10           Last change: 10/15/2002                    4

Introduction to Library Functions                         GDBM(3)

     will use a default function.

     The return value dbf is the pointer needed by all other rou-
     tines  to  access that gdbm file.  If the return is the NULL
     pointer, gdbm_open was not successful.  The  errors  can  be
     found  in gdbm_errno for gdbm errors and in errno for system
     errors.  (For error codes, see gdbmerrno.h.)

     In all of the following calls, the parameter dbf  refers  to
     the pointer returned from gdbm_open.

     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:
       gdbm_close (dbf);

     The database is used  by  3  primary  routines.   The  first
     stores data in the database.

       ret = gdbm_store ( dbf, key, content, flag )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data.   Content  is  the data to be associated with the key.
     Flag can have one of the following values:
     GDBM_INSERT insert only, generate an error if key exists
     GDBM_REPLACE replace contents if key exists.

     If a reader calls gdbm_store, the return value will be   -1.
     If  called  with GDBM_INSERT and key is in the database, the
     return value will be 1.  Otherwise, the return value is 0.

     NOTICE: If you store data for a key that is already  in  the
     data  base,  gdbm replaces the old data with the new data if
     called with GDBM_REPLACE.  You do not get two data items for
     the same key and you do not get an error from gdbm_store.

     NOTICE: The size in gdbm is not restricted like dbm or ndbm.
     Your data can be as large as you want.

     To search for some data:

       content = gdbm_fetch ( dbf, key )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data.

     If the dptr element of the return value is NULL, no data was
     found.  Otherwise the return value is a pointer to the found

SunOS 5.10           Last change: 10/15/2002                    5

Introduction to Library Functions                         GDBM(3)

     data.  The storage space for the dptr element  is  allocated
     using  malloc(3C).   Gdbm  does  not automatically free this
     data.  It is the programmer's responsibility  to  free  this
     storage when it is no longer needed.

     To search for some data, without retrieving it:

       ret = gdbm_exists ( dbf, key )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data to search for.

     If the key is found within the database,  the  return  value
     ret  will be true.  If nothing appropiate is found, ret will
     be false.  This routine is useful for checking for the exis-
     tance  of a record, without performing the memory allocation
     done by gdbm_fetch.

     To remove some data from the database:

       ret = gdbm_delete ( dbf, key )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data.

     The return value is -1 if the item is  not  present  or  the
     requester is a reader.  The return value is 0 if there was a
     successful delete.

     The next two routines allow for accessing all items  in  the
     database.   This  access  is  not  key sequential, but it is
     guaranteed to visit every key in the  database  once.   (The
     order has to do with the hash values.)

       key = gdbm_firstkey ( dbf )

       nextkey = gdbm_nextkey ( dbf, key )

     Dbf is the pointer returned by gdbm_open.  Key  is  the  key
     data.

     The return values are both of type datum.  If the dptr  ele-
     ment  of  the return value is NULL, there is no first key or
     next key.  Again notice that dptr points to  data  allocated
     by malloc(3C) and gdbm will not free it for you.

     These functions were  intended  to  visit  the  database  in
     read-only algorithms, for instance, to validate the database
     or similar operations.

SunOS 5.10           Last change: 10/15/2002                    6

Introduction to Library Functions                         GDBM(3)

     File `visiting' is based on  a  `hash  table'.   gdbm_delete
     re-arranges  the hash table to make sure that any collisions
     in the table do not leave some item `un-findable'.  The ori-
     ginal key order is NOT guaranteed to remain unchanged in ALL
     instances.  It is possible that some key will not be visited
     if a loop like the following is executed:

        key = gdbm_firstkey ( dbf );
        while ( key.dptr ) {
           nextkey = gdbm_nextkey ( dbf, key );
           if ( some condition ) {
              gdbm_delete ( dbf, key );
              free ( key.dptr );
           }
           key = nextkey;
        }

     The following routine should be used very infrequently.

       ret = gdbm_reorganize ( dbf )

     If you have had a lot of deletions and would like to  shrink
     the  space used by the gdbm file, this routine will reorgan-
     ize the database.  Gdbm will not shorten  the  length  of  a
     gdbm  file  except  by  using this reorganization.  (Deleted
     file space will be reused.)

     Unless your database was opened  with  the  GDBM_SYNC  flag,
     gdbm  does  not  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.

       gdbm_sync ( dbf )

     It will not return until the disk file state is  syncronized
     with the in-memory state of the database.

     To convert a gdbm error code into  English  text,  use  this
     routine:

       ret = gdbm_strerror ( errno )

     Where errno is of type gdbm_error, usually the global  vari-
     able gdbm_errno.  The appropiate phrase is returned.

     Gdbm now supports the ability to set certain options  on  an
     already open database.

SunOS 5.10           Last change: 10/15/2002                    7

Introduction to Library Functions                         GDBM(3)

       ret = gdbm_setopt ( dbf, option, value, size )

     Where dbf is the  return  value  from  a  previous  call  to
     gdbm_open,  and  option  specifies which option to set.  The
     valid options are currently:

       GDBM_CACHESIZE - Set the size of the internal bucket
       cache. This option may only be set once on each GDBM_FILE
       descriptor, and is set automatically to 100 upon the first
       access to the database.

       GDBM_FASTMODE - Set fast mode to either on or off.  This
       allows fast mode to be toggled on an already open and
       active database. value (see below) should be set to either
       TRUE or FALSE.  This option is now obsolete.

       GDBM_SYNCMODE - Turn on or off file system synchronization
     operations.
       This setting defaults to off; value (see below) should  be
     set to either
       TRUE or FALSE.

       GDBM_CENTFREE - Set central free block pool to  either  on
     or off.
       The default is off, which is how previous versions of Gdbm
       handled free blocks. If set, this option causes all subse-
     quent free
       blocks to be placed  in  the  global  pool,  allowing  (in
     thoery)
       more file space to be  reused  more  quickly.  value  (see
     below) should
       be set to either TRUE or FALSE.
       NOTICE: This feature is still under study.

       GDBM_COALESCEBLKS - Set free block merging to either on or
     off.
       The default is off, which is how previous versions of Gdbm
       handled free blocks. If set, this option  causes  adjacent
     free blocks
       to be merged. This can become a CPU expensive process with
     time, though,
       especially if  used  in  conjunction  with  GDBM_CENTFREE.
     value
       (see below) should be set to either TRUE or FALSE.
       NOTICE: This feature is still under study.

     value is the value to set option to, specified as an integer
     pointer.   size is the size of the data pointed to by value.
     The return value will be -1 upon failure, or 0 upon success.
     The global variable gdbm_errno will be set upon failure.

     For instance, to set a database to use a cache of 10,  after

SunOS 5.10           Last change: 10/15/2002                    8

Introduction to Library Functions                         GDBM(3)

     opening  it with gdbm_open, but prior to accessing it in any
     way, the following code could be used:

       int value = 10;

       ret   =   gdbm_setopt(   dbf,   GDBM_CACHESIZE,    &value,
     sizeof(int));

     If the database was opened with the  GDBM_NOLOCK  flag,  the
     user may wish to perform their own file locking on the data-
     base file in order to prevent multiple writers operating  on
     the same file simultaneously.

     In order to support this, the  gdbm_fdesc  routine  is  pro-
     vided.

       ret = gdbm_fdesc ( dbf )

     Where dbf is the  return  value  from  a  previous  call  to
     gdbm_open.   The return value will be the file descriptor of
     the database.

     The following two external variables may be useful:

     gdbm_errno is the variable that  contains  more  information
     about gdbm errors.  (gdbm.h has the definitions of the error
     values and defines gdbm_errno as an external variable.)
     gdbm_version is the string containing the  version  informa-
     tion.

     There are a few more things of interest.  First, gdbm  files
     are  not  "sparse".   You  can copy them with the UNIX cp(1)
     command and they will not expand  in  the  copying  process.
     Also,  there  is  a compatibility mode for use with programs
     that already use UNIX dbm.  In this compatibility  mode,  no
     gdbm  file  pointer  is required by the programmer, and only
     one file may be opened at a time.  All users in  compatibil-
     ity  mode  are assumed to be writers.  If the gdbm file is a
     read only, it will fail as a writer, but will  also  try  to
     open  it as a reader.  All returned pointers in datum struc-
     tures point to data that gdbm WILL  free.   They  should  be
     treated as static pointers (as standard UNIX dbm does).

LINKING
     This library is accessed by specifying -lgdbm  as  the  last
     parameter to the compile line, e.g.:

          gcc -o prog prog.c -lgdbm

SunOS 5.10           Last change: 10/15/2002                    9

Introduction to Library Functions                         GDBM(3)

     If you wish to use the dbm or ndbm  compatibility  routines,
     you must link in the gdbm_compat library as well.  For exam-
     ple:

          gcc -o prog proc.c -lgdbm -lgdbm_compat

BUGS
SEE ALSO
     dbm, ndbm

AUTHOR
     by Philip A. Nelson and Jason Downs.  Copyright (C)  1990  -
     1999 Free Software Foundation, Inc.

     GDBM is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as pub-
     lished by the Free Software Foundation; either version 1, or
     (at your option) any later version.

     GDBM is distributed in the hope that it will be useful,  but
     WITHOUT  ANY  WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A  PARTICULAR  PURPOSE.   See
     the GNU General Public License for more details.

     You should have received a copy of the  GNU  General  Public
     License  along  with  GDBM;  see  the file COPYING.  If not,
     write to the Free Software Foundation, 675  Mass  Ave,  Cam-
     bridge, MA 02139, USA.

     You may contact the original author by:
        e-mail:  phil@cs.wwu.edu
       us-mail:  Philip A. Nelson
     Computer Science Department
     Western Washington University
     Bellingham, WA 98226

     You may contact the current maintainer by:
        e-mail:  downsj@downsj.com

ATTRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:

SunOS 5.10           Last change: 10/15/2002                   10

Introduction to Library Functions                         GDBM(3)

     _______________________________________
    |   ATTRIBUTE TYPE   |  ATTRIBUTE VALUE|
    |____________________|_________________|
    | Availability       |  SUNWgnu-dbm    |
    |____________________|_________________|
    | Interface Stability|  Uncommitted    |
    |____________________|_________________|

NOTES
     Source for gdbm is available on http://opensolaris.org.

SunOS 5.10           Last change: 10/15/2002                   11



--Boundary_(ID_YhGvZ5xf2aklEFeYZ+p2+g)--

From ro@techfak.uni-bielefeld.de Tue Oct 28 10:16:40 2008
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9SHGeG6029576
	for <psarc-ext@sac.sfbay.sun.com>; Tue, 28 Oct 2008 10:16:40 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9SHGbi5016392;
	Tue, 28 Oct 2008 11:16:38 -0600 (MDT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9G00E0TLBQM500@brm-avmta-1.central.sun.com>; Tue,
 28 Oct 2008 11:16:38 -0600 (MDT)
Received: from sca-ea-mail-2.sun.com ([192.18.43.25])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9G00ABTLBPRC50@brm-avmta-1.central.sun.com>; Tue,
 28 Oct 2008 11:16:38 -0600 (MDT)
Received: from relay17i.sun.com
 (ip127.net129179-4.block1.us.syntegra.com [129.179.4.127])
	by sca-ea-mail-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9SHEGQ2009982;
 Tue, 28 Oct 2008 17:16:37 +0000 (GMT)
Received: from mmp13es.mmp.us.syntegra.com ([160.41.208.13] [160.41.208.13])
 by relay17i.sun.com with ESMTP id BT-MMP-47389; Tue,
 28 Oct 2008 17:16:36 +0000 (Z)
Received: from relay15i.sun.com (relay15i.sun.com [129.179.4.125])
 by mmp13es.mmp.us.syntegra.com with ESMTP id BT-MMP-183471; Tue,
 28 Oct 2008 17:16:36 +0000 (Z)
Received: from smarthost.TechFak.Uni-Bielefeld.DE
 ([129.70.137.17] [129.70.137.17]) by relay1ib.sun.com with ESMTP id
 BT-MMP-1109254; Tue, 28 Oct 2008 17:16:35 +0000 (Z)
Received: from manam.TechFak.Uni-Bielefeld.DE
 (manam.TechFak.Uni-Bielefeld.DE [129.70.137.47])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)	by smarthost.TechFak.Uni-Bielefeld.DE
 (Postfix) with ESMTP id 7692A483BA; Tue, 28 Oct 2008 18:16:35 +0100 (CET)
Date: Tue, 28 Oct 2008 18:16:33 +0100 (MET)
From: Rainer Orth <ro@techfak.uni-bielefeld.de>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 	10/28/2008]
In-reply-to: <4905950A.8000703@Sun.COM>
To: Martina Tomisova <Martina.Tomisova@sun.com>
Cc: Peter Dennis <petede@sac.sfbay.sun.com>, PSARC-ext@sun.com
Message-id: <18695.18673.958246.324860@manam.TechFak.Uni-Bielefeld.DE>
MIME-version: 1.0
X-Mailer: VM 6.62 under Emacs 19.34.1
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
X-Brightmail-Tracker: AAAAAA==
X-Antispam: No, score=0.0/5.0, scanned in 0.135sec at (localhost [127.0.0.1])
	by smf-spamd v1.3.1 - http://smfs.sf.net/
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <yddabcyt20d.fsf@manam.TechFak.Uni-Bielefeld.DE> <4905950A.8000703@Sun.COM>
Status: RO
Content-Length: 1538

Hi Martina,

> > I don't see the point of installing those compat headers and library.  To
> > my understanding, they are present only for those platforms that otherwise
> > lack libdbm and dbm.h/ndbm.h, which isn't true for Solaris.  (They are only
> > installed by the non-default install-compat Makefile target, btw.) To me,
> > it seems far more natural to only install libgdbm and have gdbm.h 
> I install those because they are the part of gnu-dbm project. If I 
> install them too the user will be able to choose which libraries he 
> would use - the originals or new ones (gdbm compatible). However I agree 
> that this part is debatable.

indeed, especially since they are probably non-default for a reason :-)

> > in /usr/include where it can be easily found.
> 
> That's right however the directory /usr/include/gdbm/ can imho be easily 
> found too.

For a human user who knows about this, perhaps, but for a configure script
which has no idea about this special directory, this directory as much as
hides the presence of gdbm.  Do you know of any other system that doesn't
have the gdbm.h in /usr/include (or it's moral equivalent)?  It not, no
opensource software will be prepared to deal with this situation, and
everyone who wants to use gdbm on Solaris needs to deal with this quirk on
his own by providing the necessary CPPFLAGS, making the system less
accessible.

Regards.
	Rainer

-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University

From Peter.Dennis@sun.com Wed Oct 29 03:01:48 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9TA1lUe029664
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 29 Oct 2008 03:01:48 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9TA103S012575
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 29 Oct 2008 10:01:46 GMT
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9H00K03VUVZN00@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 29 Oct 2008 03:01:43 -0700 (PDT)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9H00E4PVUUHLA0@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 29 Oct 2008 03:01:43 -0700 (PDT)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9TA1gOh018135	for
 <PSARC-ext@sun.com>; Wed, 29 Oct 2008 10:01:42 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9H00201UT3V500@fe-emea-09.sun.com>
 (original mail from Peter.Dennis@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 29 Oct 2008 10:01:42 +0000 (GMT)
Received: from [129.156.173.66] by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K9H00853VUFGIA0@fe-emea-09.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 29 Oct 2008 10:01:28 +0000 (GMT)
Date: Wed, 29 Oct 2008 10:01:27 +0000
From: Peter Dennis - Sustaining Engineer <Peter.Dennis@sun.com>
Subject: Re: Integrate gdbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 	10/28/2008]
In-reply-to: <4905950A.8000703@Sun.COM>
Sender: Peter.Dennis@sun.com
To: Martina Tomisova <Martina.Tomisova@sun.com>
Cc: PSARC-ext@sun.com
Message-id: <49083477.80704@sun.com>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <yddabcyt20d.fsf@manam.TechFak.Uni-Bielefeld.DE> <4905950A.8000703@Sun.COM>
User-Agent: Thunderbird 2.0.0.16 (X11/20080908)
Status: RO
Content-Length: 436

I've reset the timer on this case to timeout on 5-Nov-2008
(the project owner is out until Monday 4 Nov).

Out standing items:

o the inclusion of the compatibility libraries, are they needed
   because Solaris has the dbm libraries in any case ?

o the location of the include files - should they (or rather it)
   be /usr/include/gdbm.h (and maybe the compatibility headers,
   if shipped, should be in /usr/include/gdbm/...) ?

Pete

From Martina.Tomisova@sun.com Wed Oct 29 06:24:11 2008
Received: from sunmail3mpk.sfbay.sun.com (sunmail3mpk.SFBay.Sun.COM [129.146.11.52])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9TDOBcU005632
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 29 Oct 2008 06:24:11 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail3mpk.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9TDNw3K009242
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 29 Oct 2008 06:24:10 -0700 (PDT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9I00E2B58AGX00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 29 Oct 2008 07:24:10 -0600 (MDT)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9I00MVF5846PE0@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 29 Oct 2008 07:24:07 -0600 (MDT)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9TDO47b020702	for
 <PSARC-ext@sun.com>; Wed, 29 Oct 2008 13:24:04 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9I00I013SOM400@fe-emea-09.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 29 Oct 2008 13:24:04 +0000 (GMT)
Received: from [192.168.1.100] ([80.250.20.86])
 by fe-emea-09.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28
 2007)) with ESMTPSA id <0K9I00JGI57TB0B0@fe-emea-09.sun.com>; Wed,
 29 Oct 2008 13:23:57 +0000 (GMT)
Date: Wed, 29 Oct 2008 14:23:58 +0100
From: Martina Tomisova <Martina.Tomisova@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 	10/28/2008]
In-reply-to: <18695.18673.958246.324860@manam.TechFak.Uni-Bielefeld.DE>
Sender: Martina.Tomisova@sun.com
To: Rainer Orth <ro@techfak.uni-bielefeld.de>
Cc: Peter Dennis <petede@sac.sfbay.sun.com>, PSARC-ext@sun.com
Message-id: <490863EE.3030909@sun.com>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <yddabcyt20d.fsf@manam.TechFak.Uni-Bielefeld.DE> <4905950A.8000703@Sun.COM>
 <18695.18673.958246.324860@manam.TechFak.Uni-Bielefeld.DE>
User-Agent: Thunderbird 2.0.0.17 (X11/20080922)
Status: RO
Content-Length: 1900

Hi Rainer,

I don't know about any other system which makes this special directory.

I can remove the compatibility files from the package and place gdbm.h
into /usr/include/ - that's no problem.

Could someone else please express his opinion of this topic?

Thank you and have a nice day,
Martina

Rainer Orth wrote:
> Hi Martina,
> 
>>> I don't see the point of installing those compat headers and library.  To
>>> my understanding, they are present only for those platforms that otherwise
>>> lack libdbm and dbm.h/ndbm.h, which isn't true for Solaris.  (They are only
>>> installed by the non-default install-compat Makefile target, btw.) To me,
>>> it seems far more natural to only install libgdbm and have gdbm.h 
>> I install those because they are the part of gnu-dbm project. If I 
>> install them too the user will be able to choose which libraries he 
>> would use - the originals or new ones (gdbm compatible). However I agree 
>> that this part is debatable.
> 
> indeed, especially since they are probably non-default for a reason :-)
> 
>>> in /usr/include where it can be easily found.
>> That's right however the directory /usr/include/gdbm/ can imho be easily 
>> found too.
> 
> For a human user who knows about this, perhaps, but for a configure script
> which has no idea about this special directory, this directory as much as
> hides the presence of gdbm.  Do you know of any other system that doesn't
> have the gdbm.h in /usr/include (or it's moral equivalent)?  It not, no
> opensource software will be prepared to deal with this situation, and
> everyone who wants to use gdbm on Solaris needs to deal with this quirk on
> his own by providing the necessary CPPFLAGS, making the system less
> accessible.
> 
> Regards.
> 	Rainer
> 
> -----------------------------------------------------------------------------
> Rainer Orth, Faculty of Technology, Bielefeld University


From Kais.Belgaied@sun.com Wed Oct 29 09:45:57 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9TGjvVs012512
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 29 Oct 2008 09:45:57 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9TGjsSF001620;
	Wed, 29 Oct 2008 16:45:55 GMT
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9I00D2DEKIEF00@nwk-avmta-2.sfbay.sun.com>; Wed,
 29 Oct 2008 09:45:54 -0700 (PDT)
Received: from jurassic-x4600.sfbay.sun.com ([129.146.17.63])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9I00CTLEKHRX00@nwk-avmta-2.sfbay.sun.com>; Wed,
 29 Oct 2008 09:45:53 -0700 (PDT)
Received: from [129.146.11.144]
 (sr1-jurassic-01.SFBay.Sun.COM [129.146.11.144])	by
 jurassic-x4600.sfbay.sun.com (8.14.3+Sun/8.14.3) with ESMTP id m9TGitSn621368;
 Wed, 29 Oct 2008 09:45:01 -0700 (PDT)
Date: Wed, 29 Oct 2008 09:44:52 -0700
From: Kais Belgaied <Kais.Belgaied@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 	10/28/2008]
In-reply-to: <490863EE.3030909@sun.com>
To: Martina Tomisova <Martina.Tomisova@sun.com>
Cc: Rainer Orth <ro@techfak.uni-bielefeld.de>,
        Peter Dennis <petede@sac.sfbay.sun.com>, PSARC-ext@sun.com
Reply-to: Kais.Belgaied@sun.com
Message-id: <49089304.1000208@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <yddabcyt20d.fsf@manam.TechFak.Uni-Bielefeld.DE> <4905950A.8000703@Sun.COM>
 <18695.18673.958246.324860@manam.TechFak.Uni-Bielefeld.DE>
 <490863EE.3030909@sun.com>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 592

On 10/29/08 06:23, Martina Tomisova wrote:
> Hi Rainer,
>
> I don't know about any other system which makes this special directory.
>
> I can remove the compatibility files from the package and place gdbm.h
> into /usr/include/ - that's no problem.
>   

there's already a /usr/include/ndbm.h shipped with Solaris.
The  The exported interface table by this case includes a 
/usr/include/gdbm/ndbm.h

it seems that a usr/include/gdbm directory is unavoidable here.

    Kais
> Could someone else please express his opinion of this topic?
>
> Thank you and have a nice day,
> Martina
>
>
>   


From Martina.Tomisova@sun.com Wed Oct 29 10:57:50 2008
Received: from sunmail2sca.sfbay.sun.com (sunmail2sca.SFBay.Sun.COM [129.145.155.234])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9THvo5P018075
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 29 Oct 2008 10:57:50 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail2sca.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9THvnMw003128
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 29 Oct 2008 10:57:50 -0700 (PDT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9I00A15HWDD900@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 29 Oct 2008 11:57:49 -0600 (MDT)
Received: from gmp-eb-inf-2.sun.com ([192.18.6.24])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9I007ONHWA3K60@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 29 Oct 2008 11:57:49 -0600 (MDT)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe3.eu.sun.com [192.18.6.12])
	by gmp-eb-inf-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9THvk3P003806	for
 <PSARC-ext@sun.com>; Wed, 29 Oct 2008 17:57:46 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9I00I01HV76U00@fe-emea-09.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 29 Oct 2008 17:57:46 +0000 (GMT)
Received: from [192.168.1.100] ([80.250.20.86])
 by fe-emea-09.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28
 2007)) with ESMTPSA id <0K9I00L5JHW9IU70@fe-emea-09.sun.com>; Wed,
 29 Oct 2008 17:57:46 +0000 (GMT)
Date: Wed, 29 Oct 2008 18:57:52 +0100
From: Martina Tomisova <Martina.Tomisova@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 	10/28/2008]
In-reply-to: <49089304.1000208@Sun.COM>
Sender: Martina.Tomisova@sun.com
To: Kais.Belgaied@sun.com
Cc: Rainer Orth <ro@techfak.uni-bielefeld.de>,
        Peter Dennis <petede@sac.sfbay.sun.com>, PSARC-ext@sun.com
Message-id: <4908A420.4020709@sun.com>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810211455.m9LEtRh5005359@sac.sfbay.sun.com>
 <yddabcyt20d.fsf@manam.TechFak.Uni-Bielefeld.DE> <4905950A.8000703@Sun.COM>
 <18695.18673.958246.324860@manam.TechFak.Uni-Bielefeld.DE>
 <490863EE.3030909@sun.com> <49089304.1000208@Sun.COM>
User-Agent: Thunderbird 2.0.0.17 (X11/20080922)
Status: RO
Content-Length: 1127

Hi,

Kais, the thing is that I don't need to install ndbm.h and dbm.h at all.
I can install gdbm.h only (so there would be no need to create gdbm
directory).

As the time goes I think that removing those compatibility files and
installing gdbm.h only directly to the /usr/include/ is a good idea.
However I will still appreciate any comment. I'm going to make a
decision and probably send an updated request on Monday (I'm won't be at
work till Monday).

Have a nice day,
Martina

Kais Belgaied wrote:
> On 10/29/08 06:23, Martina Tomisova wrote:
>> Hi Rainer,
>>
>> I don't know about any other system which makes this special directory.
>>
>> I can remove the compatibility files from the package and place gdbm.h
>> into /usr/include/ - that's no problem.
>>   
> 
> there's already a /usr/include/ndbm.h shipped with Solaris.
> The  The exported interface table by this case includes a
> /usr/include/gdbm/ndbm.h
> 
> it seems that a usr/include/gdbm directory is unavoidable here.
> 
>    Kais
>> Could someone else please express his opinion of this topic?
>>
>> Thank you and have a nice day,
>> Martina
>>
>>
>>   
> 


From Martina.Tomisova@Sun.COM Mon Nov  3 02:04:34 2008
Received: from sunmail2sca.sfbay.sun.com (sunmail2sca.SFBay.Sun.COM [129.145.155.234])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id mA3A4YqJ010394
	for <psarc-ext@sac.sfbay.sun.com>; Mon, 3 Nov 2008 02:04:34 -0800 (PST)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail2sca.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id mA3A4XQT000929
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Mon, 3 Nov 2008 02:04:34 -0800 (PST)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9R00E095BL0500@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@Sun.COM); Mon, 03 Nov 2008 03:04:33 -0700 (MST)
Received: from gmp-eb-inf-2.sun.com ([192.18.6.24])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9R00HOL5BK1ZC0@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@Sun.COM); Mon,
 03 Nov 2008 03:04:33 -0700 (MST)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe3.eu.sun.com [192.18.6.12])
	by gmp-eb-inf-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id mA3A4WYW023776	for
 <PSARC-ext@Sun.COM>; Mon, 03 Nov 2008 10:04:32 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9R008013HAGD00@fe-emea-09.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@Sun.COM (ORCPT PSARC-ext@Sun.COM); Mon,
 03 Nov 2008 10:04:32 +0000 (GMT)
Received: from [129.157.16.193] by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K9R00KCB5BGD1B0@fe-emea-09.sun.com> for PSARC-ext@Sun.COM
 (ORCPT PSARC-ext@Sun.COM); Mon, 03 Nov 2008 10:04:29 +0000 (GMT)
Date: Mon, 03 Nov 2008 11:04:28 +0100
From: Martina Tomisova <Martina.Tomisova@Sun.COM>
Subject: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack timeout
 10/28/2008] update
Sender: Martina.Tomisova@Sun.COM
To: PSARC-ext@Sun.COM
Message-id: <490ECCAC.7090409@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 19591

Hi all,

there is a new proposal (I hope the last version). I've decided to 
remove the compatibility libraries and put the gdbm.h file into the 
/usr/include/ directly.



Proposal:

         Integrate gbm (gnu-dbm) into Solaris.

Detail:

         A set of database routines that use extensible hashing. It works
         like ndbm, however it adds support for arbitrary length data in
         the database, as previously (at dbm or ndbm) all data had had a
         fixed maximum length.

         It does not contain the compatibility library which behaves
         exactly like dbm or ndbm library.

         The current version of gdbm is 1.8.3 at the time of this case.


Release Binding:

     Micro


Exported Interfaces:

         SUNWgnu-dbm                       Committed     Package name

         /usr/lib/libgdbm.so               Uncommitted  Symbolic link to
                                                        libgdbm.so.3.0.0

         /usr/lib/libgdbm.so.3             Uncommitted   Symbolic link to
                                                         libgdbm.so.3.0.0

         /usr/lib/libgdbm.so.3.0.0         Uncommitted   Shared object
                                                         library API's

         /usr/include/gdbm.h               Uncommitted   Header file


References:

  [1] http://www.gnu.org/software/gdbm/
      Leader(s) of gdbm project: Jason Downs <downsj@downsj.com>
  [2] 6744694 - Integrate gdbm into Solaris.
  [3] gdbm.3 - man page (attached)


6. Resources and Schedule
     6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
         SFW
     6.5. ARC review type: FastTrack
     6.6. ARC Exposure: open




Introduction to Library Functions                         GDBM(3)

NAME
      GDBM - The GNU database manager.  Includes dbm and ndbm com-
      patability. (Version 1.8.3.)

SYNOPSIS
      #include <gdbm/gdbm.h>

      extern gdbm_error
      gdbm_errno

      extern char
      *gdbm_version

      GDBM_FILE
      gdbm_open (name, block_size, read_write, mode, fatal_func)
      char * name;
      int block_size, read_write, mode;
      void (*fatal_func) ();

      void
      gdbm_close (dbf)
      GDBM_FILE dbf;

      int
      gdbm_store (dbf, key, content, flag)
      GDBM_FILE dbf;
      datum key, content;
      int flag;

      datum
      gdbm_fetch (dbf, key)
      GDBM_FILE dbf;
      datum key;

      int
      gdbm_delete (dbf, key)
      GDBM_FILE dbf;
      datum key;

      datum
      gdbm_firstkey (dbf)
      GDBM_FILE dbf;

      datum
      gdbm_nextkey (dbf, key)
      GDBM_FILE dbf;
      datum key;

      int
      gdbm_reorganize (dbf)
      GDBM_FILE dbf;

SunOS 5.10           Last change: 10/15/2002                    1

Introduction to Library Functions                         GDBM(3)

      void
      gdbm_sync (dbf)
      GDBM_FILE dbf;

      int
      gdbm_exists (dbf, key)
      GDBM_FILE dbf;
      datum key;

      char *
      gdbm_strerror (errno)
      gdbm_error errno;

      int
      gdbm_setopt (dbf, option, value, size)
      GDBM_FILE dbf;
      int option;
      int *value;
      int size;

      int
      gdbm_fdesc (dbf)
      GDBM_FILE dbf;

      DBM Compatability routines:

      #include <gdbm/dbm.h>

      int
      dbminit (name)
      char *name;

      int
      store (key, content)
      datum key, content;

      datum
      fetch (key)
      datum key;

      int
      delete (key)
      datum key;

      datum
      firstkey ()

      datum
      nextkey (key)
      datum key;

SunOS 5.10           Last change: 10/15/2002                    2

Introduction to Library Functions                         GDBM(3)

      int
      dbmclose ()

      NDBM Compatability routines:

      #include <gdbm/ndbm.h>

      DBM
      *dbm_open (name, flags, mode)
      char *name;
      int flags, mode;

      void
      dbm_close (file)
      DBM *file;

      datum
      dbm_fetch (file, key)
      DBM *file;
      datum key;

      int
      dbm_store (file, key, content, flags)
      DBM *file;
      datum key, content;
      int flags;

      int
      dbm_delete (file, key)
      DBM *file;
      datum key;

      datum
      dbm_firstkey (file)
      DBM *file;

      datum
      dbm_nextkey (file)
      DBM *file;

      int
      dbm_error (file)
      DBM *file;

      int
      dbm_clearerr (file)
      DBM *file;

      int
      dbm_pagfno (file)
      DBM *file;

SunOS 5.10           Last change: 10/15/2002                    3

Introduction to Library Functions                         GDBM(3)

      int
      dbm_dirfno (file)
      DBM *file;

      int
      dbm_rdonly (file)
      DBM *file;

DESCRIPTION
      GNU dbm is a library of routines  that  manages  data  files
      that contain key/data pairs.  The access provided is that of
      storing, retrieval, and deletion by  key  and  a  non-sorted
      traversal of all keys.  A process is allowed to use multiple
      data files at the same time.

      A process that opens a gdbm file is designated as a "reader"
      or  a  "writer".   Only  one writer may open a gdbm file and
      many readers may open the file.  Readers and writers can not
      open the gdbm file at the same time. The procedure for open-
      ing a gdbm file is:

        GDBM_FILE dbf;

        dbf = gdbm_open  (  name,  block_size,  read_write,  mode,
      fatal_func )

      Name is the name of the file (the complete name,  gdbm  does
      not  append any characters to this name).  Block_size is the
      size of a single transfer from disk to memory. This  parame-
      ter  is  ignored unless the file is a new file.  The minimum
      size is 512.  If it is less than 512, dbm will use the  stat
      block  size for the file system.  Read_write can have one of
      the following values:
      GDBM_READER reader
      GDBM_WRITER writer
      GDBM_WRCREAT writer - if database does not exist create  new
      one
      GDBM_NEWDB writer - create new database  regardless  if  one
      exists
      For the last three (writers of the database)  the  following
      may  be added added to read_write by bitwise or:  GDBM_SYNC,
      which causes all database operations to be  synchronized  to
      the  disk,  and GDBM_NOLOCK, which prevents the library from
      performing any locking on the  database  file.   The  option
      GDBM_FAST  is  now  obsolete, since gdbm defaults to no-sync
      mode.
      Mode is the file mode (see chmod(2) and open(2)) if the file
      is  created.  (*Fatal_func) () is a function for dbm to call
      if it detects a fatal error.  The  only  parameter  of  this
      function  is  a string.  If the value of 0 is provided, gdbm

SunOS 5.10           Last change: 10/15/2002                    4

Introduction to Library Functions                         GDBM(3)

      will use a default function.

      The return value dbf is the pointer needed by all other rou-
      tines  to  access that gdbm file.  If the return is the NULL
      pointer, gdbm_open was not successful.  The  errors  can  be
      found  in gdbm_errno for gdbm errors and in errno for system
      errors.  (For error codes, see gdbmerrno.h.)

      In all of the following calls, the parameter dbf  refers  to
      the pointer returned from gdbm_open.

      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:
        gdbm_close (dbf);

      The database is used  by  3  primary  routines.   The  first
      stores data in the database.

        ret = gdbm_store ( dbf, key, content, flag )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data.   Content  is  the data to be associated with the key.
      Flag can have one of the following values:
      GDBM_INSERT insert only, generate an error if key exists
      GDBM_REPLACE replace contents if key exists.

      If a reader calls gdbm_store, the return value will be   -1.
      If  called  with GDBM_INSERT and key is in the database, the
      return value will be 1.  Otherwise, the return value is 0.

      NOTICE: If you store data for a key that is already  in  the
      data  base,  gdbm replaces the old data with the new data if
      called with GDBM_REPLACE.  You do not get two data items for
      the same key and you do not get an error from gdbm_store.

      NOTICE: The size in gdbm is not restricted like dbm or ndbm.
      Your data can be as large as you want.

      To search for some data:

        content = gdbm_fetch ( dbf, key )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data.

      If the dptr element of the return value is NULL, no data was
      found.  Otherwise the return value is a pointer to the found

SunOS 5.10           Last change: 10/15/2002                    5

Introduction to Library Functions                         GDBM(3)

      data.  The storage space for the dptr element  is  allocated
      using  malloc(3C).   Gdbm  does  not automatically free this
      data.  It is the programmer's responsibility  to  free  this
      storage when it is no longer needed.

      To search for some data, without retrieving it:

        ret = gdbm_exists ( dbf, key )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data to search for.

      If the key is found within the database,  the  return  value
      ret  will be true.  If nothing appropiate is found, ret will
      be false.  This routine is useful for checking for the exis-
      tance  of a record, without performing the memory allocation
      done by gdbm_fetch.

      To remove some data from the database:

        ret = gdbm_delete ( dbf, key )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data.

      The return value is -1 if the item is  not  present  or  the
      requester is a reader.  The return value is 0 if there was a
      successful delete.

      The next two routines allow for accessing all items  in  the
      database.   This  access  is  not  key sequential, but it is
      guaranteed to visit every key in the  database  once.   (The
      order has to do with the hash values.)

        key = gdbm_firstkey ( dbf )

        nextkey = gdbm_nextkey ( dbf, key )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data.

      The return values are both of type datum.  If the dptr  ele-
      ment  of  the return value is NULL, there is no first key or
      next key.  Again notice that dptr points to  data  allocated
      by malloc(3C) and gdbm will not free it for you.

      These functions were  intended  to  visit  the  database  in
      read-only algorithms, for instance, to validate the database
      or similar operations.

SunOS 5.10           Last change: 10/15/2002                    6

Introduction to Library Functions                         GDBM(3)

      File `visiting' is based on  a  `hash  table'.   gdbm_delete
      re-arranges  the hash table to make sure that any collisions
      in the table do not leave some item `un-findable'.  The ori-
      ginal key order is NOT guaranteed to remain unchanged in ALL
      instances.  It is possible that some key will not be visited
      if a loop like the following is executed:

         key = gdbm_firstkey ( dbf );
         while ( key.dptr ) {
            nextkey = gdbm_nextkey ( dbf, key );
            if ( some condition ) {
               gdbm_delete ( dbf, key );
               free ( key.dptr );
            }
            key = nextkey;
         }

      The following routine should be used very infrequently.

        ret = gdbm_reorganize ( dbf )

      If you have had a lot of deletions and would like to  shrink
      the  space used by the gdbm file, this routine will reorgan-
      ize the database.  Gdbm will not shorten  the  length  of  a
      gdbm  file  except  by  using this reorganization.  (Deleted
      file space will be reused.)

      Unless your database was opened  with  the  GDBM_SYNC  flag,
      gdbm  does  not  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.

        gdbm_sync ( dbf )

      It will not return until the disk file state is  syncronized
      with the in-memory state of the database.

      To convert a gdbm error code into  English  text,  use  this
      routine:

        ret = gdbm_strerror ( errno )

      Where errno is of type gdbm_error, usually the global  vari-
      able gdbm_errno.  The appropiate phrase is returned.

      Gdbm now supports the ability to set certain options  on  an
      already open database.

SunOS 5.10           Last change: 10/15/2002                    7

Introduction to Library Functions                         GDBM(3)

        ret = gdbm_setopt ( dbf, option, value, size )

      Where dbf is the  return  value  from  a  previous  call  to
      gdbm_open,  and  option  specifies which option to set.  The
      valid options are currently:

        GDBM_CACHESIZE - Set the size of the internal bucket
        cache. This option may only be set once on each GDBM_FILE
        descriptor, and is set automatically to 100 upon the first
        access to the database.

        GDBM_FASTMODE - Set fast mode to either on or off.  This
        allows fast mode to be toggled on an already open and
        active database. value (see below) should be set to either
        TRUE or FALSE.  This option is now obsolete.

        GDBM_SYNCMODE - Turn on or off file system synchronization
      operations.
        This setting defaults to off; value (see below) should  be
      set to either
        TRUE or FALSE.

        GDBM_CENTFREE - Set central free block pool to  either  on
      or off.
        The default is off, which is how previous versions of Gdbm
        handled free blocks. If set, this option causes all subse-
      quent free
        blocks to be placed  in  the  global  pool,  allowing  (in
      thoery)
        more file space to be  reused  more  quickly.  value  (see
      below) should
        be set to either TRUE or FALSE.
        NOTICE: This feature is still under study.

        GDBM_COALESCEBLKS - Set free block merging to either on or
      off.
        The default is off, which is how previous versions of Gdbm
        handled free blocks. If set, this option  causes  adjacent
      free blocks
        to be merged. This can become a CPU expensive process with
      time, though,
        especially if  used  in  conjunction  with  GDBM_CENTFREE.
      value
        (see below) should be set to either TRUE or FALSE.
        NOTICE: This feature is still under study.

      value is the value to set option to, specified as an integer
      pointer.   size is the size of the data pointed to by value.
      The return value will be -1 upon failure, or 0 upon success.
      The global variable gdbm_errno will be set upon failure.

      For instance, to set a database to use a cache of 10,  after

SunOS 5.10           Last change: 10/15/2002                    8

Introduction to Library Functions                         GDBM(3)

      opening  it with gdbm_open, but prior to accessing it in any
      way, the following code could be used:

        int value = 10;

        ret   =   gdbm_setopt(   dbf,   GDBM_CACHESIZE,    &value,
      sizeof(int));

      If the database was opened with the  GDBM_NOLOCK  flag,  the
      user may wish to perform their own file locking on the data-
      base file in order to prevent multiple writers operating  on
      the same file simultaneously.

      In order to support this, the  gdbm_fdesc  routine  is  pro-
      vided.

        ret = gdbm_fdesc ( dbf )

      Where dbf is the  return  value  from  a  previous  call  to
      gdbm_open.   The return value will be the file descriptor of
      the database.

      The following two external variables may be useful:

      gdbm_errno is the variable that  contains  more  information
      about gdbm errors.  (gdbm.h has the definitions of the error
      values and defines gdbm_errno as an external variable.)
      gdbm_version is the string containing the  version  informa-
      tion.

      There are a few more things of interest.  First, gdbm  files
      are  not  "sparse".   You  can copy them with the UNIX cp(1)
      command and they will not expand  in  the  copying  process.
      Also,  there  is  a compatibility mode for use with programs
      that already use UNIX dbm.  In this compatibility  mode,  no
      gdbm  file  pointer  is required by the programmer, and only
      one file may be opened at a time.  All users in  compatibil-
      ity  mode  are assumed to be writers.  If the gdbm file is a
      read only, it will fail as a writer, but will  also  try  to
      open  it as a reader.  All returned pointers in datum struc-
      tures point to data that gdbm WILL  free.   They  should  be
      treated as static pointers (as standard UNIX dbm does).

LINKING
      This library is accessed by specifying -lgdbm  as  the  last
      parameter to the compile line, e.g.:

           gcc -o prog prog.c -lgdbm

SunOS 5.10           Last change: 10/15/2002                    9

Introduction to Library Functions                         GDBM(3)

      If you wish to use the dbm or ndbm  compatibility  routines,
      you must link in the gdbm_compat library as well.  For exam-
      ple:

           gcc -o prog proc.c -lgdbm -lgdbm_compat

BUGS
SEE ALSO
      dbm, ndbm

AUTHOR
      by Philip A. Nelson and Jason Downs.  Copyright (C)  1990  -
      1999 Free Software Foundation, Inc.

      GDBM is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as pub-
      lished by the Free Software Foundation; either version 1, or
      (at your option) any later version.

      GDBM is distributed in the hope that it will be useful,  but
      WITHOUT  ANY  WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A  PARTICULAR  PURPOSE.   See
      the GNU General Public License for more details.

      You should have received a copy of the  GNU  General  Public
      License  along  with  GDBM;  see  the file COPYING.  If not,
      write to the Free Software Foundation, 675  Mass  Ave,  Cam-
      bridge, MA 02139, USA.

      You may contact the original author by:
         e-mail:  phil@cs.wwu.edu
        us-mail:  Philip A. Nelson
      Computer Science Department
      Western Washington University
      Bellingham, WA 98226

      You may contact the current maintainer by:
         e-mail:  downsj@downsj.com

ATTRIBUTES
      See attributes(5) for descriptions of the  following  attri-
      butes:

SunOS 5.10           Last change: 10/15/2002                   10

Introduction to Library Functions                         GDBM(3)

      _______________________________________
     |   ATTRIBUTE TYPE   |  ATTRIBUTE VALUE|
     |____________________|_________________|
     | Availability       |  SUNWgnu-dbm    |
     |____________________|_________________|
     | Interface Stability|  Uncommitted    |
     |____________________|_________________|

NOTES
      Source for gdbm is available on http://opensolaris.org.

SunOS 5.10           Last change: 10/15/2002                   11



From Martina.Tomisova@sun.com Mon Nov  3 04:13:28 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id mA3CDRVI011961
	for <psarc-ext@sac.sfbay.Sun.COM>; Mon, 3 Nov 2008 04:13:27 -0800 (PST)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id mA3CDL4F022219
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Mon, 3 Nov 2008 20:13:26 +0800 (SGT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9R00N05BAC1E00@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@Sun.COM); Mon, 03 Nov 2008 04:13:24 -0800 (PST)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9R00DXZBAAZ7A0@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@Sun.COM); Mon,
 03 Nov 2008 04:13:23 -0800 (PST)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe3.eu.sun.com [192.18.6.12])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id mA3CDMW1021001	for
 <PSARC-ext@Sun.COM>; Mon, 03 Nov 2008 12:13:22 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9R00601AXL8Z00@fe-emea-09.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@Sun.COM (ORCPT PSARC-ext@Sun.COM); Mon,
 03 Nov 2008 12:13:22 +0000 (GMT)
Received: from [129.157.16.193] by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K9R008DRB9VAJ50@fe-emea-09.sun.com> for PSARC-ext@Sun.COM
 (ORCPT PSARC-ext@Sun.COM); Mon, 03 Nov 2008 12:13:09 +0000 (GMT)
Date: Mon, 03 Nov 2008 13:13:07 +0100
From: Martina Tomisova <Martina.Tomisova@sun.com>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008] update
In-reply-to: <490ECCAC.7090409@Sun.COM>
Sender: Martina.Tomisova@sun.com
To: PSARC-ext@sun.com
Message-id: <490EEAD3.3050201@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <490ECCAC.7090409@Sun.COM>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 20590

Hi,

I'm sorry I've forgotten to update the man page. I'm going to send it as 
fast as possible.

Enjoy the day,
Martina

On 11/03/08 11:04, Martina Tomisova wrote:
> Hi all,
> 
> there is a new proposal (I hope the last version). I've decided to 
> remove the compatibility libraries and put the gdbm.h file into the 
> /usr/include/ directly.
> 
> 
> 
> Proposal:
> 
>         Integrate gbm (gnu-dbm) into Solaris.
> 
> Detail:
> 
>         A set of database routines that use extensible hashing. It works
>         like ndbm, however it adds support for arbitrary length data in
>         the database, as previously (at dbm or ndbm) all data had had a
>         fixed maximum length.
> 
>         It does not contain the compatibility library which behaves
>         exactly like dbm or ndbm library.
> 
>         The current version of gdbm is 1.8.3 at the time of this case.
> 
> 
> Release Binding:
> 
>     Micro
> 
> 
> Exported Interfaces:
> 
>         SUNWgnu-dbm                       Committed     Package name
> 
>         /usr/lib/libgdbm.so               Uncommitted  Symbolic link to
>                                                        libgdbm.so.3.0.0
> 
>         /usr/lib/libgdbm.so.3             Uncommitted   Symbolic link to
>                                                         libgdbm.so.3.0.0
> 
>         /usr/lib/libgdbm.so.3.0.0         Uncommitted   Shared object
>                                                         library API's
> 
>         /usr/include/gdbm.h               Uncommitted   Header file
> 
> 
> References:
> 
>  [1] http://www.gnu.org/software/gdbm/
>      Leader(s) of gdbm project: Jason Downs <downsj@downsj.com>
>  [2] 6744694 - Integrate gdbm into Solaris.
>  [3] gdbm.3 - man page (attached)
> 
> 
> 6. Resources and Schedule
>     6.4. Steering Committee requested information
>        6.4.1. Consolidation C-team Name:
>         SFW
>     6.5. ARC review type: FastTrack
>     6.6. ARC Exposure: open
> 
> 
> 
> 
> Introduction to Library Functions                         GDBM(3)
> 
> NAME
>      GDBM - The GNU database manager.  Includes dbm and ndbm com-
>      patability. (Version 1.8.3.)
> 
> SYNOPSIS
>      #include <gdbm/gdbm.h>
> 
>      extern gdbm_error
>      gdbm_errno
> 
>      extern char
>      *gdbm_version
> 
>      GDBM_FILE
>      gdbm_open (name, block_size, read_write, mode, fatal_func)
>      char * name;
>      int block_size, read_write, mode;
>      void (*fatal_func) ();
> 
>      void
>      gdbm_close (dbf)
>      GDBM_FILE dbf;
> 
>      int
>      gdbm_store (dbf, key, content, flag)
>      GDBM_FILE dbf;
>      datum key, content;
>      int flag;
> 
>      datum
>      gdbm_fetch (dbf, key)
>      GDBM_FILE dbf;
>      datum key;
> 
>      int
>      gdbm_delete (dbf, key)
>      GDBM_FILE dbf;
>      datum key;
> 
>      datum
>      gdbm_firstkey (dbf)
>      GDBM_FILE dbf;
> 
>      datum
>      gdbm_nextkey (dbf, key)
>      GDBM_FILE dbf;
>      datum key;
> 
>      int
>      gdbm_reorganize (dbf)
>      GDBM_FILE dbf;
> 
> SunOS 5.10           Last change: 10/15/2002                    1
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      void
>      gdbm_sync (dbf)
>      GDBM_FILE dbf;
> 
>      int
>      gdbm_exists (dbf, key)
>      GDBM_FILE dbf;
>      datum key;
> 
>      char *
>      gdbm_strerror (errno)
>      gdbm_error errno;
> 
>      int
>      gdbm_setopt (dbf, option, value, size)
>      GDBM_FILE dbf;
>      int option;
>      int *value;
>      int size;
> 
>      int
>      gdbm_fdesc (dbf)
>      GDBM_FILE dbf;
> 
>      DBM Compatability routines:
> 
>      #include <gdbm/dbm.h>
> 
>      int
>      dbminit (name)
>      char *name;
> 
>      int
>      store (key, content)
>      datum key, content;
> 
>      datum
>      fetch (key)
>      datum key;
> 
>      int
>      delete (key)
>      datum key;
> 
>      datum
>      firstkey ()
> 
>      datum
>      nextkey (key)
>      datum key;
> 
> SunOS 5.10           Last change: 10/15/2002                    2
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      int
>      dbmclose ()
> 
>      NDBM Compatability routines:
> 
>      #include <gdbm/ndbm.h>
> 
>      DBM
>      *dbm_open (name, flags, mode)
>      char *name;
>      int flags, mode;
> 
>      void
>      dbm_close (file)
>      DBM *file;
> 
>      datum
>      dbm_fetch (file, key)
>      DBM *file;
>      datum key;
> 
>      int
>      dbm_store (file, key, content, flags)
>      DBM *file;
>      datum key, content;
>      int flags;
> 
>      int
>      dbm_delete (file, key)
>      DBM *file;
>      datum key;
> 
>      datum
>      dbm_firstkey (file)
>      DBM *file;
> 
>      datum
>      dbm_nextkey (file)
>      DBM *file;
> 
>      int
>      dbm_error (file)
>      DBM *file;
> 
>      int
>      dbm_clearerr (file)
>      DBM *file;
> 
>      int
>      dbm_pagfno (file)
>      DBM *file;
> 
> SunOS 5.10           Last change: 10/15/2002                    3
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      int
>      dbm_dirfno (file)
>      DBM *file;
> 
>      int
>      dbm_rdonly (file)
>      DBM *file;
> 
> DESCRIPTION
>      GNU dbm is a library of routines  that  manages  data  files
>      that contain key/data pairs.  The access provided is that of
>      storing, retrieval, and deletion by  key  and  a  non-sorted
>      traversal of all keys.  A process is allowed to use multiple
>      data files at the same time.
> 
>      A process that opens a gdbm file is designated as a "reader"
>      or  a  "writer".   Only  one writer may open a gdbm file and
>      many readers may open the file.  Readers and writers can not
>      open the gdbm file at the same time. The procedure for open-
>      ing a gdbm file is:
> 
>        GDBM_FILE dbf;
> 
>        dbf = gdbm_open  (  name,  block_size,  read_write,  mode,
>      fatal_func )
> 
>      Name is the name of the file (the complete name,  gdbm  does
>      not  append any characters to this name).  Block_size is the
>      size of a single transfer from disk to memory. This  parame-
>      ter  is  ignored unless the file is a new file.  The minimum
>      size is 512.  If it is less than 512, dbm will use the  stat
>      block  size for the file system.  Read_write can have one of
>      the following values:
>      GDBM_READER reader
>      GDBM_WRITER writer
>      GDBM_WRCREAT writer - if database does not exist create  new
>      one
>      GDBM_NEWDB writer - create new database  regardless  if  one
>      exists
>      For the last three (writers of the database)  the  following
>      may  be added added to read_write by bitwise or:  GDBM_SYNC,
>      which causes all database operations to be  synchronized  to
>      the  disk,  and GDBM_NOLOCK, which prevents the library from
>      performing any locking on the  database  file.   The  option
>      GDBM_FAST  is  now  obsolete, since gdbm defaults to no-sync
>      mode.
>      Mode is the file mode (see chmod(2) and open(2)) if the file
>      is  created.  (*Fatal_func) () is a function for dbm to call
>      if it detects a fatal error.  The  only  parameter  of  this
>      function  is  a string.  If the value of 0 is provided, gdbm
> 
> SunOS 5.10           Last change: 10/15/2002                    4
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      will use a default function.
> 
>      The return value dbf is the pointer needed by all other rou-
>      tines  to  access that gdbm file.  If the return is the NULL
>      pointer, gdbm_open was not successful.  The  errors  can  be
>      found  in gdbm_errno for gdbm errors and in errno for system
>      errors.  (For error codes, see gdbmerrno.h.)
> 
>      In all of the following calls, the parameter dbf  refers  to
>      the pointer returned from gdbm_open.
> 
>      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:
>        gdbm_close (dbf);
> 
>      The database is used  by  3  primary  routines.   The  first
>      stores data in the database.
> 
>        ret = gdbm_store ( dbf, key, content, flag )
> 
>      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
>      data.   Content  is  the data to be associated with the key.
>      Flag can have one of the following values:
>      GDBM_INSERT insert only, generate an error if key exists
>      GDBM_REPLACE replace contents if key exists.
> 
>      If a reader calls gdbm_store, the return value will be   -1.
>      If  called  with GDBM_INSERT and key is in the database, the
>      return value will be 1.  Otherwise, the return value is 0.
> 
>      NOTICE: If you store data for a key that is already  in  the
>      data  base,  gdbm replaces the old data with the new data if
>      called with GDBM_REPLACE.  You do not get two data items for
>      the same key and you do not get an error from gdbm_store.
> 
>      NOTICE: The size in gdbm is not restricted like dbm or ndbm.
>      Your data can be as large as you want.
> 
>      To search for some data:
> 
>        content = gdbm_fetch ( dbf, key )
> 
>      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
>      data.
> 
>      If the dptr element of the return value is NULL, no data was
>      found.  Otherwise the return value is a pointer to the found
> 
> SunOS 5.10           Last change: 10/15/2002                    5
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      data.  The storage space for the dptr element  is  allocated
>      using  malloc(3C).   Gdbm  does  not automatically free this
>      data.  It is the programmer's responsibility  to  free  this
>      storage when it is no longer needed.
> 
>      To search for some data, without retrieving it:
> 
>        ret = gdbm_exists ( dbf, key )
> 
>      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
>      data to search for.
> 
>      If the key is found within the database,  the  return  value
>      ret  will be true.  If nothing appropiate is found, ret will
>      be false.  This routine is useful for checking for the exis-
>      tance  of a record, without performing the memory allocation
>      done by gdbm_fetch.
> 
>      To remove some data from the database:
> 
>        ret = gdbm_delete ( dbf, key )
> 
>      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
>      data.
> 
>      The return value is -1 if the item is  not  present  or  the
>      requester is a reader.  The return value is 0 if there was a
>      successful delete.
> 
>      The next two routines allow for accessing all items  in  the
>      database.   This  access  is  not  key sequential, but it is
>      guaranteed to visit every key in the  database  once.   (The
>      order has to do with the hash values.)
> 
>        key = gdbm_firstkey ( dbf )
> 
>        nextkey = gdbm_nextkey ( dbf, key )
> 
>      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
>      data.
> 
>      The return values are both of type datum.  If the dptr  ele-
>      ment  of  the return value is NULL, there is no first key or
>      next key.  Again notice that dptr points to  data  allocated
>      by malloc(3C) and gdbm will not free it for you.
> 
>      These functions were  intended  to  visit  the  database  in
>      read-only algorithms, for instance, to validate the database
>      or similar operations.
> 
> SunOS 5.10           Last change: 10/15/2002                    6
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      File `visiting' is based on  a  `hash  table'.   gdbm_delete
>      re-arranges  the hash table to make sure that any collisions
>      in the table do not leave some item `un-findable'.  The ori-
>      ginal key order is NOT guaranteed to remain unchanged in ALL
>      instances.  It is possible that some key will not be visited
>      if a loop like the following is executed:
> 
>         key = gdbm_firstkey ( dbf );
>         while ( key.dptr ) {
>            nextkey = gdbm_nextkey ( dbf, key );
>            if ( some condition ) {
>               gdbm_delete ( dbf, key );
>               free ( key.dptr );
>            }
>            key = nextkey;
>         }
> 
>      The following routine should be used very infrequently.
> 
>        ret = gdbm_reorganize ( dbf )
> 
>      If you have had a lot of deletions and would like to  shrink
>      the  space used by the gdbm file, this routine will reorgan-
>      ize the database.  Gdbm will not shorten  the  length  of  a
>      gdbm  file  except  by  using this reorganization.  (Deleted
>      file space will be reused.)
> 
>      Unless your database was opened  with  the  GDBM_SYNC  flag,
>      gdbm  does  not  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.
> 
>        gdbm_sync ( dbf )
> 
>      It will not return until the disk file state is  syncronized
>      with the in-memory state of the database.
> 
>      To convert a gdbm error code into  English  text,  use  this
>      routine:
> 
>        ret = gdbm_strerror ( errno )
> 
>      Where errno is of type gdbm_error, usually the global  vari-
>      able gdbm_errno.  The appropiate phrase is returned.
> 
>      Gdbm now supports the ability to set certain options  on  an
>      already open database.
> 
> SunOS 5.10           Last change: 10/15/2002                    7
> 
> Introduction to Library Functions                         GDBM(3)
> 
>        ret = gdbm_setopt ( dbf, option, value, size )
> 
>      Where dbf is the  return  value  from  a  previous  call  to
>      gdbm_open,  and  option  specifies which option to set.  The
>      valid options are currently:
> 
>        GDBM_CACHESIZE - Set the size of the internal bucket
>        cache. This option may only be set once on each GDBM_FILE
>        descriptor, and is set automatically to 100 upon the first
>        access to the database.
> 
>        GDBM_FASTMODE - Set fast mode to either on or off.  This
>        allows fast mode to be toggled on an already open and
>        active database. value (see below) should be set to either
>        TRUE or FALSE.  This option is now obsolete.
> 
>        GDBM_SYNCMODE - Turn on or off file system synchronization
>      operations.
>        This setting defaults to off; value (see below) should  be
>      set to either
>        TRUE or FALSE.
> 
>        GDBM_CENTFREE - Set central free block pool to  either  on
>      or off.
>        The default is off, which is how previous versions of Gdbm
>        handled free blocks. If set, this option causes all subse-
>      quent free
>        blocks to be placed  in  the  global  pool,  allowing  (in
>      thoery)
>        more file space to be  reused  more  quickly.  value  (see
>      below) should
>        be set to either TRUE or FALSE.
>        NOTICE: This feature is still under study.
> 
>        GDBM_COALESCEBLKS - Set free block merging to either on or
>      off.
>        The default is off, which is how previous versions of Gdbm
>        handled free blocks. If set, this option  causes  adjacent
>      free blocks
>        to be merged. This can become a CPU expensive process with
>      time, though,
>        especially if  used  in  conjunction  with  GDBM_CENTFREE.
>      value
>        (see below) should be set to either TRUE or FALSE.
>        NOTICE: This feature is still under study.
> 
>      value is the value to set option to, specified as an integer
>      pointer.   size is the size of the data pointed to by value.
>      The return value will be -1 upon failure, or 0 upon success.
>      The global variable gdbm_errno will be set upon failure.
> 
>      For instance, to set a database to use a cache of 10,  after
> 
> SunOS 5.10           Last change: 10/15/2002                    8
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      opening  it with gdbm_open, but prior to accessing it in any
>      way, the following code could be used:
> 
>        int value = 10;
> 
>        ret   =   gdbm_setopt(   dbf,   GDBM_CACHESIZE,    &value,
>      sizeof(int));
> 
>      If the database was opened with the  GDBM_NOLOCK  flag,  the
>      user may wish to perform their own file locking on the data-
>      base file in order to prevent multiple writers operating  on
>      the same file simultaneously.
> 
>      In order to support this, the  gdbm_fdesc  routine  is  pro-
>      vided.
> 
>        ret = gdbm_fdesc ( dbf )
> 
>      Where dbf is the  return  value  from  a  previous  call  to
>      gdbm_open.   The return value will be the file descriptor of
>      the database.
> 
>      The following two external variables may be useful:
> 
>      gdbm_errno is the variable that  contains  more  information
>      about gdbm errors.  (gdbm.h has the definitions of the error
>      values and defines gdbm_errno as an external variable.)
>      gdbm_version is the string containing the  version  informa-
>      tion.
> 
>      There are a few more things of interest.  First, gdbm  files
>      are  not  "sparse".   You  can copy them with the UNIX cp(1)
>      command and they will not expand  in  the  copying  process.
>      Also,  there  is  a compatibility mode for use with programs
>      that already use UNIX dbm.  In this compatibility  mode,  no
>      gdbm  file  pointer  is required by the programmer, and only
>      one file may be opened at a time.  All users in  compatibil-
>      ity  mode  are assumed to be writers.  If the gdbm file is a
>      read only, it will fail as a writer, but will  also  try  to
>      open  it as a reader.  All returned pointers in datum struc-
>      tures point to data that gdbm WILL  free.   They  should  be
>      treated as static pointers (as standard UNIX dbm does).
> 
> LINKING
>      This library is accessed by specifying -lgdbm  as  the  last
>      parameter to the compile line, e.g.:
> 
>           gcc -o prog prog.c -lgdbm
> 
> SunOS 5.10           Last change: 10/15/2002                    9
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      If you wish to use the dbm or ndbm  compatibility  routines,
>      you must link in the gdbm_compat library as well.  For exam-
>      ple:
> 
>           gcc -o prog proc.c -lgdbm -lgdbm_compat
> 
> BUGS
> SEE ALSO
>      dbm, ndbm
> 
> AUTHOR
>      by Philip A. Nelson and Jason Downs.  Copyright (C)  1990  -
>      1999 Free Software Foundation, Inc.
> 
>      GDBM is free software; you can redistribute it and/or modify
>      it under the terms of the GNU General Public License as pub-
>      lished by the Free Software Foundation; either version 1, or
>      (at your option) any later version.
> 
>      GDBM is distributed in the hope that it will be useful,  but
>      WITHOUT  ANY  WARRANTY; without even the implied warranty of
>      MERCHANTABILITY or FITNESS FOR A  PARTICULAR  PURPOSE.   See
>      the GNU General Public License for more details.
> 
>      You should have received a copy of the  GNU  General  Public
>      License  along  with  GDBM;  see  the file COPYING.  If not,
>      write to the Free Software Foundation, 675  Mass  Ave,  Cam-
>      bridge, MA 02139, USA.
> 
>      You may contact the original author by:
>         e-mail:  phil@cs.wwu.edu
>        us-mail:  Philip A. Nelson
>      Computer Science Department
>      Western Washington University
>      Bellingham, WA 98226
> 
>      You may contact the current maintainer by:
>         e-mail:  downsj@downsj.com
> 
> ATTRIBUTES
>      See attributes(5) for descriptions of the  following  attri-
>      butes:
> 
> SunOS 5.10           Last change: 10/15/2002                   10
> 
> Introduction to Library Functions                         GDBM(3)
> 
>      _______________________________________
>     |   ATTRIBUTE TYPE   |  ATTRIBUTE VALUE|
>     |____________________|_________________|
>     | Availability       |  SUNWgnu-dbm    |
>     |____________________|_________________|
>     | Interface Stability|  Uncommitted    |
>     |____________________|_________________|
> 
> NOTES
>      Source for gdbm is available on http://opensolaris.org.
> 
> SunOS 5.10           Last change: 10/15/2002                   11
> 
> 
> 


From Martina.Tomisova@Sun.COM Mon Nov  3 05:30:29 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id mA3DUSEg000700
	for <psarc-ext@sac.sfbay.sun.com>; Mon, 3 Nov 2008 05:30:28 -0800 (PST)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id mA3DUQRj002681
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Mon, 3 Nov 2008 13:30:26 GMT
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9R00601EUQ7M00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Mon, 03 Nov 2008 06:30:26 -0700 (MST)
Received: from gmp-eb-inf-2.sun.com ([192.18.6.24])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9R00H78EUO98A0@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 03 Nov 2008 06:30:25 -0700 (MST)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11])
	by gmp-eb-inf-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id mA3DUOj1024811	for
 <PSARC-ext@sun.com>; Mon, 03 Nov 2008 13:30:24 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9R00101CTDK500@fe-emea-09.sun.com>
 (original mail from Martina.Tomisova@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 03 Nov 2008 13:30:24 +0000 (GMT)
Received: from [129.157.16.193] by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K9R008XIEUFAJ90@fe-emea-09.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Mon, 03 Nov 2008 13:30:16 +0000 (GMT)
Date: Mon, 03 Nov 2008 14:30:15 +0100
From: Martina Tomisova <Martina.Tomisova@Sun.COM>
Subject: Re: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008] update
In-reply-to: <490EEAD3.3050201@Sun.COM>
Sender: Martina.Tomisova@Sun.COM
To: PSARC-ext@Sun.COM
Message-id: <490EFCE7.3030601@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <490ECCAC.7090409@Sun.COM> <490EEAD3.3050201@Sun.COM>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 16306

There is the new man page - ndbm and dbm headers were removed.





Introduction to Library Functions                         GDBM(3)



NAME
      GDBM - The GNU database manager. (Version 1.8.3.)

SYNOPSIS
      #include <gdbm.h>

      extern gdbm_error
      gdbm_errno

      extern char
      *gdbm_version

      GDBM_FILE
      gdbm_open (name, block_size, read_write, mode, fatal_func)
      char * name;
      int block_size, read_write, mode;
      void (*fatal_func) ();

      void
      gdbm_close (dbf)
      GDBM_FILE dbf;

      int
      gdbm_store (dbf, key, content, flag)
      GDBM_FILE dbf;
      datum key, content;
      int flag;

      datum
      gdbm_fetch (dbf, key)
      GDBM_FILE dbf;
      datum key;

      int
      gdbm_delete (dbf, key)
      GDBM_FILE dbf;
      datum key;

      datum
      gdbm_firstkey (dbf)
      GDBM_FILE dbf;

      datum
      gdbm_nextkey (dbf, key)
      GDBM_FILE dbf;
      datum key;

      int
      gdbm_reorganize (dbf)
      GDBM_FILE dbf;




SunOS 5.10           Last change: 10/15/2002                    1






Introduction to Library Functions                         GDBM(3)



      void
      gdbm_sync (dbf)
      GDBM_FILE dbf;

      int
      gdbm_exists (dbf, key)
      GDBM_FILE dbf;
      datum key;

      char *
      gdbm_strerror (errno)
      gdbm_error errno;

      int
      gdbm_setopt (dbf, option, value, size)
      GDBM_FILE dbf;
      int option;
      int *value;
      int size;

      int
      gdbm_fdesc (dbf)
      GDBM_FILE dbf;

DESCRIPTION
      GNU dbm is a library of routines  that  manages  data  files
      that contain key/data pairs.  The access provided is that of
      storing, retrieval, and deletion by  key  and  a  non-sorted
      traversal of all keys.  A process is allowed to use multiple
      data files at the same time.

      A process that opens a gdbm file is designated as a "reader"
      or  a  "writer".   Only  one writer may open a gdbm file and
      many readers may open the file.  Readers and writers can not
      open the gdbm file at the same time. The procedure for open-
      ing a gdbm file is:

        GDBM_FILE dbf;

        dbf = gdbm_open  (  name,  block_size,  read_write,  mode,
      fatal_func )

      Name is the name of the file (the complete name,  gdbm  does
      not  append any characters to this name).  Block_size is the
      size of a single transfer from disk to memory. This  parame-
      ter  is  ignored unless the file is a new file.  The minimum
      size is 512.  If it is less than 512, dbm will use the  stat
      block  size for the file system.  Read_write can have one of
      the following values:
      GDBM_READER reader
      GDBM_WRITER writer
      GDBM_WRCREAT writer - if database does not exist create  new



SunOS 5.10           Last change: 10/15/2002                    2






Introduction to Library Functions                         GDBM(3)



      one
      GDBM_NEWDB writer - create new database  regardless  if  one
      exists
      For the last three (writers of the database)  the  following
      may  be added added to read_write by bitwise or:  GDBM_SYNC,
      which causes all database operations to be  synchronized  to
      the  disk,  and GDBM_NOLOCK, which prevents the library from
      performing any locking on the  database  file.   The  option
      GDBM_FAST  is  now  obsolete, since gdbm defaults to no-sync
      mode.
      Mode is the file mode (see chmod(2) and open(2)) if the file
      is  created.  (*Fatal_func) () is a function for dbm to call
      if it detects a fatal error.  The  only  parameter  of  this
      function  is  a string.  If the value of 0 is provided, gdbm
      will use a default function.

      The return value dbf is the pointer needed by all other rou-
      tines  to  access that gdbm file.  If the return is the NULL
      pointer, gdbm_open was not successful.  The  errors  can  be
      found  in gdbm_errno for gdbm errors and in errno for system
      errors.  (For error codes, see gdbmerrno.h.)

      In all of the following calls, the parameter dbf  refers  to
      the pointer returned from gdbm_open.

      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:

        gdbm_close (dbf);


      The database is used  by  3  primary  routines.   The  first
      stores data in the database.

        ret = gdbm_store ( dbf, key, content, flag )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data.   Content  is  the data to be associated with the key.
      Flag can have one of the following values:
      GDBM_INSERT insert only, generate an error if key exists
      GDBM_REPLACE replace contents if key exists.

      If a reader calls gdbm_store, the return value will be   -1.
      If  called  with GDBM_INSERT and key is in the database, the
      return value will be 1.  Otherwise, the return value is 0.

      NOTICE: If you store data for a key that is already  in  the
      data  base,  gdbm replaces the old data with the new data if
      called with GDBM_REPLACE.  You do not get two data items for
      the same key and you do not get an error from gdbm_store.




SunOS 5.10           Last change: 10/15/2002                    3






Introduction to Library Functions                         GDBM(3)



      NOTICE: The size in gdbm is not restricted like dbm or ndbm.
      Your data can be as large as you want.


      To search for some data:

        content = gdbm_fetch ( dbf, key )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data.


      If the dptr element of the return value is NULL, no data was
      found.  Otherwise the return value is a pointer to the found
      data.  The storage space for the dptr element  is  allocated
      using  malloc(3C).   Gdbm  does  not automatically free this
      data.  It is the programmer's responsibility  to  free  this
      storage when it is no longer needed.


      To search for some data, without retrieving it:

        ret = gdbm_exists ( dbf, key )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data to search for.

      If the key is found within the database,  the  return  value
      ret  will be true.  If nothing appropiate is found, ret will
      be false.  This routine is useful for checking for the exis-
      tance  of a record, without performing the memory allocation
      done by gdbm_fetch.


      To remove some data from the database:

        ret = gdbm_delete ( dbf, key )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data.

      The return value is -1 if the item is  not  present  or  the
      requester is a reader.  The return value is 0 if there was a
      successful delete.


      The next two routines allow for accessing all items  in  the
      database.   This  access  is  not  key sequential, but it is
      guaranteed to visit every key in the  database  once.   (The
      order has to do with the hash values.)

        key = gdbm_firstkey ( dbf )



SunOS 5.10           Last change: 10/15/2002                    4






Introduction to Library Functions                         GDBM(3)



        nextkey = gdbm_nextkey ( dbf, key )

      Dbf is the pointer returned by gdbm_open.  Key  is  the  key
      data.

      The return values are both of type datum.  If the dptr  ele-
      ment  of  the return value is NULL, there is no first key or
      next key.  Again notice that dptr points to  data  allocated
      by malloc(3C) and gdbm will not free it for you.

      These functions were  intended  to  visit  the  database  in
      read-only algorithms, for instance, to validate the database
      or similar operations.

      File `visiting' is based on  a  `hash  table'.   gdbm_delete
      re-arranges  the hash table to make sure that any collisions
      in the table do not leave some item `un-findable'.  The ori-
      ginal key order is NOT guaranteed to remain unchanged in ALL
      instances.  It is possible that some key will not be visited
      if a loop like the following is executed:

         key = gdbm_firstkey ( dbf );
         while ( key.dptr ) {
            nextkey = gdbm_nextkey ( dbf, key );
            if ( some condition ) {
               gdbm_delete ( dbf, key );
               free ( key.dptr );
            }
            key = nextkey;
         }


      The following routine should be used very infrequently.
        ret = gdbm_reorganize ( dbf )

      If you have had a lot of deletions and would like to  shrink
      the  space used by the gdbm file, this routine will reorgan-
      ize the database.  Gdbm will not shorten  the  length  of  a
      gdbm  file  except  by  using this reorganization.  (Deleted
      file space will be reused.)


      Unless your database was opened  with  the  GDBM_SYNC  flag,
      gdbm  does  not  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.

        gdbm_sync ( dbf )

      It will not return until the disk file state is  syncronized



SunOS 5.10           Last change: 10/15/2002                    5






Introduction to Library Functions                         GDBM(3)



      with the in-memory state of the database.


      To convert a gdbm error code into  English  text,  use  this
      routine:

        ret = gdbm_strerror ( errno )

      Where errno is of type gdbm_error, usually the global  vari-
      able gdbm_errno.  The appropiate phrase is returned.


      Gdbm now supports the ability to set certain options  on  an
      already open database.

        ret = gdbm_setopt ( dbf, option, value, size )

      Where dbf is the  return  value  from  a  previous  call  to
      gdbm_open,  and  option  specifies which option to set.  The
      valid options are currently:

        GDBM_CACHESIZE - Set the size of the internal bucket
        cache. This option may only be set once on each GDBM_FILE
        descriptor, and is set automatically to 100 upon the first
        access to the database.

        GDBM_FASTMODE - Set fast mode to either on or off.  This
        allows fast mode to be toggled on an already open and
        active database. value (see below) should be set to either
        TRUE or FALSE.  This option is now obsolete.

        GDBM_SYNCMODE - Turn on or off file system synchronization
      operations.
        This setting defaults to off; value (see below) should  be
      set to either
        TRUE or FALSE.

        GDBM_CENTFREE - Set central free block pool to  either  on
      or off.
        The default is off, which is how previous versions of Gdbm
        handled free blocks. If set, this option causes all subse-
      quent free
        blocks to be placed  in  the  global  pool,  allowing  (in
      thoery)
        more file space to be  reused  more  quickly.  value  (see
      below) should
        be set to either TRUE or FALSE.
        NOTICE: This feature is still under study.

        GDBM_COALESCEBLKS - Set free block merging to either on or
      off.
        The default is off, which is how previous versions of Gdbm



SunOS 5.10           Last change: 10/15/2002                    6






Introduction to Library Functions                         GDBM(3)



        handled free blocks. If set, this option  causes  adjacent
      free blocks
        to be merged. This can become a CPU expensive process with
      time, though,
        especially if  used  in  conjunction  with  GDBM_CENTFREE.
      value
        (see below) should be set to either TRUE or FALSE.
        NOTICE: This feature is still under study.

      value is the value to set option to, specified as an integer
      pointer.   size is the size of the data pointed to by value.
      The return value will be -1 upon failure, or 0 upon success.
      The global variable gdbm_errno will be set upon failure.

      For instance, to set a database to use a cache of 10,  after
      opening  it with gdbm_open, but prior to accessing it in any
      way, the following code could be used:

        int value = 10;

        ret   =   gdbm_setopt(   dbf,   GDBM_CACHESIZE,    &value,
      sizeof(int));

      If the database was opened with the  GDBM_NOLOCK  flag,  the
      user may wish to perform their own file locking on the data-
      base file in order to prevent multiple writers operating  on
      the same file simultaneously.

      In order to support this, the  gdbm_fdesc  routine  is  pro-
      vided.

        ret = gdbm_fdesc ( dbf )

      Where dbf is the  return  value  from  a  previous  call  to
      gdbm_open.   The return value will be the file descriptor of
      the database.

      The following two external variables may be useful:

      gdbm_errno is the variable that  contains  more  information
      about gdbm errors.  (gdbm.h has the definitions of the error
      values and defines gdbm_errno as an external variable.)
      gdbm_version is the string containing the  version  informa-
      tion.


      There are a few more things of interest.  First, gdbm  files
      are  not  "sparse".   You  can copy them with the UNIX cp(1)
      command and they will not expand  in  the  copying  process.
      Also,  there  is  a compatibility mode for use with programs
      that already use UNIX dbm.  In this compatibility  mode,  no



SunOS 5.10           Last change: 10/15/2002                    7






Introduction to Library Functions                         GDBM(3)



      gdbm  file  pointer  is required by the programmer, and only
      one file may be opened at a time.  All users in  compatibil-
      ity  mode  are assumed to be writers.  If the gdbm file is a
      read only, it will fail as a writer, but will  also  try  to
      open  it as a reader.  All returned pointers in datum struc-
      tures point to data that gdbm WILL  free.   They  should  be
      treated as static pointers (as standard UNIX dbm does).



LINKING
      This library is accessed by specifying -lgdbm  as  the  last
      parameter to the compile line, e.g.:

           gcc -o prog prog.c -lgdbm

      If you wish to use the dbm or ndbm  compatibility  routines,
      you must link in the gdbm_compat library as well.  For exam-
      ple:

           gcc -o prog proc.c -lgdbm -lgdbm_compat


BUGS
SEE ALSO
      dbm, ndbm


AUTHOR
      by Philip A. Nelson and Jason Downs.  Copyright (C)  1990  -
      1999 Free Software Foundation, Inc.

      GDBM is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as pub-
      lished by the Free Software Foundation; either version 1, or
      (at your option) any later version.

      GDBM is distributed in the hope that it will be useful,  but
      WITHOUT  ANY  WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A  PARTICULAR  PURPOSE.   See
      the GNU General Public License for more details.

      You should have received a copy of the  GNU  General  Public
      License  along  with  GDBM;  see  the file COPYING.  If not,
      write to the Free Software Foundation, 675  Mass  Ave,  Cam-
      bridge, MA 02139, USA.

      You may contact the original author by:
         e-mail:  phil@cs.wwu.edu
        us-mail:  Philip A. Nelson
      Computer Science Department
      Western Washington University



SunOS 5.10           Last change: 10/15/2002                    8






Introduction to Library Functions                         GDBM(3)



      Bellingham, WA 98226

      You may contact the current maintainer by:
         e-mail:  downsj@downsj.com


ATTRIBUTES
      See attributes(5) for descriptions of the  following  attri-
      butes:

      box; cbp-1 | cbp-1 l | l .  ATTRIBUTE TYPE ATTRIBUTE VALUE =
      Availability   SUNWgnu-dbm = Interface Stability Uncommitted

NOTES
      Source for gdbm is available on http://opensolaris.org.

SunOS 5.10           Last change: 10/15/2002                    9




From Peter.Dennis@sun.com Wed Nov  5 19:33:53 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id mA63Xqtg005714
	for <psarc-ext@sac.sfbay.Sun.COM>; Wed, 5 Nov 2008 19:33:52 -0800 (PST)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id mA63XmP2006559
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Thu, 6 Nov 2008 11:33:51 +0800 (SGT)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9W00D0178EQ700@nwk-avmta-1.sfbay.Sun.COM> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@Sun.COM); Wed, 05 Nov 2008 19:33:50 -0800 (PST)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K9W007OM78DCKC0@nwk-avmta-1.sfbay.Sun.COM> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@Sun.COM); Wed,
 05 Nov 2008 19:33:49 -0800 (PST)
Received: from fe-emea-10.sun.com (gmp-eb-lb-1-fe3.eu.sun.com [192.18.6.10])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id mA63Xm4n022276	for
 <PSARC-ext@Sun.COM>; Thu, 06 Nov 2008 03:33:48 +0000 (GMT)
Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9W00M0175UPG00@fe-emea-10.sun.com>
 (original mail from Peter.Dennis@Sun.COM)
 for PSARC-ext@Sun.COM (ORCPT PSARC-ext@Sun.COM); Thu,
 06 Nov 2008 03:33:48 +0000 (GMT)
Received: from [10.0.232.148] ([192.18.192.76])
 by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28
 2007)) with ESMTPSA id <0K9W00DVB786V130@fe-emea-10.sun.com> for
 PSARC-ext@Sun.COM (ORCPT PSARC-ext@Sun.COM); Thu,
 06 Nov 2008 03:33:48 +0000 (GMT)
Date: Thu, 06 Nov 2008 03:33:42 +0000
From: Pete Dennis <Peter.Dennis@sun.com>
Subject: Re: Integrate gdbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack
 timeout 10/28/2008] update
In-reply-to: <490ECCAC.7090409@Sun.COM>
Sender: Peter.Dennis@sun.com
To: Martina Tomisova <Martina.Tomisova@sun.com>
Cc: PSARC-ext@sun.com
Message-id: <49126596.4030101@sun.com>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <490ECCAC.7090409@Sun.COM>
User-Agent: Thunderbird 2.0.0.16 (X11/20080923)
Status: RO
Content-Length: 59

This case was approved in PSARC meeting 05-Nov-2008.

Pete

From Peter.Dennis@sun.com Fri Apr 17 06:33:25 2009
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id n3HDXOD4009293
	for <psarc-ext@sac.sfbay.sun.com>; Fri, 17 Apr 2009 06:33:24 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id n3HDXMAd005356
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Fri, 17 Apr 2009 14:33:23 +0100 (BST)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0KI80070BYZMV300@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Fri, 17 Apr 2009 06:33:22 -0700 (PDT)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0KI8004VCYZLJR40@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Fri,
 17 Apr 2009 06:33:22 -0700 (PDT)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe3.eu.sun.com [192.18.6.12])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id n3HDXLaG021061	for
 <PSARC-ext@sun.com>; Fri, 17 Apr 2009 13:33:21 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java(tm) System Messaging Server 7.0-5.01 64bit (built Feb 19 2009))
 id <0KI800M00Y2YOZ00@fe-emea-09.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Fri, 17 Apr 2009 14:33:21 +0100 (BST)
Received: from [129.156.173.66] ([unknown] [129.156.173.66])
 by fe-emea-09.sun.com
 (Sun Java(tm) System Messaging Server 7.0-5.01 64bit (built Feb 19 2009))
 with ESMTPSA id <0KI800K2GYZJDFA0@fe-emea-09.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Fri, 17 Apr 2009 14:33:19 +0100 (BST)
Date: Fri, 17 Apr 2009 14:33:19 +0100
From: Peter Dennis - Sustaining Engineer <Peter.Dennis@sun.com>
Subject: Integrate gbm (gnu-dbm) into Solaris [PSARC/2008/645 FastTrack timeout
 10/28/2008] update
Sender: Peter.Dennis@sun.com
To: PSARC-ext@sun.com
Cc: Milan Jurik <Milan.Jurik@sun.com>
Message-id: <49E8851F.3000606@sun.com>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
User-Agent: Thunderbird 2.0.0.21 (X11/20090323)
Status: RO
Content-Length: 525

Just a note to update the spec of this case to include
64 bit versions of the libraries which were missed out
in the original proposal - I am leaving the case as closed
approved.

The relevant additions are:

usr/lib/64/libgdbm.so.3.0.0   Uncommitted  library
usr/lib/64/libgdbm.so.3       Uncommitted  Symbolic link to
                                            usr/lib/64/libgdbm.so.3.0.0
usr/lib/64/libgdbm.so         Uncommitted  Symbolic link to
                                            usr/lib/64/libgdbm.so.3.0.0


