Improved support for Access 2010, 2013, and 2016

Some Access 2010 files use 0x03 as the version number rather than
0x0103. For this reason I have changed the call to mdb_get_int32 to
mdb_get_byte.

In addition, according to the Library of Congress page:

https://www.loc.gov/preservation/digital/formats/fdd/fdd000463.shtml

Access 2016 uses 0x05 as the version number. I have inferred from the
Wikipedia page that Access 2013 likely uses 0x04.
This commit is contained in:
Evan Miller
2018-03-05 06:39:57 -05:00
parent e9ec76ea68
commit 0e9c1810f1
5 changed files with 20 additions and 4 deletions

View File

@@ -221,7 +221,7 @@ MdbHandle *mdb_open(const char *filename, MdbFileFlags flags)
mdb_close(mdb);
return NULL;
}
mdb->f->jet_version = mdb_get_int32(mdb->pg_buf, 0x14);
mdb->f->jet_version = mdb_get_byte(mdb->pg_buf, 0x14);
switch(mdb->f->jet_version) {
case MDB_VER_JET3:
mdb->fmt = &MdbJet3Constants;
@@ -229,6 +229,8 @@ MdbHandle *mdb_open(const char *filename, MdbFileFlags flags)
case MDB_VER_JET4:
case MDB_VER_ACCDB_2007:
case MDB_VER_ACCDB_2010:
case MDB_VER_ACCDB_2013:
case MDB_VER_ACCDB_2016:
mdb->fmt = &MdbJet4Constants;
break;
default: