Update README to say GPLv2 or later and remove references to bzr.
[jerry/slag.git] / win32 / spoolss / GetJob.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 <stdlib.h>\r
9 #include "printlib.h"\r
10 \r
11 #define START_JOB       0\r
12 #define MAX_JOBS        100\r
13 \r
14 int main (int argc, char* argv[])\r
15 {\r
16         \r
17         HANDLE                  printer;\r
18         DWORD                   returned, needed, i;\r
19         PJOB_INFO_1             buffer1 = NULL;\r
20         PJOB_INFO_2             buffer2 = NULL;\r
21         DWORD                   dJob = 0;\r
22 \r
23 \r
24         if (argc < 3)\r
25         {\r
26                 fprintf (stderr, "useage: %s <printername> <job id>\n", argv[0]);\r
27                 exit (-1);\r
28         }\r
29         dJob = atoi(argv[2]);\r
30 \r
31         /* open the printer */\r
32         if (!OpenPrinter (argv[1], &printer, NULL))\r
33         {\r
34                 fprintf (stderr, "Unable to open %s!\n", argv[1]);\r
35                 exit (-1);\r
36         }\r
37         else\r
38         {\r
39                 printf ("Printer [%s] opened successfully.\n\n", argv[1]);\r
40         }\r
41 \r
42         /* INFO LEVEL 1 */\r
43         EnumJobs(printer, START_JOB, MAX_JOBS, 1, (LPBYTE)buffer1, 0, &needed, &returned);\r
44         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
45         {\r
46                 if (needed != 0)\r
47                 {\r
48                         fprintf (stderr, "Error getting job information for [%s] using NULL buffer.\n", argv[2]);\r
49                         exit (-1);\r
50                 }\r
51                 else\r
52                 {\r
53                         printf ("No jobs returned for [%s]\n", argv[1]);\r
54                         ClosePrinter (printer);\r
55                         exit (0);\r
56                 }\r
57         }\r
58 \r
59         if ((buffer1 = (LPBYTE)malloc(needed)) == NULL)\r
60         {\r
61                 fprintf (stderr, "Unable to malloc memory for JOB_INFO_1 buffer!\n");\r
62                 exit (-1);\r
63         }\r
64         if (!EnumJobs(printer, START_JOB, MAX_JOBS, 1, (LPBYTE)buffer1, needed, &needed, &returned))\r
65         {\r
66                 fprintf (stderr, "Error getting form information for [%s].\nSize of buffer = %d\n", \r
67                              argv[2], needed);\r
68                 exit (-1);\r
69         }\r
70 \r
71         printf ("Job Info Level 1:\n");\r
72         for (i=0; i<returned; i++)\r
73         {\r
74                 print_job_info_1 (&buffer1[i]);\r
75         }\r
76         printf ("\n");\r
77         free (buffer1);\r
78 \r
79 \r
80         /* INFO LEVEL 2 */\r
81         GetJob(printer, dJob, 2, (LPBYTE)buffer2, 0, &needed);\r
82         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)\r
83         {\r
84                 if (needed != 0)\r
85                 {\r
86                         fprintf (stderr, "Error getting job information for [%s] using NULL buffer.\n", argv[2]);\r
87                         exit (-1);\r
88                 }\r
89                 else\r
90                 {\r
91                         printf ("No jobs returned for [%s]\n", argv[1]);\r
92                         ClosePrinter (printer);\r
93                         exit (0);\r
94                 }\r
95         }\r
96 \r
97         if ((buffer2 = (LPBYTE)malloc(needed)) == NULL)\r
98         {\r
99                 fprintf (stderr, "Unable to malloc memory for JOB_INFO_2 buffer!\n");\r
100                 exit (-1);\r
101         }\r
102         if (!GetJob(printer, dJob, 2, (LPBYTE)buffer2, needed, &needed))\r
103         {\r
104                 fprintf (stderr, "Error getting form information for [%s].\nSize of buffer = %d\n", \r
105                              argv[2], needed);\r
106                 exit (-1);\r
107         }\r
108 \r
109         printf ("Job Info Level 2:\n");\r
110         for (i=0; i<returned; i++)\r
111         {\r
112                 print_job_info_2 (&buffer2[i]);\r
113         }\r
114         printf ("\n");\r
115         free (buffer2);\r
116 \r
117 \r
118         /* close the printer */\r
119         if (!ClosePrinter(printer))\r
120         {\r
121                 fprintf (stderr, "Error closing printer!\n");\r
122                 exit (-1);\r
123         }\r
124         else\r
125         {\r
126                 printf ("Printer [%s] closed successfully.\n", argv[1]);\r
127         }\r
128 \r
129         return 0;\r
130 \r
131 }\r