Ejemplo n.º 1
0
   void sdbReportError( const CHAR *filename, UINT32 lineno,
                        const CHAR *msg, BOOLEAN isException )
   {
      BOOLEAN add = FALSE ;

      if ( SDB_OK == sdbGetErrno() || !__hasSetErrNo__ )
      {
         const CHAR *p = NULL ;
         if ( isException && msg &&
              NULL != ( p = ossStrstr( msg, ":" ) ) &&
              0 != ossAtoi( p + 1 ) )
         {
            sdbSetErrno( ossAtoi( p + 1 ) ) ;
         }
         else
         {
            sdbSetErrno( SDB_SPT_EVAL_FAIL ) ;
         }
      }

      if ( ( sdbIsErrMsgEmpty() || !__hasSetErrMsg__ ) && msg )
      {
         if ( filename )
         {
            stringstream ss ;
            ss << filename << ":" << lineno << " " << msg ;
            sdbSetErrMsg( ss.str().c_str() ) ;
         }
         else
         {
            sdbSetErrMsg( msg ) ;
         }
         add = TRUE ;
      }

      if ( sdbNeedPrintError() )
      {
         ossPrintf( "%s:%d %s\n",
                    filename ? filename : "(nofile)" ,
                    lineno, msg ) ;

         if ( !add && !sdbIsErrMsgEmpty() &&
              NULL == ossStrstr( sdbGetErrMsg(), msg ) )
         {
            ossPrintf( "%s\n", sdbGetErrMsg() ) ;
         }
      }
      __hasSetErrMsg__ = FALSE ;
      __hasSetErrNo__  = FALSE ;
   }
Ejemplo n.º 2
0
   INT32 _sptClassMetaInfo::_getContents( const CHAR *pFileBuff,
                                          const CHAR *pMark1,
                                          const CHAR*pMark2,
                                          CHAR **ppBuff,
                                          INT32 *pBuffSize )
   {
      INT32 rc = SDB_OK ;
      stringstream ss ;
      INT32 buffSize = 0 ;
      CHAR *pBuff = NULL ;
      CHAR *begin = NULL ;
      CHAR *end = NULL ;

      begin = ossStrstr( (CHAR *)pFileBuff, (CHAR *)pMark1 ) ;
      end = ossStrstr( (CHAR *)pFileBuff, (CHAR *)pMark2 ) ;
      if ( NULL == begin || NULL == end )
      {
         rc = SDB_INVALIDARG ;
         ss << "Failed to get [" << pMark1 << "], or [" 
            << pMark2 << "], rc = " << rc << ERROR_END ;
         goto error ;
      }
      buffSize = end - begin ;
      pBuff = (CHAR *)SDB_OSS_MALLOC( buffSize + 1 ) ;
      if ( NULL == pBuff )
      {
         rc = SDB_OOM ;
         ss << "Failed to alloc [" << buffSize << "] bytes, rc = " 
            << rc << ERROR_END ;
         goto error ;
      }
      ossMemset( pBuff, 0, buffSize ) ;
      ossMemcpy( pBuff, begin, buffSize ) ;
      pBuff[buffSize] = '\0' ;
      *ppBuff = pBuff ;
      *pBuffSize = buffSize + 1 ;
      
   done:
      return rc ;
   error:
      PRINT_ERROR ;
      goto done ;
   }
Ejemplo n.º 3
0
   void _replaceCharsWithSpace( CHAR *pBuff, const CHAR *c )
   {
      CHAR *pos = NULL ;

      while( TRUE )
      {
         pos = ossStrstr( pBuff, c ) ;
         if ( NULL == pos )
         {
            break ;
         }
         ossMemset( pos, ' ', ossStrlen(c) ) ;
      }
   }
Ejemplo n.º 4
0
const INT32 _dpsLogFilter::getFileCount( const CHAR *path )
{
   INT32 fileCount = 0 ;
   const CHAR *pFileName = "sequoiadbLog." ;
   fs::path fileDir( path ) ;
   fs::directory_iterator endIter ;
   for( fs::directory_iterator it( path ); it != endIter; ++it )
   {
      const CHAR *filepath = it->path().filename().string().c_str() ;
      const CHAR *dotPos = ossStrrchr( filepath, '.' ) ;
      if( !dotPos )
         continue ;
      const CHAR *namePos = ossStrstr( filepath, pFileName ) ;
      if( !namePos )
         continue ;
      if( ( dotPos - namePos + 1 ) != (UINT32)ossStrlen( pFileName ) )
         continue ;

      ++fileCount ;
   }

   return fileCount ;
}
Ejemplo n.º 5
0
   void _filterMarks( CHAR *pBuff, const CHAR **marks, INT32 num )
   {
      INT32 i = 0 ;
      INT32 left = 0 ;
      CHAR *pos = NULL ;
      CHAR *end = NULL ;

      for ( ; i < num; i++ )
      {
         while( TRUE )
         {
            pos = ossStrstr( pBuff, marks[i] ) ;
            if ( NULL == pos )
            {
               break ;
            }
            end = pos + ossStrlen( marks[i] ) ;
            left = ossStrlen( end ) ;
            ossMemmove( pos, end, left ) ;
            pos[left] = '\0' ;
         }
      }
   }
