summaryrefslogtreecommitdiffstats
path: root/src/processexec.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-07-24 09:39:37 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-07-24 09:39:37 -0500
commit191c434271e705161fbd01ed83b6d043a275bffc (patch)
tree0919a0a91d56167a9d36bca3881c513006b68a9b /src/processexec.cpp
downloadksensors-191c434271e705161fbd01ed83b6d043a275bffc.tar.gz
ksensors-191c434271e705161fbd01ed83b6d043a275bffc.zip
Initial import of ksensors 0.7.3 sources
Diffstat (limited to 'src/processexec.cpp')
-rw-r--r--src/processexec.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/processexec.cpp b/src/processexec.cpp
new file mode 100644
index 0000000..a6137c0
--- /dev/null
+++ b/src/processexec.cpp
@@ -0,0 +1,58 @@
+/***************************************************************************
+ processexec.cpp - description
+ -------------------
+ begin : sáb abr 27 2002
+ copyright : (C) 2002 by asdf
+ email : dsf
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <string.h>
+#include "processexec.h"
+
+ProcessExec::ProcessExec(): KProcess()
+{
+ clearData();
+ connect( this, SIGNAL(receivedStdout(KProcess *, char *, int)),this, SLOT(slotReceivedStdout(KProcess *, char *, int)) );
+ connect( this, SIGNAL(receivedStderr(KProcess *, char *, int)),this, SLOT(slotReceivedStderr(KProcess *, char *, int)) );
+}
+
+ProcessExec::~ProcessExec(){
+}
+
+bool ProcessExec::run()
+{
+ clearData();
+ return start( NotifyOnExit, Communication(Stdout | Stderr )); // | NoRead));
+}
+
+bool ProcessExec::runAndWait()
+{
+ clearData();
+ return start(Block,Communication(Stdout|Stderr));
+}
+
+void ProcessExec::slotReceivedStdout(KProcess *proc, char *buf, int len)
+{
+ if(bufLen+len>=bufMax) len= bufMax-bufLen;
+ if(len) {
+ memcpy(buffer+bufLen,buf,len);
+ bufLen+= len;
+ buffer[bufLen]=0;
+ }
+}
+
+void ProcessExec::slotReceivedStderr(KProcess *proc, char *buf, int len)
+{
+ fErrors= true;
+ slotReceivedStdout(proc,buf,len);
+}
+