OSDN Git Service

Add VC++ Project files for PuTTY DLL without exported functions.
[ffftp/ffftp.git] / putty / UNIX / UXPRINT.C
1 /*\r
2  * Printing interface for PuTTY.\r
3  */\r
4 \r
5 #include <assert.h>\r
6 #include <stdio.h>\r
7 #include "putty.h"\r
8 \r
9 struct printer_job_tag {\r
10     FILE *fp;\r
11 };\r
12 \r
13 printer_job *printer_start_job(char *printer)\r
14 {\r
15     printer_job *ret = snew(printer_job);\r
16     /*\r
17      * On Unix, we treat the printer string as the name of a\r
18      * command to pipe to - typically lpr, of course.\r
19      */\r
20     ret->fp = popen(printer, "w");\r
21     if (!ret->fp) {\r
22         sfree(ret);\r
23         ret = NULL;\r
24     }\r
25     return ret;\r
26 }\r
27 \r
28 void printer_job_data(printer_job *pj, void *data, int len)\r
29 {\r
30     if (!pj)\r
31         return;\r
32 \r
33     if (fwrite(data, 1, len, pj->fp) < len)\r
34         /* ignore */;\r
35 }\r
36 \r
37 void printer_finish_job(printer_job *pj)\r
38 {\r
39     if (!pj)\r
40         return;\r
41 \r
42     pclose(pj->fp);\r
43     sfree(pj);\r
44 }\r
45 \r
46 /*\r
47  * There's no sensible way to enumerate printers under Unix, since\r
48  * practically any valid Unix command is a valid printer :-) So\r
49  * these are useless stub functions, and uxcfg.c will disable the\r
50  * drop-down list in the printer configurer.\r
51  */\r
52 printer_enum *printer_start_enum(int *nprinters_ptr) {\r
53     *nprinters_ptr = 0;\r
54     return NULL;\r
55 }\r
56 char *printer_get_name(printer_enum *pe, int i) { return NULL;\r
57 }\r
58 void printer_finish_enum(printer_enum *pe) { }\r