Ejemplo n.º 6
0
INT32 _ossModuleHandle::patchModuleName( const CHAR* name, CHAR *patchedName, UINT32 size )
{
   INT32 rc = SDB_OK ;
   SDB_ASSERT( name, "Module name can not be NULL" ) ;
   SDB_ASSERT( patchedName, "Patched buffer can not be NULL" ) ;

   const CHAR *ptr = NULL ;
   INT32 patchedNameLen = 0 ;
#ifdef _WINDOWS
   INT32 tailLen = ossStrlen(LIB_END_STR) ;
#else
   INT32 tailLen = ossStrlen(LIB_END_STR) ;
#endif

   ossMemset( patchedName, 0, size ) ;
#ifdef _LINUX
   ptr = ossStrstr( name, LIB_START_STR ) ;
   if ( ptr != name )
   {
      ossMemcpy( patchedName, LIB_START_STR, ossStrlen(LIB_START_STR) ) ;
   }
#endif

   patchedNameLen = ossStrlen( patchedName ) ;
   ptr = ossStrrchr( name, '.' ) ;
   if ( ptr != NULL )
   {
#ifdef _WINDOWS
      if ( 'd' != *(ptr + 1) || 'l' != *(ptr + 2) && 'l' != *(ptr + 3) )
      {
         if ( patchedNameLen + ossStrlen( name ) + tailLen >= size )
         {
            rc = SDB_INVALIDSIZE ;
            goto error ;
         }
         ossStrncat( patchedName, name, ossStrlen( name ) ) ;
         ossStrncat( patchedName, LIB_END_STR, tailLen ) ;
      }
#else
      if ( 's' != *(ptr + 1) && 'o' != *(ptr + 2) )
      {
         if ( patchedNameLen + ossStrlen( name ) + tailLen >= size )
         {
            rc = SDB_INVALIDSIZE ;
            goto error ;
         }
         ossStrncat( patchedName, name, ossStrlen( name ) ) ;
         ossStrncat( patchedName, LIB_END_STR, tailLen ) ;
      }
#endif
      else
      {
         if ( patchedNameLen + ossStrlen( name ) + tailLen >= size )
         {
            rc = SDB_INVALIDSIZE ;
            goto error ;
         }
         ossStrncat( patchedName, name, strlen( name ) ) ;
      }
   }
   else
   {
      if ( patchedNameLen + ossStrlen( name ) + tailLen >= size )
      {
         rc = SDB_INVALIDSIZE ;
         goto error ;
      }
      ossStrncat( patchedName, name, ptr - name ) ;
      ossStrncat( patchedName, LIB_END_STR, tailLen ) ;
   }

done:
   return rc ;
error:
   goto done ;
}
Ejemplo n.º 7
0
static INT32 _ossEnumFiles( const string &dirPath,
                            map<string, string> &mapFiles,
                            const CHAR *filter, UINT32 filterLen,
                            OSS_MATCH_TYPE type, UINT32 deep )
{
   INT32 rc = SDB_OK ;
   const CHAR *pFind = NULL ;

   try
   {
      fs::path dbDir ( dirPath ) ;
      fs::directory_iterator end_iter ;

      if ( 0 == deep )
      {
         goto done ;
      }

      if ( fs::exists ( dbDir ) && fs::is_directory ( dbDir ) )
      {
         for ( fs::directory_iterator dir_iter ( dbDir );
               dir_iter != end_iter; ++dir_iter )
         {
            try
            {
               if ( fs::is_regular_file ( dir_iter->status() ) )
               {
                  const std::string fileName =
                     dir_iter->path().filename().string() ;

                  if ( ( OSS_MATCH_NULL == type ) ||
                       ( OSS_MATCH_LEFT == type &&
                         0 == ossStrncmp( fileName.c_str(), filter,
                                          filterLen ) ) ||
                       ( OSS_MATCH_MID == type &&
                         ossStrstr( fileName.c_str(), filter ) ) ||
                       ( OSS_MATCH_RIGHT == type &&
                         ( pFind = ossStrstr( fileName.c_str(), filter ) ) &&
                         pFind[filterLen] == 0 ) ||
                       ( OSS_MATCH_ALL == type &&
                         0 == ossStrcmp( fileName.c_str(), filter ) )
                     )
                  {
                     mapFiles[ fileName ] = dir_iter->path().string() ;
                  }
               }
               else if ( fs::is_directory( dir_iter->path() ) && deep > 1 )
               {
                  _ossEnumFiles( dir_iter->path().string(), mapFiles,
                                 filter, filterLen, type, deep - 1 ) ;
               }
            }
            catch( std::exception &e )
            {
               PD_LOG( PDWARNING, "File or dir[%s] occur exception: %s",
                       dir_iter->path().string().c_str(),
                       e.what() ) ;
            }
         }
      }
      else
      {
         rc = SDB_INVALIDARG ;
         goto error ;
      }
   }
   catch( std::exception &e )
   {
      PD_LOG( PDERROR, "Occur exception: %s", e.what() ) ;
      rc = SDB_SYS ;
      goto error ;
   }

done:
   return rc ;
error:
   goto done ;
}
Ejemplo n.º 8
0
   INT32 _sptClassMetaInfo::_getFuncDesc( const CHAR *pFileBuff, 
                                          INT32 fileSize, 
                                          string &desc )
   {
      INT32 rc = SDB_OK ;
      stringstream ss ;
      INT32 buffSize = 0 ;
      CHAR *pBuff = NULL ;
      const CHAR *pos = NULL ;
      const CHAR *beg_mark = 
         SPT_LANG_EN == _lang ? SPT_TROFF_NAME_EN : SPT_TROFF_NAME_CN ;
      const CHAR *end_mark = 
         SPT_LANG_EN == _lang ? SPT_TROFF_SYNOPSIS_EN : SPT_TROFF_SYNOPSIS_CN ;

      rc = _getContents( pFileBuff, beg_mark, end_mark, 
                         &pBuff, &buffSize ) ;
      if ( SDB_OK != rc )
      {
         ss << "Failed to contents for extracting synopsis, rc = " 
            << rc << endl ;
         goto error ;
      }
      _replaceCharsWithSpace( pBuff, "\n" ) ;
      _filterMarks( pBuff, _uselessMarks2, 
                    sizeof( _uselessMarks2 ) / sizeof( const CHAR * ) ) ;
      pos = ossStrstr( pBuff, "-" ) ;
      if ( NULL == pos )
      {
         rc = SDB_INVALIDARG ;
         ss << "Failed to get the description of function, rc = " 
            << rc << ERROR_END ;
         goto error ;
      }
      pos++ ;
      while( '\r' != *pos && '\n' != *pos )
      {
         if ( ' ' == *pos )
         {
            pos++ ;
         }
         else
         {
            break ;
         }
      }
      if ( '\r' != *pos && '\n' != *pos )
      {
         desc += string( "- " ) + pos ;
         boost::trim( desc ) ;
      }

   done:
      if ( pBuff )
      {
         SAFE_OSS_FREE( pBuff ) ;
      }
      return rc ;
   error:
      PRINT_ERROR ;
      goto done ;
   }
