FILE *FileOpen(const string FileName, const string Mode) { FILE *FilePtr; if (stricmp(Mode, "w") == 0 && (FilePtr = fopen(FileName, "r")) != NULL) { /* Writing to an existing file: back it up. */ FileBackup(FileName, FilePtr); } if ( (FilePtr = fopen(FileName, Mode)) == NULL) Error("File %s cannot be opened.\n", FileName); return FilePtr; }
BOOL CFileBase::GetHandle(const SYSTEMTIME &Time, FILE** Handle) { USING_TIME_INFO; FileBackup(Time); m_sLastTime = Time; if (NULL != m_pFileHandle) { *Handle = m_pFileHandle; return TRUE; } CString strFileName; if (!GetFileName(Time, strFileName)) return FALSE; SetFileName(strFileName); m_pFileHandle = _wfsopen(strFileName, _T("ab"), _SH_DENYNO); if (NULL == m_pFileHandle) { CString strError; strError.Format(_T("Create file[%s] error:%s!!!"), strFileName, AtlGetErrorDescription(GetLastError())); LOGGER_WRITE(strError.GetBuffer()); LogEvent(strError); return FALSE; } fseek(m_pFileHandle, 0, SEEK_END); m_iFileSize = ftell(m_pFileHandle); *Handle = m_pFileHandle; return TRUE; }