[1838] in Moira Commits

home help back first fref pref prev next nref lref last post

/svn/moira r3985 - trunk/moira/server

daemon@ATHENA.MIT.EDU (Garry Zacheiss)
Tue Feb 23 16:00:42 2010

Date: Tue, 23 Feb 2010 16:00:36 -0500
From: Garry Zacheiss <zacheiss@MIT.EDU>
Message-Id: <201002232100.o1NL0aPm007369@drugstore.mit.edu>
To: moira-commits@mit.edu
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Author: zacheiss
Date: 2010-02-23 16:00:36 -0500 (Tue, 23 Feb 2010)
New Revision: 3985

Modified:
   trunk/moira/server/qsetup.pc
Log:
SAP queues go to LPRng servers, everything else to some appropriate CUPS server.

Modified: trunk/moira/server/qsetup.pc
===================================================================
--- trunk/moira/server/qsetup.pc	2010-02-18 22:34:45 UTC (rev 3984)
+++ trunk/moira/server/qsetup.pc	2010-02-23 21:00:36 UTC (rev 3985)
@@ -1333,6 +1333,7 @@
   EXEC SQL BEGIN DECLARE SECTION;
   int mid, usage, count;
   char types[STRINGS_STRING_SIZE], *hwaddr, *name, *duplexname, *oldname;
+  char *service;
   EXEC SQL END DECLARE SECTION;
 
   /* Check for aprn or uprn. */
@@ -1341,7 +1342,7 @@
   else
     row = 1;
 
-  if (q->version < 13)
+  if (q->version >= 13)
     idx = 3;
 
   name = argv[PRN_NAME + row];
@@ -1392,15 +1393,24 @@
   if (!strcmp(name, duplexname))
     return MR_NOT_UNIQUE;
 
-  mid = *(int *)argv[PRN_RM + row + idx];
+  mid = *(int *)argv[6 + row + idx];
   if (mid == -1)
     {
+      if (!strcasecmp(argv[PRN_TYPE + row], "SAP"))
+	service = "PRINT";
+      else if (!strcasecmp(argv[PRN_TYPE + row], "DORM") ||
+	       !strcasecmp(argv[PRN_TYPE + row], "CLUSTER"))
+	service = "CUPS-CLUSTER";
+      else
+	service = "CUPS-PRINT";
+
       EXEC SQL DECLARE csr_rm CURSOR FOR
 	SELECT ps.mach_id, s.string FROM printservers ps, strings s
 	WHERE ps.mach_id IN
-	( SELECT mach_id FROM serverhosts WHERE service = 'PRINT'
+	( SELECT mach_id FROM serverhosts WHERE service = :service
 	  AND enable = 1 )
 	AND ps.printer_types = s.string_id;
+
       if (dbms_errno)
 	return mr_errcode;
       EXEC SQL OPEN csr_rm;
@@ -1423,7 +1433,7 @@
 		  if (best < 0 || usage < best)
 		    {
 		      best = usage;
-		      *(int *)argv[PRN_RM + row + idx] = mid;
+		      *(int *)argv[6 + row + idx] = mid;
 		      break;
 		    }
 		}


home help back first fref pref prev next nref lref last post