From 356a170694d9182f1a350933a76e75bc75f8056d Mon Sep 17 00:00:00 2001 From: simon 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. git-svn-id: svn://svn.tartarus.org/sgt/putty@2073 cda61777-01e9-0310-a592-d414129be87e --- 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.11.0