void ldbm_sync( LDBM ldbm ) { /* XXX: Not sure if this is re-entrant need to check code, if so * you can leave LOCKS out. */ LDBM_WLOCK; mdbm_sync( ldbm ); LDBM_WUNLOCK; }
int ldbm_store( LDBM ldbm, Datum key, Datum data, int flags ) { int rc; Datum int_key; /* Internal key */ #ifdef MDBM_DEBUG fprintf( stdout, "==>(mdbm)ldbm_store(db=%p, key(dptr=%p,sz=%d), data(dptr=%p,sz=%d), flags=%x)\n", ldbm, key.dptr, key.dsize, data.dptr, data.dsize, flags ); fflush( stdout ); #endif /* LDBM_WLOCK; */ #ifdef NO_NULL_KEY int_key.dsize = key.dsize + 1; int_key.dptr = malloc( int_key.dsize ); *(int_key.dptr) = 'l'; /* Must not be NULL !*/ AC_MEMCPY( (void *)(int_key.dptr + 1), key.dptr, key.dsize ); #else int_key = key; #endif rc = mdbm_store( ldbm, int_key, data, flags ); if ( flags & LDBM_SYNC ) { mdbm_sync( ldbm ); } /* LDBM_WUNLOCK; */ #ifdef MDBM_DEBUG fprintf( stdout, "<==(mdbm)ldbm_store(rc=%d)\n", rc ); fflush( stdout ); #endif #ifdef NO_NULL_KEY free(int_key.dptr); #endif return( rc ); }
int main(int argc, char** argv) { MDBM* db; int opt; int oflags = 0; while ((opt = getopt(argc,argv,"hL")) != -1) { switch (opt) { case 'h': usage(0); case 'L': oflags |= MDBM_OPEN_NOLOCK; break; default: usage(1); } } if ((argc - optind) != 1) { usage(1); } if (!(oflags&MDBM_OPEN_NOLOCK)) { oflags |= MDBM_ANY_LOCKS; } if ((db = mdbm_open( argv[optind], MDBM_O_RDONLY|oflags, 0, 0, 0)) == NULL) { fprintf(stderr, PREFIX "mdbm_open(%s): %s\n", argv[optind], strerror(errno)); exit(1); } if (mdbm_sync(db)) { fprintf(stderr, PREFIX "mdbm_sync(%s): %s\n", argv[optind], strerror(errno)); exit(1); } mdbm_close(db); return 0; }