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 at 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 at 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 at 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
> 
> 
> 


Reply via email to