summaryrefslogtreecommitdiff
path: root/testprogs/win32/spoolss/printlib.c
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2010-01-15 16:36:25 +0100
committerGünther Deschner <gd@samba.org>2010-01-18 13:41:02 +0100
commitf2999157f9f7aad84c2030fb84875d616d5c6ec2 (patch)
tree64cdc6fa67f5b2216a54c33cd1cdc1fd1121ae9a /testprogs/win32/spoolss/printlib.c
parentecd35d7ea6ca1e22cfffd9fc7f7e24ab4aad5cff (diff)
downloadsamba-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.c83
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);
+}
+