processcall.cpp

00001 /**************
00002 FILE          : processcall.cpp
00003 ***************
00004 PROJECT       : SaX2 - library interface
00005               :
00006 AUTHOR        : Marcus Schäfer <ms@suse.de>
00007               :
00008 BELONGS TO    : SaX2 - SuSE advanced X11 configuration 
00009               : 
00010               :
00011 DESCRIPTION   : native C++ class library to access SaX2
00012               : functionality. Easy to use interface for
00013               : //.../
00014               : - importing/exporting X11 configurations
00015               : - modifying/creating X11 configurations 
00016               : ---
00017               :
00018               :
00019 STATUS        : Status: Development
00020 **************/
00021 #include "processcall.h"
00022     
00023 namespace SaX {
00024 //====================================
00025 // Constructor...
00026 //------------------------------------
00027 SaXProcessCall::SaXProcessCall ( void ) {
00028         mExitCode  = -1;
00029 }
00030 
00031 //====================================
00032 // addArgument
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 // addArgument
00042 //------------------------------------
00043 void SaXProcessCall::addArgument ( int arg ) {
00044         QString argString;
00045         QTextOStream (&argString) << arg;
00046         addArgument ( argString );
00047 }
00048 
00049 //====================================
00050 // clearArguments
00051 //------------------------------------
00052 void SaXProcessCall::clearArguments ( void ) {
00053         mArguments.clear();
00054         mExitCode  = -1;
00055 }
00056 
00057 //====================================
00058 // exitStatus
00059 //------------------------------------
00060 int SaXProcessCall::exitStatus ( void ) {
00061         return mExitCode;
00062 }
00063 
00064 //====================================
00065 // start
00066 //------------------------------------
00067 bool SaXProcessCall::start ( void ) {
00068         //====================================
00069         // create program call string
00070         //------------------------------------
00071         QString program;
00072         QListIterator<QString> it ( mArguments );
00073         for (; it.current(); ++it ) {
00074                 program.append (*it.current() + " ");
00075         }
00076         //====================================
00077         // start program and connect stream
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 // readStdout
00095 //------------------------------------
00096 QList<QString> SaXProcessCall::readStdout ( void ) {
00097         return mData;
00098 }
00099 } // end namespace

Generated on Tue Nov 28 19:09:12 2006 for libsax by  doxygen 1.5.0