r23784: use the GPLv3 boilerplate as recommended by the FSF and the license text
[abartlet/samba.git/.git] / source / include / printing.h
index b99f2aeffb99af74244b8856552c15f2a2365189..4cd2ea6149ebbf82b9bc78f0d8749bbce202689c 100644 (file)
@@ -8,7 +8,7 @@
    
    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
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "includes.h"
-
 /*
    This file defines the low-level printing system interfaces used by the
    SAMBA printing subsystem.
@@ -43,16 +40,23 @@ struct printjob {
        fstring jobname; /* the job name given to us by the client */
        fstring user; /* the user who started the job */
        fstring queuename; /* service number of printer for this job */
+       NT_DEVICEMODE *nt_devmode;
 };
 
 /* Information for print interfaces */
 struct printif
 {
-  int (*queue_get)(int snum, print_queue_struct **q,
+  /* 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,
                    print_status_struct *status);
   int (*queue_pause)(int snum);
   int (*queue_resume)(int snum);
-  int (*job_delete)(int snum, struct printjob *pjob);
+  int (*job_delete)(const char *sharename, const char *lprm_command, struct printjob *pjob);
   int (*job_pause)(int snum, struct printjob *pjob);
   int (*job_resume)(int snum, struct printjob *pjob);
   int (*job_submit)(int snum, struct printjob *pjob);
@@ -64,13 +68,39 @@ extern struct printif       generic_printif;
 extern struct printif  cups_printif;
 #endif /* HAVE_CUPS */
 
-#define PRINT_MAX_JOBID 10000
+#ifdef HAVE_IPRINT
+extern struct printif  iprint_printif;
+#endif /* HAVE_IPRINT */
+
+#if defined(DEVELOPER) || defined(ENABLE_BUILD_FARM_HACKS)
+extern struct printif test_printif;
+#endif /* DEVELOPER||ENABLE_BUILD_FARM_HACKS */
+
+/* PRINT_MAX_JOBID is now defined in local.h */
 #define UNIX_JOB_START PRINT_MAX_JOBID
 #define NEXT_JOBID(j) ((j+1) % PRINT_MAX_JOBID > 0 ? (j+1) % PRINT_MAX_JOBID : 1)
 
 #define MAX_CACHE_VALID_TIME 3600
 
+#ifndef PRINT_SPOOL_PREFIX
 #define PRINT_SPOOL_PREFIX "smbprn."
-#define PRINT_DATABASE_VERSION 4
+#endif
+#define PRINT_DATABASE_VERSION 5
+
+/* 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"
 
 #endif /* PRINTING_H_ */