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 FILE* fp = popen (program.ascii(),"r");
00082 if ( ! fp ) {
00083 return false;
00084 }
00085 while (NULL != (fgets(buf,sizeof(buf)-1,fp))) {
00086 int line = strlen(buf)-1;
00087 buf[line] = 0;
00088 mData.append (QString(buf));
00089 }
00090 mExitCode = pclose(fp);
00091 return true;
00092 }
00093
00094
00095
00096
00097 QList<QString> SaXProcessCall::readStdout ( void ) {
00098 return mData;
00099 }
00100 }