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
00023 namespace SaX {
00024
00025
00026
00027 SaXProcessCall::SaXProcessCall ( void ) {
00028 mExitCode = -1;
00029 }
00030
00031
00032
00033
00034 void SaXProcessCall::addArgument ( const QString& arg ) {
00035 QString* argument = new QString;
00036 QTextOStream (argument) << "'" << arg << "'";
00037 mArguments.append ( argument );
00038 }
00039
00040
00041
00042
00043 void SaXProcessCall::addArgument ( int arg ) {
00044 QString argString;
00045 QTextOStream (&argString) << arg;
00046 addArgument ( argString );
00047 }
00048
00049
00050
00051
00052 void SaXProcessCall::clearArguments ( void ) {
00053 mArguments.clear();
00054 mExitCode = -1;
00055 }
00056
00057
00058
00059
00060 int SaXProcessCall::exitStatus ( void ) {
00061 return mExitCode;
00062 }
00063
00064
00065
00066
00067 bool SaXProcessCall::start ( void ) {
00068
00069
00070
00071 QString program;
00072 QListIterator<QString> it ( mArguments );
00073 for (; it.current(); ++it ) {
00074 program.append (*it.current() + " ");
00075 }
00076
00077
00078
00079 char buf[LINESIZE];
00080 FILE* fp = popen (program.ascii(),"r");
00081 if ( ! fp ) {
00082 return false;
00083 }
00084 while (NULL != (fgets(buf,sizeof(buf)-1,fp))) {
00085 int line = strlen(buf)-1;
00086 buf[line] = 0;
00087 mData.append (new QString(buf));
00088 }
00089 mExitCode = pclose(fp);
00090 return true;
00091 }
00092
00093
00094
00095
00096 QList<QString> SaXProcessCall::readStdout ( void ) {
00097 return mData;
00098 }
00099 }