Skip to content

Commit

Permalink
lpoptions now works with discovered but un-added printers (Issue #5045)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelrsweet committed Dec 6, 2018
1 parent 7d730d0 commit df4101b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
4 changes: 3 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
CHANGES - 2.3b6 - 2018-12-05
CHANGES - 2.3b6 - 2018-12-06
============================

Changes in CUPS v2.3b6
Expand All @@ -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
Expand Down
22 changes: 18 additions & 4 deletions systemv/lpoptions.c
Original file line number Diff line number Diff line change
@@ -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.
*/

/*
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit df4101b

Please sign in to comment.