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