1 /******************************************************************
\r
2 * SPOOLSS regression testing code for Samba print servers
\r
4 *****************************************************************/
\r
8 #include "printlib.h"
\r
10 /* we will excercise info level 2 (cange the drivername)
\r
11 and info level 3 (security descriptor) */
\r
12 int main (int argc, char* argv[])
\r
16 PPRINTER_INFO_2 buffer2 = NULL;
\r
17 PRINTER_INFO_3 buffer3;
\r
21 fprintf (stderr, "useage: %s <printername> <drivername>\n", argv[0]);
\r
25 /* open the printer */
\r
26 if (!OpenPrinter (argv[1], &printer, NULL))
\r
28 fprintf (stderr, "Unable to open %s!\n", argv[1]);
\r
33 printf ("Printer [%s] opened successfully.\n\n", argv[1]);
\r
37 GetPrinter(printer, 2, (LPBYTE)buffer2, 0, &needed);
\r
38 if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
\r
41 fprintf (stderr, "Error GetPrinter Info Level 2 for [%s] using NULL buffer.\n", argv[1]);
\r
43 printf ("Info level 2 returned no information\n");
\r
47 if ((buffer2 = (LPBYTE)malloc(needed)) == NULL)
\r
49 fprintf (stderr, "Unable to malloc memory for buffer!\n");
\r
52 if (!GetPrinter(printer, 2, (LPBYTE)buffer2, needed, &needed))
\r
54 fprintf (stderr, "Error getting printers Info Level 2 for [%s].\nSize of buffer = %d\n",
\r
58 printf ("Printer Info Level 2:\n");
\r
59 print_printer_info_2(buffer2);
\r
63 /* set the new drivername */
\r
64 buffer2->pDriverName = strdup (argv[2]);
\r
65 if (SetPrinter(printer, 2, (LPBYTE)buffer2, 0))
\r
67 printf ("Printer driver successfully changed to [%s]\n", argv[2]);
\r
68 printf ("Printer Info 2 :\n");
\r
69 print_printer_info_2 (buffer2);
\r
75 /* exercise the various command options */
\r
76 printf ("command = PRINTER_CONTROL_PAUSE\n");
\r
77 if (SetPrinter (printer, 2, (LPBYTE)buffer2, PRINTER_CONTROL_PAUSE))
\r
78 printf ("Printer successfully paused.\n");
\r
83 printf ("command = PRINTER_CONTROL_RESUME\n");
\r
84 if (SetPrinter (printer, 2, (LPBYTE)buffer2, PRINTER_CONTROL_RESUME))
\r
85 printf ("Printer successfully paused.\n");
\r
90 printf ("command = PRINTER_CONTROL_PURGE\n");
\r
91 if (SetPrinter (printer, 2, (LPBYTE)buffer2, PRINTER_CONTROL_PURGE))
\r
92 printf ("Printer successfully paused.\n");
\r
98 /* we'll just use the security descriptor from the buffer2 */
\r
99 printf ("Testing setting of security descriptor using PRINTER_INFO_3...\n");
\r
100 buffer3.pSecurityDescriptor = buffer2->pSecurityDescriptor;
\r
102 printf ("Current security descriptor settings for [%s]:\n", argv[1]);
\r
103 /* print_secdesc (buffer3.pSecurityDescriptor); */
\r
106 printf ("no changes to security descriptor...\n\n");
\r
109 if (SetPrinter (printer, 3, (LPBYTE)&buffer3, 0))
\r
111 printf ("Printer descriptor information updated successfully.\n");
\r
112 printf ("New security descriptor settings for [%s]:\n", argv[1]);
\r
113 /* print_secdesc (buffer3.pSecurityDescriptor); */
\r
120 /* close the printer */
\r
121 if (!ClosePrinter(printer))
\r
123 fprintf (stderr, "Error closing printer!\n");
\r
128 printf ("Printer [%s] closed successfully.\n", argv[1]);
\r