void WriteStrings(Strings strings, FILE *f) {
	// Make sure data is packed.
	LFK_Defragment(strings.table);
	// Save number of rows.
	int rows = strings.table->len;
	fwrite(&rows, sizeof(rows), 1, f);

	int i;
	for (i = 0; i < strings.table->len; i++) {
		char *text = ((char**)strings.table->data[0])[i];
		StringToFile(f, text);
	}
}
Example #2
0
HRESULT XZPManager::XZPOpen(string opath, string filename, string xmlname)
{
	m_basePath = SETTINGS::getInstance().getDataPath();
	DebugMsg("DEBUG", "%s", m_basePath.c_str());
	string loadfilename = "file://" + opath + filename;
	loadfilename = str_replaceall(loadfilename, "\\", "/");
	Path = strtowchar(loadfilename);
	DebugMsg("XZPManager", "PATH: %s, loading package", wstrtostr(Path).c_str());
	HRESULT hr = XuiResourceOpenPackage(Path,&phPackage,false);
	if (hr != S_OK)
	{
		DebugMsg("XZPManager", "Error HRESULT: %08x", hr);
		return hr;
	} else {
		szLocator = strtowchar(loadfilename + "#" + xmlname);

		byte * buf;
		UINT size;
		hr = XuiResourceLoadAllNoLoc(szLocator, &buf, &size);
		if (hr != S_OK)
		{
			DebugMsg("XZPManager", "HRESULT : %08x, Loading resource");
			XuiResourceReleasePackage(phPackage);
			return hr;
		} else {
			DebugMsg("XZPManager", "Resource is in memory Size is %d", size);
			string out = (char*)buf;
			string outpath = sprintfaA("%sSkins\\%s\\%s", m_basePath.c_str(), filename.c_str(), xmlname.c_str());
			DebugMsg("XZPManager", "Saving file to %s", outpath.c_str());
			StringToFile(out, outpath);
			XuiFree((void*)buf);
		}
	}

	XuiResourceReleasePackage(phPackage);
	return S_OK;
}
void ContentKaiVector::Save(const string strPath)
{
	if (m_bDirty)
	{
		// Remove old file	
		_unlink(strPath.c_str());
		EnterCriticalSection(&m_critical);

		string strXMLText;
		strXMLText = sprintfaA("<version>%d</version>\n", m_nVersion);
		strXMLText.append("<titles>\n");
		for (TITLEVECTORMAP::iterator it = m_mapTitles.begin(); it != m_mapTitles.end(); it++)
		{			
			string strTitleId, strVector;
			DWORD dwTitleId = it->first;
			strTitleId = sprintfaA("0x%X", dwTitleId);
			strVector = it->second;	
			
			strXMLText.append("\t<title>\n");
			strXMLText.append("\t\t<id>");
			strXMLText.append(strTitleId);
			strXMLText.append("</id>\n");
			strXMLText.append("\t\t<vector>");
			strXMLText.append(strVector);
			strXMLText.append("</vector>\n");
			strXMLText.append("\t</title>\n");
		}

		strXMLText.append("</titles>");
		LeaveCriticalSection(&m_critical);

		StringToFile(strXMLText, strPath);
		DebugMsg("ContentKaiVector", "File: %s saved completed.", strPath.c_str());
		m_bDirty = false;
	  }
}