#include #include #include 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 §ionBlock) { String tempString; String itemString; Block 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 &itemStrings,Block &textStrings) { WORD blockSize((int)itemStrings.size()); if(textStrings.size()!=blockSize)return FALSE; for(int i=0;i4)*(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; }