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