On 2013-06-10 15:48:18 +0200, Vincent Lefevre wrote: > If I output some messages in the cupsGetNamedDest() function > of cups/dest.c as shown below: > > /* > * Get the printer's attributes... > */ > > fprintf (stderr, "cupsGetNamedDest: %s\n", name ? name : ""); > > if (!_cupsGetDests(http, op, name, &dest, 0, 0)) > { > if (op == CUPS_GET_DEFAULT || (name && !set_as_default)) > return (NULL); > > if (dest) > fprintf (stderr, "(1) dest->name: %s\n", dest->name ? dest->name : ""); > > /* > * The default printer from environment variables or from a > * configuration file does not exist. Find out the real default. > */ > > if (!_cupsGetDests(http, CUPS_GET_DEFAULT, NULL, &dest, 0, 0)) > return (NULL); > > if (dest) > fprintf (stderr, "(2) dest->name: %s\n", dest->name ? dest->name : ""); > } > > "lpr" (with no options) gives me: > > cupsGetNamedDest: lipucb-mono-1 > (2) dest->name: lip-multi-1 > > The problem is here.
If I understand correctly, there may be actually 2 problems: 1. _cupsGetDests(http, op, name, &dest, 0, 0) failed while it shouldn't. 2. In case of failure due to specified[*] but inexistent printer, another printer is tried. This is a *wrong* behavior. The correct behavior is to report an error in such a case. Otherwise, for instance, if a document is sent to a private printer but something goes wrong like here, it may end up on a public printer! [*] by either a lpoptions config file or an environment variable. The -P lpr option is handled directly in lpr, and cupsGetNamedDest is not involved if this option is used; that's why everything is fine with it. -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <http://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon) -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org