STDMETHODIMP HandleQTMocFile(LPCTSTR szSrcFile, KHandlerParam* pParam) { union { TCHAR szSrcFileAbs[_MAX_PATH]; TCHAR szObjFile[_MAX_PATH]; }; try // check depency { if ( MergePath(szSrcFileAbs, pParam->szProjPath, szSrcFile) == S_OK && IsQTMocFile(szSrcFileAbs) ) { TCHAR fname[_MAX_FNAME]; SplitPath(szSrcFile, NULL, NULL, fname, NULL); _tcsecpy( _tcsecpy( _tcsecpy(szObjFile, _T("$(ObjectDir)/")), fname), _T(".moc.o") ); _ftprintf(pParam->fpDest, g_szComileMocFmt, szObjFile, szSrcFile); AddString(pParam->pObjList, szObjFile); } } catch(...) { ASSERT(FALSE); } return S_OK; }
//======================================================== // Name : _SetString // Desc : put string of (psz~end) on ps string // Param : trim - will be trim? // Return : //-------------------------------------------------------- // Coder Date Desc // bro 2002-10-29 //======================================================== void _SetString( LPTSTR psz, LPTSTR end, HM::String* ps, bool trim = FALSE, int escape = 0 ) { //trim if( trim ) { while( psz && psz < end && _istspace(*psz) ) psz++; while( (end-1) && psz < (end-1) && _istspace(*(end-1)) ) end--; } int len = end - psz; if( len <= 0 ) return; if( escape ) { len = _tcselen( escape, psz, end ); LPTSTR pss = ps->GetBufferSetLength( len ); _tcsecpy( pss, escape, psz, end ); ps->ReleaseBuffer(); } else { //varför öka på strängens längd med ett här?! LPTSTR pss = ps->GetBufferSetLength( (len + 1) * sizeof(TCHAR)) ; memcpy( pss, psz, len * sizeof(TCHAR) ); ps->ReleaseBuffer(); } }
// 功能:按照以下规则生成默认文件名: // 1) 如果 szPath = '/' 或者 nil, 则 失败。 // 2) 如果 szPath = '~/workspace/Tools/MakeGen', szExt = '.prj', 则 // szDefaultFile = ~/workspace/Tools/MakeGen/MakeGen.prj // szPath = 'tcc', 则 // szDefaultFile = tcc/tcc.prj STDMETHODIMP GenDefaultFile(LPTSTR szDestFile, LPCTSTR szPath, LPCTSTR szExt) { HRESULT hr; LPTSTR psz; TCHAR szPathName[_MAX_PATH]; hr = GetPathName(szPathName, szPath); if (hr != S_OK) return hr; psz = _tcsecpy(szDestFile, szPath); if (psz[-1] != '/' && psz[-1] != '\\') { *psz++ = '/'; } _tcsecpy( _tcsecpy(psz, szPathName), szExt ); return S_OK; }
STDMETHODIMP_(BOOL) IsFileExist2(LPTSTR szFile) { LPTSTR p = _tcsrchr(szFile, '\0'); LPTSTR p2 = _tcsecpy(p, PLATEXT); _tcscpy(p2, BITSEXT); if (IsFileExist(szFile)) return TRUE; *p2 = '\0'; if (IsFileExist(szFile)) return TRUE; *p = '\0'; return IsFileExist(szFile); }