Jacek Caban : winedump: Improved TLB custom data handling.
Alexandre Julliard
julliard at winehq.org
Thu Aug 29 13:18:14 CDT 2013
Module: wine
Branch: master
Commit: 30def32b6f0e0e703aed768fd2c6eac5fdd18cf2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=30def32b6f0e0e703aed768fd2c6eac5fdd18cf2
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Aug 29 15:06:53 2013 +0200
winedump: Improved TLB custom data handling.
---
tools/winedump/tlb.c | 38 ++++++++++++++++++++++++++++++++------
1 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/tools/winedump/tlb.c b/tools/winedump/tlb.c
index 4ed3162..d12831e 100644
--- a/tools/winedump/tlb.c
+++ b/tools/winedump/tlb.c
@@ -390,6 +390,15 @@ static int dump_msft_namehashtab(seg_t *seg)
return -1;
}
+static void dump_string(int len, int align_off)
+{
+ printf("\"");
+ fwrite(tlb_read(len), len, 1, stdout);
+ printf("\" ");
+ while((len++ + align_off) & 3)
+ printf("\\%2.2x", tlb_read_byte());
+}
+
static void dump_msft_name(int base, int n)
{
int len;
@@ -401,11 +410,8 @@ static void dump_msft_name(int base, int n)
len = print_hex("namelen")&0xff;
print_offset();
- printf("name = \"");
- fwrite(tlb_read(len), len, 1, stdout);
- printf("\" ");
- while(len++ & 3)
- printf("\\%2.2x", tlb_read_byte());
+ printf("name = ");
+ dump_string(len, 0);
printf("\n");
print_end_block();
@@ -470,9 +476,29 @@ static int dump_msft_arraydescs(seg_t *seg)
static int dump_msft_custdata(seg_t *seg)
{
+ unsigned short vt;
+ unsigned i, n;
+
print_begin_block("CustData");
- dump_binary(seg->length); /* FIXME */
+ for(i=0; offset < seg->offset+seg->length; i++) {
+ print_offset();
+
+ vt = tlb_read_short();
+ printf("vt %d", vt);
+ n = tlb_read_int();
+
+ switch(vt) {
+ case 8 /* VT_BSTR */:
+ printf(" len %d: ", n);
+ dump_string(n, 2);
+ printf("\n");
+ break;
+ default:
+ printf(": %x ", n);
+ printf("\\%2.2x \\%2.2x\n", tlb_read_byte(), tlb_read_byte());
+ }
+ }
print_end_block();
return -1;
More information about the wine-cvs
mailing list