From 12189e71938ddc3dec13fce2a48f1caebb4c4858 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Tue, 15 Oct 2002 17:38:04 +0000 Subject: [PATCH] Printer support: cfg.printer is assumed to be a Unix command through which to pipe printed data. Of course by default printing is disabled; typically cfg.printer would be set to `lpr', perhaps with some arguments. [originally from svn r2073] --- unix/uxprint.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/unix/uxprint.c b/unix/uxprint.c index 6558317b..387ea28d 100644 --- a/unix/uxprint.c +++ b/unix/uxprint.c @@ -3,22 +3,41 @@ */ #include +#include #include "putty.h" +struct printer_job_tag { + FILE *fp; +}; + printer_job *printer_start_job(char *printer) { - /* FIXME: open pipe to lpr */ - return NULL; + printer_job *ret = smalloc(sizeof(printer_job)); + /* + * On Unix, we treat cfg.printer as the name of a command to + * pipe to - typically lpr, of course. + */ + ret->fp = popen(cfg.printer, "w"); + if (!ret->fp) { + sfree(ret); + ret = NULL; + } + return ret; } void printer_job_data(printer_job *pj, void *data, int len) { - /* FIXME: receive a pipe to lpr, write things to it */ - assert(!"We shouldn't get here"); + if (!pj) + return; + + fwrite(data, 1, len, pj->fp); } void printer_finish_job(printer_job *pj) { - /* FIXME: receive a pipe to lpr, close it */ - assert(!"We shouldn't get here either"); + if (!pj) + return; + + pclose(pj->fp); + sfree(pj); } -- 2.45.2