diff --git a/include/mdbtools.h b/include/mdbtools.h index 73bceba..fdb5a08 100644 --- a/include/mdbtools.h +++ b/include/mdbtools.h @@ -441,6 +441,7 @@ extern void mdb_swap_pgbuf(MdbHandle *mdb); /* catalog.c */ extern void mdb_free_catalog(MdbHandle *mdb); extern GPtrArray *mdb_read_catalog(MdbHandle *mdb, int obj_type); +MdbCatalogEntry *mdb_get_catalogentry_by_name(MdbHandle *mdb, const gchar* name); extern void mdb_dump_catalog(MdbHandle *mdb, int obj_type); extern char *mdb_get_objtype_string(int obj_type); diff --git a/src/gmdb2/info.c b/src/gmdb2/info.c index fff8115..2f4edea 100644 --- a/src/gmdb2/info.c +++ b/src/gmdb2/info.c @@ -38,6 +38,7 @@ gchar *filename, *filepath; int i; struct stat st; char* version; +MdbCatalogEntry *entry = mdb_get_catalogentry_by_name(mdb, "SummaryInfo"); /* load the interface */ propswin_xml = glade_xml_new(GMDB_GLADEDIR "gmdb-props.glade", NULL, NULL); @@ -56,16 +57,22 @@ char* version; gtk_label_set_text(GTK_LABEL(label), filename); label = glade_xml_get_widget (propswin_xml, "props_jetver"); - if (mdb->f->jet_version == MDB_VER_JET3) + switch(mdb->f->jet_version) { + case MDB_VER_JET3: version = "3 (Access 97)"; - else if (mdb->f->jet_version == MDB_VER_JET4) + break; + case MDB_VER_JET4: version = "4 (Access 2000/XP/2003)"; - else if (mdb->f->jet_version == MDB_VER_ACCDB_2007) + break; + case MDB_VER_ACCDB_2007: version = "ACE 12 (Access 2007)"; - else if (mdb->f->jet_version == MDB_VER_ACCDB_2010) + break; + case MDB_VER_ACCDB_2010: version = "ACE 14 (Access 2010)"; - else + break; + default: version = "Unknown"; + } gtk_label_set_text(GTK_LABEL(label), version); label = glade_xml_get_widget (propswin_xml, "props_encrypted"); @@ -84,6 +91,29 @@ char* version; label = glade_xml_get_widget (propswin_xml, "props_numobjs"); gtk_label_set_text(GTK_LABEL(label), tmpstr); + if (entry && entry->props && entry->props->len) + { + // There is only one MdbProps for that kind of entry + MdbProperties *props = g_array_index(entry->props, MdbProperties*, 0); + const char *propval; + + propval = g_hash_table_lookup(props->hash, "Title"); + if (propval) { + label = glade_xml_get_widget (propswin_xml, "props_title"); + gtk_label_set_text(GTK_LABEL(label), propval); + } + propval = g_hash_table_lookup(props->hash, "Company"); + if (propval) { + label = glade_xml_get_widget (propswin_xml, "props_company"); + gtk_label_set_text(GTK_LABEL(label), propval); + } + propval = g_hash_table_lookup(props->hash, "Author"); + if (propval) { + label = glade_xml_get_widget (propswin_xml, "props_author"); + gtk_label_set_text(GTK_LABEL(label), propval); + } + } + g_free(filepath); return propswin; diff --git a/src/libmdb/Makefile.am b/src/libmdb/Makefile.am index f1021ad..70db96c 100644 --- a/src/libmdb/Makefile.am +++ b/src/libmdb/Makefile.am @@ -1,5 +1,5 @@ lib_LTLIBRARIES = libmdb.la libmdb_la_SOURCES= catalog.c mem.c file.c table.c data.c dump.c backend.c money.c sargs.c index.c like.c write.c stats.c map.c props.c worktable.c options.c iconv.c -libmdb_la_LDFLAGS = -version-info 2:0:1 -Wl,--version-script=$(srcdir)/libmdb.map +libmdb_la_LDFLAGS = -version-info 2:1:0 -Wl,--version-script=$(srcdir)/libmdb.map AM_CPPFLAGS = -I$(top_srcdir)/include $(GLIB_CFLAGS) LIBS = $(GLIB_LIBS) @LIBS@ diff --git a/src/libmdb/catalog.c b/src/libmdb/catalog.c index 038a1b0..d754ba8 100644 --- a/src/libmdb/catalog.c +++ b/src/libmdb/catalog.c @@ -128,6 +128,21 @@ GPtrArray *mdb_read_catalog (MdbHandle *mdb, int objtype) return mdb->catalog; } + +MdbCatalogEntry * +mdb_get_catalogentry_by_name(MdbHandle *mdb, const gchar* name) +{ + unsigned int i; + MdbCatalogEntry *entry; + + for (i=0; inum_catalog; i++) { + entry = g_ptr_array_index(mdb->catalog, i); + if (!strcasecmp(entry->object_name, name)) + return entry; + } + return NULL; +} + void mdb_dump_catalog(MdbHandle *mdb, int obj_type) {