From: Michael R Sweet Date: Thu, 6 Dec 2018 16:24:11 +0000 (-0500) Subject: lpoptions now works with discovered but un-added printers (Issue #5045) X-Git-Tag: v2.3b6~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df4101bff6f03d551bf6ec81082f8878d2bcc85a;p=thirdparty%2Fcups.git lpoptions now works with discovered but un-added printers (Issue #5045) --- diff --git a/CHANGES.md b/CHANGES.md index 4fa7697167..94628f2256 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,4 @@ -CHANGES - 2.3b6 - 2018-12-05 +CHANGES - 2.3b6 - 2018-12-06 ============================ Changes in CUPS v2.3b6 @@ -7,6 +7,8 @@ Changes in CUPS v2.3b6 - Localization update (Issue #5339, Issue #5348, Issue #5362, Issue #5408, Issue #5410) - Documentation updates (Issue #5369, Issue #5402, Issue #5403, Issue #5404) +- The `lpoptions` command now works with IPP Everywhere printers that have not + yet been added as local queues (Issue #5045) - The lpadmin command would create a non-working printer in some error cases (Issue #5305) - The scheduler would crash if an empty `AccessLog` directive was specified diff --git a/systemv/lpoptions.c b/systemv/lpoptions.c index f80319a196..0712c908d8 100644 --- a/systemv/lpoptions.c +++ b/systemv/lpoptions.c @@ -1,10 +1,11 @@ /* * Printer option program for CUPS. * - * Copyright 2007-2016 by Apple Inc. - * Copyright 1997-2006 by Easy Software Products. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2006 by Easy Software Products. * - * Licensed under Apache License v2.0. See the file "LICENSE" for more information. + * Licensed under Apache License v2.0. See the file "LICENSE" for more + * information. */ /* @@ -476,19 +477,32 @@ list_group(ppd_file_t *ppd, /* I - PPD file */ static void list_options(cups_dest_t *dest) /* I - Destination to list */ { + http_t *http; /* Connection to destination */ + char resource[1024]; /* Resource path */ int i; /* Looping var */ const char *filename; /* PPD filename */ ppd_file_t *ppd; /* PPD data */ ppd_group_t *group; /* Current group */ - if ((filename = cupsGetPPD(dest->name)) == NULL) + if ((http = cupsConnectDest(dest, CUPS_DEST_FLAGS_NONE, 30000, NULL, resource, sizeof(resource), NULL, NULL)) == NULL) { _cupsLangPrintf(stderr, _("lpoptions: Unable to get PPD file for %s: %s"), dest->name, cupsLastErrorString()); return; } + if ((filename = cupsGetPPD2(http, dest->name)) == NULL) + { + httpClose(http); + + _cupsLangPrintf(stderr, _("lpoptions: Unable to get PPD file for %s: %s"), + dest->name, cupsLastErrorString()); + return; + } + + httpClose(http); + if ((ppd = ppdOpenFile(filename)) == NULL) { unlink(filename);