From 74ba0b71891ce180079cc801e9fe11b4ea268e84 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 4 Mar 2010 01:31:30 +0100 Subject: testprogs: add print_printer_dataw and dump_data to printlib. Guenther --- testprogs/win32/spoolss/printlib.c | 104 +++++++++++++++++++++++++++---- testprogs/win32/spoolss/printlib_proto.h | 1 + 2 files changed, 94 insertions(+), 11 deletions(-) (limited to 'testprogs/win32') diff --git a/testprogs/win32/spoolss/printlib.c b/testprogs/win32/spoolss/printlib.c index f3541c85e1..e0fb6e7a1e 100644 --- a/testprogs/win32/spoolss/printlib.c +++ b/testprogs/win32/spoolss/printlib.c @@ -24,6 +24,10 @@ #include #include +#ifndef MIN +#define MIN(a,b) ((a)<(b)?(a):(b)) +#endif + void print_devmode(DEVMODE *pDevModeIn) { if (pDevModeIn == NULL) { @@ -1158,23 +1162,66 @@ LPSTR reg_type_str(DWORD type) } } -void print_printer_data(LPSTR keyname, LPSTR valuename, DWORD size, LPBYTE buffer, DWORD type) +void print_asc(const BYTE *buf, DWORD len) { - DWORD i = 0; - LPSTR p = NULL; - - if (keyname) { - printf("\tKey Name:\t%s\n", keyname); + int i; + for (i=0; i 0) && + (len > i+16) && + (memcmp(&buf[i], &empty, 16) == 0)) + { + i +=16; + continue; + } + + if (i8) printf(" "); + while (n--) printf(" "); + n = MIN(8,i%16); + print_asc(&buf[i-(i%16)],n); printf( " " ); + n = (i%16) - n; + if (n>0) print_asc(&buf[i-n],n); + printf("\n"); + } +} + +static void dump_printer_data(DWORD size, LPBYTE buffer, DWORD type) +{ + DWORD i = 0; + LPSTR p = NULL; + switch (type) { case REG_SZ: printf("\t\t"); @@ -1209,6 +1256,41 @@ void print_printer_data(LPSTR keyname, LPSTR valuename, DWORD size, LPBYTE buffe } } +void print_printer_data(LPSTR keyname, LPSTR valuename, DWORD size, LPBYTE buffer, DWORD type) +{ + if (keyname) { + printf("\tKey Name:\t%s\n", keyname); + } + + printf("\tValue Name:\t%s\n", valuename); + printf("\tSize:\t\t0x%x (%d)\n", size, size); + printf("\tType:\t\t%s\n", reg_type_str(type)); + + if (buffer == NULL || size == 0) { + return; + } + + dump_printer_data(size, buffer, type); +} + +void print_printer_dataw(LPCWSTR keyname, LPCWSTR valuename, DWORD size, LPBYTE buffer, DWORD type) +{ + if (keyname) { + printf("\tKey Name:\t%ls\n", keyname); + } + + printf("\tValue Name:\t%ls\n", valuename); + printf("\tSize:\t\t0x%x (%d)\n", size, size); + printf("\tType:\t\t%s\n", reg_type_str(type)); + + if (buffer == NULL || size == 0) { + return; + } + + dump_printer_data(size, buffer, type); +} + + void print_printer_enum_values(PRINTER_ENUM_VALUES *info) { print_printer_data(NULL, info->pValueName, info->cbData, info->pData, info->dwType); diff --git a/testprogs/win32/spoolss/printlib_proto.h b/testprogs/win32/spoolss/printlib_proto.h index 5a439995a1..8e44d3be86 100644 --- a/testprogs/win32/spoolss/printlib_proto.h +++ b/testprogs/win32/spoolss/printlib_proto.h @@ -56,6 +56,7 @@ void print_doc_info_1(PDOC_INFO_1 info); void print_printer_keys(LPSTR buffer); LPSTR reg_type_str(DWORD type); void print_printer_data(LPSTR keyname, LPSTR valuename, DWORD size, LPBYTE buffer, DWORD type); +void print_printer_dataw(LPCWSTR keyname, LPCWSTR valuename, DWORD size, LPBYTE buffer, DWORD type); void print_printer_enum_values(PRINTER_ENUM_VALUES *info); #undef _PRINTF_ATTRIBUTE #define _PRINTF_ATTRIBUTE(a1, a2) -- cgit