]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb2/nextid.c
Factor out ldif2* intialization to ldif2common.c
[openldap] / servers / slapd / back-bdb2 / nextid.c
index 4021b8e473f968ecd30d59e0716a7d0a97d823ff..0218cfd7842acc13d6305cb526162004600442ce 100644 (file)
 #include "slap.h"
 #include "back-bdb2.h"
 
-/*  XXX the separate handling of the NEXTID file is in contrast to TP  */
-/*  the NEXTID file is beeing opened during database start-up  */
-static ID
-next_id_read( BackendDB *be )
-{
-       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       BDB2_TXN_HEAD   *head = &li->li_txn_head;
-       FILE*   fp = head->nextidFP;
-       ID      id;
-       char    buf[20];
-
-       /*  set the file pointer to the beginnig of the file  */
-       rewind( fp );
-
-       /*  read the nextid  */
-       if ( fgets( buf, sizeof(buf), fp ) == NULL ) {
-               Debug( LDAP_DEBUG_ANY,
-                  "next_id_read: could not fgets nextid from \"%s\"\n",
-                   li->li_nextid_file, 0, 0 );
-               return NOID;
-       }
-
-       id = atol( buf );
-
-       if(id < 1) {
-               Debug( LDAP_DEBUG_ANY,
-                       "next_id_read %ld: atol(%s) return non-positive integer\n",
-                       id, buf, 0 );
-               return NOID;
-       }
-
-       return id;
-}
+/*  reading and writing NEXTID is handled in txn.c  */
+#define next_id_read(be)  bdb2i_get_nextid( (be) )
+#define next_id_write(be,id)  bdb2i_put_nextid( (be), (id) )
 
-/*  XXX the separate handling of the NEXTID file is in contrast to TP  */
-/*  the NEXTID file is beeing opened during database start-up  */
-static int
-next_id_write( BackendDB *be, ID id )
-{
-       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       BDB2_TXN_HEAD   *head = &li->li_txn_head;
-       FILE*   fp = head->nextidFP;
-       char    buf[20];
-       int             rc = 0;
-
-       /*  set the file pointer to the beginnig of the file  */
-       rewind( fp );
-
-       /*  write the nextid  */
-       if ( fprintf( fp, "%ld\n", id ) == EOF ) {
-               Debug( LDAP_DEBUG_ANY, "next_id_write(%ld): cannot fprintf\n",
-                   id, 0, 0 );
-               rc = -1;
-       }
-
-       /*  if forced flushing of files is in effect, do so  */
-       if( li->li_dbcachewsync && ( fflush( fp ) != 0 )) {
-               Debug( LDAP_DEBUG_ANY, "next_id_write %ld: cannot fflush\n",
-                   id, 0, 0 );
-               rc = -1;
-       }
-
-       return rc;
-}
 
 int
 bdb2i_next_id_save( BackendDB *be )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
        ID id = bdb2i_next_id_get( be );
-       int rc = next_id_write( be, id );
+       int rc;
 
+       rc = next_id_write( be, id );
        if (rc == 0) {
                li->li_nextid_wrote = id;
        }
@@ -137,7 +78,7 @@ bdb2i_next_id_return( BackendDB *be, ID id )
 
        li->li_nextid--;
 
-#if !( SLAPD_NEXTID_CHUCK > 1 )
+#if !( SLAPD_NEXTID_CHUNK > 1 )
        (void) next_id_write( be, li->li_nextid );
 #endif
 #endif