init.cpp

00001 /**************
00002 FILE          : init.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 "init.h"
00022 
00023 namespace SaX {
00024 //====================================
00025 // Constructor...
00026 //------------------------------------
00027 SaXInit::SaXInit ( QList<char> opt ) {
00028         // .../
00033         // ----
00034         mOptions.append ("--quiet");
00035         mOptions.append ("no");
00036         QListIterator<char> it (opt);
00037         for (; it.current(); ++it) {
00038                 mOptions.append ( it.current() );
00039         }
00040 }
00041 
00042 //====================================
00043 // Constructor...
00044 //------------------------------------
00045 SaXInit::SaXInit ( void ) {
00046         // .../
00050         // ----
00051         mOptions.append ("--quiet");
00052         mOptions.append ("no");
00053 }
00054 
00055 //====================================
00056 // needInit...
00057 //------------------------------------
00058 bool SaXInit::needInit (void) {
00059         // .../
00063         // ----
00064         if (! setLock()) {
00065                 return false;
00066         }
00067         QFileInfo info (CACHE_CONFIG);
00068         if (! info.exists()) {
00069                 unsetLock();
00070                 return true;
00071         }
00072         unsetLock();
00073         return false;
00074 }
00075 
00076 //====================================
00077 // ignoreProfile...
00078 //------------------------------------
00079 void SaXInit::ignoreProfile (void) {
00080         // .../
00084         // ----
00085         mOptions.append ("-i");
00086 }
00087 
00088 //====================================
00089 // doInit...
00090 //------------------------------------
00091 void SaXInit::doInit (void) {
00092         // .../
00095         // ----
00096         if (! havePrivileges()) {
00097                 excPermissionDenied();
00098                 qError (errorString(),EXC_PERMISSIONDENIED);
00099                 return;
00100         }
00101         if (setenv ("HW_UPDATE","1",1) != 0) {
00102                 excInvalidArgument ( errno );
00103                 qError (errorString(),EXC_INVALIDARGUMENT);
00104                 return;
00105         }
00106         SaXProcessCall* proc = new SaXProcessCall ();
00107         proc -> addArgument ( SAX_INIT );
00108         QListIterator<char> it (mOptions);
00109         for (; it.current(); ++it) {
00110                 proc -> addArgument ( it.current() );
00111         }
00112         if ( ! proc -> start() ) {
00113                 excProcessFailed();
00114                 qError (errorString(),EXC_PROCESSFAILED);
00115                 return;
00116         }
00117 }
00118 } // end namespace

Generated on Mon Jan 7 17:25:36 2008 for libsax by  doxygen 1.4.6