bool ApsHandler::completePrinter(KMPrinter *prt, PrintcapEntry *entry, bool shortmode) { if (LprHandler::completePrinter(prt, entry, shortmode)) { if (!shortmode) { TQMap<TQString,TQString> opts = loadResources(entry); if (opts.contains("PRINTER")) { prt->setDescription(i18n("APS Driver (%1)").arg(opts["PRINTER"])); prt->setDriverInfo(prt->description()); } } if (prt->device().isEmpty()) { TQString prot; TQString smbname(sysconfDir() + "/" + prt->printerName() + "/smbclient.conf"); TQString ncpname(sysconfDir() + "/" + prt->printerName() + "/netware.conf"); if (TQFile::exists(smbname)) { TQMap<TQString,TQString> opts = loadVarFile(smbname); if (opts.count() == 0) prt->setDevice("smb://<unknown>/<unknown>"); else { prt->setDevice(buildSmbURI( opts[ "SMB_WORKGROUP" ], opts[ "SMB_SERVER" ], opts[ "SMB_PRINTER" ], opts[ "SMB_USER" ], opts[ "SMB_PASSWD" ] ) ); } prot = "smb"; } else if (TQFile::exists(ncpname)) { TQMap<TQString,TQString> opts = loadVarFile(ncpname); if (opts.count() == 0) prt->setDevice("ncp://<unknown>/<unknown>"); else { TQString uri = buildSmbURI( TQString::null, opts[ "NCP_SERVER" ], opts[ "NCP_PRINTER" ], opts[ "NCP_USER" ], opts[ "NCP_PASSWD" ] ); uri.replace( 0, 3, "ncp" ); prt->setDevice(uri); } prot = "ncp"; } if (!prt->device().isEmpty()) prt->setLocation(i18n("Network printer (%1)").arg(prot)); } return true; } return false; }
bool LPRngToolHandler::completePrinter(KMPrinter *prt, PrintcapEntry *entry, bool shortmode) { QString str, lp; // look for type in comment QStringList l = QStringList::split(' ', entry->comment, false); lp = entry->field("lp"); if (l.count() < 1) return false; if (l[1] == "DEVICE" || l[1] == "SOCKET" || l[1] == "QUEUE") LprHandler::completePrinter(prt, entry, shortmode); else if (l[1] == "SMB") { QMap<QString,QString> opts = parseXferOptions(entry->field("xfer_options")); QString user, pass; loadAuthFile(LprSettings::self()->baseSpoolDir() + "/" + entry->name + "/" + opts["authfile"], user, pass); QString uri = buildSmbURI( opts[ "workgroup" ], opts[ "host" ], opts[ "printer" ], user, pass ); prt->setDevice( uri ); prt->setLocation(i18n("Network printer (%1)").arg("smb")); } // look for comment if (!(str=entry->field("cm")).isEmpty()) prt->setDescription(str); // driver //if (!shortmode) //{ if (!(str=entry->field("ifhp")).isEmpty()) { QString model; int p = str.find("model"); if (p != -1) { p = str.find('=', p); if (p != -1) { p++; int q = str.find(',', p); if (q == -1) model = str.mid(p); else model = str.mid(p, q-p); } } prt->setDriverInfo(i18n("IFHP Driver (%1)").arg((model.isEmpty() ? i18n("unknown") : model))); prt->setOption("driverID", model); } //} return true; }