From: msweet Date: Thu, 24 Jan 2008 00:18:39 +0000 (+0000) Subject: Merge changes from CUPS 1.4svn-r7255. X-Git-Tag: release-1.6.3~189 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d9bca400bee5f6168a7e07f85279251f040d734c;p=thirdparty%2Fcups.git Merge changes from CUPS 1.4svn-r7255. git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@608 a1ca3aef-8c08-0410-bb20-df032aa958be --- diff --git a/CHANGES-1.3.txt b/CHANGES-1.3.txt index 3bb16f52d0..dd43d52cdf 100644 --- a/CHANGES-1.3.txt +++ b/CHANGES-1.3.txt @@ -4,6 +4,12 @@ CHANGES-1.3.txt CHANGES IN CUPS V1.3.6 - Documentation updates (STR #2646, STR #2647, STR #2649) + - The scheduler incorrectly sent printer-stopped events for + status updates from the print filters (STR #2680) + - The IPP backend could crash when handling printer errors + (STR #2667) + - Multi-file jobs did not print to remote CUPS servers + (STR #2673) - The scheduler did not provide the Apple language ID to job filters. - Kerberos authentication did not work with the web diff --git a/CHANGES.txt b/CHANGES.txt index c5582f5fc6..c6f9a4b248 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,8 +1,10 @@ -CHANGES.txt - 2008-01-08 +CHANGES.txt - 2008-01-23 ------------------------ CHANGES IN CUPS V1.4b1 + - The scheduler now provides the printer-dns-sd-name + attribute for printers shared via DNS-SD/Bonjour. - The pdftops filter now executes the Xpdf or poppler pdftops utility to convert PDF files (STR #1471) - Bonjour printer registrations now advertise as local or diff --git a/backend/ipp.c b/backend/ipp.c index 84bf27fc6e..68806382e8 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -521,8 +521,8 @@ main(int argc, /* I - Number of command-line args */ _("INFO: Unable to contact printer, queuing on next " "printer in class...\n")); - if (argc == 6 || strcmp(filename, argv[6])) - unlink(filename); + if (tmpfilename[0]) + unlink(tmpfilename); /* * Sleep 5 seconds to keep the job from requeuing too rapidly... @@ -579,8 +579,8 @@ main(int argc, /* I - Number of command-line args */ if (job_cancelled) { - if (argc == 6 || strcmp(filename, argv[6])) - unlink(filename); + if (tmpfilename[0]) + unlink(tmpfilename); return (CUPS_BACKEND_FAILED); } @@ -765,8 +765,8 @@ main(int argc, /* I - Number of command-line args */ ippDelete(supported); httpClose(http); - if (argc == 6 || strcmp(filename, argv[6])) - unlink(filename); + if (tmpfilename[0]) + unlink(tmpfilename); /* * Sleep 5 seconds to keep the job from requeuing too rapidly... @@ -882,10 +882,18 @@ main(int argc, /* I - Number of command-line args */ * so convert the document to PostScript... */ - if (run_pictwps_filter(argv, filename)) + if (run_pictwps_filter(argv, files[0])) + { + if (pstmpname[0]) + unlink(pstmpname); + + if (tmpfilename[0]) + unlink(tmpfilename); + return (CUPS_BACKEND_FAILED); + } - filename = pstmpname; + files[0] = pstmpname; /* * Change the MIME type to application/postscript and change the @@ -1681,7 +1689,6 @@ run_pictwps_filter(char **argv, /* I - Command-line arguments */ _cupsLangPrintf(stderr, _("ERROR: Unable to fork pictwpstops: %s\n"), strerror(errno)); - unlink(filename); if (ppdfile) unlink(ppdfile); return (-1); @@ -1696,7 +1703,6 @@ run_pictwps_filter(char **argv, /* I - Command-line arguments */ _cupsLangPrintf(stderr, _("ERROR: Unable to wait for pictwpstops: %s\n"), strerror(errno)); close(fd); - unlink(filename); if (ppdfile) unlink(ppdfile); return (-1); @@ -1716,7 +1722,6 @@ run_pictwps_filter(char **argv, /* I - Command-line arguments */ _cupsLangPrintf(stderr, _("ERROR: pictwpstops exited on signal %d!\n"), status); - unlink(filename); return (status); } diff --git a/backend/pap.c b/backend/pap.c index 4cad781ec5..461c91fee4 100644 --- a/backend/pap.c +++ b/backend/pap.c @@ -1,7 +1,7 @@ /* * "$Id: pap.c 7010 2007-10-10 21:08:51Z mike $" * -* © Copyright 2004 Apple Computer, Inc. All rights reserved. +* © Copyright 2004-2008 Apple Computer, Inc. All rights reserved. * * IMPORTANT: This Apple software is supplied to you by Apple Computer, * Inc. ("Apple") in consideration of your agreement to the following @@ -70,6 +70,16 @@ * signalHandler() - handle SIGINT to close the session before quiting. */ +/* + * This backend uses deprecated APIs for AppleTalk; we know this, so + * silence any warnings about it... + */ + +#ifdef MAC_OS_X_VERSION_MIN_REQUIRED +# undef MAC_OS_X_VERSION_MIN_REQUIRED +#endif /* MAX_OS_X_VERSION_MIN_REQUIRED */ +#define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_0 + #include #include @@ -85,17 +95,17 @@ #include #include +#include +#include +#include +#include + #include #include #include #include #include -#include -#include -#include -#include - #include #ifdef HAVE_APPLETALK_AT_PROTO_H diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4 index 0414f200ee..3a9f6908be 100644 --- a/config-scripts/cups-compiler.m4 +++ b/config-scripts/cups-compiler.m4 @@ -125,7 +125,9 @@ if test -n "$GCC"; then # Add useful warning options for tracking down problems... OPTIM="-Wall -Wno-format-y2k $OPTIM" # Additional warning options for development testing... - OPTIM="-Wshadow -Wunused $OPTIM" + if test -d .svn; then + OPTIM="-Wshadow -Wunused $OPTIM" + fi fi case "$uname" in diff --git a/doc/help/spec-ipp.html b/doc/help/spec-ipp.html index 29271625a9..704e967bab 100644 --- a/doc/help/spec-ipp.html +++ b/doc/help/spec-ipp.html @@ -2468,6 +2468,12 @@ to this printer. The default port monitor is "none".

The port-monitor-supported attribute specifies the available port monitors. +

printer-dns-sd-name (name(MAX) | noValue)CUPS 1.4

+ +

The printer-dns-sd-name attribute specifies the registered DNS-SD service +name for the printer. If the printer is not being shared using this protocol, +printer-dns-sd-name will have the noValue value.

+

printer-type (type2 enum)

The printer-type attribute specifies printer type and diff --git a/doc/index.html.in b/doc/index.html.in index 560f7668ba..401df41c05 100644 --- a/doc/index.html.in +++ b/doc/index.html.in @@ -75,10 +75,9 @@ assistance:

  -The Common UNIX Printing System, CUPS, and -the CUPS logo are the trademark property of -Apple Inc. CUPS is copyright 2007-2008 by -Apple Inc., all rights reserved. +The Common UNIX Printing System, CUPS, and the CUPS +logo are trademarks of Apple Inc. CUPS is +copyright 2007-2008 Apple Inc. All rights reserved. diff --git a/scheduler/dirsvc.c b/scheduler/dirsvc.c index 13ce3bfd8a..eafb6fd4ab 100644 --- a/scheduler/dirsvc.c +++ b/scheduler/dirsvc.c @@ -2448,10 +2448,12 @@ dnssdRegisterCallback( const char *domain, /* I - Domain. ".local" for now */ void *context) /* I - User-defined context */ { - (void)context; + cupsd_printer_t *p = (cupsd_printer_t *)context; + /* Current printer */ + - cupsdLogMessage(CUPSD_LOG_DEBUG2, - "dnssdRegisterCallback(%s, %s)", name, regtype); + cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdRegisterCallback(%s, %s) for %s", + name, regtype, p->name); if (errorCode) { @@ -2459,6 +2461,14 @@ dnssdRegisterCallback( "DNSServiceRegister failed with error %d", (int)errorCode); return; } + else if (strcasecmp(name, p->reg_name)) + { + cupsdLogMessage(CUPSD_LOG_INFO, "Using service name \"%s\" for \"%s\"", + name, p->name); + + cupsdSetString(&p->reg_name, name); + LastEvent |= CUPSD_EVENT_PRINTER_MODIFIED; + } } @@ -2607,8 +2617,8 @@ dnssdRegisterPrinter(cupsd_printer_t *p)/* I - Printer */ cupsdLogMessage(CUPSD_LOG_DEBUG, - "dnssdRegisterPrinter(%s) type, domain is \"%s\", \"%s\"", - p->name, regtype, domain ? domain : "(null)"); + "dnssdRegisterPrinter(%s) type, domain is \"%s\", \"%s\"", + p->name, regtype, domain ? domain : "(null)"); se = DNSServiceRegister(&p->dnssd_ipp_ref, 0, 0, name, regtype, domain, NULL, htons(port), txt_len, txt_record, diff --git a/scheduler/ipp.c b/scheduler/ipp.c index 62eaa8a106..df8f7e9332 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -4682,6 +4682,18 @@ copy_printer_attrs( ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time", ippTimeToDate(curtime)); +#ifdef HAVE_DNSSD + if (!ra || cupsArrayFind(ra, "printer-dns-sd-name")) + { + if (printer->reg_name) + ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME, + "printer-dns-sd-name", NULL, printer->reg_name); + else + ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE, + "printer-dns-sd-name", 0); + } +#endif /* HAVE_DNSSD */ + if (!ra || cupsArrayFind(ra, "printer-error-policy")) ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-error-policy", NULL, printer->error_policy); @@ -9322,7 +9334,8 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */ else if (con->response->request.status.status_code == IPP_OK) { cupsdSetJobPriority(job, attr->values[0].integer); - event |= CUPSD_EVENT_JOB_CONFIG_CHANGED; + event |= CUPSD_EVENT_JOB_CONFIG_CHANGED | + CUPSD_EVENT_PRINTER_QUEUE_ORDER_CHANGED; } } else if (!strcmp(attr->name, "job-state")) @@ -9469,6 +9482,10 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */ * Send events as needed... */ + if (event & CUPSD_EVENT_PRINTER_QUEUE_ORDER_CHANGED) + cupsdAddEvent(CUPSD_EVENT_PRINTER_QUEUE_ORDER_CHANGED, job->printer, job, + "Job priority changed by user."); + if (event & CUPSD_EVENT_JOB_STATE) cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job, job->state_value == IPP_JOB_HELD ? diff --git a/scheduler/job.c b/scheduler/job.c index c4e5b20df9..19f48a50cd 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -2527,7 +2527,7 @@ start_job(cupsd_job_t *job, /* I - Job ID */ "[Job %d] Unable to convert file %d to printable format!", job->current_file, job->id); cupsdLogMessage(CUPSD_LOG_INFO, - "Hint: Do you have ESP Ghostscript installed?"); + "Hint: Do you have Ghostscript installed?"); if (LogLevel < CUPSD_LOG_DEBUG) cupsdLogMessage(CUPSD_LOG_INFO, @@ -3357,7 +3357,7 @@ start_job(cupsd_job_t *job, /* I - Job ID */ if (strncmp(printer->device_uri, "file:", 5) != 0) { - if (job->current_file == 1) + if (job->current_file == 1 || printer->remote) { sscanf(printer->device_uri, "%254[^:]", method); snprintf(command, sizeof(command), "%s/backend/%s", ServerBin, method); @@ -3634,7 +3634,7 @@ update_job(cupsd_job_t *job) /* I - Job to check */ { cupsdSetPrinterReasons(job->printer, message); cupsdAddPrinterHistory(job->printer); - event |= CUPSD_EVENT_PRINTER_STATE_CHANGED; + event |= CUPSD_EVENT_PRINTER_STATE; } update_job_attrs(job); @@ -3663,14 +3663,14 @@ update_job(cupsd_job_t *job) /* I - Job to check */ if ((attr = cupsGetOption("printer-alert", num_attrs, attrs)) != NULL) { cupsdSetString(&job->printer->alert, attr); - event |= CUPSD_EVENT_PRINTER_STATE_CHANGED; + event |= CUPSD_EVENT_PRINTER_STATE; } if ((attr = cupsGetOption("printer-alert-description", num_attrs, attrs)) != NULL) { cupsdSetString(&job->printer->alert_description, attr); - event |= CUPSD_EVENT_PRINTER_STATE_CHANGED; + event |= CUPSD_EVENT_PRINTER_STATE; } cupsFreeOptions(num_attrs, attrs); @@ -3687,7 +3687,7 @@ update_job(cupsd_job_t *job) /* I - Job to check */ cupsdSetString(&job->printer->recoverable, ptr); cupsdAddPrinterHistory(job->printer); - event |= CUPSD_EVENT_PRINTER_STATE_CHANGED; + event |= CUPSD_EVENT_PRINTER_STATE; } else if (!strncmp(message, "recovered:", 10)) { @@ -3700,7 +3700,7 @@ update_job(cupsd_job_t *job) /* I - Job to check */ cupsdSetString(&job->printer->recoverable, ptr); cupsdAddPrinterHistory(job->printer); - event |= CUPSD_EVENT_PRINTER_STATE_CHANGED; + event |= CUPSD_EVENT_PRINTER_STATE; } #endif /* __APPLE__ */ else if (loglevel <= job->status_level) @@ -3715,7 +3715,7 @@ update_job(cupsd_job_t *job) /* I - Job to check */ strlcpy(job->printer->state_message, message, sizeof(job->printer->state_message)); cupsdAddPrinterHistory(job->printer); - event |= CUPSD_EVENT_PRINTER_STATE_CHANGED; + event |= CUPSD_EVENT_PRINTER_STATE; update_job_attrs(job); } @@ -3724,8 +3724,8 @@ update_job(cupsd_job_t *job) /* I - Job to check */ break; } - if ((event & CUPSD_EVENT_PRINTER_STATE_CHANGED)) - cupsdAddEvent(CUPSD_EVENT_PRINTER_STATE_CHANGED, job->printer, NULL, + if (event & CUPSD_EVENT_PRINTER_STATE) + cupsdAddEvent(CUPSD_EVENT_PRINTER_STATE, job->printer, NULL, (job->printer->type & CUPS_PRINTER_CLASS) ? "Class \"%s\" state changed." : "Printer \"%s\" state changed.", diff --git a/scheduler/main.c b/scheduler/main.c index 8d33ffb529..10303b909f 100644 --- a/scheduler/main.c +++ b/scheduler/main.c @@ -1077,7 +1077,7 @@ main(int argc, /* I - Number of command-line args */ * Reset the accumulated events... */ - LastEvent = CUPSD_EVENT_NONE; + LastEvent = CUPSD_EVENT_NONE; } } diff --git a/scheduler/printers.c b/scheduler/printers.c index c55126f518..6eab48a846 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -2643,7 +2643,7 @@ cupsdSetPrinterState( if (old_state != s) { cupsdAddEvent(s == IPP_PRINTER_STOPPED ? CUPSD_EVENT_PRINTER_STOPPED : - CUPSD_EVENT_PRINTER_STATE_CHANGED, p, NULL, + CUPSD_EVENT_PRINTER_STATE, p, NULL, "%s \"%s\" state changed.", (p->type & CUPS_PRINTER_CLASS) ? "Class" : "Printer", p->name); diff --git a/scheduler/subscriptions.c b/scheduler/subscriptions.c index 96a6d13c55..5bbb38c28d 100644 --- a/scheduler/subscriptions.c +++ b/scheduler/subscriptions.c @@ -323,7 +323,7 @@ cupsdAddSubscription( "cupsdAddSubscription(mask=%x, dest=%p(%s), job=%p(%d), " "uri=\"%s\")", mask, dest, dest ? dest->name : "", job, job ? job->id : 0, - uri); + uri ? uri : "(null)"); if (!Subscriptions) Subscriptions = cupsArrayNew((cups_array_func_t)cupsd_compare_subscriptions, @@ -504,9 +504,14 @@ cupsdEventName( case CUPSD_EVENT_PRINTER_MODIFIED : return ("printer-modified"); + case CUPSD_EVENT_PRINTER_QUEUE_ORDER_CHANGED : + return ("printer-queue-order-changed"); + + case CUPSD_EVENT_PRINTER_STATE : case CUPSD_EVENT_PRINTER_STATE_CHANGED : return ("printer-state-changed"); + case CUPSD_EVENT_PRINTER_CONFIG : case CUPSD_EVENT_PRINTER_CONFIG_CHANGED : return ("printer-config-changed"); @@ -529,8 +534,6 @@ cupsdEventName( return ("job-progress"); case CUPSD_EVENT_JOB_STATE : - return ("job-state"); - case CUPSD_EVENT_JOB_STATE_CHANGED : return ("job-state-changed"); @@ -577,14 +580,14 @@ cupsdEventValue(const char *name) /* I - Name of event */ return (CUPSD_EVENT_PRINTER_DELETED); else if (!strcmp(name, "printer-modified")) return (CUPSD_EVENT_PRINTER_MODIFIED); + else if (!strcmp(name, "printer-queue-order-changed")) + return (CUPSD_EVENT_PRINTER_QUEUE_ORDER_CHANGED); else if (!strcmp(name, "printer-state-changed")) return (CUPSD_EVENT_PRINTER_STATE_CHANGED); else if (!strcmp(name, "printer-config-changed")) return (CUPSD_EVENT_PRINTER_CONFIG_CHANGED); else if (!strcmp(name, "printer-changed")) return (CUPSD_EVENT_PRINTER_CHANGED); - else if (!strcmp(name, "job-state")) - return (CUPSD_EVENT_JOB_STATE); else if (!strcmp(name, "job-created")) return (CUPSD_EVENT_JOB_CREATED); else if (!strcmp(name, "job-completed")) diff --git a/scheduler/subscriptions.h b/scheduler/subscriptions.h index 3f74b1b400..7f112fa0cb 100644 --- a/scheduler/subscriptions.h +++ b/scheduler/subscriptions.h @@ -20,47 +20,52 @@ typedef enum { /* Individual printer events... */ - CUPSD_EVENT_PRINTER_RESTARTED = 0x0001, + CUPSD_EVENT_PRINTER_STATE = 0x0001, /* Sent after generic printer state change */ + CUPSD_EVENT_PRINTER_RESTARTED = 0x0002, /* Sent after printer restarted */ - CUPSD_EVENT_PRINTER_SHUTDOWN = 0x0002,/* Sent after printer shutdown */ - CUPSD_EVENT_PRINTER_STOPPED = 0x0004, /* Sent after printer stopped */ - CUPSD_EVENT_PRINTER_FINISHINGS_CHANGED = 0x0008, + CUPSD_EVENT_PRINTER_SHUTDOWN = 0x0004,/* Sent after printer shutdown */ + CUPSD_EVENT_PRINTER_STOPPED = 0x0008, /* Sent after printer stopped */ + + CUPSD_EVENT_PRINTER_CONFIG = 0x0010, /* Send after add/modify changes attrs */ + CUPSD_EVENT_PRINTER_FINISHINGS_CHANGED = 0x0020, /* Sent after finishings-supported changed */ - CUPSD_EVENT_PRINTER_MEDIA_CHANGED = 0x0010, + CUPSD_EVENT_PRINTER_MEDIA_CHANGED = 0x0040, /* Sent after media-supported changed */ - CUPSD_EVENT_PRINTER_ADDED = 0x0020, /* Sent after printer added */ - CUPSD_EVENT_PRINTER_DELETED = 0x0040, /* Sent after printer deleted */ - CUPSD_EVENT_PRINTER_MODIFIED = 0x0080,/* Sent after printer modified */ + CUPSD_EVENT_PRINTER_ADDED = 0x0080, /* Sent after printer added */ + CUPSD_EVENT_PRINTER_DELETED = 0x0100, /* Sent after printer deleted */ + CUPSD_EVENT_PRINTER_MODIFIED = 0x0200,/* Sent after printer modified */ + CUPSD_EVENT_PRINTER_QUEUE_ORDER_CHANGED = 0x0400, + /* Sent when the order of jobs is changed */ /* Convenience printer event groupings... */ - CUPSD_EVENT_PRINTER_STATE_CHANGED = 0x0007, - /* RESTARTED + SHUTDOWN + STOPPED */ - CUPSD_EVENT_PRINTER_CONFIG_CHANGED = 0x0018, - /* FINISHINGS_CHANGED + MEDIA_CHANGED */ - CUPSD_EVENT_PRINTER_CHANGED = 0x00ff, /* All of the above */ + CUPSD_EVENT_PRINTER_STATE_CHANGED = 0x000f, + /* STATE + RESTARTED + SHUTDOWN + STOPPED */ + CUPSD_EVENT_PRINTER_CONFIG_CHANGED = 0x0070, + /* CONFIG + FINISHINGS_CHANGED + MEDIA_CHANGED */ + CUPSD_EVENT_PRINTER_CHANGED = 0x07ff, /* All of the above */ /* Individual job events... */ - CUPSD_EVENT_JOB_STATE = 0x0100, /* Any state change */ - CUPSD_EVENT_JOB_CREATED = 0x0200, /* Send after job is created */ - CUPSD_EVENT_JOB_COMPLETED = 0x0400, /* Sent after job is completed */ - CUPSD_EVENT_JOB_STOPPED = 0x0800, /* Sent after job is stopped */ - CUPSD_EVENT_JOB_CONFIG_CHANGED = 0x1000, + CUPSD_EVENT_JOB_STATE = 0x0800, /* Any state change */ + CUPSD_EVENT_JOB_CREATED = 0x1000, /* Send after job is created */ + CUPSD_EVENT_JOB_COMPLETED = 0x2000, /* Sent after job is completed */ + CUPSD_EVENT_JOB_STOPPED = 0x4000, /* Sent after job is stopped */ + CUPSD_EVENT_JOB_CONFIG_CHANGED = 0x8000, /* Sent after set-job-attributes */ - CUPSD_EVENT_JOB_PROGRESS = 0x2000, /* Sent for each page */ + CUPSD_EVENT_JOB_PROGRESS = 0x10000, /* Sent for each page */ /* Convenience job event grouping... */ - CUPSD_EVENT_JOB_STATE_CHANGED = 0x0f00, - /* Any state change + CREATED + COMPLETED + STOPPED */ + CUPSD_EVENT_JOB_STATE_CHANGED = 0x7800, + /* STATE + CREATED + COMPLETED + STOPPED */ /* Server events... */ - CUPSD_EVENT_SERVER_RESTARTED = 0x4000,/* Sent after server restarts */ - CUPSD_EVENT_SERVER_STARTED = 0x8000, /* Sent when server first starts */ - CUPSD_EVENT_SERVER_STOPPED = 0x10000, /* Sent when server is stopped */ - CUPSD_EVENT_SERVER_AUDIT = 0x20000, /* Security-related stuff */ + CUPSD_EVENT_SERVER_RESTARTED = 0x20000,/* Sent after server restarts */ + CUPSD_EVENT_SERVER_STARTED = 0x40000, /* Sent when server first starts */ + CUPSD_EVENT_SERVER_STOPPED = 0x80000, /* Sent when server is stopped */ + CUPSD_EVENT_SERVER_AUDIT = 0x100000, /* Security-related stuff */ /* Everything and nothing... */ CUPSD_EVENT_NONE = 0, /* Nothing */ - CUPSD_EVENT_ALL = 0x1ffff /* Everything */ + CUPSD_EVENT_ALL = 0x1fffff /* Everything */ } cupsd_eventmask_t; diff --git a/templates/trailer.tmpl b/templates/trailer.tmpl index 088e3238fb..6ae8558664 100644 --- a/templates/trailer.tmpl +++ b/templates/trailer.tmpl @@ -1,9 +1,8 @@   -The Common UNIX Printing System, CUPS, and -the CUPS logo are the trademark property of -Apple Inc. CUPS is copyright 2007-2008 by -Apple Inc., all rights reserved. +The Common UNIX Printing System, CUPS, and the CUPS +logo are trademarks of Apple Inc. CUPS is +copyright 2007-2008 Apple Inc. All rights reserved.