Update README to say GPLv2 or later and remove references to bzr.
[jerry/slag.git] / win32 / spoolss / PagePrinter.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 <fcntl.h>\r
9 #include <io.h>\r
10 #include <string.h>\r
11 #include "printlib.h"\r
12 \r
13 \r
14 int main (int argc, char* argv[])\r
15 {\r
16         \r
17         HANDLE                          printer;\r
18         int                                     fd;\r
19         BYTE                            buffer[256];\r
20         DWORD                           bytes, wrote;\r
21         DOC_INFO_1                      buffer1;\r
22         PRINTER_DEFAULTS        print_defaults;\r
23 \r
24         if (argc < 3)\r
25         {\r
26                 fprintf (stderr, "useage: %s <printername> <filename>\n", argv[0]);\r
27                 exit (-1);\r
28         }\r
29 \r
30         printf ("This test program exercises the following win32 functions:\n");\r
31         printf ("\tResetPrinter()\n");\r
32         printf ("\tStartDocPrinter()\n");\r
33         printf ("\tEndDocPrinter()\n");\r
34         printf ("\tStartPagePrinter()\n");\r
35         printf ("\tEndPagePrinter()\n");\r
36         printf ("\tWritePrinter()\n");\r
37         printf ("\n\n");\r
38 \r
39         printf ("This test program exercises both the StartPagePrinter()\n");\r
40         printf ("and EndPagePrinter() Win32 functions.\n\n");\r
41 \r
42         if (!OpenPrinter (argv[1], &printer, NULL))\r
43         {\r
44                 fprintf (stderr, "Unable to open %s!\n", argv[1]);\r
45                 exit (-1);\r
46         }\r
47         else\r
48         {\r
49                 printf ("Printer [%s] opened successfully.\n\n", argv[1]);\r
50         }\r
51 \r
52         /* set the printer defaults */\r
53         print_defaults.pDatatype                = strdup ("RAW");\r
54         print_defaults.DesiredAccess    = NULL;\r
55         print_defaults.pDevMode                 = NULL;\r
56         if (ResetPrinter(printer, &print_defaults))\r
57                 printf ("ResetPrinter call succeeded\n");\r
58         else\r
59                 PrintLastError();\r
60         printf ("\n");\r
61 \r
62         /* StartDocPrinter */\r
63         buffer1.pDocName        = strdup("Testing Printer");\r
64         buffer1.pDatatype       = strdup("RAW");\r
65         buffer1.pOutputFile     = NULL;\r
66 \r
67         printf ("Attempting to call StartDocPrinter() using DOC_INFO_1 :\n");\r
68         print_doc_info_1 (&buffer1);\r
69         printf ("\n");\r
70 \r
71         if (StartDocPrinter (printer, 1, (LPBYTE)&buffer1))\r
72                 printf ("StartDocPrinter called successfully\n");\r
73         else\r
74                 PrintLastError();\r
75         printf ("\n");\r
76 \r
77 \r
78         if (StartPagePrinter(printer))\r
79         {\r
80                 printf ("StartPagePrinter returned success.\n");\r
81 \r
82                 if ((fd=_open(argv[2], _O_RDONLY)) == -1)\r
83                 {\r
84                         fprintf (stderr, "ERROR: Unable to open [%s] for read access!\n", argv[2]);\r
85                         ClosePrinter (printer);\r
86                         exit (-1);\r
87                 }\r
88 \r
89                 while ((bytes=_read(fd, buffer, 256)) != 0)\r
90                 {\r
91                         if (!WritePrinter(printer, (LPVOID)buffer, bytes, &wrote))\r
92                         {\r
93                                 fprintf (stderr, "ERROR: WritePrinter failed for [%d] bytes!\n", bytes);\r
94                                 PrintLastError();\r
95                         }\r
96                         else\r
97                                 printf ("Successfully wrote [%d] bytes to the printer\n", bytes);\r
98                 }\r
99                 _close (fd);\r
100 \r
101                 if (EndPagePrinter (printer))\r
102                         printf ("EndPagePrinter returned success.\n");\r
103                 else\r
104                         PrintLastError();\r
105         }\r
106         else\r
107                 PrintLastError();\r
108         printf ("\n");\r
109                         \r
110         printf ("Attempting to call EndDocPrinter\n");\r
111         if (EndDocPrinter (printer))\r
112                 printf ("EndDocPrinter called successfully\n");\r
113         else\r
114                 PrintLastError();\r
115         printf ("\n");\r
116 \r
117 \r
118 \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 }