From f04d64869f3b1de54fb343f28f955584780001b8 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 26 Nov 2011 15:41:10 +0000 Subject: Project folders rename part 3 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- Dbx_mmap_SA/Dbtool/initialchecks.cpp | 98 ++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 Dbx_mmap_SA/Dbtool/initialchecks.cpp (limited to 'Dbx_mmap_SA/Dbtool/initialchecks.cpp') diff --git a/Dbx_mmap_SA/Dbtool/initialchecks.cpp b/Dbx_mmap_SA/Dbtool/initialchecks.cpp new file mode 100644 index 0000000..a2f621d --- /dev/null +++ b/Dbx_mmap_SA/Dbtool/initialchecks.cpp @@ -0,0 +1,98 @@ +/* +Miranda Database Tool +Copyright (C) 2001-2005 Richard Hughes + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +#include "dbtool.h" + +BOOL bEncrypted; +extern DWORD sourceFileSize,spaceUsed; +int CheckPassword(WORD version, WORD cryptorUID, char * szDBName); +void InitSecurity(); + +int WorkInitialChecks(int firstTime) +{ + DWORD bytesRead; + + sourceFileSize=GetFileSize(opts.hFile,NULL); + if(sourceFileSize==0) { + AddToStatus(STATUS_WARNING,TranslateT("Database is newly created and has no data to process")); + AddToStatus(STATUS_SUCCESS,TranslateT("Processing completed successfully")); + return ERROR_INVALID_DATA; + } + ReadFile(opts.hFile,&dbhdr,sizeof(dbhdr),&bytesRead,NULL); + if(bytesRead")); + opts.hOutFile=INVALID_HANDLE_VALUE; + } + else { + _tcscpy(opts.outputFilename,opts.filename); + *_tcsrchr(opts.outputFilename,'.')=0; + _tcscat(opts.outputFilename,TranslateT(" (Output).dat")); + opts.hOutFile = CreateFile(opts.outputFilename,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_FLAG_SEQUENTIAL_SCAN,NULL); + if ( opts.hOutFile == INVALID_HANDLE_VALUE ) { + AddToStatus(STATUS_FATAL,TranslateT("Can't create output file (%u)"),GetLastError()); + return ERROR_ACCESS_DENIED; + } + } + + opts.hMap = CreateFileMapping(opts.hFile, NULL, opts.bAggressive?PAGE_WRITECOPY:PAGE_READONLY, 0, 0, NULL); + + if (opts.hMap) + opts.pFile = (BYTE*)MapViewOfFile(opts.hMap, opts.bAggressive?FILE_MAP_COPY:FILE_MAP_READ, 0, 0 ,0); + else { + AddToStatus(STATUS_FATAL,TranslateT("Can't create file mapping (%u)"),GetLastError()); + return ERROR_ACCESS_DENIED; + } + + if (!opts.pFile) { + AddToStatus(STATUS_FATAL,TranslateT("Can't create map view of file (%u)"),GetLastError()); + return ERROR_ACCESS_DENIED; + } + if(ReadSegment(0,&dbhdr,sizeof(dbhdr))!=ERROR_SUCCESS) return ERROR_READ_FAULT; + if(WriteSegment(0,&dbhdr,sizeof(dbhdr))==WS_ERROR) return ERROR_HANDLE_DISK_FULL; + spaceUsed=dbhdr.ofsFileEnd-dbhdr.slackSpace; + dbhdr.ofsFileEnd=sizeof(dbhdr); + return ERROR_NO_MORE_ITEMS; +} -- cgit v1.2.3