Update README to say GPLv2 or later and remove references to bzr.
[jerry/slag.git] / win32 / spoolss / EnumPrinterKey.c
1 /******************************************************************\r
2  * SPOOLSS regression testing code for Samba print servers\r
3  * \r
4  *****************************************************************/\r
5 \r
6 #include <windows.h>\r
7 #include <stdio.h>\r
8 #include <stdlib.h>\r
9 #include "printlib.h"\r
10 \r
11 int main (int argc, char* argv[])\r
12 {\r
13         \r
14         HANDLE                  printer;\r
15         DWORD                   returned=0, \r
16                                         status;\r
17         LPTSTR                  buffer = NULL;\r
18 \r
19 \r
20         if (argc < 2)\r
21         {\r
22                 fprintf (stderr, "useage: %s <printername>\n", argv[0]);\r
23                 exit (-1);\r
24         }\r
25 \r
26         /* open the server */\r
27         if (!OpenPrinter (argv[1], &printer, NULL))\r
28                 PrintLastError();\r
29         else\r
30                 printf ("Printer [%s] opened successfully.\n\n", argv[1]);\r
31 \r
32 \r
33         status = EnumPrinterKey(printer, "", buffer, 0, &returned);\r
34         if (status == ERROR_MORE_DATA)\r
35         {\r
36                 if ((buffer = (LPTSTR)malloc(returned)) == NULL)\r
37                 {\r
38                         fprintf (stderr, "Unable to malloc enough space for [%d] bytes\n", returned);\r
39                         exit (-1);\r
40                 }\r
41 \r
42                 status = EnumPrinterKey(printer, "", buffer, returned, &returned);\r
43                 if (status == ERROR_SUCCESS)\r
44                 {\r
45                         LPTSTR  p = NULL;\r
46 \r
47                         printf ("Enumurated Key Values : [%d]\n", returned);\r
48 \r
49                         p = buffer;     \r
50                         while (*p)\r
51                         { \r
52                                 printf ("\t%s\n", p);\r
53                                 for (; *p; p=CharNext(p));\r
54                                 p=CharNext(p);\r
55                         }\r
56 \r
57                 }\r
58                 free (buffer);\r
59 \r
60         }\r
61         else if (status != ERROR_SUCCESS)\r
62                 PrintLastError();\r
63         else\r
64                 printf ("No data!\n");\r
65 \r
66         returned = 0;\r
67         status = EnumPrinterKey(printer, "PrinterDriverData", buffer, 0, &returned);\r
68         if (status == ERROR_MORE_DATA)\r
69         {\r
70                 if ((buffer = (LPTSTR)malloc(returned)) == NULL)\r
71                 {\r
72                         fprintf (stderr, "Unable to malloc enough space for [%d] bytes\n", returned);\r
73                         exit (-1);\r
74                 }\r
75 \r
76                 status = EnumPrinterKey(printer, "PrinterDriverData", buffer, returned, &returned);\r
77                 if (status == ERROR_SUCCESS)\r
78                 {\r
79                         LPTSTR  p = NULL;\r
80 \r
81                         printf ("Enumurated Key Values : [%d]\n", returned);\r
82 \r
83                         p = buffer;     \r
84                         while (*p)\r
85                         { \r
86                                 printf ("\t%s\n", p);\r
87                                 for (p = buffer; *p; p=CharNext(p));\r
88                                 p=CharNext(p);\r
89                         }\r
90 \r
91                 }\r
92                 free (buffer);\r
93 \r
94         }\r
95         else if (status != ERROR_SUCCESS)\r
96                 PrintLastError();\r
97         else\r
98                 printf ("No data!\n");\r
99 \r
100 \r
101 \r
102 \r
103 \r
104 \r
105         /* close the server */\r
106         if (!ClosePrinter(printer))\r
107                 PrintLastError();\r
108         else\r
109                 printf ("Printer [%s] closed successfully.\n", argv[1]);\r
110 \r
111         return 0;\r
112 \r
113 }\r