From: Ben W. <be...@va...> - 2001-02-15 21:00:55
|
> Could you elaborate on the usage/purpose of the lps_send_reference > prototype? > The purpose of that is to have the application with their permissions open the file for reading and then send the open file descriptor across the socket. This is a print by references for local files. > Also, here's something that may already have been answered (my > apologies if it has). As I understand it, lps_get_connection > returns a file descriptor to a connection to the spooler. Does this > connection stay open for the duration of that one single job, or for > the duration of all the possible jobs I want to print? This stays open for the duration of a single file. > > Also, I'd like to see some more high level functions in libprintsys. Of > course, we need the low level functionality, but I don't think the majority > of application authors want to muck around with that. IMHO, we should > provide functions like: > LPSTicket * lps_spool_job_from_file( LPS_PrinterType *prn, const > char * file ); > LPSTicket * lps_spool_job_from_data( LPS_PrinterType *prn, void > *data); > I agree we should have more high level functions. However, before we enrich the API with a bunch of high level functions. I wanted to get the primitive functions pinned down and agreed to. > A NULL value in the 'LPS_PrinterType *prn' fields should signify that the > library should use the 'default' printer, with the 'default' options. > The LPSTicket can be used later on to query status information on the job, > or, if the app doesn't care, it can just be ignored. I think that this should be included in a higher level function. I don't want to set defaults like "what is a default printer" or "where should error messages go" at this level. - -ben > --Mark > > On Wed, Feb 14, 2001 at 06:26:42PM -0800, Ben Woodard wrote: > > Here is my current idea of what the header file should minimally > > include. It's my synthesis of what Sun and VA talked about > > yesterday. It's my first attempt at trying to blend Sun's interface > > and mine. Assume that the naming convention and the order of the > > parameters is open for debate and change. I was trying to primarily to > > capture the union of the interfaces. The one big differences that we > > have yet to reconcile is whether there should be a seperate job > > and document concept. They have a job which contains multiple > > documents. I only have a job. A little later on I'm going to write up > > a proposal for a way to preserve the job and document semantics > > without actually seperating the concepts of a job and document. > > > > So anyway this is my straw man. Shoot it apart and I'll build another > > stronger straw man. After a few iterations we should be up to a stick > > figure. ;-) > > > > /* Copyright (c) 2000 Ben Woodard > > * All rights reserved. > > * > > * This program is free software; you can redistribute it and/or > > * modify it under the terms of the GNU Lesser General Public Licence > > * as published by the Free Software Foundation; either version 2 > > * of the Licence, or (at your option) any later version. > > * > > * This program is distributed in the hope that it will be useful, > > * but WITHOUT ANY WARRENTY; without even the implied warrenty of > > * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > * GNU General Public Licence in the COPYING file for more > > * details. > > * > > * You should have received a copy of the GNU Library General > > * Public License along with the GNU C Library; see the file > > * COPYING.LIB. If not, write to the Free Software Foundation, > > * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > > */ > > > > /* This is intended to be the external interface presented to the > > client programs who wish to print. */ > > #ifndef __PRINTSYS_H__ > > #define __PRINTSYS_H__ > > > > #define SOCK_PATHNAME "/dev/printer" > > > > /***** Pair data structure and functions *****/ > > typedef struct { > > wchar_t *key; > > wchar_t *value; > > } LPS_PairType; > > > > /***** Printer data structures and functions *****/ > > typedef struct { > > wchar_t **names; > > LPS_PairType *fields; > > wchar_t *comments; > > } LPS_PrinterType; > > > > enum LPS_ErrorType { LPS_ACCESS ...}; > > > > int lps_init(void *initdata); > > int lps_end(); > > > > char **lps_get_printer_list (void); > > void lps_free_printer_list(char **doomed); > > > > LPS_PrinterType *lps_get_printer (const wchar_t *prname); > > /* apply to memory objects */ > > void lps_free_printer(LPS_PrinterType *doomed); > > LPS_PrinterType *lps_create_printer(const wchar_t **prnames, > > LPS_PairType *fields, wchar_t *comments); > > /* apply to backend store */ > > LPS_ErrorType lps_commit_printer(LPS_PrinterType *printer); > > LPS_ErrorType lps_destroy_printer(LPS_PrinterType *printer); > > > > const wchar_t *lps_pair_lookup(const LPS_PairType *pairs, const wchar_t *key); > > /* apply to memory object */ > > LPS_ErrorType lps_pair_set(const LPS_PairType *pairs, const wchar_t *key, > > const wchar_t *value); > > > > const wchar_t *lps_pr_lookup_field(const LPS_PrinterType *printer, > > const char *key); > > const wchar_t *lps_pr_name(const LPS_PrinterType *printer); > > > > unsigned int lps_get_connection(LPS_PrinterType *printer, > > LPS_PairType *attributes, int *destfd, > > int errfd); > > unsigned int lps_send_reference(LPS_PrinterType *printer, > > LPS_PairType *attributes, int srcfd, > > int errfd); > > > > LPS_PairType *lps_get_job_attributes(unsigned int jobid); > > /* write to backend store */ > > LPS_ErrorType lps_set_job_attributes(unsigned int jobid, LPS_PairType *); > > void lps_free_job_attributes(LPS_PairType *doomed); > > > > #endif /* __PRINTSYS_H__ */ > > > > > > _______________________________________________ > > Lpr-discuss mailing list > > Lpr...@li... > > http://lists.sourceforge.net/lists/listinfo/lpr-discuss > > -- > If we were meant to get up early, God would have created us with alarm clocks. > Mark James Fasheh <mf...@va...> > VA Linux Systems Professional Services > http://www.exothermic.org |