int main(int argc, char *argv[]) { if (argc > 1) { if ( 0 == strcmp (argv[1] , "-g") && argc > 2 ) { GenerateList(argv[2]); } else if (0 == strcmp (argv[1] , "-c")) { if (argc < 5) { std::cerr << "Too few parameters for copy mode" << std::endl << std::endl; PrintHelp(); return 1; } std::string strFileList (argv[2]); std::string strSrcPath (argv[3]); std::string strDstPath (argv[4]); CopyList(strFileList, strSrcPath, strDstPath); } else if (0 == strcmp (argv[1] , "-e")) { if (argc < 4) { std::cerr << "Too few parameters for exclude mode" << std::endl << std::endl; PrintHelp(); return 1; } std::string strBaseList (argv[2]); std::string strDiffList (argv[3]); ExcludeList(strBaseList, strDiffList); } else { PrintHelp(); } } else { PrintHelp(); } return 0; }
// 初始化更新列表 BOOL CUpdaterApp::_InitFileList() { BOOL bReturn(FALSE); CString strFileList(m_szServer); strFileList += _T("/Filelist.txt"); CInternetSession sess; sess.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 5000); sess.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 1000); sess.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 5000); sess.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT, 1000); sess.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 5000); sess.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 1); try { CHttpFile* pHttpFile = (CHttpFile*)sess.OpenURL(strFileList, 1, INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_TRANSFER_ASCII, NULL, 0); if (pHttpFile) { DWORD dwErrCode(0); pHttpFile->QueryInfo(HTTP_QUERY_STATUS_CODE, dwErrCode); if (dwErrCode >= 200 && dwErrCode < 300) { CStringA strLineA; while (pHttpFile->ReadString((LPTSTR)strLineA.GetBuffer(512), 511)) { strLineA.ReleaseBuffer(); // MFC-bug CString strLine(strLineA); strLine.TrimLeft(); if (strLine.GetLength() > 0 && strLine[0] != _T('\\')) { continue; } std::vector<CString> vecStrs = Split(strLine, _T("^^^^^^")); if (vecStrs.size() >= 2) { LPUPDATEITEM pUpdateItem = new UPDATEITEM; ZeroMemory(pUpdateItem, sizeof(*pUpdateItem)); lstrcpyn(pUpdateItem->szFileName, vecStrs[0], MAX_PATH); lstrcpyn(pUpdateItem->szServerMD5, vecStrs[1], 33); m_arrUpdate.Add(pUpdateItem); } } pHttpFile->Close(); sess.Close(); bReturn = TRUE; } else { LOG(_T("网站访问错误码:%d"), dwErrCode); } } } catch (...) { LOG(_T("下载列表异常!")); } return bReturn; }