add SetPrinterDataExW.exe.
[gd/win32-spoolss/.git] / AddForm.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
11 int main (int argc, char* argv[])
12 {
13
14         HANDLE                          printer;
15         PRINTER_DEFAULTS        defaults;
16         DWORD                           returned, needed, i;
17         PFORM_INFO_1            buffer1 = NULL;
18
19         if ( argc < 3) {
20                 fprintf (stderr, "useage: %s <localprinter> <networkprinter>\n", argv[0]);
21                 exit (-1);
22         }
23
24         defaults.DesiredAccess = PRINTER_ACCESS_ADMINISTER;
25         defaults.pDatatype = NULL;
26         defaults.pDevMode = NULL;
27
28         /* open the printer */
29         if (!OpenPrinter (argv[1], &printer, &defaults))
30         {
31                 fprintf (stderr, "Unable to open %s!\n", argv[1]);
32                 PrintLastError();
33                 exit (-1);
34         }
35
36         /* INFO LEVEL 1 */
37
38         EnumForms(printer, 1, (LPBYTE)buffer1, 0, &needed, &returned);
39         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
40                 fprintf (stderr, "Error getting form information for [%s] using NULL buffer.\n", argv[1]);
41                 exit (-1);
42         }
43
44         if ( (buffer1 = (FORM_INFO_1*)malloc(needed)) == NULL ) {
45                 fprintf (stderr, "Unable to malloc memory for FORM_INFO_1 buffer!\n");
46                 exit (-1);
47         }
48
49         if (!EnumForms(printer, 1, (LPBYTE)buffer1, needed, &needed, &returned))
50         {
51                 fprintf (stderr, "Error getting form information for [%s].\nSize of buffer = %d\n",
52                              argv[1], needed);
53                 exit (-1);
54         }
55
56         /* close the printer */
57         if ( !ClosePrinter(printer) ) {
58                 PrintLastError();
59                 exit (-1);
60         }
61
62
63         /* open the printer */
64         if (!OpenPrinter (argv[2], &printer, &defaults))
65         {
66                 fprintf (stderr, "Unable to open %s!\n", argv[1]);
67                 PrintLastError();
68                 exit (-1);
69         }
70
71         for (i=0; i<returned; i++)
72         {
73                 if ( buffer1[i].Flags == FORM_PRINTER ) {
74                         printf("Adding form \"%s\"\n", buffer1[i].pName );
75                         if ( !AddForm( printer, 1, (LPBYTE)&buffer1[i] ) )
76                                 PrintLastError();
77                 }
78         }
79
80
81         free (buffer1);
82
83
84         /* close the printer */
85         if ( !ClosePrinter(printer) ) {
86                 PrintLastError();
87                 exit (-1);
88         }
89
90         return 0;
91
92 }