Initial
This commit is contained in:
184
mdiwin/PROFILE.CPP
Normal file
184
mdiwin/PROFILE.CPP
Normal file
@@ -0,0 +1,184 @@
|
||||
#include <stdlib.h>
|
||||
#include <mdiwin/profile.hpp>
|
||||
#include <mdiwin/main.hpp>
|
||||
|
||||
Profile::Profile(void)
|
||||
: mIniFileName(String(STRING_INIFILENAME,Main::processInstance())),
|
||||
mStringUnset(STRING_UNSET,Main::processInstance())
|
||||
{
|
||||
}
|
||||
|
||||
Profile::Profile(String &iniFileName)
|
||||
: mIniFileName(iniFileName),
|
||||
mStringUnset(STRING_UNSET,Main::processInstance())
|
||||
{
|
||||
}
|
||||
|
||||
Profile::~Profile()
|
||||
{
|
||||
}
|
||||
|
||||
WORD Profile::verifyInitializationFile(void)const
|
||||
{
|
||||
HFILE hFile;
|
||||
OFSTRUCT pof;
|
||||
String iniPathFileName;
|
||||
|
||||
iniPathFileName.reserve(String::MaxString);
|
||||
if(!::GetWindowsDirectory(iniPathFileName,String::MaxString-1))return FALSE;
|
||||
iniPathFileName+="\\";
|
||||
iniPathFileName+=mIniFileName;
|
||||
if(-1==(hFile=::OpenFile(iniPathFileName,&pof,OF_READ|OF_EXIST)))return FALSE;
|
||||
::_lclose(hFile);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
WORD Profile::verifyDirectory(String &pathDirectoryName)
|
||||
{
|
||||
/* String currentWorkDir;
|
||||
int resultCode;
|
||||
|
||||
::getcwd(currentWorkDir,String::MaxString);
|
||||
resultCode=::chdir(pathDirectoryName);
|
||||
::chdir(currentWorkDir);
|
||||
return !resultCode; */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
WORD Profile::readProfileString(String §ionString,String &itemString,String &returnString)
|
||||
{
|
||||
String currentDriveString;
|
||||
|
||||
returnString.reserve(String::MaxString);
|
||||
::GetPrivateProfileString((LPSTR)sectionString,(LPSTR)itemString,(LPSTR)mStringUnset,
|
||||
(LPSTR)returnString,String::MaxString,(LPSTR)mIniFileName);
|
||||
if(!(returnString==mStringUnset))
|
||||
{
|
||||
expandEmbeddedMacro(returnString);
|
||||
return TRUE;
|
||||
}
|
||||
drivePathName(currentDriveString);
|
||||
currentDriveString+=mIniFileName;
|
||||
::GetPrivateProfileString((LPSTR)sectionString,(LPSTR)itemString,(LPSTR)mStringUnset,
|
||||
(LPSTR)returnString,String::MaxString,(LPSTR)currentDriveString);
|
||||
if(!(returnString==mStringUnset))
|
||||
{
|
||||
expandEmbeddedMacro(returnString);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
WORD Profile::readProfileBlock(String §ionString,Block<String> §ionBlock)
|
||||
{
|
||||
String tempString;
|
||||
String itemString;
|
||||
Block<String> tempBlock;
|
||||
size_t sectionItems(0);
|
||||
char *ptr;
|
||||
|
||||
sectionBlock.remove();
|
||||
tempString.reserve(String::MaxString);
|
||||
itemString.reserve(String::MaxString);
|
||||
if(!readProfileString(sectionString,String((char*)0),tempString))return FALSE;
|
||||
ptr=(LPSTR)tempString;
|
||||
while(TRUE)
|
||||
{
|
||||
if(!ptr||!*ptr)break;
|
||||
tempBlock.insert(&String(ptr));
|
||||
ptr+=(::strlen(ptr)+1);
|
||||
}
|
||||
if(0==(sectionItems=(int)tempBlock.size()))return 0;
|
||||
for(int i=0;i<sectionItems;i++)
|
||||
{
|
||||
readProfileString(sectionString,tempBlock[i],itemString);
|
||||
tempString=tempBlock[i];
|
||||
tempString+="=";
|
||||
tempString+=itemString;
|
||||
expandEmbeddedMacro(tempString);
|
||||
sectionBlock.insert(&tempString);
|
||||
}
|
||||
return (int)sectionBlock.size();
|
||||
}
|
||||
|
||||
WORD Profile::writeProfileString(String §ionString,String &itemString,String &textString)
|
||||
{
|
||||
String currentDriveString;
|
||||
|
||||
if(::WritePrivateProfileString((LPSTR)sectionString,(LPSTR)itemString,(LPSTR)textString,(LPSTR)mIniFileName))return TRUE;
|
||||
drivePathName(currentDriveString);
|
||||
currentDriveString+=mIniFileName;
|
||||
return ::WritePrivateProfileString((LPSTR)sectionString,(LPSTR)itemString,(LPSTR)textString,(LPSTR)currentDriveString);
|
||||
}
|
||||
|
||||
WORD Profile::writeProfileBlock(String §ionString,Block<String> &itemStrings,Block<String> &textStrings)
|
||||
{
|
||||
WORD blockSize((int)itemStrings.size());
|
||||
if(textStrings.size()!=blockSize)return FALSE;
|
||||
for(int i=0;i<blockSize;i++)writeProfileString(sectionString,itemStrings[i],textStrings[i]);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Profile::makePathFileName(String &fileNameString)
|
||||
{
|
||||
String tempString(fileNameString);
|
||||
String currentDriveString;
|
||||
|
||||
drivePathName(currentDriveString);
|
||||
currentDriveString+=fileNameString;
|
||||
fileNameString=currentDriveString;
|
||||
}
|
||||
|
||||
WORD Profile::makeFileName(String &pathFileName)
|
||||
{
|
||||
/* String tempString(pathFileName);
|
||||
int extLen;
|
||||
char *ptr;
|
||||
|
||||
ptr=::strchr(tempString,'.');
|
||||
if(!ptr||(extLen=::strlen(ptr))<4)return FALSE;
|
||||
if(extLen>4)*(ptr+4)=0;
|
||||
while(*ptr!='\\'&&*ptr!='/'&&*ptr!=':'&&ptr>=tempString)ptr--;
|
||||
if(::strlen(++ptr)>12)return FALSE;
|
||||
pathFileName=ptr; */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Profile::drivePathName(String ¤tDriveString,int appendDirConst)
|
||||
{
|
||||
/* String tempString;
|
||||
|
||||
tempString.reserve(String::MaxString);
|
||||
currentDriveString.reserve(String::MaxString);
|
||||
::sprintf((LPSTR)currentDriveString,"%c:\\",::getdisk()+'A');
|
||||
::getcurdir(::getdisk()+1,(LPSTR)tempString);
|
||||
currentDriveString+=tempString;
|
||||
if(appendDirConst)currentDriveString+="\\"; */
|
||||
}
|
||||
|
||||
void Profile::expandEmbeddedMacro(String &someString)
|
||||
{
|
||||
String macroSyncChar("$(");
|
||||
String macroEndChar(")");
|
||||
String macroString;
|
||||
String tempString(someString);
|
||||
String resultString;
|
||||
char *ptr;
|
||||
char *envPtr;
|
||||
char tempChar;
|
||||
|
||||
ptr=::strstr(tempString,macroSyncChar);
|
||||
if(!ptr)return;
|
||||
tempChar=*ptr;
|
||||
*ptr=0;
|
||||
resultString=tempString;
|
||||
*ptr=tempChar;
|
||||
ptr+=2;
|
||||
ptr=::strtok(ptr,macroEndChar);
|
||||
if(!ptr)return;
|
||||
if(0==(envPtr=::getenv(ptr)))resultString+=mStringUnset;
|
||||
else resultString+=envPtr;
|
||||
ptr=::strtok(0,"\0");
|
||||
if(ptr)resultString+=ptr;
|
||||
someString=resultString;
|
||||
}
|
||||
Reference in New Issue
Block a user