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