}
if ( line[0] == '\n' || stop && buf && *buf ) {
if ( * buf != '\n' ) {
- id++;
+ if (isdigit((unsigned char) *buf)) {
+ id = atol(buf);
+ } else {
+ id++;
+ }
s = buf;
while ( (linep = str_getline( &s )) != NULL ) {
if ( str_parse_line( linep, &type, &val,
char line[BUFSIZ], idbuf[BUFSIZ];
int lmax, lcur;
int dbnum;
- ID id;
+ ID id, maxid;
struct dbcache *db;
Backend *be = NULL;
struct ldbminfo *li;
}
id = 0;
+ maxid = 0;
stop = 0;
buf = NULL;
lcur = lmax = 0;
int len;
id++;
+ if( id > maxid ) maxid = id;
key.dptr = (char *) &id;
key.dsize = sizeof(ID);
data.dptr = buf;
}
(*be->be_close)( be );
- id++;
+ maxid++;
sprintf( line, "%s/NEXTID",
((struct ldbminfo *) be->be_private)->li_directory );
if ( (fp = fopen( line, "w" )) == NULL ) {
perror( line );
- fprintf( stderr, "Could not write next id %ld\n", id );
+ fprintf( stderr, "Could not write next id %ld\n", maxid );
} else {
- fprintf( fp, "%ld\n", id );
+ fprintf( fp, "%ld\n", maxid );
fclose( fp );
}