Cross Reference: showjournal.c
xref
: /
osnet-11
/
usr
/
src
/
lib
/
libsqlite
/
tool
/
showjournal.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
2
N/A
2
N/A
#
pragma
ident
"%Z%%M% %I% %E% SMI"
2
N/A
2
N/A
/*
2
N/A
** A utility for printing an SQLite database journal.
2
N/A
*/
2
N/A
#
include
<
stdio.h
>
2
N/A
#
include
<
ctype.h
>
2
N/A
#
include
<
sys
/
types.h
>
2
N/A
#
include
<
sys
/
stat.h
>
2
N/A
#
include
<
fcntl.h
>
2
N/A
#
include
<
unistd.h
>
2
N/A
#
include
<
stdlib.h
>
2
N/A
2
N/A
2
N/A
static
int
pagesize
=
1024
;
2
N/A
static
int
db
= -
1
;
2
N/A
static
int
mxPage
= 0;
2
N/A
2
N/A
static
void
out_of_memory
(
void
){
2
N/A
fprintf
(
stderr
,
"Out of memory...\n"
);
2
N/A
exit
(
1
);
2
N/A
}
2
N/A
2
N/A
static
print_page
(
int
iPg
){
2
N/A
unsigned
char
*
aData
;
2
N/A
int
i, j;
2
N/A
aData
=
malloc
(
pagesize
);
2
N/A
if
(
aData
==0 )
out_of_memory
();
2
N/A
read
(
db
,
aData
,
pagesize
);
2
N/A
fprintf
(
stdout
,
"Page %d:\n"
,
iPg
);
2
N/A
for
(i=0; i<
pagesize
; i +=
16
){
2
N/A
fprintf
(
stdout
,
" %03x: "
,i);
2
N/A
for
(j=0; j<
16
; j++){
2
N/A
fprintf
(
stdout
,
"%02x "
,
aData
[i+j]);
2
N/A
}
2
N/A
for
(j=0; j<
16
; j++){
2
N/A
fprintf
(
stdout
,
"%c"
,
isprint
(
aData
[i+j]) ?
aData
[i+j] :
'.'
);
2
N/A
}
2
N/A
fprintf
(
stdout
,
"\n"
);
2
N/A
}
2
N/A
free
(
aData
);
2
N/A
}
2
N/A
2
N/A
int
main
(
int
argc
,
char
**
argv
){
2
N/A
struct
stat
sbuf
;
2
N/A
unsigned
int
u;
2
N/A
int
rc
;
2
N/A
unsigned
char
zBuf
[
10
];
2
N/A
unsigned
char
zBuf2
[
sizeof
(u)];
2
N/A
if
(
argc
!=
2
){
2
N/A
fprintf
(
stderr
,
"Usage: %s FILENAME\n"
,
argv
[0]);
2
N/A
exit
(
1
);
2
N/A
}
2
N/A
db
=
open
(
argv
[
1
],
O_RDONLY
);
2
N/A
if
(
db
<0 ){
2
N/A
fprintf
(
stderr
,
"%s: can't open %s\n"
,
argv
[0],
argv
[
1
]);
2
N/A
exit
(
1
);
2
N/A
}
2
N/A
read
(
db
,
zBuf
,
8
);
2
N/A
if
(
zBuf
[
7
]==
0xd6
){
2
N/A
read
(
db
, &u,
sizeof
(u));
2
N/A
printf
(
"Records in Journal: %u\n"
, u);
2
N/A
read
(
db
, &u,
sizeof
(u));
2
N/A
printf
(
"Magic Number: 0x%08x\n"
, u);
2
N/A
}
2
N/A
read
(
db
,
zBuf2
,
sizeof
(
zBuf2
));
2
N/A
u =
zBuf2
[0]<<
24
|
zBuf2
[
1
]<<
16
|
zBuf2
[
2
]<<
8
|
zBuf2
[
3
];
2
N/A
printf
(
"Database Size: %u\n"
, u);
2
N/A
while
(
read
(
db
,
zBuf2
,
sizeof
(
zBuf2
))==
sizeof
(
zBuf2
) ){
2
N/A
u =
zBuf2
[0]<<
24
|
zBuf2
[
1
]<<
16
|
zBuf2
[
2
]<<
8
|
zBuf2
[
3
];
2
N/A
print_page
(u);
2
N/A
if
(
zBuf
[
7
]==
0xd6
){
2
N/A
read
(
db
, &u,
sizeof
(u));
2
N/A
printf
(
"Checksum: 0x%08x\n"
, u);
2
N/A
}
2
N/A
}
2
N/A
close
(
db
);
2
N/A
}