diff options
author | Günther Deschner <gd@samba.org> | 2010-01-15 16:36:25 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2010-01-18 13:41:02 +0100 |
commit | f2999157f9f7aad84c2030fb84875d616d5c6ec2 (patch) | |
tree | 64cdc6fa67f5b2216a54c33cd1cdc1fd1121ae9a /testprogs/win32/spoolss/printlib.c | |
parent | ecd35d7ea6ca1e22cfffd9fc7f7e24ab4aad5cff (diff) | |
download | samba-f2999157f9f7aad84c2030fb84875d616d5c6ec2.tar.gz samba-f2999157f9f7aad84c2030fb84875d616d5c6ec2.tar.bz2 samba-f2999157f9f7aad84c2030fb84875d616d5c6ec2.zip |
testprogs: add tests for GetPrinterData{Ex} and EnumPrinterDataEx.
Guenther
Diffstat (limited to 'testprogs/win32/spoolss/printlib.c')
-rw-r--r-- | testprogs/win32/spoolss/printlib.c | 83 |
1 files changed, 65 insertions, 18 deletions
diff --git a/testprogs/win32/spoolss/printlib.c b/testprogs/win32/spoolss/printlib.c index 9fc9d046f2..e458e144b5 100644 --- a/testprogs/win32/spoolss/printlib.c +++ b/testprogs/win32/spoolss/printlib.c @@ -21,6 +21,7 @@ #include <windows.h> #include <stdio.h> +#include <assert.h> void print_devmode(DEVMODE *pDevModeIn) { @@ -588,35 +589,81 @@ void print_doc_info_1(PDOC_INFO_1 info) return; } -void print_printer_enum_values(PRINTER_ENUM_VALUES *info) +void print_printer_keys(LPSTR buffer) { - DWORD i = 0; + LPSTR p = NULL; - printf("\tValue Name\t= %s [0x%x]\n", info->pValueName, info->cbValueName); - printf("\tType\t\t= 0x%x\n", info->dwType); - printf("\tSize\t\t= 0x%x\n", info->cbData); + p = buffer; - while (i < info->cbData) { - printf("\t0x%x", *(info->pData++)); - if (i%4 == 3) - printf("\n"); - i++; + while (p && *p) { + printf("%s\n", p); + for (; *p; p = CharNext(p)) { + p = CharNext(p); + } } - printf("\n"); +} - return; +static LPSTR reg_type_str(DWORD type) +{ + switch (type) { + case REG_DWORD: + return "REG_DWORD"; + case REG_SZ: + return "REG_SZ"; + case REG_MULTI_SZ: + return "REG_MULTI_SZ"; + case REG_BINARY: + return "REG_BINARY"; + default: + return NULL; + } } -void print_printer_keys(LPSTR buffer) +void print_printer_data(LPSTR keyname, LPSTR valuename, DWORD size, LPBYTE buffer, DWORD type) { + DWORD i = 0; LPSTR p = NULL; - p = buffer; + if (keyname) { + printf("\tKey Name:\t%s\n", keyname); + } - while (p && *p) { - printf("%s\n", p); - for (; *p; p = CharNext(p)) { - p = CharNext(p); + printf("\tValue Name:\t%s\n", valuename); + printf("\tSize: 0x%x (%d)\n", size, size); + printf("\tType:\t\t%s\n", reg_type_str(type)); + + switch (type) { + case REG_SZ: + printf("\t\t%s\n", (LPSTR)buffer); + break; + case REG_MULTI_SZ: + p = (LPSTR)buffer; + while (p && *p) { + printf("%s\n", p); + for (; *p; p = CharNext(p)) { + p = CharNext(p); + } } + break; + case REG_DWORD: + assert(size == 4); + printf("\t\t0x%08x\n", (DWORD)*buffer); + break; + case REG_BINARY: + for (i=0; i < size; i++) { + printf("\t0x%x", buffer[i]); + if (i%4 == 3) { + printf("\n"); + } + } + break; + default: + break; } } + +void print_printer_enum_values(PRINTER_ENUM_VALUES *info) +{ + print_printer_data(NULL, info->pValueName, info->cbData, info->pData, info->dwType); +} + |