Update README to say GPLv2 or later and remove references to bzr.
[jerry/slag.git] / win32 / spoolss / EnumPrinterDataEx.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 \r
12 #define ENUM_KEY_NAME   "PrinterDriverData"\r
13 \r
14 int main (int argc, char* argv[])\r
15 {\r
16         \r
17         HANDLE                  printer;\r
18         DWORD                   i, status, needed, returned;\r
19         PRINTER_ENUM_VALUES     *buffer = NULL;\r
20 \r
21 \r
22         if (argc < 2)\r
23         {\r
24                 fprintf (stderr, "useage: %s <printername>\n", argv[0]);\r
25                 exit (-1);\r
26         }\r
27 \r
28         /* open the server */\r
29         if (!OpenPrinter (argv[1], &printer, NULL))\r
30                 PrintLastError();\r
31         else\r
32                 printf ("Printer [%s] opened successfully.\n\n", argv[1]);\r
33 \r
34 \r
35         needed = returned = 0;\r
36         status = EnumPrinterDataEx(printer, ENUM_KEY_NAME, (LPBYTE)buffer, 0, &needed, &returned);\r
37         if (status == ERROR_MORE_DATA)\r
38         {\r
39                 if ((buffer = malloc(needed)) == NULL)\r
40                 {\r
41                         fprintf (stderr, "Unable to malloc enough space for [%d] bytes\n", needed);\r
42                         exit (-1);\r
43                 }\r
44 \r
45                 status = EnumPrinterDataEx(printer, ENUM_KEY_NAME, (LPBYTE)buffer, needed, &needed, &returned);\r
46                 if (status == ERROR_SUCCESS)\r
47                 {\r
48                         printf ("Printer Enum Values :\n");\r
49                         for (i=0; i<returned; i++)\r
50                         {\r
51                                 print_printer_enum_values (&buffer[i]);\r
52                                 printf ("\n");\r
53                         }\r
54                 }\r
55                 free (buffer);\r
56         }\r
57         else if (status != ERROR_SUCCESS)\r
58                 PrintLastError();\r
59 \r
60 \r
61         /* close the server */\r
62         if (!ClosePrinter(printer))\r
63                 PrintLastError();\r
64         else\r
65                 printf ("Printer [%s] closed successfully.\n", argv[1]);\r
66 \r
67         return 0;\r
68 \r
69 }\r