diff options
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/tool/diffdb.c')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/tool/diffdb.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/tool/diffdb.c b/libraries/sqlite/unix/sqlite-3.5.1/tool/diffdb.c new file mode 100644 index 0000000..0537d38 --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/tool/diffdb.c | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | ** A utility for printing the differences between two SQLite database files. | ||
3 | */ | ||
4 | #include <stdio.h> | ||
5 | #include <ctype.h> | ||
6 | #include <sys/types.h> | ||
7 | #include <sys/stat.h> | ||
8 | #include <fcntl.h> | ||
9 | #include <unistd.h> | ||
10 | #include <stdlib.h> | ||
11 | |||
12 | |||
13 | #define PAGESIZE 1024 | ||
14 | static int db1 = -1; | ||
15 | static int db2 = -1; | ||
16 | |||
17 | int main(int argc, char **argv){ | ||
18 | int iPg; | ||
19 | unsigned char a1[PAGESIZE], a2[PAGESIZE]; | ||
20 | if( argc!=3 ){ | ||
21 | fprintf(stderr,"Usage: %s FILENAME FILENAME\n", argv[0]); | ||
22 | exit(1); | ||
23 | } | ||
24 | db1 = open(argv[1], O_RDONLY); | ||
25 | if( db1<0 ){ | ||
26 | fprintf(stderr,"%s: can't open %s\n", argv[0], argv[1]); | ||
27 | exit(1); | ||
28 | } | ||
29 | db2 = open(argv[2], O_RDONLY); | ||
30 | if( db2<0 ){ | ||
31 | fprintf(stderr,"%s: can't open %s\n", argv[0], argv[2]); | ||
32 | exit(1); | ||
33 | } | ||
34 | iPg = 1; | ||
35 | while( read(db1, a1, PAGESIZE)==PAGESIZE && read(db2,a2,PAGESIZE)==PAGESIZE ){ | ||
36 | if( memcmp(a1,a2,PAGESIZE) ){ | ||
37 | printf("Page %d\n", iPg); | ||
38 | } | ||
39 | iPg++; | ||
40 | } | ||
41 | printf("%d pages checked\n", iPg-1); | ||
42 | close(db1); | ||
43 | close(db2); | ||
44 | } | ||