158f0484fSRodney W. Grimes /*- 258f0484fSRodney W. Grimes * Copyright (c) 1991, 1993 358f0484fSRodney W. Grimes * The Regents of the University of California. All rights reserved. 458f0484fSRodney W. Grimes * 558f0484fSRodney W. Grimes * This code is derived from software contributed to Berkeley by 658f0484fSRodney W. Grimes * Margo Seltzer. 758f0484fSRodney W. Grimes * 858f0484fSRodney W. Grimes * Redistribution and use in source and binary forms, with or without 958f0484fSRodney W. Grimes * modification, are permitted provided that the following conditions 1058f0484fSRodney W. Grimes * are met: 1158f0484fSRodney W. Grimes * 1. Redistributions of source code must retain the above copyright 1258f0484fSRodney W. Grimes * notice, this list of conditions and the following disclaimer. 1358f0484fSRodney W. Grimes * 2. Redistributions in binary form must reproduce the above copyright 1458f0484fSRodney W. Grimes * notice, this list of conditions and the following disclaimer in the 1558f0484fSRodney W. Grimes * documentation and/or other materials provided with the distribution. 16*fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 1758f0484fSRodney W. Grimes * may be used to endorse or promote products derived from this software 1858f0484fSRodney W. Grimes * without specific prior written permission. 1958f0484fSRodney W. Grimes * 2058f0484fSRodney W. Grimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2158f0484fSRodney W. Grimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2258f0484fSRodney W. Grimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2358f0484fSRodney W. Grimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2458f0484fSRodney W. Grimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2558f0484fSRodney W. Grimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2658f0484fSRodney W. Grimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2758f0484fSRodney W. Grimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2858f0484fSRodney W. Grimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2958f0484fSRodney W. Grimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3058f0484fSRodney W. Grimes * SUCH DAMAGE. 3158f0484fSRodney W. Grimes */ 3258f0484fSRodney W. Grimes 3358f0484fSRodney W. Grimes #ifndef lint 3458f0484fSRodney W. Grimes static char copyright[] = 3558f0484fSRodney W. Grimes "@(#) Copyright (c) 1991, 1993\n\ 3658f0484fSRodney W. Grimes The Regents of the University of California. All rights reserved.\n"; 3758f0484fSRodney W. Grimes #endif /* not lint */ 3858f0484fSRodney W. Grimes 39333fc21eSDavid E. O'Brien #if defined(LIBC_SCCS) && !defined(lint) 4058f0484fSRodney W. Grimes static char sccsid[] = "@(#)driver2.c 8.1 (Berkeley) 6/4/93"; 41333fc21eSDavid E. O'Brien #endif /* LIBC_SCCS and not lint */ 42333fc21eSDavid E. O'Brien #include <sys/cdefs.h> 43333fc21eSDavid E. O'Brien __FBSDID("$FreeBSD$"); 4458f0484fSRodney W. Grimes 4558f0484fSRodney W. Grimes /* 4658f0484fSRodney W. Grimes * Test driver, to try to tackle the large ugly-split problem. 4758f0484fSRodney W. Grimes */ 4858f0484fSRodney W. Grimes 4958f0484fSRodney W. Grimes #include <sys/file.h> 5058f0484fSRodney W. Grimes #include <stdio.h> 5158f0484fSRodney W. Grimes #include "ndbm.h" 5258f0484fSRodney W. Grimes 5358f0484fSRodney W. Grimes int my_hash(key, len) 5458f0484fSRodney W. Grimes char *key; 5558f0484fSRodney W. Grimes int len; 5658f0484fSRodney W. Grimes { 5758f0484fSRodney W. Grimes return(17); /* So I'm cruel... */ 5858f0484fSRodney W. Grimes } 5958f0484fSRodney W. Grimes 6058f0484fSRodney W. Grimes main(argc, argv) 6158f0484fSRodney W. Grimes int argc; 6258f0484fSRodney W. Grimes { 6358f0484fSRodney W. Grimes DB *db; 6458f0484fSRodney W. Grimes DBT key, content; 6558f0484fSRodney W. Grimes char keybuf[2049]; 6658f0484fSRodney W. Grimes char contentbuf[2049]; 6758f0484fSRodney W. Grimes char buf[256]; 6858f0484fSRodney W. Grimes int i; 6958f0484fSRodney W. Grimes HASHINFO info; 7058f0484fSRodney W. Grimes 7158f0484fSRodney W. Grimes info.bsize = 1024; 7258f0484fSRodney W. Grimes info.ffactor = 5; 7358f0484fSRodney W. Grimes info.nelem = 1; 7458f0484fSRodney W. Grimes info.cachesize = NULL; 7558f0484fSRodney W. Grimes #ifdef HASH_ID_PROGRAM_SPECIFIED 7658f0484fSRodney W. Grimes info.hash_id = HASH_ID_PROGRAM_SPECIFIED; 7758f0484fSRodney W. Grimes info.hash_func = my_hash; 7858f0484fSRodney W. Grimes #else 7958f0484fSRodney W. Grimes info.hash = my_hash; 8058f0484fSRodney W. Grimes #endif 8158f0484fSRodney W. Grimes info.lorder = 0; 8258f0484fSRodney W. Grimes if (!(db = dbopen("bigtest", O_RDWR | O_CREAT, 0644, DB_HASH, &info))) { 8358f0484fSRodney W. Grimes sprintf(buf, "dbopen: failed on file bigtest"); 8458f0484fSRodney W. Grimes perror(buf); 8558f0484fSRodney W. Grimes exit(1); 8658f0484fSRodney W. Grimes } 8758f0484fSRodney W. Grimes srandom(17); 8858f0484fSRodney W. Grimes key.data = keybuf; 8958f0484fSRodney W. Grimes content.data = contentbuf; 9058f0484fSRodney W. Grimes bzero(keybuf, sizeof(keybuf)); 9158f0484fSRodney W. Grimes bzero(contentbuf, sizeof(contentbuf)); 9258f0484fSRodney W. Grimes for (i=1; i <= 500; i++) { 9358f0484fSRodney W. Grimes key.size = 128 + (random()&1023); 9458f0484fSRodney W. Grimes content.size = 128 + (random()&1023); 9558f0484fSRodney W. Grimes /* printf("%d: Key size %d, data size %d\n", i, key.size, 9658f0484fSRodney W. Grimes content.size); */ 9758f0484fSRodney W. Grimes sprintf(keybuf, "Key #%d", i); 9858f0484fSRodney W. Grimes sprintf(contentbuf, "Contents #%d", i); 9958f0484fSRodney W. Grimes if ((db->put)(db, &key, &content, R_NOOVERWRITE)) { 10058f0484fSRodney W. Grimes sprintf(buf, "dbm_store #%d", i); 10158f0484fSRodney W. Grimes perror(buf); 10258f0484fSRodney W. Grimes } 10358f0484fSRodney W. Grimes } 10458f0484fSRodney W. Grimes if ((db->close)(db)) { 10558f0484fSRodney W. Grimes perror("closing hash file"); 10658f0484fSRodney W. Grimes exit(1); 10758f0484fSRodney W. Grimes } 10858f0484fSRodney W. Grimes exit(0); 10958f0484fSRodney W. Grimes } 11058f0484fSRodney W. Grimes 11158f0484fSRodney W. Grimes 11258f0484fSRodney W. Grimes 113