1 /*-
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Margo Seltzer.
7 *
8 * %sccs.include.redist.c%
9 */
10
11 #ifndef lint
12 static char copyright[] =
13 "@(#) Copyright (c) 1991, 1993\n\
14 The Regents of the University of California. All rights reserved.\n";
15 #endif /* not lint */
16
17 #ifndef lint
18 static char sccsid[] = "@(#)driver2.c 8.1 (Berkeley) 06/04/93";
19 #endif /* not lint */
20
21 /*
22 * Test driver, to try to tackle the large ugly-split problem.
23 */
24
25 #include <sys/file.h>
26 #include <stdio.h>
27 #include "ndbm.h"
28
my_hash(key,len)29 int my_hash(key, len)
30 char *key;
31 int len;
32 {
33 return(17); /* So I'm cruel... */
34 }
35
main(argc,argv)36 main(argc, argv)
37 int argc;
38 {
39 DB *db;
40 DBT key, content;
41 char keybuf[2049];
42 char contentbuf[2049];
43 char buf[256];
44 int i;
45 HASHINFO info;
46
47 info.bsize = 1024;
48 info.ffactor = 5;
49 info.nelem = 1;
50 info.cachesize = NULL;
51 #ifdef HASH_ID_PROGRAM_SPECIFIED
52 info.hash_id = HASH_ID_PROGRAM_SPECIFIED;
53 info.hash_func = my_hash;
54 #else
55 info.hash = my_hash;
56 #endif
57 info.lorder = 0;
58 if (!(db = dbopen("bigtest", O_RDWR | O_CREAT, 0644, DB_HASH, &info))) {
59 sprintf(buf, "dbopen: failed on file bigtest");
60 perror(buf);
61 exit(1);
62 }
63 srandom(17);
64 key.data = keybuf;
65 content.data = contentbuf;
66 bzero(keybuf, sizeof(keybuf));
67 bzero(contentbuf, sizeof(contentbuf));
68 for (i=1; i <= 500; i++) {
69 key.size = 128 + (random()&1023);
70 content.size = 128 + (random()&1023);
71 /* printf("%d: Key size %d, data size %d\n", i, key.size,
72 content.size); */
73 sprintf(keybuf, "Key #%d", i);
74 sprintf(contentbuf, "Contents #%d", i);
75 if ((db->put)(db, &key, &content, R_NOOVERWRITE)) {
76 sprintf(buf, "dbm_store #%d", i);
77 perror(buf);
78 }
79 }
80 if ((db->close)(db)) {
81 perror("closing hash file");
82 exit(1);
83 }
84 exit(0);
85 }
86
87
88
89