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