159 lines
5.6 KiB
Diff
159 lines
5.6 KiB
Diff
|
diff -up cups-1.4.2/scheduler/classes.c.str3505 cups-1.4.2/scheduler/classes.c
|
||
|
--- cups-1.4.2/scheduler/classes.c.str3505 2009-10-07 19:16:09.000000000 +0100
|
||
|
+++ cups-1.4.2/scheduler/classes.c 2010-02-23 11:43:06.033263862 +0000
|
||
|
@@ -3,7 +3,7 @@
|
||
|
*
|
||
|
* Printer class routines for the Common UNIX Printing System (CUPS).
|
||
|
*
|
||
|
- * Copyright 2007-2009 by Apple Inc.
|
||
|
+ * Copyright 2007-2010 by Apple Inc.
|
||
|
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||
|
*
|
||
|
* These coded instructions, statements, and computer programs are the
|
||
|
@@ -117,7 +117,7 @@ cupsdAddPrinterToClass(
|
||
|
* 'cupsdDeletePrinterFromClass()' - Delete a printer from a class.
|
||
|
*/
|
||
|
|
||
|
-void
|
||
|
+int /* O - 1 if class changed, 0 otherwise */
|
||
|
cupsdDeletePrinterFromClass(
|
||
|
cupsd_printer_t *c, /* I - Class to delete from */
|
||
|
cupsd_printer_t *p) /* I - Printer to delete */
|
||
|
@@ -149,13 +149,15 @@ cupsdDeletePrinterFromClass(
|
||
|
(c->num_printers - i) * sizeof(cupsd_printer_t *));
|
||
|
}
|
||
|
else
|
||
|
- return;
|
||
|
+ return (0);
|
||
|
|
||
|
/*
|
||
|
* Update the IPP attributes (have to do this for member-names)...
|
||
|
*/
|
||
|
|
||
|
cupsdSetPrinterAttrs(c);
|
||
|
+
|
||
|
+ return (1);
|
||
|
}
|
||
|
|
||
|
|
||
|
@@ -163,10 +165,11 @@ cupsdDeletePrinterFromClass(
|
||
|
* 'cupsdDeletePrinterFromClasses()' - Delete a printer from all classes.
|
||
|
*/
|
||
|
|
||
|
-void
|
||
|
+int /* O - 1 if class changed, 0 otherwise */
|
||
|
cupsdDeletePrinterFromClasses(
|
||
|
cupsd_printer_t *p) /* I - Printer to delete */
|
||
|
{
|
||
|
+ int changed = 0; /* Any class changed? */
|
||
|
cupsd_printer_t *c; /* Pointer to current class */
|
||
|
|
||
|
|
||
|
@@ -179,7 +182,7 @@ cupsdDeletePrinterFromClasses(
|
||
|
c;
|
||
|
c = (cupsd_printer_t *)cupsArrayNext(Printers))
|
||
|
if (c->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT))
|
||
|
- cupsdDeletePrinterFromClass(c, p);
|
||
|
+ changed |= cupsdDeletePrinterFromClass(c, p);
|
||
|
|
||
|
/*
|
||
|
* Then clean out any empty implicit classes...
|
||
|
@@ -193,7 +196,10 @@ cupsdDeletePrinterFromClasses(
|
||
|
cupsdLogMessage(CUPSD_LOG_DEBUG, "Deleting implicit class \"%s\"...",
|
||
|
c->name);
|
||
|
cupsdDeletePrinter(c, 0);
|
||
|
+ changed = 1;
|
||
|
}
|
||
|
+
|
||
|
+ return (changed);
|
||
|
}
|
||
|
|
||
|
|
||
|
diff -up cups-1.4.2/scheduler/classes.h.str3505 cups-1.4.2/scheduler/classes.h
|
||
|
--- cups-1.4.2/scheduler/classes.h.str3505 2008-09-19 21:03:36.000000000 +0100
|
||
|
+++ cups-1.4.2/scheduler/classes.h 2010-02-23 11:43:06.012262825 +0000
|
||
|
@@ -3,7 +3,7 @@
|
||
|
*
|
||
|
* Printer class definitions for the Common UNIX Printing System (CUPS).
|
||
|
*
|
||
|
- * Copyright 2007-2008 by Apple Inc.
|
||
|
+ * Copyright 2007-2010 by Apple Inc.
|
||
|
* Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||
|
*
|
||
|
* These coded instructions, statements, and computer programs are the
|
||
|
@@ -21,9 +21,9 @@
|
||
|
extern cupsd_printer_t *cupsdAddClass(const char *name);
|
||
|
extern void cupsdAddPrinterToClass(cupsd_printer_t *c,
|
||
|
cupsd_printer_t *p);
|
||
|
-extern void cupsdDeletePrinterFromClass(cupsd_printer_t *c,
|
||
|
+extern int cupsdDeletePrinterFromClass(cupsd_printer_t *c,
|
||
|
cupsd_printer_t *p);
|
||
|
-extern void cupsdDeletePrinterFromClasses(cupsd_printer_t *p);
|
||
|
+extern int cupsdDeletePrinterFromClasses(cupsd_printer_t *p);
|
||
|
extern cupsd_printer_t *cupsdFindAvailablePrinter(const char *name);
|
||
|
extern cupsd_printer_t *cupsdFindClass(const char *name);
|
||
|
extern void cupsdLoadAllClasses(void);
|
||
|
diff -up cups-1.4.2/scheduler/ipp.c.str3505 cups-1.4.2/scheduler/ipp.c
|
||
|
--- cups-1.4.2/scheduler/ipp.c.str3505 2010-02-23 11:42:12.713386792 +0000
|
||
|
+++ cups-1.4.2/scheduler/ipp.c 2010-02-23 11:43:06.025262343 +0000
|
||
|
@@ -6451,7 +6451,9 @@ delete_printer(cupsd_client_t *con, /*
|
||
|
cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" deleted by \"%s\".",
|
||
|
printer->name, get_username(con));
|
||
|
|
||
|
- cupsdDeletePrinter(printer, 0);
|
||
|
+ if (cupsdDeletePrinter(printer, 0))
|
||
|
+ cupsdMarkDirty(CUPSD_DIRTY_CLASSES);
|
||
|
+
|
||
|
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
|
||
|
}
|
||
|
|
||
|
diff -up cups-1.4.2/scheduler/printers.c.str3505 cups-1.4.2/scheduler/printers.c
|
||
|
--- cups-1.4.2/scheduler/printers.c.str3505 2010-02-23 11:42:12.223386167 +0000
|
||
|
+++ cups-1.4.2/scheduler/printers.c 2010-02-23 11:43:06.030262135 +0000
|
||
|
@@ -657,12 +657,13 @@ cupsdDeleteAllPrinters(void)
|
||
|
* 'cupsdDeletePrinter()' - Delete a printer from the system.
|
||
|
*/
|
||
|
|
||
|
-void
|
||
|
+int /* O - 1 if classes affected, 0 otherwise */
|
||
|
cupsdDeletePrinter(
|
||
|
cupsd_printer_t *p, /* I - Printer to delete */
|
||
|
int update) /* I - Update printers.conf? */
|
||
|
{
|
||
|
- int i; /* Looping var */
|
||
|
+ int i, /* Looping var */
|
||
|
+ changed = 0; /* Class changed? */
|
||
|
#ifdef __sgi
|
||
|
char filename[1024]; /* Interface script filename */
|
||
|
#endif /* __sgi */
|
||
|
@@ -773,7 +774,7 @@ cupsdDeletePrinter(
|
||
|
|
||
|
if (!(p->type & CUPS_PRINTER_IMPLICIT))
|
||
|
{
|
||
|
- cupsdDeletePrinterFromClasses(p);
|
||
|
+ changed = cupsdDeletePrinterFromClasses(p);
|
||
|
|
||
|
/*
|
||
|
* Deregister from any browse protocols...
|
||
|
@@ -854,6 +855,8 @@ cupsdDeletePrinter(
|
||
|
*/
|
||
|
|
||
|
cupsArrayRestore(Printers);
|
||
|
+
|
||
|
+ return (changed);
|
||
|
}
|
||
|
|
||
|
|
||
|
diff -up cups-1.4.2/scheduler/printers.h.str3505 cups-1.4.2/scheduler/printers.h
|
||
|
--- cups-1.4.2/scheduler/printers.h.str3505 2009-06-25 18:07:26.000000000 +0100
|
||
|
+++ cups-1.4.2/scheduler/printers.h 2010-02-23 11:43:06.032262357 +0000
|
||
|
@@ -141,7 +141,7 @@ extern void cupsdAddPrinterUser(cupsd_p
|
||
|
const char *username);
|
||
|
extern void cupsdCreateCommonData(void);
|
||
|
extern void cupsdDeleteAllPrinters(void);
|
||
|
-extern void cupsdDeletePrinter(cupsd_printer_t *p, int update);
|
||
|
+extern int cupsdDeletePrinter(cupsd_printer_t *p, int update);
|
||
|
extern cupsd_printer_t *cupsdFindDest(const char *name);
|
||
|
extern cupsd_printer_t *cupsdFindPrinter(const char *name);
|
||
|
extern cupsd_quota_t *cupsdFindQuota(cupsd_printer_t *p,
|