|
libsax 7.2
|
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 #include <QTextOStream> 00023 00024 namespace SaX { 00025 //==================================== 00026 // Constructor... 00027 //------------------------------------ 00028 SaXProcessCall::SaXProcessCall ( void ) { 00029 mExitCode = -1; 00030 } 00031 00032 //==================================== 00033 // addArgument 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 // addArgument 00043 //------------------------------------ 00044 void SaXProcessCall::addArgument ( int arg ) { 00045 QString argString; 00046 QTextOStream (&argString) << arg; 00047 addArgument ( argString ); 00048 } 00049 00050 //==================================== 00051 // clearArguments 00052 //------------------------------------ 00053 void SaXProcessCall::clearArguments ( void ) { 00054 mArguments.clear(); 00055 mExitCode = -1; 00056 } 00057 00058 //==================================== 00059 // exitStatus 00060 //------------------------------------ 00061 int SaXProcessCall::exitStatus ( void ) { 00062 return mExitCode; 00063 } 00064 00065 //==================================== 00066 // start 00067 //------------------------------------ 00068 bool SaXProcessCall::start ( void ) { 00069 //==================================== 00070 // create program call string 00071 //------------------------------------ 00072 QString program; 00073 QString it; 00074 foreach (it,mArguments) { 00075 program.append (it + " "); 00076 } 00077 //==================================== 00078 // start program and connect stream 00079 //------------------------------------ 00080 char buf[LINESIZE]; 00081 //fprintf (stderr,"++++ DEBUG: %s\n",program.ascii()); 00082 FILE* fp = popen (program.ascii(),"r"); 00083 if ( ! fp ) { 00084 return false; 00085 } 00086 while (NULL != (fgets(buf,sizeof(buf),fp))) { 00087 int line = strlen(buf); 00088 buf[line-1] = '\0'; 00089 //fprintf (stderr,"__%s__\n",buf); 00090 mData.append (QString(buf)); 00091 } 00092 mExitCode = pclose(fp); 00093 return true; 00094 } 00095 00096 //==================================== 00097 // readStdout 00098 //------------------------------------ 00099 QList<QString> SaXProcessCall::readStdout ( void ) { 00100 return mData; 00101 } 00102 } // end namespace
1.7.3