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         mArguments.append ( new QString(arg) );
00036 }
00037 
00038 //====================================
00039 // addArgument
00040 //------------------------------------
00041 void SaXProcessCall::addArgument ( int arg ) {
00042         QString argString;
00043         QTextOStream (&argString) << arg;
00044         addArgument ( argString );
00045 }
00046 
00047 //====================================
00048 // clearArguments
00049 //------------------------------------
00050 void SaXProcessCall::clearArguments ( void ) {
00051         mArguments.clear();
00052         mExitCode  = -1;
00053 }
00054 
00055 //====================================
00056 // exitStatus
00057 //------------------------------------
00058 int SaXProcessCall::exitStatus ( void ) {
00059         return mExitCode;
00060 }
00061 
00062 //====================================
00063 // start
00064 //------------------------------------
00065 bool SaXProcessCall::start ( void ) {
00066         //====================================
00067         // create program call string
00068         //------------------------------------
00069         QString program;
00070         QListIterator<QString> it ( mArguments );
00071         for (; it.current(); ++it ) {
00072                 program.append (*it.current() + " ");
00073         }
00074         //====================================
00075         // start program and connect stream
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 // readStdout
00093 //------------------------------------
00094 QList<QString> SaXProcessCall::readStdout ( void ) {
00095         return mData;
00096 }
00097 } // end namespace

Generated on Mon Jun 19 12:42:49 2006 for libsax by  doxygen 1.4.6