[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kdeprint/cups
From: Alex Merry <huntedhacker () tiscali ! co ! uk>
Date: 2007-06-20 22:10:22
Message-ID: 1182377422.785080.29410.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 678219 by alexmerry:
A K3Process->KProcess port. kdelibs is almost clear now.
(BC, since not exported)
M +30 -23 cupsaddsmb2.cpp
M +5 -4 cupsaddsmb2.h
--- trunk/KDE/kdelibs/kdeprint/cups/cupsaddsmb2.cpp #678218:678219
@@ -45,9 +45,10 @@
m_state = None;
m_status = false;
m_actionindex = 0;
- connect(&m_proc, SIGNAL(receivedStdout(K3Process*,char*,int)), \
SLOT(slotReceived(K3Process*,char*,int)));
- connect(&m_proc, SIGNAL(receivedStderr(K3Process*,char*,int)), \
SLOT(slotReceived(K3Process*,char*,int)));
- connect(&m_proc, SIGNAL(processExited(K3Process*)), \
SLOT(slotProcessExited(K3Process*))); + \
m_proc.setOutputChannelMode(KProcess::MergedChannels); + connect(&m_proc, \
SIGNAL(readyReadStandardOutput()), SLOT(slotReceived())); + connect(&m_proc, \
SIGNAL(finished(int,KProcess::ExitStatus)), + \
SLOT(slotProcessExited(int,KProcess::ExitStatus)));
m_side = new SidePixmap(this);
m_doit = new QPushButton(i18n("&Export"), this);
@@ -149,14 +150,13 @@
{
if (m_state == None)
doExport();
- else if (m_proc.isRunning())
+ else if (m_proc.state() != KProcess::NotRunning)
m_proc.kill();
}
-void CupsAddSmb::slotReceived(K3Process*, char *buf, int buflen)
+void CupsAddSmb::slotReceived()
{
QString line;
- int index(0);
bool partial(false);
static bool incomplete(false);
@@ -166,16 +166,20 @@
// read a line
line = QLatin1String("");
partial = true;
- while (index < buflen)
+ char c;
+ while (m_proc.getChar(&c))
{
- QChar c(buf[index++]);
if (c == '\n')
{
partial = false;
break;
}
- else if (c.isPrint())
- line += c;
+ else
+ {
+ QChar qc(c);
+ if (qc.isPrint())
+ line += qc;
+ }
}
if (line.isEmpty())
@@ -206,7 +210,7 @@
{
// quit program
kDebug(500) << "EXITING PROGRAM..." << endl;
- m_proc.writeStdin("quit\n", 5);
+ m_proc.write("quit\n", 5);
kDebug(500) << "SENT" << endl;
}
return;
@@ -259,7 +263,7 @@
{
m_buffer.clear();
m_state = None;
- if (m_proc.isRunning())
+ if (m_proc.state() == KProcess::Running)
{
QByteArray s = m_actions[m_actionindex++].toLatin1();
m_bar->setValue(m_bar->value()+1);
@@ -313,17 +317,17 @@
// send action
kDebug(500) << "ACTION = " << s << endl;
s.append("\n");
- m_proc.writeStdin(s.data(), s.length());
+ m_proc.write(s);
}
}
-void CupsAddSmb::slotProcessExited(K3Process*)
+void CupsAddSmb::slotProcessExited(int, KProcess::ExitStatus exitStatus)
{
kDebug(500) << "PROCESS EXITED (" << m_state << ")" << endl;
- if (m_proc.normalExit() && m_state != Start && m_status)
+ if (exitStatus == KProcess::NormalExit && m_state != Start && m_status)
{
// last process went OK. If it was smbclient, then switch to rpcclient
- if (qstrncmp(m_proc.args().first(), "smbclient", 9) == 0)
+ if (m_procname == "smbclient")
{
doInstall();
return;
@@ -345,7 +349,7 @@
}
}
- if (m_proc.normalExit())
+ if (exitStatus == KProcess::NormalExit)
{
showError(
i18n("Operation failed. Possible reasons are: permission denied "
@@ -440,8 +444,9 @@
m_actions << "put" << m_datadir+"/drivers/PSMON.DLL" << "WIN40/PSMON.DLL";
m_actions << "quit";
- m_proc.clearArguments();
- m_proc << "smbclient" << QLatin1String("//")+m_servered->text()+"/print$";
+ m_proc.clearProgram();
+ m_procname = "smbclient";
+ m_proc << m_procname << QLatin1String("//")+m_servered->text()+"/print$";
return startProcess();
}
@@ -462,8 +467,9 @@
//m_text->setText(i18n("Preparing to install driver on host \
<b>%1</b>").arg(m_servered->text())); m_textinfo->setText(i18n("Preparing to install \
driver on host %1", m_servered->text()));
- m_proc.clearArguments();
- m_proc << "rpcclient" << m_servered->text();
+ m_proc.clearProgram();
+ m_procname = "rpcclient";
+ m_proc << m_procname << m_servered->text();
return startProcess();
}
@@ -477,8 +483,9 @@
m_state = Start;
m_actionindex = 0;
m_buffer.clear();
- kDebug(500) << "PROCESS STARTED = " << m_proc.args()[0] << endl;
- return m_proc.start(K3Process::NotifyOnExit, K3Process::All);
+ kDebug(500) << "PROCESS STARTED = " << m_procname << endl;
+ m_proc.start();
+ return m_proc.waitForStarted(5000); // don't wait more than 5 seconds
}
#include "cupsaddsmb2.moc"
--- trunk/KDE/kdelibs/kdeprint/cups/cupsaddsmb2.h #678218:678219
@@ -22,7 +22,7 @@
#include <QtCore/QObject>
#include <QtCore/QStringList>
-#include <k3process.h>
+#include <kprocess.h>
#include <kdialog.h>
class QProgressBar;
@@ -43,9 +43,9 @@
static bool exportDest(const QString& dest, const QString& datadir);
protected Q_SLOTS:
- void slotReceived(K3Process*, char*, int);
+ void slotReceived();
void doNextAction();
- void slotProcessExited(K3Process*);
+ void slotProcessExited(int exitCode, KProcess::ExitStatus exitStatus);
void slotActionClicked();
protected:
@@ -57,7 +57,8 @@
void showError(const QString& msg);
private:
- K3Process m_proc;
+ KProcess m_proc;
+ QString m_procname;
QStringList m_buffer;
int m_state;
QStringList m_actions;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic