Update README to say GPLv2 or later and remove references to bzr.
[jerry/slag.git] / win32 / spoolss / EnumPorts.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 \r
9 \r
10 int main (int argc, char* argv[])\r
11 {\r
12         \r
13         DWORD                   returned, needed, i;\r
14         PPORT_INFO_1    buffer1 = NULL;\r
15         PPORT_INFO_2    buffer2 = NULL;\r
16 \r
17         if (argc < 2)\r
18         {\r
19                 fprintf (stderr, "useage: %s <servername>\n", argv[0]);\r
20                 exit (-1);\r
21         }\r
22 \r
23         /* INFO LEVEL 1 */\r
24         needed = returned = 0;\r
25         EnumPorts(argv[1], 1, (LPBYTE)buffer1, 0, &needed, &returned);\r
26         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
27         {\r
28                 fprintf (stderr, "Error getting port information for [%s] using NULL buffer.\n", argv[1]);\r
29                 exit (-1);\r
30         }\r
31 \r
32         if ((buffer1 = (LPBYTE)malloc(needed)) == NULL)\r
33         {\r
34                 fprintf (stderr, "Unable to malloc memory for PORT_INFO_1 buffer!\n");\r
35                 exit (-1);\r
36         }\r
37         if (!EnumPorts(argv[1], 1, (LPBYTE)buffer1, needed, &needed, &returned))\r
38         {\r
39                 fprintf (stderr, "Error getting port information for [%s].\nSize of buffer = %d\n", \r
40                              argv[1], needed);\r
41                 exit (-1);\r
42         }\r
43 \r
44         printf ("Port Info Level 1:\n");\r
45         for (i=0; i<returned; i++)\r
46         {\r
47                 printf ("\tPort Name\t= %s\n", buffer1[i].pName);\r
48                 printf ("\n");\r
49         }\r
50         free (buffer1);\r
51 \r
52         /* INFO LEVEL 2 */\r
53         needed = returned = 0;\r
54         EnumPorts(argv[1], 2, (LPBYTE)buffer2, 0, &needed, &returned);\r
55         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
56         {\r
57                 fprintf (stderr, "Error getting port information for [%s] using NULL buffer.\n", argv[1], argv[2]);\r
58                 exit (-1);\r
59         }\r
60 \r
61         if ((buffer2 = (LPBYTE)malloc(needed)) == NULL)\r
62         {\r
63                 fprintf (stderr, "Unable to malloc memory for PORT_INFO_2 buffer!\n");\r
64                 exit (-1);\r
65         }\r
66         if (!EnumPorts(argv[1], 2, (LPBYTE)buffer2, needed, &needed, &returned))\r
67         {\r
68                 fprintf (stderr, "Error getting port information for [%s].\nSize of buffer = %d\n", \r
69                              argv[1], needed);\r
70                 exit (-1);\r
71         }\r
72 \r
73         printf ("Port Info Level 2:\n");\r
74         for (i=0; i<returned; i++)\r
75         {\r
76                 printf ("\tPort Name\t= %s\n",          buffer2[i].pPortName);\r
77                 printf ("\tMonitor Name\t= %s\n",       buffer2[i].pMonitorName);\r
78                 printf ("\tDescription\t= %s\n",        buffer2[i].pDescription);\r
79                 printf ("\tType\t\t= 0x%x\n",           buffer2[i].fPortType);\r
80                 printf ("\tReserved\t= %d\n",           buffer2[i].Reserved);\r
81                 printf ("\n");\r
82         }\r
83         free (buffer2);\r
84 \r
85 \r
86         return 0;\r
87 \r
88 }