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