#include "portable.h"
#include <stdio.h>
+#include <stdlib.h>
+#include <ac/ctype.h>
#include <ac/string.h>
#include <ac/socket.h>
#include <ac/unistd.h>
#define MAXARGS 100
-int ldap_debug;
-int ldap_syslog;
-int ldap_syslog_level;
-int global_schemacheck;
-long num_entries_sent;
-long num_bytes_sent;
-int active_threads;
-char *default_referral;
-struct objclass *global_oc;
-time_t currenttime;
-pthread_t listener_tid;
-pthread_mutex_t num_sent_mutex;
-pthread_mutex_t entry2str_mutex;
-pthread_mutex_t active_threads_mutex;
-pthread_mutex_t new_conn_mutex;
-pthread_mutex_t currenttime_mutex;
-pthread_mutex_t replog_mutex;
-pthread_mutex_t ops_mutex;
-pthread_mutex_t regex_mutex;
-
static char *tailorfile;
static char *inputfile;
int dbnum;
ID id;
struct dbcache *db;
- Backend *be;
+ Backend *be = NULL;
+ struct ldbminfo *li;
struct berval bv;
struct berval *vals[2];
Avlnode *avltypes = NULL;
}
be = &backends[dbnum];
+ /* disable write sync'ing */
+ li = (struct ldbminfo *) be->be_private;
+ li->li_dbcachewsync = 0;
+
if ( (db = ldbm_cache_open( be, "id2entry", LDBM_SUFFIX, LDBM_NEWDB ))
== NULL ) {
perror( "id2entry file" );
int vlen;
Datum key, data;
+ ldbm_datum_init( key );
+ ldbm_datum_init( data );
+
if ( fgets( line, sizeof(line), stdin ) != NULL ) {
int len, idlen;
len = strlen( line );
if ( buf == NULL || *buf == '\0' ) {
- sprintf( idbuf, "%lu\n", id + 1 );
- idlen = strlen( idbuf );
+ if (!isdigit(line[0])) {
+ sprintf( idbuf, "%d\n", id + 1 );
+ idlen = strlen( idbuf );
+ } else {
+ id = atol(line) - 1;
+ idlen = 0;
+ }
} else {
idlen = 0;
}
}
if ( line[0] == '\n' || stop && buf && *buf ) {
if ( *buf != '\n' ) {
+ int len;
+
id++;
key.dptr = (char *) &id;
key.dsize = sizeof(ID);
data.dptr = buf;
- data.dsize = strlen( buf ) + 1;
+ len = strlen(buf);
+ if (buf[len - 1] == '\n')
+ buf[--len] = '\0';
+ data.dsize = len + 1;
if ( ldbm_store( db->dbc_db, key, data,
LDBM_INSERT ) != 0 ) {
fputs("id2entry ldbm_store failed\n",