2002-03-08 00:51:59 +03:00
# ifndef PRINTING_H_
# define PRINTING_H_
2001-03-16 03:35:57 +03:00
/*
2002-01-30 09:08:46 +03:00
Unix SMB / CIFS implementation .
2001-03-16 03:35:57 +03:00
printing definitions
Copyright ( C ) Andrew Tridgell 1992 - 2000
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
2001-03-16 03:35:57 +03:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2001-03-16 03:35:57 +03:00
*/
/*
This file defines the low - level printing system interfaces used by the
SAMBA printing subsystem .
*/
/* Information for print jobs */
struct printjob {
pid_t pid ; /* which process launched the job */
int sysjob ; /* the system (lp) job number */
int fd ; /* file descriptor of open file if open */
time_t starttime ; /* when the job started spooling */
int status ; /* the status of this job */
size_t size ; /* the size of the job so far */
2002-03-19 05:35:12 +03:00
int page_count ; /* then number of pages so far */
2001-03-16 03:35:57 +03:00
BOOL spooled ; /* has it been sent to the spooler yet? */
BOOL smbjob ; /* set if the job is a SMB job */
fstring filename ; /* the filename used to spool the file */
fstring jobname ; /* the job name given to us by the client */
fstring user ; /* the user who started the job */
2002-03-21 00:55:57 +03:00
fstring queuename ; /* service number of printer for this job */
2002-09-25 19:19:00 +04:00
NT_DEVICEMODE * nt_devmode ;
2001-03-16 03:35:57 +03:00
} ;
/* Information for print interfaces */
struct printif
{
2004-10-19 21:05:01 +04:00
/* value of the 'printing' option for this service */
enum printing_types type ;
int ( * queue_get ) ( const char * printer_name ,
enum printing_types printing_type ,
char * lpq_command ,
print_queue_struct * * q ,
2001-03-16 03:35:57 +03:00
print_status_struct * status ) ;
int ( * queue_pause ) ( int snum ) ;
int ( * queue_resume ) ( int snum ) ;
2005-09-30 21:13:37 +04:00
int ( * job_delete ) ( const char * sharename , const char * lprm_command , struct printjob * pjob ) ;
2001-03-16 03:35:57 +03:00
int ( * job_pause ) ( int snum , struct printjob * pjob ) ;
int ( * job_resume ) ( int snum , struct printjob * pjob ) ;
int ( * job_submit ) ( int snum , struct printjob * pjob ) ;
} ;
extern struct printif generic_printif ;
2001-08-23 23:06:20 +04:00
# ifdef HAVE_CUPS
2001-03-16 03:35:57 +03:00
extern struct printif cups_printif ;
2001-08-23 23:06:20 +04:00
# endif /* HAVE_CUPS */
2001-03-16 03:35:57 +03:00
2005-09-21 03:28:22 +04:00
# ifdef HAVE_IPRINT
extern struct printif iprint_printif ;
# endif /* HAVE_IPRINT */
2006-08-20 21:29:00 +04:00
# if defined(DEVELOPER) || defined(ENABLE_BUILD_FARM_HACKS)
extern struct printif test_printif ;
# endif /* DEVELOPER||ENABLE_BUILD_FARM_HACKS */
2002-10-05 02:53:18 +04:00
/* PRINT_MAX_JOBID is now defined in local.h */
2001-03-16 03:35:57 +03:00
# define UNIX_JOB_START PRINT_MAX_JOBID
# define NEXT_JOBID(j) ((j+1) % PRINT_MAX_JOBID > 0 ? (j+1) % PRINT_MAX_JOBID : 1)
2002-03-08 00:51:59 +03:00
# define MAX_CACHE_VALID_TIME 3600
2005-03-08 02:24:19 +03:00
# ifndef PRINT_SPOOL_PREFIX
2001-03-16 03:35:57 +03:00
# define PRINT_SPOOL_PREFIX "smbprn."
2005-03-08 02:24:19 +03:00
# endif
2002-07-15 14:35:28 +04:00
# define PRINT_DATABASE_VERSION 5
2002-03-08 00:51:59 +03:00
2002-11-26 03:46:31 +03:00
/* There can be this many printing tdb's open, plus any locked ones. */
# define MAX_PRINT_DBS_OPEN 1
struct tdb_print_db {
struct tdb_print_db * next , * prev ;
TDB_CONTEXT * tdb ;
int ref_count ;
fstring printer_name ;
} ;
/*
* Used for print notify
*/
# define NOTIFY_PID_LIST_KEY "NOTIFY_PID_LIST"
2002-03-08 00:51:59 +03:00
# endif /* PRINTING_H_ */