void KMLpdManager::checkStatus() { KPipeProcess proc; QString cmd = programName(0) + " status all"; if (proc.open(cmd)) { QTextStream t(&proc); QString line; KMPrinter *printer(0); int p(-1); while (!t.eof()) { line = t.readLine().stripWhiteSpace(); if (line.isEmpty()) continue; if ((p=line.find(':')) != -1) printer = findPrinter(line.left(p)); else if (line.startsWith("printing") && printer) printer->setState(line.find("enabled") != -1 ? KMPrinter::Idle : KMPrinter::Stopped); else if (line.find("entries") != -1 && printer) if (!line.startsWith("no") && printer->state() == KMPrinter::Idle) printer->setState(KMPrinter::Processing); } } }
// "/etc/printers.conf" file parsing (Solaris 2.6) void KMLpdUnixManager::parseEtcPrintersConf() { QFile f(getEtcPrintersConfName()); if (f.exists() && f.open(IO_ReadOnly)) { KTextBuffer t(&f); QMap<QString,QString> entry; QString default_printer; while (!t.eof()) { entry = readEntry(t); if (entry.isEmpty() || !entry.contains("printer-name")) continue; QString prname = entry["printer-name"]; if (prname == "_default") { if (entry.contains("use")) default_printer = entry["use"]; } else if (prname != "_all") { KMPrinter *printer = ::createPrinter(entry); if (entry.contains("bsdaddr")) { QStringList l = QStringList::split(',',entry["bsdaddr"],false); printer->setDescription(i18n("Remote printer queue on %1").arg(l[0])); } else printer->setDescription(i18n("Local printer")); addPrinter(printer); } } if (!default_printer.isEmpty()) setSoftDefault(findPrinter(default_printer)); } }