prt_lpr.c - enscript - GNU Enscript
 (HTM) git clone git://thinkerwim.org/enscript.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       prt_lpr.c (1538B)
       ---
            1 /*
            2  * Printer interface for popen() / lpr systems.
            3  * Copyright (c) 1995-1999 Markku Rossi.
            4  *
            5  * Author: Markku Rossi <mtr@iki.fi>
            6  */
            7 
            8 /*
            9  * This file is part of GNU Enscript.
           10  *
           11  * Enscript is free software: you can redistribute it and/or modify
           12  * it under the terms of the GNU General Public License as published by
           13  * the Free Software Foundation, either version 3 of the License, or
           14  * (at your option) any later version.
           15  *
           16  * Enscript is distributed in the hope that it will be useful,
           17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
           18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
           19  * GNU General Public License for more details.
           20  *
           21  * You should have received a copy of the GNU General Public License
           22  * along with Enscript.  If not, see <http://www.gnu.org/licenses/>.
           23  */
           24 
           25 #include "gsint.h"
           26 
           27 /*
           28  * Global functions.
           29  */
           30 
           31 FILE *
           32 printer_open(char *cmd, char *options, char *queue_param, char *printer_name,
           33              void **context_return)
           34 {
           35   Buffer pipe_cmd;
           36   FILE *fp;
           37 
           38   buffer_init(&pipe_cmd);
           39 
           40   buffer_append(&pipe_cmd, cmd);
           41   buffer_append(&pipe_cmd, " ");
           42 
           43   if (options)
           44     {
           45       buffer_append(&pipe_cmd, options);
           46       buffer_append(&pipe_cmd, " ");
           47     }
           48 
           49   if (printer_name)
           50     {
           51       buffer_append(&pipe_cmd, queue_param);
           52       buffer_append(&pipe_cmd, printer_name);
           53     }
           54 
           55   fp = popen(buffer_ptr(&pipe_cmd), "w");
           56 
           57   buffer_uninit(&pipe_cmd);
           58 
           59   *context_return = fp;
           60   return fp;
           61 }
           62 
           63 
           64 void
           65 printer_close(void *context)
           66 {
           67   FILE *fp = (FILE *) context;
           68 
           69   pclose(fp);
           70 }