home *** CD-ROM | disk | FTP | other *** search
- // IniFile.cpp: implementation of the CIniFile class.
- //
- /*
- Copyright 2001 Anish Mistry. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY ANISH MISTRY ``AS IS'' AND ANY EXPRESS OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS
- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- The views and conclusions contained in the software and documentation are those
- of the authors and should not be interpreted as representing official policies,
- either expressed or implied, of Anish Mistry or AM Productions.
-
- * Variation of the FreeBSD License. http://www.freebsd.org/copyright/freebsd-license.html
- */
- //////////////////////////////////////////////////////////////////////
-
- #include "stdafx.h"
- #include "IniFile.h"
-
- //////////////////////////////////////////////////////////////////////
- // Construction/Destruction
- //////////////////////////////////////////////////////////////////////
-
- CIniFile::CIniFile()
- {
- m_pFilePath = NULL;
- }
-
- CIniFile::~CIniFile()
- {// begin ~CIniFile
- if(m_pFilePath)
- {// begin free previous file path
- HeapFree(GetProcessHeap(),NULL,m_pFilePath);
- }// end free previous file path
- }// end ~CIniFile
-
- bool CIniFile::WriteKey(const char *pSection, const char *pKey, const char *pData)
- {// begin WriteKey
- if(!m_pFilePath)
- return false;
- return (bool)WritePrivateProfileString(pSection,pKey,pData,m_pFilePath);
- }// end WriteKey
-
- int CIniFile::WriteKey(const char *pSection, const char *pKey, int nData)
- {// begin WriteKey
- if(!m_pFilePath)
- return false;
- char pData[12] = {NULL};
- wsprintf(pData,"%i",nData);
- return (bool)WritePrivateProfileString(pSection,pKey,pData,m_pFilePath);
- }// end WriteKey
-
- void CIniFile::SetFile(const char *pFileName)
- {// begin SetFile
- HANDLE hProcessHeap = GetProcessHeap();
- if(m_pFilePath)
- {// begin free previous file path
- HeapFree(hProcessHeap,NULL,m_pFilePath);
- }// end free previous file path
- // get the current directory to store
- int nAllocAmount = 2; // initilize to 2 so that the NULL terminatior
- // and '\' at the end of the CurrentDirectory are included
- char pDirectory[MAX_PATH_LENGTH] = {NULL};
- GetCurrentDirectory(MAX_PATH_LENGTH-1,pDirectory);
- // calcluate the amount of memory to allocate
- nAllocAmount += lstrlen(pDirectory)+lstrlen(pFileName);
- // allocate the required amount of memory and assign it to m_pFileName
- m_pFilePath = (char *)HeapAlloc(hProcessHeap,HEAP_ZERO_MEMORY,nAllocAmount);
- // copy the path into the new buffer
- lstrcpy(m_pFilePath,pDirectory);
- lstrcat(m_pFilePath,"\\");
- lstrcat(m_pFilePath,pFileName);
- }// end SetFile
-
- unsigned long int CIniFile::ReadKey(const char *pSection, const char *pKey, const char *pDefault,char *pOutputBuffer, unsigned long nOutputBufferLength)
- {// begin ReadKey
- if(!m_pFilePath)
- return false;
- return GetPrivateProfileString(pSection,pKey,pDefault,pOutputBuffer,nOutputBufferLength,m_pFilePath);
- }// end ReadKey
-
- int CIniFile::ReadKey(const char *pSection, const char *pKey, int nDefault)
- {// begin ReadKey
- if(!m_pFilePath)
- return false;
- return (long int)GetPrivateProfileInt(pSection,pKey,nDefault,m_pFilePath);
- }// end ReadKey
-
- const char *CIniFile::GetFilePath()
- {// begin GetFilePath
- return m_pFilePath;
- }// end GetFilePath
-
-