mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-09-18 18:22:07 +08:00
Patch from Michael Wood to do the right thing on data export when there are
deleted rows present. Put checks in mdb-dump for presence of a valid file.
This commit is contained in:
@@ -21,7 +21,14 @@ int main(int argc, char **argv)
|
||||
int pg=0;
|
||||
char addr[10];
|
||||
|
||||
in = fopen(argv[1],"r");
|
||||
if (argc < 2) {
|
||||
fprintf(stderr, "Usage: mdb-dump <filename>\n\n");
|
||||
exit(1);
|
||||
}
|
||||
if ((in = fopen(argv[1],"r"))==NULL) {
|
||||
fprintf(stderr, "Couldn't open file %s\n", argv[1]);
|
||||
exit(1);
|
||||
}
|
||||
while (length = fread(data,1,16,in)) {
|
||||
sprintf(addr, "%06x", i);
|
||||
if (!strcmp(&addr[3],"000") || ! strcmp(&addr[3],"800")) {
|
||||
|
@@ -33,14 +33,27 @@ MdbColumn *col;
|
||||
}
|
||||
int mdb_find_end_of_row(MdbHandle *mdb, int row)
|
||||
{
|
||||
int rows, row_end;
|
||||
int rows, row_start, row_end, i;
|
||||
|
||||
rows = mdb_get_int16(mdb,8);
|
||||
if (row==0)
|
||||
row_end = mdb->pg_size - 1; /* end of page */
|
||||
else
|
||||
else {
|
||||
row_end = mdb_get_int16(mdb, (10 + (row-1) * 2)) - 1;
|
||||
|
||||
for (i = row - 1; i > 0; i--) {
|
||||
row_start = mdb_get_int16(mdb, (10 + i * 2));
|
||||
if (!(row_start & 0x8000)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == 0) {
|
||||
row_end = mdb->pg_size - 1;
|
||||
} else {
|
||||
row_end = row_start - 1;
|
||||
}
|
||||
}
|
||||
|
||||
return row_end;
|
||||
}
|
||||
static int mdb_is_null(unsigned char *null_mask, int col_num)
|
||||
|
Reference in New Issue
Block a user