1 /* chkseq.c Check sequential read and write */
2
3 #include <sys/stat.h>
4 #include "db-int.h"
5 #include <errno.h> /* Error numbers */
6 #include <fcntl.h> /* O_CREAT, O_RDWR */
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10
11
main(int argc,char * argv[])12 void main(int argc, char *argv[]) {
13 char id1[] = {" "}, id2[] = {" "};
14 int i;
15 long in = 0L, out = 0L;
16 DB *dbp, *dbpo;
17 DBT key, data, keyo, datao;
18 FILE *fopen(), *fin;
19
20 unlink("test.db");
21 if ((fin = fopen("data","r")) == NULL) {
22 printf("Unable to open %s\n","data");
23 exit(25);
24 }
25 if ((dbp = dbopen("test.db",O_RDWR | O_CREAT | O_BINARY, 0664
26 , DB_BTREE, NULL )) == NULL) {
27 printf("\n Open error on test.db %d %s\n",errno,strerror(errno));
28 exit(25);
29 }
30
31 while (fscanf(fin," %10s%10s",id1,id2) > 0) {
32 key.size = 11;
33 data.size = 11;
34 key.data = id1;
35 data.data = id2;
36 printf("%10s %10s\n",key.data,data.data);
37 if (dbp->put(dbp, &key, &data,R_NOOVERWRITE) != 0) {
38 printf("Error writing output\n");
39 }
40 out++;
41 }
42 printf("%d Records in\n",out);
43 dbp->close(dbp);
44
45 if ((dbp = dbopen("test.db", O_RDWR | O_BINARY, 0664
46 , DB_BTREE, NULL )) == NULL) {
47 printf("\n Error on dbopen %d %s\n",errno,strerror(errno));
48 exit(61);
49 }
50
51 while (dbp->seq(dbp, &key, &data,R_NEXT) == 0) {
52 strcpy(id1,key.data);
53 keyo.size = 11;
54 datao.size = 11;
55 keyo.data = id1;
56 strcpy(id2,data.data);
57 id2[0] = 'U';
58 datao.data=id2;
59 printf("%10s %10s\n",key.data,data.data);
60 in++;
61 if (in > 10) break;
62 #ifdef notdef
63 if (dbp->put(dbp, &keyo, &datao,0) != 0) {
64 printf("Write failed at %d\n",in);
65 exit(85);
66 }
67 #else
68 if (dbp->put(dbp, &keyo, &datao,R_CURSOR) != 0) {
69 printf("Write failed at %d\n",in);
70 exit(85);
71 }
72 #endif
73 }
74 printf("%d Records copied\n",in);
75 in = 0;
76 dbp->seq(dbp, &key, &data,R_FIRST);
77 printf("%10s %10s\n",key.data,data.data);
78 in++;
79 while (dbp->seq(dbp, &key, &data,R_NEXT) == 0) {
80 in++;
81 printf("%10s %10s\n",key.data,data.data);
82 }
83 printf("%d Records read\n",in);
84 dbp->close(dbp);
85 }
86