[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