Update README to say GPLv2 or later and remove references to bzr.
[jerry/slag.git] / win32 / spoolss / GetPrinter.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 int main (int argc, char* argv[])\r
11 {\r
12         DWORD   needed, returned;\r
13         HANDLE  printer;\r
14         PPRINTER_INFO_1 buffer1 = NULL;\r
15         PPRINTER_INFO_2 buffer2 = NULL;\r
16         PPRINTER_INFO_5 buffer5 = NULL;\r
17         PPRINTER_INFO_7 buffer7 = NULL;\r
18         \r
19         if (argc < 2)\r
20         {\r
21                 fprintf (stderr, "useage: %s <printername>\n", argv[0]);\r
22                 exit (-1);\r
23         }\r
24 \r
25         /* open the printer */\r
26         if (!OpenPrinter (argv[1], &printer, NULL))\r
27         {\r
28                 fprintf (stderr, "Unable to open %s!\n", argv[1]);\r
29                 exit (-1);\r
30         }\r
31         else\r
32         {\r
33                 printf ("Printer [%s] opened successfully.\n\n", argv[1]);\r
34         }\r
35 \r
36 \r
37         /* INFO LEVEL 1 */\r
38         needed = returned = 0;\r
39         GetPrinter(printer, 1, (LPBYTE)buffer1, 0, &needed);\r
40         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
41         {\r
42                 if (needed != 0)\r
43                         fprintf (stderr, "Error GetPrinter Info Level 1 for [%s] using NULL buffer.\n", argv[1]);\r
44                 else\r
45                         printf ("Info level 1 returned no information\n");\r
46         }\r
47         else\r
48         {\r
49                 if ((buffer1 = (LPBYTE)malloc(needed)) == NULL)\r
50                 {\r
51                         fprintf (stderr, "Unable to malloc memory for buffer!\n");\r
52                         exit (-1);\r
53                 }\r
54                 if (!GetPrinter(printer, 1, (LPBYTE)buffer1, needed, &returned))\r
55                 {\r
56                         fprintf (stderr, "Error enumerating printers Info Level 1 for [%s].\nSize of buffer = %d\n", \r
57                                         argv[1], needed);\r
58                 }\r
59 \r
60                 printf ("Printer Info Level 1:\n");\r
61                 print_printer_info_1(buffer1);\r
62                 printf ("\n");\r
63                 free (buffer1);\r
64         }\r
65 \r
66         /* INFO LEVEL 2 */\r
67         needed = returned = 0;\r
68         GetPrinter(printer, 2, (LPBYTE)buffer2, 0, &needed);\r
69         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
70         {\r
71                 if (needed != 0)\r
72                         fprintf (stderr, "Error GetPrinter Info Level 2 for [%s] using NULL buffer.\n", argv[1]);\r
73                 else\r
74                         printf ("Info level 2 returned no information\n");\r
75         }\r
76         else\r
77         {\r
78                 if ((buffer2 = (LPBYTE)malloc(needed*2)) == NULL)\r
79                 {\r
80                         fprintf (stderr, "Unable to malloc memory for buffer!\n");\r
81                         exit (-1);\r
82                 }\r
83 \r
84                 printf("Pass one\n");\r
85                 if (!GetPrinter(printer, 2, (LPBYTE)buffer2, needed, &returned))\r
86                 {\r
87                         fprintf (stderr, "Error getting printers Info Level 2 for [%s].\nSize of buffer = 0x%x [0x%x]\n", \r
88                                         argv[1], needed, returned);\r
89                         PrintLastError();\r
90 \r
91                         needed *= 2;\r
92                         returned = 0;\r
93                         printf("Pass Two\n");\r
94                         if (!GetPrinter(printer, 2, (LPBYTE)buffer2, needed, &returned))\r
95                         {\r
96                                 fprintf (stderr, "Error getting printers Info Level 2 for [%s].\nSize of buffer = 0x%x [0x%x]\n", \r
97                                                 argv[1], needed, returned);     \r
98                                 PrintLastError();\r
99                         }\r
100                 }\r
101 \r
102                 printf ("Printer Info Level 2:\n");\r
103                 printf ("Returned = 0x%x\n", returned);\r
104                 print_printer_info_2(buffer2);\r
105                 printf ("\n");\r
106                 free (buffer2);\r
107         }\r
108 \r
109         /* INFO LEVEL 5 */\r
110         GetPrinter(printer, 5, (LPBYTE)buffer5, 0, &needed);\r
111         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
112         {\r
113                 if (needed != 0)\r
114                         fprintf (stderr, "Error GetPrinter Info Level 5 for [%s] using NULL buffer.\n", argv[1]);\r
115                 else\r
116                         printf ("Info level 5 returned no information\n");\r
117         }\r
118         else\r
119         {\r
120                 if ((buffer5 = (LPBYTE)malloc(needed)) == NULL)\r
121                 {\r
122                         fprintf (stderr, "Unable to malloc memory for buffer!\n");\r
123                         exit (-1);\r
124                 }\r
125                 if (!GetPrinter(printer, 5, (LPBYTE)buffer5, needed, &needed))\r
126                 {\r
127                         fprintf (stderr, "Error getting printers Info Level 5 for [%s].\nSize of buffer = %d\n", \r
128                                         argv[1], needed);\r
129                 }\r
130 \r
131                 printf ("Printer Info Level 5:\n");\r
132                 print_printer_info_5(buffer5);\r
133                 printf ("\n");\r
134                 free (buffer5);\r
135         }\r
136 \r
137         /* INFO LEVEL 7 */\r
138         GetPrinter(printer, 7, (LPBYTE)buffer7, 0, &needed);\r
139         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
140         {\r
141                 if (needed != 0)\r
142                         fprintf (stderr, "Error GetPrinter Info Level 7 for [%s] using NULL buffer.\n", argv[1]);\r
143                 else\r
144                         printf ("Info level 7 returned no information\n");\r
145         }\r
146         else\r
147         {\r
148                 if ((buffer7 = (LPBYTE)malloc(needed)) == NULL)\r
149                 {\r
150                         fprintf (stderr, "Unable to malloc memory for buffer!\n");\r
151                         exit (-1);\r
152                 }\r
153                 if (!GetPrinter(printer, 7, (LPBYTE)buffer7, needed, &needed))\r
154                 {\r
155                         fprintf (stderr, "Error getting printers Info Level 7 for [%s].\nSize of buffer = %d\n", \r
156                                         argv[1], needed);\r
157                 }\r
158 \r
159                 printf ("Printer Info Level 7:\n");\r
160                 printf ("flags = %d\n", buffer7->dwAction);\r
161                 printf ("\n");\r
162                 free (buffer7);\r
163         }\r
164 \r
165         /* close the printer */\r
166         if (!ClosePrinter(printer))\r
167         {\r
168                 fprintf (stderr, "Error closing printer!\n");\r
169                 exit (-1);\r
170         }\r
171         else\r
172         {\r
173                 printf ("Printer [%s] closed successfully.\n", argv[1]);\r
174         }\r
175 \r
176         return 0;\r
177 \r
178 }\r
179 \r