00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "processcall.h"
00022 #include <QTextOStream>
00023
00024 namespace SaX {
00025
00026
00027
00028 SaXProcessCall::SaXProcessCall ( void ) {
00029 mExitCode = -1;
00030 }
00031
00032
00033
00034
00035 void SaXProcessCall::addArgument ( const QString& arg ) {
00036 QString* argument = new QString;
00037 QTextOStream (argument) << "'" << arg << "'";
00038 mArguments.append ( *argument );
00039 }
00040
00041
00042
00043
00044 void SaXProcessCall::addArgument ( int arg ) {
00045 QString argString;
00046 QTextOStream (&argString) << arg;
00047 addArgument ( argString );
00048 }
00049
00050
00051
00052
00053 void SaXProcessCall::clearArguments ( void ) {
00054 mArguments.clear();
00055 mExitCode = -1;
00056 }
00057
00058
00059
00060
00061 int SaXProcessCall::exitStatus ( void ) {
00062 return mExitCode;
00063 }
00064
00065
00066
00067
00068 bool SaXProcessCall::start ( void ) {
00069
00070
00071
00072 QString program;
00073 QString it;
00074 foreach (it,mArguments) {
00075 program.append (it + " ");
00076 }
00077
00078
00079
00080 char buf[LINESIZE];
00081
00082 FILE* fp = popen (program.ascii(),"r");
00083 if ( ! fp ) {
00084 return false;
00085 }
00086 while (NULL != (fgets(buf,sizeof(buf),fp))) {
00087 int line = strlen(buf);
00088 buf[line-1] = '\0';
00089
00090 mData.append (QString(buf));
00091 }
00092 mExitCode = pclose(fp);
00093 return true;
00094 }
00095
00096
00097
00098
00099 QList<QString> SaXProcessCall::readStdout ( void ) {
00100 return mData;
00101 }
00102 }