// nee BOOL LoadSysEncSettings (void) BOOL TryDetectSystemEncryptionStatus (void) { DWORD size = 0; char *sysEncCfgFileBuf = NULL; char *xml = NULL; char *configPath = NULL; char paramName[100], paramVal[MAX_PATH]; // Defaults int newSystemEncryptionStatus = SYSENC_STATUS_NONE; WipeAlgorithmId newnWipeMode = TC_WIPE_NONE; /* TODO: In case portable TrueCrypt was used to set up system encryption and has not finished we won't be able to detect the state by config files since we don't know the TC's directory. Actually it seems TC itself when used from another folder will not be able to do that. Will have to check whether boot-related facilities can tell more */ configPath = GetConfigPath (TC_APPD_FILENAME_SYSTEM_ENCRYPTION); if (!FileExists (configPath)) { SystemEncryptionStatus = newSystemEncryptionStatus; nWipeMode = newnWipeMode; } else { sysEncCfgFileBuf = LoadFile (configPath, &size); xml = sysEncCfgFileBuf; } if (xml == NULL) { return FALSE; } while (xml = XmlFindElement (xml, "config")) { XmlGetAttributeText (xml, "key", paramName, sizeof (paramName)); XmlGetNodeText (xml, paramVal, sizeof (paramVal)); if (strcmp (paramName, "SystemEncryptionStatus") == 0) { newSystemEncryptionStatus = atoi (paramVal); } else if (strcmp (paramName, "WipeMode") == 0) { newnWipeMode = (WipeAlgorithmId) atoi (paramVal); } xml++; } SystemEncryptionStatus = newSystemEncryptionStatus; nWipeMode = newnWipeMode; free (sysEncCfgFileBuf); return TRUE; }
// // Returns text content of the specified node of an XML document. // LPWSTR XmlGetNodeTextOfNode( IXMLDOMNode *pXmlNode, // root entry object LPWSTR ElementName // name of the element ) { LPWSTR pText = NULL; IXMLDOMNode* pChild; if (CoInvoke(pXmlNode, selectSingleNode, ElementName, &pChild) == S_OK) { pText = XmlGetNodeText(pChild); CoInvoke(pChild, Release); } return(pText); }
// // Returns text content of the specified root entry of an XML document. // LPWSTR XmlGetElementText( PVOID XmlRoot, // root entry object LPWSTR ElementName // name of the element ) { LPWSTR pText = NULL; IXMLDOMNode* pChild; IXMLDOMElement* pRoot = (IXMLDOMElement*)XmlRoot; if (CoInvoke(pRoot, selectSingleNode, ElementName, &pChild) == S_OK) { pText = XmlGetNodeText(pChild); CoInvoke(pChild, Release); } return(pText); }
void LoadCombo (HWND hComboBox) { DWORD size; char *history = LoadFile (GetConfigPath (TC_APPD_FILENAME_HISTORY), &size); char *xml = history; char volume[MAX_PATH]; if (xml == NULL) return; while (xml = XmlFindElement (xml, "volume")) { XmlGetNodeText (xml, volume, sizeof (volume)); AddComboItem (hComboBox, volume, TRUE); xml++; } SendMessage (hComboBox, CB_SETCURSEL, 0, 0); free (history); }