Update README to say GPLv2 or later and remove references to bzr.
[jerry/slag.git] / win32 / spoolss / EnumPrinters.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 "printlib.h"\r
9 \r
10 \r
11 void TestEnumPrinters (LPTSTR servername, DWORD flags)\r
12 {\r
13         DWORD   needed, returned, i;\r
14         PPRINTER_INFO_1 buffer1 = NULL;\r
15         PPRINTER_INFO_2 buffer2 = NULL;\r
16         PPRINTER_INFO_4 buffer4 = NULL;\r
17         PPRINTER_INFO_5 buffer5 = NULL;\r
18 \r
19         /* INFO LEVEL 1 */\r
20         needed = returned = 0;\r
21         EnumPrinters(flags, servername, 1, (LPBYTE)buffer1, 0, &needed, &returned);\r
22         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
23         {\r
24                 if (needed != 0)\r
25                         fprintf (stderr, "Error EnumPrinters Info Level 1 for [%s] using NULL buffer.\n", servername);\r
26                 else\r
27                         printf ("Info level 1 returned no information\n");\r
28         }\r
29         else\r
30         {\r
31                 if ((buffer1 = (LPBYTE)malloc(needed)) == NULL)\r
32                 {\r
33                         fprintf (stderr, "Unable to malloc memory for buffer!\n");\r
34                         return;\r
35                 }\r
36                 if (!EnumPrinters(flags, servername, 1, (LPBYTE)buffer1, needed, &needed, &returned))\r
37                 {\r
38                         fprintf (stderr, "Error enumerating printers Info Level 1 for [%s].\nSize of buffer = %d\n", \r
39                                         servername, needed);\r
40                 }\r
41 \r
42                 printf ("Printer Info Level 1:\n");\r
43                 for (i=0; i<returned; i++)\r
44                 {\r
45                         print_printer_info_1 (&buffer1[i]);\r
46                         printf ("\n");\r
47                 }\r
48                 free (buffer1);\r
49         }\r
50 \r
51         /* the following flags are only valid for info level 1 */\r
52         if ((flags == PRINTER_ENUM_REMOTE) || (flags == PRINTER_ENUM_NETWORK))\r
53                 return;\r
54 \r
55         /* INFO LEVEL 2 */\r
56         needed = returned = 0;\r
57         EnumPrinters(flags, servername, 2, (LPBYTE)buffer2, 0, &needed, &returned);\r
58         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
59         {\r
60                 if (needed != 0)\r
61                         fprintf (stderr, "Error EnumPrinters Info Level 2 for [%s] using NULL buffer.\n", servername);\r
62                 else\r
63                         printf ("Info level 2 returned no information\n");\r
64         }\r
65         else\r
66         {\r
67                 if ((buffer2 = (LPBYTE)malloc(needed)) == NULL)\r
68                 {\r
69                         fprintf (stderr, "Unable to malloc memory for buffer!\n");\r
70                         return;\r
71                 }\r
72                 if (!EnumPrinters(flags, servername, 2, (LPBYTE)buffer2, needed, &needed, &returned))\r
73                 {\r
74                         fprintf (stderr, "Error enumerating printers Info Level 2 for [%s].\nSize of buffer = %d\n", \r
75                                         servername, needed);\r
76                 }\r
77 \r
78                 printf ("Printer Info Level 2:\n");\r
79                 for (i=0; i<returned; i++)\r
80                 {\r
81                         print_printer_info_2 (&buffer2[i]);\r
82                         printf ("\n");\r
83                 }\r
84                 free (buffer2);\r
85         }\r
86 \r
87         /* INFO LEVEL 5 */\r
88         needed = returned = 0;\r
89         EnumPrinters(flags, servername, 5, (LPBYTE)buffer5, 0, &needed, &returned);\r
90         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
91         {\r
92                 if (needed != 0)\r
93                         fprintf (stderr, "Error EnumPrinters Info Level 5 for [%s] using NULL buffer.\n", servername);\r
94                 else\r
95                         printf ("Info level 5 returned no information\n");\r
96         }\r
97         else\r
98         {\r
99                 if ((buffer5 = (LPBYTE)malloc(needed)) == NULL)\r
100                 {\r
101                         fprintf (stderr, "Unable to malloc memory for buffer!\n");\r
102                         return;\r
103                 }\r
104                 if (!EnumPrinters(flags, servername, 5, (LPBYTE)buffer5, needed, &needed, &returned))\r
105                 {\r
106                         fprintf (stderr, "Error enumerating printers Info Level 5 for [%s].\nSize of buffer = %d\n", \r
107                                         servername, needed);\r
108                 }\r
109 \r
110                 printf ("Printer Info Level 5:\n");\r
111                 for (i=0; i<returned; i++)\r
112                 {\r
113                         print_printer_info_5 (&buffer5[i]);\r
114                         printf ("\n");\r
115                 }\r
116                 free (buffer5);\r
117         }\r
118 \r
119 }\r
120 \r
121 \r
122 int main (int argc, char* argv[])\r
123 {\r
124         \r
125         if (argc < 2)\r
126         {\r
127                 fprintf (stderr, "useage: %s <servername>\n", argv[0]);\r
128                 exit (-1);\r
129         }\r
130 #if 0\r
131         printf ("\n\nFlags = PRINTER_ENUM_NAME\n");\r
132         TestEnumPrinters (argv[1], PRINTER_ENUM_NAME);\r
133         printf ("\n");\r
134 \r
135         printf ("\n\nFlags = PRINTER_ENUM_NAME | PRINTER_ENUM_SHARED\n");\r
136         TestEnumPrinters (argv[1], PRINTER_ENUM_NAME | PRINTER_ENUM_SHARED);\r
137         printf ("\n");\r
138 #endif\r
139 \r
140         printf ("\n\nFlags = PRINTER_ENUM_CONNECTIONS\n");\r
141         TestEnumPrinters (argv[1], PRINTER_ENUM_CONNECTIONS);\r
142         printf ("\n");\r
143 \r
144         printf ("\n\nFlags = PRINTER_ENUM_NETWORK\n");\r
145         TestEnumPrinters (NULL, PRINTER_ENUM_NETWORK);\r
146         printf ("\n");\r
147 \r
148         printf ("\n\nFlags = PRINTER_ENUM_REMOTE\n");\r
149         TestEnumPrinters (NULL, PRINTER_ENUM_REMOTE);\r
150         printf ("\n");\r
151 \r
152 \r
153         return 0;\r
154 \r
155 }\r
156 \r