Hi, Nicolas Williams p??e v st 30. 09. 2009 v 12:40 -0500: > On Wed, Sep 30, 2009 at 01:15:32PM -0400, James Carlson wrote: > > Norm Jacobs wrote: > > > Milan Jurik wrote: > > >> NIS is not Solaris specific feature and fully supported naming service > > >> with no EOL plans. Why should admins mantain another naming just for > > >> printing? > > >> > > > NIS is not Solaris specific, but our printers.conf.byname NIS map is. > > > The name service support in CUPS is more dynamic and actually > > > requires less admin work than NIS does for printing under Solaris. > > > > Architecturally, though, if it went through the name service switch > > rather than linking directly with the protocol-specific libraries, it > > should work fine with NIS, LDAP, or any other NSS-supported feature. > > Architecturally it couldn't really, since the relevant name service > switch interfaces are not, so far as I can tell from a cursory look, > Public. > > In fact, there are two private-looking implementations of > getprinterbyname() in ONNV, like this one from > $SRC/lib/print/libprint/common/nss_printer.c: > > int > getprinterbyname(char *name, char *linebuf, int linelen, char *ns) > { > nss_XbyY_args_t arg; > nss_status_t res; > > private_ns = ns; > NSS_XbyY_INIT(&arg, linebuf, linebuf, linelen, str2printer); > arg.key.name = name; > res = nss_search(&db_root, _nss_initf_printers, > NSS_DBOP_PRINTERS_BYNAME, &arg); > (void) NSS_XbyY_FINI(&arg); > private_ns = NULL; > > return (arg.status = res); > } > > There's another, similar one in $SRC/lib/print/libpapi-dynamic/common/nss.c. > > And that's not enough, since one then has to parse the result (see the > two _cvt_nss_entry_to_printer() implementations in the same two > libraries). > > Of course, CUPS could get a contract to use those low-level name service > switch interfaces. Or we could make a Public getprinterbyname(). The > former seems more likely at the moment; anyways, I recommend it. >
Yes, getprinterbyname() is private interface and lp is the only consumer. The question is how lp on other platforms is consuming NIS maps for printing because websearch reveals that "printers in NIS maps" is not Solaris only thing (but not on Linux probably). Still it is unclear how CUPS will take care or not (for now "not") about "printers" in nsswitch. I am not saying it is proper solution to use that interface but it should be evaluated before disbanding lp in the next phases. NIS2LDAP is not option for those who are using NIS servers (NIS2LDAP is "wrapper" around LDAP server). Best regards, Milan