(file) Return to TraceFileHandlerPOSIX.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/TraceFileHandlerPOSIX.cpp between version 1.16 and 1.19

version 1.16, 2008/12/16 18:56:00 version 1.19, 2009/01/23 12:07:33
Line 32 
Line 32 
 #if defined(PEGASUS_OS_VMS) #if defined(PEGASUS_OS_VMS)
 # include <fcntl.h> # include <fcntl.h>
 #endif #endif
 #include <Pegasus/Common/Logger.h>  
 #include <Pegasus/Common/System.h> #include <Pegasus/Common/System.h>
 #include <Pegasus/Common/TraceFileHandler.h> #include <Pegasus/Common/TraceFileHandler.h>
 #include <Pegasus/Common/Mutex.h> #include <Pegasus/Common/Mutex.h>
Line 49 
Line 48 
 //  Implementation of this function is platform specific //  Implementation of this function is platform specific
 /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
  
 #if defined(PEGASUS_OS_VMS)  
   
 void TraceFileHandler::prepareFileHandle(void)  
 {  
     Sint32 retCode;  
   
     if (_configHasChanged)  
     {  
         _reConfigure();  
     }  
   
     // Check if the file has been deleted, if so re-open the file and  
     // continue  
     if (!System::exists(_fileName))  
     {  
         if (_fileHandle == 0)  
         {  
             _fileHandle = fopen(_fileName, "a+", "shr=get,put,upd");  
             // _fileHandle = fopen(_fileName,"a","shr=get");  
         }  
         else  
         {  
             _fileHandle =  
                 freopen(_fileName, "a+", _fileHandle, "shr=get,put,upd");  
             // _fileHandle = freopen(_fileName,"a",_fileHandle,"shr=get");  
         }  
         if (!_fileHandle)  
         {  
             // Unable to re-open file, log a message  
   
             Logger::put_l(  
                 Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING,  
                 MessageLoaderParms(  
                     "Common.TraceFileHandlerUnix.FAILED_TO_OPEN_FILE",  
                     "Failed to open File $0",  
                     _fileName));  
             return;  
         }  
   
         // Set permissions on the trace file to 0400  
   
         if (!FileSystem::changeFilePermissions(  
                 String(_fileName), (S_IRUSR | S_IWUSR)))  
         {  
             Logger::put_l(  
                 Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING,  
                 MessageLoaderParms(  
                     "Common.TraceFileHandlerUnix."  
                         "FAILED_TO_SET_FILE_PERMISSIONS",  
                     "Failed to set permissions on file $0",  
                     _fileName));  
             return;  
         }  
     }  
     // Seek to the end of File  
     retCode = fseek(_fileHandle, 0, SEEK_END);  
 }  
   
 void TraceFileHandler::handleMessage(  
     const char *message,  
     Uint32 msgLen,  
     const char *fmt, va_list argList)  
 {  
     Sint32 retCode;  
     Sint32 fileDesc;  
   
     // Do not add Trace calls in the Critical section  
     // ---- BEGIN CRITICAL SECTION  
   
     prepareFileHandle();  
   
     // Write the message to the file  
   
     retCode = fprintf(_fileHandle, "%s", message);  
     retCode = vfprintf(_fileHandle, fmt, argList);  
     retCode = fprintf(_fileHandle, "\n");  
     retCode = fflush(_fileHandle);  
     fileDesc = fileno(_fileHandle);  
     retCode = fsync(fileDesc);  
     _wroteToLog = false;  
     // retCode = fclose(_fileHandle);  
     // _fileHandle = 0;  
   
     // ---- END CRITICAL SECTION  
   
     return;  
 }  
   
 void TraceFileHandler::handleMessage(const char *message, Uint32 msgLen)  
 {  
     Sint32 retCode;  
     Sint32 fileDesc;  
   
     // Do not add Trace calls in the Critical section  
     // ---- BEGIN CRITICAL SECTION  
   
     prepareFileHandle();  
   
     // Write the message to the file  
   
     retCode = fprintf(_fileHandle, "%s\n", message);  
     retCode = fflush(_fileHandle);  
     fileDesc = fileno(_fileHandle);  
     retCode = fsync(fileDesc);  
     _wroteToLog = false;  
     // retCode = fclose(_fileHandle);  
     // _fileHandle = 0;  
   
     // ---- END CRITICAL SECTION  
   
     return;  
 }  
   
   
 #else /* PEGASUS_OS_VMS */  
   
 void TraceFileHandler::prepareFileHandle(void) void TraceFileHandler::prepareFileHandle(void)
 { {
     // If the file has been deleted, re-open it and continue     // If the file has been deleted, re-open it and continue
Line 199 
Line 82 
         if (!_fileHandle)         if (!_fileHandle)
         {         {
             // Unable to open file, log a message             // Unable to open file, log a message
             if (!_wroteToLog)              MessageLoaderParms parm(
             {  
                 Logger::put_l(  
                     Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING,  
                     MessageLoaderParms(  
                         "Common.TraceFileHandler.FAILED_TO_OPEN_FILE",                         "Common.TraceFileHandler.FAILED_TO_OPEN_FILE",
                         "Failed to open File $0",                         "Failed to open File $0",
                         _fileName));                  _fileName);
                 _wroteToLog = true;              _logError(TRCFH_FAILED_TO_OPEN_FILE_SYSMSG,parm);
             }  
             return;             return;
         }         }
     }     }
Line 241 
Line 119 
     fprintf(_fileHandle, "%s", message);     fprintf(_fileHandle, "%s", message);
     vfprintf(_fileHandle, fmt, argList);     vfprintf(_fileHandle, fmt, argList);
     fprintf(_fileHandle, "\n");     fprintf(_fileHandle, "\n");
     fflush(_fileHandle);  
   #if defined(PEGASUS_OS_VMS)
       if (0 == fsync(fileno(_fileHandle)))
   #else
       if (0 == fflush(_fileHandle))
   #endif
       {
           // trace message successful written, reset error log messages
           // thus allow writing of errors to log again
           _logErrorBitField = 0;
       }
   
     // ---- END CRITICAL SECTION     // ---- END CRITICAL SECTION
 } }
  
Line 266 
Line 155 
     prepareFileHandle();     prepareFileHandle();
     // Write the message to the file     // Write the message to the file
     fprintf(_fileHandle, "%s\n", message);     fprintf(_fileHandle, "%s\n", message);
     fflush(_fileHandle);  #if defined(PEGASUS_OS_VMS)
       if (0 == fsync(fileno(_fileHandle)))
   #else
       if (0 == fflush(_fileHandle))
   #endif
       {
           // trace message successful written, reset error log messages
           // thus allow writing of errors to log again
           _logErrorBitField = 0;
       }
     // ---- END CRITICAL SECTION     // ---- END CRITICAL SECTION
 } }
  
   
 #endif /* !PEGASUS_OS_VMS */  
   
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.16  
changed lines
  Added in v.1.19

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2