Ejemplo n.º 9
0
   INT32 utilParseVersion( CHAR * pVersionStr,
                           INT32 &version,
                           INT32 &subVersion,
                           INT32 &release,
                           string &buildInfo )
   {
      INT32 rc = SDB_OK ;
      const CHAR *pDelim = " \r\n" ;
      CHAR *pToken = NULL ;
      CHAR *pLast = NULL ;

      if ( !pVersionStr )
      {
         rc = SDB_INVALIDARG ;
         goto error ;
      }

      pToken = ossStrtok( pVersionStr, pDelim, &pLast ) ;
      if ( !pToken )
      {
         rc = SDB_INVALIDARG ;
         goto error ;
      }
      else
      {
         CHAR *pTokenTmp = NULL ;
         CHAR *pLastTmp = NULL ;
         CHAR *pVerPtr = ossStrstr( pToken, ":" ) ;
         if ( !pVerPtr )
         {
            rc = SDB_INVALIDARG ;
            goto error ;
         }
         pTokenTmp = ossStrtok( pVerPtr, " .", &pLastTmp ) ;
         if ( !pTokenTmp )
         {
            rc = SDB_INVALIDARG ;
            goto error ;
         }
         version = ossAtoi( pTokenTmp ) ;

         pTokenTmp = ossStrtok( NULL, " .", &pLastTmp ) ;
         if ( !pTokenTmp )
         {
            rc = SDB_INVALIDARG ;
            goto error ;
         }
         subVersion = ossAtoi( pTokenTmp ) ;
      }

      pToken = ossStrtok( NULL, pDelim, &pLast ) ;
      if ( !pToken )
      {
         rc = SDB_INVALIDARG ;
         goto error ;
      }
      else
      {
         string releaseStr ;
         CHAR *pReleasePtr = ossStrstr( pToken, ":" ) ;
         if ( !pReleasePtr )
         {
            rc = SDB_INVALIDARG ;
            goto error ;
         }
         releaseStr = pReleasePtr ;
         utilStrLtrim( releaseStr ) ;
         release = ossAtoi( releaseStr.c_str() ) ;
      }

      pToken = ossStrtok( NULL, pDelim, &pLast ) ;
      if ( !pToken )
      {
         rc = SDB_INVALIDARG ;
         goto error ;
      }
      buildInfo = pToken ;

   done:
      return rc ;
   error:
      goto done ;
   }