1 /******************************************************************
\r
2 * SPOOLSS regression testing code for Samba print servers
\r
4 *****************************************************************/
\r
8 #include "printlib.h"
\r
11 void TestEnumPrinters (LPTSTR servername, DWORD flags)
\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
20 needed = returned = 0;
\r
21 EnumPrinters(flags, servername, 1, (LPBYTE)buffer1, 0, &needed, &returned);
\r
22 if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
\r
25 fprintf (stderr, "Error EnumPrinters Info Level 1 for [%s] using NULL buffer.\n", servername);
\r
27 printf ("Info level 1 returned no information\n");
\r
31 if ((buffer1 = (LPBYTE)malloc(needed)) == NULL)
\r
33 fprintf (stderr, "Unable to malloc memory for buffer!\n");
\r
36 if (!EnumPrinters(flags, servername, 1, (LPBYTE)buffer1, needed, &needed, &returned))
\r
38 fprintf (stderr, "Error enumerating printers Info Level 1 for [%s].\nSize of buffer = %d\n",
\r
39 servername, needed);
\r
42 printf ("Printer Info Level 1:\n");
\r
43 for (i=0; i<returned; i++)
\r
45 print_printer_info_1 (&buffer1[i]);
\r
51 /* the following flags are only valid for info level 1 */
\r
52 if ((flags == PRINTER_ENUM_REMOTE) || (flags == PRINTER_ENUM_NETWORK))
\r
56 needed = returned = 0;
\r
57 EnumPrinters(flags, servername, 2, (LPBYTE)buffer2, 0, &needed, &returned);
\r
58 if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
\r
61 fprintf (stderr, "Error EnumPrinters Info Level 2 for [%s] using NULL buffer.\n", servername);
\r
63 printf ("Info level 2 returned no information\n");
\r
67 if ((buffer2 = (LPBYTE)malloc(needed)) == NULL)
\r
69 fprintf (stderr, "Unable to malloc memory for buffer!\n");
\r
72 if (!EnumPrinters(flags, servername, 2, (LPBYTE)buffer2, needed, &needed, &returned))
\r
74 fprintf (stderr, "Error enumerating printers Info Level 2 for [%s].\nSize of buffer = %d\n",
\r
75 servername, needed);
\r
78 printf ("Printer Info Level 2:\n");
\r
79 for (i=0; i<returned; i++)
\r
81 print_printer_info_2 (&buffer2[i]);
\r
88 needed = returned = 0;
\r
89 EnumPrinters(flags, servername, 5, (LPBYTE)buffer5, 0, &needed, &returned);
\r
90 if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
\r
93 fprintf (stderr, "Error EnumPrinters Info Level 5 for [%s] using NULL buffer.\n", servername);
\r
95 printf ("Info level 5 returned no information\n");
\r
99 if ((buffer5 = (LPBYTE)malloc(needed)) == NULL)
\r
101 fprintf (stderr, "Unable to malloc memory for buffer!\n");
\r
104 if (!EnumPrinters(flags, servername, 5, (LPBYTE)buffer5, needed, &needed, &returned))
\r
106 fprintf (stderr, "Error enumerating printers Info Level 5 for [%s].\nSize of buffer = %d\n",
\r
107 servername, needed);
\r
110 printf ("Printer Info Level 5:\n");
\r
111 for (i=0; i<returned; i++)
\r
113 print_printer_info_5 (&buffer5[i]);
\r
122 int main (int argc, char* argv[])
\r
127 fprintf (stderr, "useage: %s <servername>\n", argv[0]);
\r
131 printf ("\n\nFlags = PRINTER_ENUM_NAME\n");
\r
132 TestEnumPrinters (argv[1], PRINTER_ENUM_NAME);
\r
135 printf ("\n\nFlags = PRINTER_ENUM_NAME | PRINTER_ENUM_SHARED\n");
\r
136 TestEnumPrinters (argv[1], PRINTER_ENUM_NAME | PRINTER_ENUM_SHARED);
\r
140 printf ("\n\nFlags = PRINTER_ENUM_CONNECTIONS\n");
\r
141 TestEnumPrinters (argv[1], PRINTER_ENUM_CONNECTIONS);
\r
144 printf ("\n\nFlags = PRINTER_ENUM_NETWORK\n");
\r
145 TestEnumPrinters (NULL, PRINTER_ENUM_NETWORK);
\r
148 printf ("\n\nFlags = PRINTER_ENUM_REMOTE\n");
\r
149 TestEnumPrinters (NULL, PRINTER_ENUM_REMOTE);
\r