Пример #1
0
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;
}
Пример #2
0
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 );
}
Пример #3
0
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;
}