int command(
	char *nBI, 
	char *command, 
	char *message,
	int size)
{
	mxml_node_t *xDoc;
	mxml_node_t *messageNode;
	mxml_node_t *innerNode[2];

	xDoc = mxmlNewXML("1.0");
	messageNode = mxmlNewElement(xDoc, "message");

	innerNode[0] = mxmlNewElement(messageNode, "type");
	mxmlNewText(innerNode[0], 0, "Command");

	innerNode[1] = mxmlNewElement(messageNode, "Command");
	mxmlNewText(innerNode[1], 0, command);

	mxmlSaveString (xDoc, message, size, MXML_NO_CALLBACK);

	mxmlDelete(xDoc);

	return 0;
}
int logInMessage(
	char *nBI, 
	char *name, 
	char *hostName, 
	char *message,
	int size)
{
	mxml_node_t *xDoc;
	mxml_node_t *messageNode;
	mxml_node_t *innerNode[4];

	xDoc = mxmlNewXML("1.0");
	messageNode = mxmlNewElement(xDoc, "message");

	innerNode[0] = mxmlNewElement(messageNode, "type");
	mxmlNewText(innerNode[0], 0, "Login");

	innerNode[1] = mxmlNewElement(messageNode, "nBI");
	mxmlNewText(innerNode[1], 0, nBi);

	innerNode[2] = mxmlNewElement(messageNode, "name");
	mxmlNewText(innerNode[2], 0, name);

	innerNode[3] = mxmlNewElement(messageNode, "hostName");
	mxmlNewText(innerNode[3], 0, hostName);

	mxmlSaveString (xDoc, message, size, MXML_NO_CALLBACK);

	mxmlDelete(xDoc);

	return 0;
}
Exemple #3
0
/**
 * Extracts the device XML description given its internal structure
 *
 * @param device_to_extract The Device that we want to extract
 *
 * @return The XML description of the device or NULL if failed
 */
  char *
extract_device_xml(Device *device_to_extract)
{
  if(device_is_in_xml_file (device_to_extract) == HPD_NO)
    return NULL;

  mxml_node_t *xml;
  xml = mxmlNewXML("1.0");

  mxml_node_t *new_device;

  new_device = mxmlNewElement(xml, "device");
  if(device_to_extract->description != NULL) mxmlElementSetAttr(new_device, "desc", device_to_extract->description);
  if(device_to_extract->ID != NULL) mxmlElementSetAttr(new_device, "id", device_to_extract->ID);
  if(device_to_extract->vendorID != NULL) mxmlElementSetAttr(new_device, "vendorID", device_to_extract->vendorID);
  if(device_to_extract->productID != NULL) mxmlElementSetAttr(new_device, "productID", device_to_extract->productID);
  if(device_to_extract->version != NULL) mxmlElementSetAttr(new_device, "version", device_to_extract->version);
  if(device_to_extract->IP != NULL) mxmlElementSetAttr(new_device, "ip", device_to_extract->IP);
  if(device_to_extract->port != NULL) mxmlElementSetAttr(new_device, "port", device_to_extract->port);
  if(device_to_extract->location != NULL) mxmlElementSetAttr(new_device, "location", device_to_extract->location);
  if(device_to_extract->type != NULL) mxmlElementSetAttr(new_device, "type", device_to_extract->type);

  char* return_string = mxmlSaveAllocString(xml, MXML_NO_CALLBACK);

  mxmlDelete(xml);

  return return_string;
}
Exemple #4
0
void StreamlineSetup::sendCounters() {
	mxml_node_t *xml;
	mxml_node_t *counters;

	xml = mxmlNewXML("1.0");
	counters = mxmlNewElement(xml, "counters");
	int count = 0;
	for (Driver *driver = Driver::getHead(); driver != NULL; driver = driver->getNext()) {
		count += driver->writeCounters(counters);
	}

	mxml_node_t *setup = mxmlNewElement(counters, "setup_warnings");
	mxmlNewText(setup, 0, logg.getSetup());

	if (count == 0) {
		logg.logError("No counters found, this could be because /dev/gator/events can not be read or because perf is not working correctly");
		handleException();
	}

	char* string = mxmlSaveAllocString(xml, mxmlWhitespaceCB);
	sendString(string, RESPONSE_XML);

	free(string);
	mxmlDelete(xml);
}
mxml_node_t* CapturedXML::getTree(bool includeTime) {
	mxml_node_t *xml;
	mxml_node_t *captured;
	mxml_node_t *target;
	int x;

	xml = mxmlNewXML("1.0");

	captured = mxmlNewElement(xml, "captured");
	mxmlElementSetAttr(captured, "version", "1");
	if (gSessionData->perf.isSetup()) {
		mxmlElementSetAttr(captured, "type", "Perf");
	}
	mxmlElementSetAttrf(captured, "protocol", "%d", PROTOCOL_VERSION);
	if (includeTime) { // Send the following only after the capture is complete
		if (time(NULL) > 1267000000) { // If the time is reasonable (after Feb 23, 2010)
			mxmlElementSetAttrf(captured, "created", "%lu", time(NULL)); // Valid until the year 2038
		}
	}

	target = mxmlNewElement(captured, "target");
	mxmlElementSetAttr(target, "name", gSessionData->mCoreName);
	mxmlElementSetAttrf(target, "sample_rate", "%d", gSessionData->mSampleRate);
	mxmlElementSetAttrf(target, "cores", "%d", gSessionData->mCores);
	mxmlElementSetAttrf(target, "cpuid", "0x%x", gSessionData->mMaxCpuId);

	if (!gSessionData->mOneShot && (gSessionData->mSampleRate > 0)) {
		mxmlElementSetAttr(target, "supports_live", "yes");
	}

	if (gSessionData->mLocalCapture) {
		mxmlElementSetAttr(target, "local_capture", "yes");
	}

	mxml_node_t *counters = NULL;
	for (x = 0; x < MAX_PERFORMANCE_COUNTERS; x++) {
		const Counter & counter = gSessionData->mCounters[x];
		if (counter.isEnabled()) {
			if (counters == NULL) {
				counters = mxmlNewElement(captured, "counters");
			}
			mxml_node_t *const node = mxmlNewElement(counters, "counter");
			mxmlElementSetAttrf(node, "key", "0x%x", counter.getKey());
			mxmlElementSetAttr(node, "type", counter.getType());
			if (counter.getEvent() != -1) {
				mxmlElementSetAttrf(node, "event", "0x%x", counter.getEvent());
			}
			if (counter.getCount() > 0) {
				mxmlElementSetAttrf(node, "count", "%d", counter.getCount());
			}
			if (counter.getCores() > 0) {
				mxmlElementSetAttrf(node, "cores", "%d", counter.getCores());
			}
		}
	}

	return xml;
}
init_to_server_XML::init_to_server_XML(const string& sessionkey, const vector<string>& ports, const string& minproxy, const string& maxproxy, const string& username, const string& password)
{
	mxml_node_t* xml;
	mxml_node_t* data;
	mxml_node_t* node;
	mxml_node_t* updata;
	mxml_node_t* lset;
	mxml_node_t* prange;
	mxml_node_t* login; /*all of these are not necciary, simply cleaner*/

	xml = mxmlNewXML("1.0");
	data = mxmlNewElement(xml,"bcmessage");
		node = mxmlNewElement(data,"vers");
		mxmlNewText(node,0,"1");

		node = mxmlNewElement(data,"type");
		mxmlNewText(node,0,"1");

		node = mxmlNewElement(data,"sessionkey");

		node = mxmlNewElement(data,"sessionnumchunks");
		mxmlNewText(node,0,"0");

		updata = mxmlNewElement(data,"message");
		
			lset = mxmlNewElement(updata,"listenset");
			
				for(unsigned int i = 0; i < ports.size(); i ++)
				{
					node = mxmlNewElement(lset,"port");		
					mxmlNewText(node,0,ports[i].c_str());
				}
			prange = mxmlNewElement(updata,"proxyrange");
				node = mxmlNewElement(prange,"min");
				mxmlNewText(node,0,minproxy.c_str());
				node = mxmlNewElement(prange,"max");
				mxmlNewText(node,0,maxproxy.c_str());

			login = mxmlNewElement(updata,"login");
				node = mxmlNewElement(login,"username");
				mxmlNewText(node,0,username.c_str());
				node = mxmlNewElement(login,"password");
				mxmlNewText(node,0,password.c_str());
				

	char buffer[4096]; /*Should never approach this unless you're being stupid; and at that point, you can seg fault yourself.*/
	mxmlSaveString(xml,buffer,4069,NULL);
	mxmlDelete(xml);
	initmsg = string(buffer);
	#ifdef CASCADE_DEBUG
	cerr << initmsg << endl;;
	ofstream f("init_to_server.xml");
	f << initmsg;
	f.close();
	#endif
}
Exemple #7
0
/**
 * Extracts the service XML description given its internal structure
 *
 * @param _service_to_extract The Service that we want to extract
 *
 * @return The XML description of the service or NULL if failed
 */ 
  char *
extract_service_xml(Service *_service_to_extract)
{
  if(service_is_in_xml_file (_service_to_extract) == HPD_NO)
    return NULL;

  mxml_node_t *xml;
  xml = mxmlNewXML("1.0");

  mxml_node_t *new_service;
  mxml_node_t *new_device;
  mxml_node_t *new_parameter;

  new_service = mxmlNewElement(xml, "service");
  if(_service_to_extract->description != NULL) mxmlElementSetAttr(new_service, "desc", _service_to_extract->description);
  if(_service_to_extract->ID != NULL) mxmlElementSetAttr(new_service, "id", _service_to_extract->ID);
  mxmlElementSetAttr(new_service, "isActuator", _service_to_extract->isActuator ? "1" : "0");
  if(_service_to_extract->value_url != NULL) mxmlElementSetAttr(new_service, "value_url", _service_to_extract->value_url);
  if(_service_to_extract->type != NULL) mxmlElementSetAttr(new_service, "type", _service_to_extract->type);
  if(_service_to_extract->unit != NULL) mxmlElementSetAttr(new_service, "unit", _service_to_extract->unit);

  new_device = mxmlNewElement(new_service, "device");
  if(_service_to_extract->device->description != NULL) mxmlElementSetAttr(new_device, "desc", _service_to_extract->device->description);
  if(_service_to_extract->device->ID != NULL) mxmlElementSetAttr(new_device, "id", _service_to_extract->device->ID);
  if(_service_to_extract->device->vendorID != NULL) mxmlElementSetAttr(new_device, "vendorid", _service_to_extract->device->vendorID);
  if(_service_to_extract->device->productID != NULL) mxmlElementSetAttr(new_device, "productid", _service_to_extract->device->productID);
  if(_service_to_extract->device->version != NULL) mxmlElementSetAttr(new_device, "version", _service_to_extract->device->version);
  if(_service_to_extract->device->IP != NULL) mxmlElementSetAttr(new_device, "ip", _service_to_extract->device->IP);
  if(_service_to_extract->device->port != NULL) mxmlElementSetAttr(new_device, "port", _service_to_extract->device->port);
  if(_service_to_extract->device->location != NULL) mxmlElementSetAttr(new_device, "location", _service_to_extract->device->location);
  if(_service_to_extract->device->type != NULL) mxmlElementSetAttr(new_device, "type", _service_to_extract->device->type);

  Parameter *iterator = _service_to_extract->parameter;
  if(iterator != NULL)
  {
    new_parameter = mxmlNewElement(new_service, "parameter");
    if(iterator->ID != NULL) mxmlElementSetAttr(new_parameter, "id", iterator->ID);
    if(iterator->max != NULL) mxmlElementSetAttr(new_parameter, "max", iterator->max);
    if(iterator->min != NULL) mxmlElementSetAttr(new_parameter, "min", iterator->min);
    if(iterator->scale != NULL) mxmlElementSetAttr(new_parameter, "scale", iterator->scale);
    if(iterator->step != NULL) mxmlElementSetAttr(new_parameter, "step", iterator->step);
    if(iterator->type != NULL) mxmlElementSetAttr(new_parameter, "type", iterator->type);
    if(iterator->unit != NULL) mxmlElementSetAttr(new_parameter, "unit", iterator->unit);
    if(iterator->values != NULL) mxmlElementSetAttr(new_parameter, "values", iterator->values);
  }

  char* return_string = mxmlSaveAllocString(xml, MXML_NO_CALLBACK);

  mxmlDelete(xml);

  return return_string;
}
Exemple #8
0
static bool game_data_init(const char *fname, bool from_update)
{
  static bool initialized = false;
  if(initialized){
    return true;
  }
  if(!decrypt_file(fname, from_update)){
    printf("Error decrypting file!\n");
    return false;
  }
  xml = mxmlNewXML("1.0");
  tree = mxmlLoadString(xml, decoded, MXML_TEXT_CALLBACK);
  return (tree != NULL);
}
Exemple #9
0
const char*  set_keyvalue(const char* xmlstr, const char* catelog_name, const char* key_name, const char* value)
{
	if ((!catelog_name) || (!key_name) || (!value))
	{
		DbgPrint("get_keyvalue input parameter error");
		return (NULL);
	}

	mxml_node_t *xml;

	if (xmlstr == NULL)
	{
		xml = mxmlNewXML("1.0");
	}
	else
	{
		xml = mxmlLoadString(NULL, xmlstr, MXML_TEXT_CALLBACK);
	}

	if (xml == NULL)
	{
		DbgPrint("xml load err: %s", xmlstr);
		return (NULL);
	}

	mxml_node_t *catelog = mxmlFindElement(xml, xml, catelog_name, NULL, NULL, MXML_DESCEND);

	if (catelog == NULL)
	{
		catelog = mxmlNewElement(xml, catelog_name);
	}

	mxml_node_t *node = mxmlFindElement(catelog,catelog,key_name,NULL,NULL,MXML_DESCEND);
	if (node)
	{
		mxmlSetText(node, 0, value);
	}
	else
	{
		node = mxmlNewElement(catelog, key_name);
		mxmlNewText(node, 0, value);
	}

	mxmlSetWrapMargin(2);
	char* system_xmlstr = strdup_tls(mxmlSaveAllocString(xml, MXML_TEXT_CALLBACK));
	mxmlDelete(xml);

	return (system_xmlstr);
}
Exemple #10
0
/**
 * Returns an internal char* of a value under the form of :
 * "<?xml version="1.0" encoding="UTF-8"?><value timestamp = xxxxxx >desired_value</value>"
 *
 * @param value The string of the value desired
 *
 * @return Returns the char* corresponding
 */
  char * 
get_xml_value(char* value)
{
  mxml_node_t *xml;
  mxml_node_t *xml_value;

  xml = mxmlNewXML("1.0");
  xml_value = mxmlNewElement(xml, "value");
  mxmlElementSetAttr(xml_value, "timestamp", timestamp());
  mxmlNewText(xml_value, 0, value);

  char* return_value = mxmlSaveAllocString(xml, MXML_NO_CALLBACK);
  mxmlDelete(xml);

  return return_value;
}
Exemple #11
0
int xmldb_open(void)
{
    FILE * fp;
    mxml_node_t * version;
    fp = fopen(XML_DB, "r");        //打开文件

    if (fp != NULL) {        //文件不存在 创建
        mxml_node_t = mxmlNewXML("1.0");
        if (xml_root == NULL) {
            log_error(LOG_ERROR, "mxmlNewXML");
            return -1;
        }

        version = mxmlNewElement(xml_root, VERSION);
        if (version == NULL) {
            log_error(LOG_ERROR, "mxmlNewElement");
            return -1;
        }

        version = mxmlNewElement(xml_root, "0.00");

        if (version == NULL) {
            log_error(LOG_ERROR, "mxmlNewElement");
            return -1;
        }

    } else if (fp == NULL && errno == EEXIST) { //文件存在 读取
        xml_root = mxmlLoadFile(NULL, fp, MXML_TEXT_CALLBACK); //已子节点载入 全部使用字符串
        if (xml_root == NULL) {
            log_error(LOG_ERROR, "mxmlLoadFile");
            return -1;
        }
        /*
        cmd = mxmlNewElement(xml_root, CMD_NODE);
        if (cmd == NULL) {
            log_error(LOG_ERROR, "mxmlNewElement");
            return -1;
        }
        */
    } else {
        log_error(LOG_ERROR, "xml open");
        return -1;
    }
    return 0;
}
Exemple #12
0
static int
preparePalData (gamePalette pals[], int palCount)
{
	xml = mxmlNewXML("1.0");
	mxmlSetWrapMargin(0); // disable line wrapping

	data = mxmlNewElement(xml, "palette");
	mxmlElementSetAttr(data, "app", APPNAME);
	mxmlElementSetAttr(data, "version", APPVERSION);
	for (int i=0; i<palCount; i++)
		createXMLPalette(&pals[i], false);

	int datasize = mxmlSaveString(xml, (char *)savebuffer, SAVEBUFFERSIZE, XMLSavePalCallback);

	mxmlDelete(xml);

	return datasize;
}
char *build_complete_multipart_upload_xml(aos_pool_t *p, aos_list_t *bc)
{
    char *xml_buff;
    char *complete_part_xml;
    aos_string_t xml_doc;
    mxml_node_t *doc;
    mxml_node_t *root_node;
    oss_complete_part_content_t *content;

    doc = mxmlNewXML("1.0");
    root_node = mxmlNewElement(doc, "CompleteMultipartUpload");
    aos_list_for_each_entry(content, bc, node) {
        mxml_node_t *part_node = mxmlNewElement(root_node, "Part");
        mxml_node_t *part_number_node = mxmlNewElement(part_node, "PartNumber");
        mxmlNewText(part_number_node, 0, content->part_number.data);
        mxml_node_t *etag_node = mxmlNewElement(part_node, "ETag");
        mxmlNewText(etag_node, 0, content->etag.data);
    }
Exemple #14
0
/**
 * Initialization of the services.xml file that will be used
 * throughout the whole process
 *
 * @param name the name of the devicelist
 * @param id the id of the devicelist
 *
 * @return returns HPD_E_SUCCESS if successful
 */
  int 
init_xml_file(char *name, char *id)
{

  create_service_xml_file();

  mxml_node_t *devicelist;   

  service_xml_file->xml_tree = mxmlNewXML("1.0");
  devicelist = mxmlNewElement(service_xml_file->xml_tree, "devicelist");
  mxmlElementSetAttr(devicelist, "name", name);
  mxmlElementSetAttr(devicelist, "id", id);
  mxmlElementSetAttr(devicelist, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
  mxmlElementSetAttr(devicelist, "xsi:noNamespaceSchemaLocation", "http://cs.au.dk/dithus/xml/devicedescription.xsd");

  save_xml_tree();
  return HPD_E_SUCCESS;
}
Exemple #15
0
static int PrintResult (int result) {
    char buffer[8];
    sprintf(buffer, "%d", result);

    mxml_node_t *xml;
    mxml_node_t *data;
    mxml_node_t *node;

    xml = mxmlNewXML("1.0");
    data = mxmlNewElement(xml, "privacymask");
    node = mxmlNewElement(data, "res");
    mxmlElementSetAttr(node, "ul", buffer);
    printf("Content-type: application/xml\n\n");
    mxmlSaveFile(xml, stdout, MXML_NO_CALLBACK);
    mxmlDelete(xml);

    return 0;

}
Exemple #16
0
int save_game(char * path, settings * game_settings) {
	FILE * fp;
	mxml_node_t * tree;
	mxml_node_t * game_node;
	mxml_node_t * board_node;
	cord c;
	char row_name[6] = "row_x";
	char row[9] = { 0 };
	fp = fopen(path, "w");
	if (fp == NULL)
		return FALSE;

	tree = mxmlNewXML("1.0");
	game_node = mxmlNewElement(tree, "game");
	mxmlNewInteger(mxmlNewElement(game_node, "game_mode"), game_settings->mode);
	mxmlNewOpaque(mxmlNewElement(game_node, "user_color"), color_string(game_settings->color));
	mxmlNewOpaque(mxmlNewElement(game_node, "next_turn"), color_string(game_settings->next));

	if (game_settings->minimax_depth == BEST_DIFFICULTY)
		mxmlNewOpaque(mxmlNewElement(game_node, "user_color"), "best");
	else
		mxmlNewInteger(mxmlNewElement(game_node, "difficulty"), game_settings->minimax_depth);

	board_node = mxmlNewElement(game_node, "board");

	for (int y = 8; y > 0; y--) {
		for (int x = 0; x < 8; x++) {
			c.x = x;
			c.y = y - 1;
			row[x] = (board_piece(game_settings->board, c) == EMPTY) ? '_' : board_piece(game_settings->board, c);
		}
		row_name[4] = '0' + y;
		mxmlNewOpaque(mxmlNewElement(board_node, row_name), row);
	}

	mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
	fclose(fp);
	mxmlDelete(tree);

	return TRUE;


}
Exemple #17
0
void StreamlineSetup::sendCounters() {
	mxml_node_t *xml;
	mxml_node_t *counters;

	xml = mxmlNewXML("1.0");
	counters = mxmlNewElement(xml, "counters");
	int count = 0;
	for (Driver *driver = Driver::getHead(); driver != NULL; driver = driver->getNext()) {
		count += driver->writeCounters(counters);
	}

	if (count == 0) {
		logg.logError("No counters found, this could be because /dev/gator/events can not be read or because perf is not working correctly");
		handleException();
	}

	mxml_node_t *setup = mxmlNewElement(counters, "setup_warnings");
	mxmlNewText(setup, 0, logg.getSetup());

	if (gSessionData.mSharedData->mClustersAccurate) {
		for (int cluster = 0; cluster < gSessionData.mSharedData->mClusterCount; ++cluster) {
			mxml_node_t *node = mxmlNewElement(counters, "cluster");
			mxmlElementSetAttrf(node, "id", "%i", cluster);
			mxmlElementSetAttr(node, "name", gSessionData.mSharedData->mClusters[cluster]->getPmncName());
		}
		for (int cpu = 0; cpu < gSessionData.mCores; ++cpu) {
			if (gSessionData.mSharedData->mClusterIds[cpu] >= 0) {
				mxml_node_t *node = mxmlNewElement(counters, "cpu");
				mxmlElementSetAttrf(node, "id", "%i", cpu);
				mxmlElementSetAttrf(node, "cluster", "%i", gSessionData.mSharedData->mClusterIds[cpu]);
			}
		}
	}

	char* string = mxmlSaveAllocString(xml, mxmlWhitespaceCB);
	mxmlDelete(xml);

	sendString(string, RESPONSE_XML);
	free(string);
}
Exemple #18
0
static int preparePrefsData() {
	xml = mxmlNewXML("1.0");
	mxmlSetWrapMargin(0); // disable line wrapping

	data = mxmlNewElement(xml, "file");
	mxmlElementSetAttr(data, "app", APPNAME);
	mxmlElementSetAttr(data, "version", APPVERSION);

	createXMLSection("Menu", "Menu Settings");

	createXMLSetting("ExitAction", "Exit Action", toStr(XMPlayerCfg.exit_action));
	createXMLSetting("language", "Language", toStr(XMPlayerCfg.language));
	createXMLSetting("sort_order", "Sort Order", toStr(XMPlayerCfg.sort_order));

	int datasize = mxmlSaveString(xml, (char *) savebuffer, SAVEBUFFERSIZE, XMLSaveCallback);

	mxmlDelete(xml);
	
	printf("XMPlayerCfg.language : %d\n",XMPlayerCfg.language);

	return datasize;
}
Exemple #19
0
int BCF_Write(bcf_t* bcf, const char* filename)
{
  FILE *fp;
  int i;
  mxml_node_t *baroboData, *addresses, *dongles, *iter;
  if(filename == NULL) {
    filename = bcf->filename;
  }
  fp = fopen(filename, "w");
  if(fp == NULL) {
    fprintf(stderr, "Error opening file %s for writing.\n", filename);
    return -1;
  }
  /* Write everything */
  bcf->root = mxmlNewXML("1.0");
  baroboData = mxmlNewElement(bcf->root, "BaroboData");
  addresses = mxmlNewElement(baroboData, "addresses");
  mxmlElementSetAttrf(
      addresses,
      "num",
      "%d", bcf->num);
  dongles = mxmlNewElement(baroboData, "dongles");
  mxmlElementSetAttrf(
      dongles,
      "num", "%d", bcf->numDongles);
  
  for(i = 0; i < bcf->num; i++) {
    iter = mxmlNewElement(addresses, "child");
    mxmlNewText(iter, 0, bcf->entries[i]);
  }
  for(i = 0; i < bcf->numDongles; i++) {
    iter = mxmlNewElement(dongles, "dongle");
    mxmlNewText(iter, 0, bcf->dongles[i]);
  }
  mxmlSaveFile(bcf->root, fp, MXML_NO_CALLBACK);
  fclose(fp);
  return 0;
}
int challengeResponseMessage(
	char *challResp, 
	char *message,
	int size)
{
	mxml_node_t *xDoc;
	mxml_node_t *messageNode;
	mxml_node_t *innerNode[2];

	xDoc = mxmlNewXML("1.0");
	messageNode = mxmlNewElement(xDoc, "message");

	innerNode[0] = mxmlNewElement(messageNode, "type");
	mxmlNewText(innerNode[0], 0, "ChallengeResponse");

	innerNode[1] = mxmlNewElement(messageNode, "ChallengeResponse");
	mxmlNewText(innerNode[1], 0, challResp);

	mxmlSaveString (xDoc, message, size, MXML_NO_CALLBACK);

	mxmlDelete(xDoc);

	return 0;
}
Exemple #21
0
int LoadSave_saveRocketXML(const text_t* path, TrackData* trackData)
{
	mxml_node_t* xml;
	mxml_node_t* tracks;
	FILE* fp;
	size_t p;
	struct sync_data* sync_data = &trackData->syncData;
	int* bookmarks = trackData->bookmarks;

	xml = mxmlNewXML("1.0");	

	// save all bookmarks

	for (p = 0; p < (size_t)trackData->bookmarkCount; ++p)
	{
		mxml_node_t* node;
		const int bookmark = *bookmarks++;

		if (bookmark == 0)
			continue;

		node = mxmlNewElement(xml, "bookmark");
		setElementInt(node, "row", "%d", bookmark); 
	}

	// save groups that are folded

	for (p = 0; p < (size_t)trackData->groupCount; ++p)
	{
		mxml_node_t* node;
		Group* group = &trackData->groups[p];

		if (!group->folded)
			continue;

		node = mxmlNewElement(xml, "group");
		mxmlElementSetAttr(node, "name", group->name); 
	}

	tracks = mxmlNewElement(xml, "tracks");

	mxmlElementSetAttr(tracks, "rows", "10000");
	setElementInt(tracks, "startRow", "%d", trackData->startRow); 
	setElementInt(tracks, "endRow", "%d", trackData->endRow); 
	setElementInt(tracks, "highlightRowStep", "%d", trackData->highlightRowStep); 

	for (p = 0; p < sync_data->num_tracks; ++p) 
	{
		int i;
		const struct sync_track* t = sync_data->tracks[p];
		mxml_node_t* track = mxmlNewElement(tracks, "track");

		mxmlElementSetAttr(track, "name", t->name); 
		mxmlElementSetAttr(track, "folded", trackData->tracks[p].folded ? "1" : "0"); 
		setElementInt(track, "color", "%08x", trackData->tracks[p].color);

		for (i = 0; i < (int)t->num_keys; ++i) 
		{
			mxml_node_t* key = mxmlNewElement(track, "key");
			setElementInt(key, "row", "%d", (int)t->keys[i].row);
			setElementFloat(key, "value", t->keys[i].value);
			setElementInt(key, "interpolation", "%d", (int)t->keys[i].type);
		}
	}


#if defined(_WIN32)
	_wfopen_s(&fp, path, L"wt");
#else
	fp = fopen(path, "wt");
#endif

    mxmlSaveFile(xml, fp, whitespaceCallback);
    fclose(fp);

    return true;
}
Exemple #22
0
  int main (int argc, char *argv[])
  {
    FILE *fp; /*File to write*/

    mxml_node_t *xml;    
    mxml_node_t *graph;   
    mxml_node_t *graph_id;   
    mxml_node_t *vertices_list; 
    mxml_node_t *edges_list;  
    mxml_node_t *vertices;
    mxml_node_t *vertex;
    mxml_node_t *vertex_id;
    mxml_node_t *outedges;
    mxml_node_t *inedges;
    mxml_node_t *Vertex_attributes;
    mxml_node_t *vertex_attribute;
    mxml_node_t *vertex_attribute_name;
    mxml_node_t *vertex_attribute_value;
    mxml_node_t *vertex_attribute_value_type;
    mxml_node_t *edges;
    mxml_node_t *edge;
    mxml_node_t *edge_id;
    mxml_node_t *startV;
    mxml_node_t *endV;
    mxml_node_t *edge_attributes;
    mxml_node_t *edge_attribute;
    mxml_node_t *edge_attribute_name;
    mxml_node_t *edge_attribute_value;
    mxml_node_t *edge_attribute_value_type;

    xml = mxmlNewXML("1.0");
    graph = mxmlNewElement(xml, "graph"); 
    graph_id = mxmlNewElement(graph, "graph_id");
    mxmlNewText(graph_id, 1, g->id); 
    vertices_list = mxmlNewElement(graph, "vertices_list");
    mxmlNewText(vertices_list, 1, g->vertexIdList);
    edges_list = mxmlNewElement(graph, "edges_list");
    mxmlNewText(edges_list, 1, g->edgeIdList);
    vertices = mxmlNewElement(graph, "vertices");
    GList* listV=NULL;
    GList* listE=NULL;
    int lv = g_list_length(g->vertexIdList);
    int n = 0;
    for(n; n<lv; n++)
    {	
     VertexType* v = g_list_nth_data(listV,n);
     vertex = mxmlNewElement(vertices, "vertex");
     vertex_id=mxmlNewElemet(vertex,"vertex_id");
     mxmlNewText(vertex_id, 1, v->id);
     outedges = mxmlNewElement(vertex,"outedges");
     mxmlNewText(outedges, 1, v->outedges);
     inedges =  mxmlNewElement(vertex,"inedges");
     mxmlNewText(inedges, 1, v->inedges);
     vertex_attributes =  mxmlNewElement(vertex,"vertex_attributes");
     vertex_attribute = mxmlNewElement(vertex_attributes,"vertex_attribute");
     GList* v_attr=g_hash_table_get_keys(v->attributes);
     int a=g_list_length(v);
     int x=0;
     for(x;x<a;x++)
     {
      vertex_attribute_name=mxmlNewElement(vertex_attribute,"vertex_attribute_name");
      mxmlNewText(vertex_attribute_name, 1,g_list_nth_data(v_attr,x));
      vertex_attribute_name=mxmlNewElement(vertex_attribute, "vertex_attribute_value");
      mxmlNewElement(vertex_attribute_value, 1, vertex_get_attribute_value(v, g_list_nth_data(v_attr,x)));	
     } 		
    }

    int le = g_list_length(g->edgeIdList);
    int m=0;
    for(m; m<le; m++)
    {
      EdgeType* e= g_list_nth_data(listE,m);
      edge =mxmlNewElement(edges,"edge");
      edge_id=mxmlNewElement(edge, "edge_id");
      mxmlNewText(edge_id,1,e->id);
      startV = mxmlNewElement(edge, "startV");
      mxmlNewText(startV,1,e->start);
      endV = mxmlNewElement(edge,"endV");
      mxmlNewText(endV,1,e->end);
      edge_attributes = mxmlNewElement(edge, "edge_attributes");
      edge_attribute = mxmlNewElement(edge_attributes, "edge_attribute");
      GList* e_attr= g_hash_table_get_keys(e->attributes);
      int b=g_list_length(e);
      int y=0;
      for (y; y<b;y++)
      {
        edge_attribute_name=mxmlNewElement(edge_attribute,"edge_attribute_name");
        mxmlNewText(edge_attribute_name,1, g_list_nth_data(e_attr,y));
        edge_attribute_name=mxmlNewElement(edge_attribute,"edge_attribute_value");
        mxmlNewElement(edge_attribute_value,1, vertex_get_attribute_value(e, g_list_nth_data(e_attr,y)));
      }
    }
      fp = fopen("filename.xml", "w");
      mxmlSaveFile(xml, fp, MXML_NO_CALLBACK);
      fclose(fp);


  }
mxml_node_t* CapturedXML::getTree() {
	bool perfCounters = false;
	mxml_node_t *xml;
    mxml_node_t *captured;
    mxml_node_t *target;
    mxml_node_t *counters;
	mxml_node_t *counter;
	int x;

	for (x=0; x<MAX_PERFORMANCE_COUNTERS; x++) {
		if (gSessionData->mPerfCounterEnabled[x]) {
			perfCounters = true;
			break;
		}
	}

	xml = mxmlNewXML("1.0");

	captured = mxmlNewElement(xml, "captured");
	mxmlElementSetAttr(captured, "version", "1");
	mxmlElementSetAttrf(captured, "protocol", "%d", PROTOCOL_VERSION);
	if (gSessionData->mBytes > 0) { // Send the following only after the capture is complete
		if (time(NULL) > 1267000000) { // If the time is reasonable (after Feb 23, 2010)
			mxmlElementSetAttrf(captured, "created", "%lu", time(NULL)); // Valid until the year 2038
		}
		mxmlElementSetAttrf(captured, "bytes", "%d", gSessionData->mBytes);
	}

	target = mxmlNewElement(captured, "target");
	mxmlElementSetAttr(target, "name", gSessionData->mCoreName);
	mxmlElementSetAttrf(target, "sample_rate", "%d", gSessionData->mSampleRate);
	mxmlElementSetAttrf(target, "cores", "%d", gSessionData->mCores);

	if (perfCounters) {
		counters = mxmlNewElement(captured, "counters");
		for (x = 0; x < MAX_PERFORMANCE_COUNTERS; x++) {
			if (gSessionData->mPerfCounterEnabled[x]) {
				counter = mxmlNewElement(counters, "counter");
				mxmlElementSetAttr(counter, "title", gSessionData->mPerfCounterTitle[x]);
				mxmlElementSetAttr(counter, "name", gSessionData->mPerfCounterName[x]);
				mxmlElementSetAttrf(counter, "color", "0x%08x", gSessionData->mPerfCounterColor[x]);
				mxmlElementSetAttrf(counter, "key", "0x%08x", gSessionData->mPerfCounterKey[x]);
				mxmlElementSetAttr(counter, "type", gSessionData->mPerfCounterType[x]);
				mxmlElementSetAttrf(counter, "event", "0x%08x", gSessionData->mPerfCounterEvent[x]);
				if (gSessionData->mPerfCounterPerCPU[x]) {
					mxmlElementSetAttr(counter, "per_cpu", "yes");
				}
				if (strlen(gSessionData->mPerfCounterOperation[x]) > 0) {
					mxmlElementSetAttr(counter, "operation", gSessionData->mPerfCounterOperation[x]);
				}
				if (gSessionData->mPerfCounterCount[x] > 0) {
					mxmlElementSetAttrf(counter, "count", "%d", gSessionData->mPerfCounterCount[x]);
				}
				if (gSessionData->mPerfCounterLevel[x]) {
					mxmlElementSetAttr(counter, "level", "yes");
				}
				if (strlen(gSessionData->mPerfCounterAlias[x]) > 0) {
					mxmlElementSetAttr(counter, "alias", gSessionData->mPerfCounterAlias[x]);
				}
				if (strlen(gSessionData->mPerfCounterDisplay[x]) > 0) {
					mxmlElementSetAttr(counter, "display", gSessionData->mPerfCounterDisplay[x]);
				}
				if (strlen(gSessionData->mPerfCounterUnits[x]) > 0) {
					mxmlElementSetAttr(counter, "units", gSessionData->mPerfCounterUnits[x]);
				}
				if (gSessionData->mPerfCounterAverageSelection[x]) {
					mxmlElementSetAttr(counter, "average_selection", "yes");
				}
				mxmlElementSetAttr(counter, "description", gSessionData->mPerfCounterDescription[x]);
			}
		}
	}

	return xml;
}
Exemple #24
0
void parse_brlan(char* filename, char *filenameout)
{
    FILE* fp = fopen(filename, "rb");
    if(fp == NULL) {
        printf("Error! Couldn't open %s!\n", filename);
        exit(1);
    }
    fseek(fp, 0, SEEK_END);
    u32 lengthOfFile = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    u8 data[lengthOfFile];
    fread(data, lengthOfFile, 1, fp);

    int i, j;
    for(i = 0; i < 16; i++)
    {
        memset(tag_types_list[i], 0, 24);
        memset(tag_types_rlmc_list[i], 0, 24);
	memset(tag_types_rlvc_list[i], 0, 24);
    }
    strcpy(tag_types_list[0], "X Translation");
    strcpy(tag_types_list[1], "Y Translation");
    strcpy(tag_types_list[2], "Z Translation");
    strcpy(tag_types_list[3], "X Flip");
    strcpy(tag_types_list[4], "Y Flip");
    strcpy(tag_types_list[5], "Angle");
    strcpy(tag_types_list[6], "X Zoom");
    strcpy(tag_types_list[7], "Y Zoom");
    strcpy(tag_types_list[8], "Width");
    strcpy(tag_types_list[9], "Height");
    strcpy(tag_types_list[10], "0x0A");
    strcpy(tag_types_list[11], "0x0B");
    strcpy(tag_types_list[12], "0x0C");
    strcpy(tag_types_list[13], "0x0D");
    strcpy(tag_types_list[14], "0x0E");
    strcpy(tag_types_list[15], "0x0F");

    strcpy(tag_types_rlmc_list[0], "0x00");
    strcpy(tag_types_rlmc_list[1], "0x01");
    strcpy(tag_types_rlmc_list[2], "0x02");
    strcpy(tag_types_rlmc_list[3], "0x03");
    strcpy(tag_types_rlmc_list[4], "Blackcolor R");
    strcpy(tag_types_rlmc_list[5], "Blackcolor G");
    strcpy(tag_types_rlmc_list[6], "Blackcolor B");
    strcpy(tag_types_rlmc_list[7], "Blackcolor A");
    strcpy(tag_types_rlmc_list[8], "Whitecolor R");
    strcpy(tag_types_rlmc_list[9], "Whitecolor G");
    strcpy(tag_types_rlmc_list[10], "Whitecolor B");
    strcpy(tag_types_rlmc_list[11], "Whitecolor A");
    strcpy(tag_types_rlmc_list[12], "0x0C");
    strcpy(tag_types_rlmc_list[13], "0x0D");
    strcpy(tag_types_rlmc_list[14], "0x0E");
    strcpy(tag_types_rlmc_list[15], "0x0F");

    strcpy(tag_types_rlvc_list[0], "Top Left R");
    strcpy(tag_types_rlvc_list[1], "Top Left G");
    strcpy(tag_types_rlvc_list[2], "Top Left B");
    strcpy(tag_types_rlvc_list[3], "Top Left A");
    strcpy(tag_types_rlvc_list[4], "Top Right R");
    strcpy(tag_types_rlvc_list[5], "Top Right G");
    strcpy(tag_types_rlvc_list[6], "Top Right B");
    strcpy(tag_types_rlvc_list[7], "Top Right A");
    strcpy(tag_types_rlvc_list[8], "Bottom Left R");
    strcpy(tag_types_rlvc_list[9], "Bottom Left G");
    strcpy(tag_types_rlvc_list[10], "Bottom Left B");
    strcpy(tag_types_rlvc_list[11], "Bottom Left A");
    strcpy(tag_types_rlvc_list[12], "Bottom Right R");
    strcpy(tag_types_rlvc_list[13], "Bottom Right G");
    strcpy(tag_types_rlvc_list[14], "Bottom Right B");
    strcpy(tag_types_rlvc_list[15], "Bottom Right A");

    BRLAN_fileoffset = 0;
    brlan_header header;
    BRLAN_ReadDataFromMemoryX(&header, data, sizeof(brlan_header));
    BRLAN_fileoffset = short_swap_bytes(header.pai1_offset);
    brlan_pai1_universal universal;
    BRLAN_ReadDataFromMemoryX(&universal, data, sizeof(brlan_pai1_universal));
    
    int pai1_header_type;
    brlan_pai1_header_type1 pai1_header1;
    brlan_pai1_header_type2 pai1_header2;
    brlan_pai1_header_type2 pai1_header;

    if((be32(universal.flags) & (1 << 25)) >= 1) {
        pai1_header_type = 2;
        BRLAN_ReadDataFromMemory(&pai1_header2, data, sizeof(brlan_pai1_header_type2));
    } else {
        pai1_header_type = 1;
        BRLAN_ReadDataFromMemory(&pai1_header1, data, sizeof(brlan_pai1_header_type1));
    }

    CreateGlobal_pai1(&pai1_header, pai1_header1, pai1_header2, pai1_header_type);


    FILE *xmlFile;
    xmlFile = fopen(filenameout, "w");
    mxml_node_t *xml;
    mxml_node_t *xmlan;
    xml = mxmlNewXML("1.0");
    xmlan = mxmlNewElement(xml, "xmlan");
    mxmlElementSetAttrf(xmlan, "version", "%d.%d.%d%s", BENZIN_VERSION_MAJOR, BENZIN_VERSION_MINOR, BENZIN_VERSION_BUILD, BENZIN_VERSION_OTHER);
    mxmlElementSetAttrf(xmlan, "framesize", "%lu", (long unsigned int)short_swap_bytes(pai1_header.framesize));
    mxmlElementSetAttrf(xmlan, "flags", "%02x", pai1_header.flags);

    int timgs = short_swap_bytes(pai1_header.num_timgs);

    BRLAN_fileoffset = short_swap_bytes(header.pai1_offset) + sizeof(brlan_pai1_header_type1);
    if ( pai1_header_type == 2 ) BRLAN_fileoffset += 4;
    int tableoff = BRLAN_fileoffset;
    int currtableoff = BRLAN_fileoffset;

    mxml_node_t *timg;
    for( i = 0; i < timgs; i++) {
        u32 curr_timg_off = 0;
        BRLAN_ReadDataFromMemory(&curr_timg_off, data, 4);
        char timgname[256];
        memset(timgname, 0, 256);
        int z = tableoff + be32(curr_timg_off);
        for( j = 0; data[z] != 0; timgname[j++] = data[z], z++);
        {
            timg = mxmlNewElement(xmlan, "timg");
            mxmlElementSetAttrf(timg, "name", "%s", timgname);
        }
        currtableoff += 4;
    }

    int tagcount = short_swap_bytes(pai1_header.num_entries);
    u32 taglocations[tagcount];
    BRLAN_fileoffset = be32(pai1_header.entry_offset) + short_swap_bytes(header.pai1_offset);
    BRLAN_ReadDataFromMemory(taglocations, data, tagcount * sizeof(u32));

    for( i = 0; i < tagcount; i++) {
        brlan_entry brlanEntry;
        tag_header tagHeader;
        BRLAN_fileoffset = be32(taglocations[i]) + short_swap_bytes(header.pai1_offset);
        u32 brlanEntryOffset = BRLAN_fileoffset;
        BRLAN_ReadDataFromMemory(&brlanEntry, data, sizeof(brlan_entry));

        mxml_node_t *pane;
        pane = mxmlNewElement(xmlan, "pane"); mxmlElementSetAttrf(pane, "name", "%s", brlanEntry.name); mxmlElementSetAttrf(pane, "type", "%u", brlanEntry.is_material);

        u32 entrylocations[brlanEntry.num_tags];
        BRLAN_ReadDataFromMemory(entrylocations, data, brlanEntry.num_tags * sizeof(u32));
        for ( j = 0; j < brlanEntry.num_tags; j++)
        {
            BRLAN_CreateXMLTag(tagHeader, data, brlanEntryOffset + be32(entrylocations[j]), pane);
        }
     }
    mxmlSaveFile(xml, xmlFile, whitespace_cb);
    mxmlDelete(xml);
    fclose(xmlFile);
    fclose(fp);
}
Exemple #25
0
int main_2(int argc, const char * argv[])
{
    mxml_node_t * xml; /*<?xml ... ?>*/
    mxml_node_t * data; /*<data>*/
    mxml_node_t * node; /*<node>*/
    mxml_node_t * group; /*group*/
/*xml*/
    xml = mxmlNewXML("1.0");
/*data*/
    data = mxmlNewElement(xml, "data");
    /*3个node*/
    node = mxmlNewElement(data, "node");
    mxmlNewText(node, 0, "val1");
    
    node = mxmlNewElement(data, "node");
    mxmlNewText(node, 0, "val2");
    
    node = mxmlNewElement(data, "node");
    mxmlNewText(node, 0, "val3");
    /*group*/
    group = mxmlNewElement(data, "group");
    /*group 下的三个node*/
    node = mxmlNewElement(group, "node");
    mxmlNewText(node, 0, "val4");
    
    node = mxmlNewElement(group, "node");
    mxmlNewText(node, 0, "val5");
    
    node = mxmlNewElement(group, "node");
    mxmlNewText(node, 0, "val6");
    
    /*2个node*/
    node = mxmlNewElement(data, "node");
    mxmlNewText(node, 0, "val7");
    
    node = mxmlNewElement(data, "node");
    mxmlNewText(node, 0, "val8");
    
/*自动折行控制------似乎不顶用!!!!!!*/
    mxmlSetWrapMargin(100);/*设置100列折行*/
    mxmlSetWrapMargin(0);/*取消自动折行*/
    
/*保存*/
    /*保存到文件*/
    FILE * fp;
    fp = fopen("/Users/zhangliang/Desktop/Project/C/Mini-XML/Mini-XML/testxml2.xml", "w");
    mxmlSaveFile(xml, fp, MXML_NO_CALLBACK);
    fclose(fp);
    
    
    /*保存到字符串中*/
    char buffer[4096];
    char * ptr;
    
    mxmlSaveString(xml, buffer, sizeof(buffer), MXML_NO_CALLBACK);
    
    ptr = mxmlSaveAllocString(xml, MXML_NO_CALLBACK);
    
    printf("buffer: %s\n", buffer);
    printf("alloc : %s\n", ptr);
    free(ptr);
    
    
    
    return 0;
}
Exemple #26
0
static int
preparePrefsData ()
{
	xml = mxmlNewXML("1.0");
	mxmlSetWrapMargin(0); // disable line wrapping

	data = mxmlNewElement(xml, "file");
	mxmlElementSetAttr(data, "app", APPNAME);
	mxmlElementSetAttr(data, "version", APPVERSION);

	createXMLSection("File", "File Settings");

	createXMLSetting("AutoLoad", "Auto Load", toStr(GCSettings.AutoLoad));
	createXMLSetting("AutoSave", "Auto Save", toStr(GCSettings.AutoSave));
	createXMLSetting("LoadMethod", "Load Method", toStr(GCSettings.LoadMethod));
	createXMLSetting("SaveMethod", "Save Method", toStr(GCSettings.SaveMethod));
	createXMLSetting("LoadFolder", "Load Folder", GCSettings.LoadFolder);
	createXMLSetting("LastFileLoaded", "Last File Loaded", GCSettings.LastFileLoaded);
	createXMLSetting("SaveFolder", "Save Folder", GCSettings.SaveFolder);
	createXMLSetting("AppendAuto", "Append Auto to .SAV Files", toStr(GCSettings.AppendAuto));
	//createXMLSetting("CheatFolder", "Cheats Folder", GCSettings.CheatFolder);
	createXMLSetting("ScreenshotsFolder", "Screenshots Folder", GCSettings.ScreenshotsFolder);
	createXMLSetting("BorderFolder", "SGB Borders Folder", GCSettings.BorderFolder);
	createXMLSetting("CoverFolder", "Covers Folder", GCSettings.CoverFolder);
	createXMLSetting("ArtworkFolder", "Artworks Folder", GCSettings.ArtworkFolder);
	createXMLSetting("ImageFolder", "Image Folder", GCSettings.ImageFolder);

	createXMLSection("Network", "Network Settings");

	createXMLSetting("smbip", "Share Computer IP", GCSettings.smbip);
	createXMLSetting("smbshare", "Share Name", GCSettings.smbshare);
	createXMLSetting("smbuser", "Share Username", GCSettings.smbuser);
	createXMLSetting("smbpwd", "Share Password", GCSettings.smbpwd);

	createXMLSection("Video", "Video Settings");

	createXMLSetting("videomode", "Video Mode", toStr(GCSettings.videomode));
	createXMLSetting("gbaZoomHor", "GBA Horizontal Zoom Level", FtoStr(GCSettings.gbaZoomHor));
	createXMLSetting("gbaZoomVert", "GBA Vertical Zoom Level", FtoStr(GCSettings.gbaZoomVert));
	createXMLSetting("gbZoomHor", "GB Horizontal Zoom Level", FtoStr(GCSettings.gbZoomHor));
	createXMLSetting("gbZoomVert", "GB Vertical Zoom Level", FtoStr(GCSettings.gbZoomVert));
	createXMLSetting("gbFixed", "GB Fixed Pixel Ratio", toStr(GCSettings.gbFixed));
	createXMLSetting("gbaFixed", "GBA Fixed Pixel Ratio", toStr(GCSettings.gbaFixed));
	createXMLSetting("render", "Video Filtering", toStr(GCSettings.render));
	createXMLSetting("scaling", "Aspect Ratio Correction", toStr(GCSettings.scaling));
	createXMLSetting("xshift", "Horizontal Video Shift", toStr(GCSettings.xshift));
	createXMLSetting("yshift", "Vertical Video Shift", toStr(GCSettings.yshift));
	createXMLSetting("colorize", "Colorize Mono Gameboy", toStr(GCSettings.colorize));
	createXMLSetting("gbaFrameskip", "GBA Frameskip", toStr(GCSettings.gbaFrameskip));

	createXMLSection("Menu", "Menu Settings");

	createXMLSetting("WiimoteOrientation", "Wiimote Orientation", toStr(GCSettings.WiimoteOrientation));
	createXMLSetting("ExitAction", "Exit Action", toStr(GCSettings.ExitAction));
	createXMLSetting("MusicVolume", "Music Volume", toStr(GCSettings.MusicVolume));
	createXMLSetting("SFXVolume", "Sound Effects Volume", toStr(GCSettings.SFXVolume));
	createXMLSetting("Rumble", "Rumble", toStr(GCSettings.Rumble));
	createXMLSetting("language", "Language", toStr(GCSettings.language));
	createXMLSetting("PreviewImage", "Preview Image", toStr(GCSettings.PreviewImage));

	createXMLSection("Emulation", "Emulation Settings");

	createXMLSetting("BasicPalette", "Basic Color Palette for GB", toStr(GCSettings.BasicPalette));
	
	createXMLSection("Controller", "Controller Settings");

	createXMLSetting("WiiControls", "Match Wii Game", toStr(GCSettings.WiiControls));
	createXMLController(btnmap[CTRLR_GCPAD], "gcpadmap", "GameCube Pad");
	createXMLController(btnmap[CTRLR_WIIMOTE], "wmpadmap", "Wiimote");
	createXMLController(btnmap[CTRLR_CLASSIC], "ccpadmap", "Classic Controller");
	createXMLController(btnmap[CTRLR_NUNCHUK], "ncpadmap", "Nunchuk");

	createXMLSection("Emulation", "Emulation Settings");

	createXMLSetting("OffsetMinutesUTC", "Offset from UTC (minutes)", toStr(GCSettings.OffsetMinutesUTC));
	createXMLSetting("GBHardware", "Hardware (GB/GBC)", toStr(GCSettings.GBHardware));
	createXMLSetting("SGBBorder", "Border (GB/GBC)", toStr(GCSettings.SGBBorder));

	int datasize = mxmlSaveString(xml, (char *)savebuffer, SAVEBUFFERSIZE, XMLSaveCallback);

	mxmlDelete(xml);

	return datasize;
}
Exemple #27
0
/**
 * @brief This is a savegame function which stores the game in xml-Format.
 * @param[in] filename The Filename to save to (without extension)
 * @param[in] comment Description of the savegame
 * @param[out] error On failure an errormessage may be set.
 */
static bool SAV_GameSave (const char *filename, const char *comment, char **error)
{
	xmlNode_t *topNode, *node;
	char savegame[MAX_OSPATH];
	int res;
	int requiredBufferLength;
	uLongf bufLen;
	saveFileHeader_t header;
	char dummy[2];
	int i;
	dateLong_t date;
	char message[30];
	char timeStampBuffer[32];

	if (!CP_IsRunning()) {
		*error = _("No campaign active.");
		Com_Printf("Error: No campaign active.\n");
		return false;
	}

	if (!B_AtLeastOneExists()) {
		*error = _("Nothing to save yet.");
		Com_Printf("Error: Nothing to save yet.\n");
		return false;
	}

	Com_MakeTimestamp(timeStampBuffer, sizeof(timeStampBuffer));
	Com_sprintf(savegame, sizeof(savegame), "save/%s.%s", filename, SAVEGAME_EXTENSION);
	topNode = mxmlNewXML("1.0");
	node = XML_AddNode(topNode, SAVE_ROOTNODE);
	/* writing  Header */
	XML_AddInt(node, SAVE_SAVEVERSION, SAVE_FILE_VERSION);
	XML_AddString(node, SAVE_COMMENT, comment);
	XML_AddString(node, SAVE_UFOVERSION, UFO_VERSION);
	XML_AddString(node, SAVE_REALDATE, timeStampBuffer);
	CP_DateConvertLong(&ccs.date, &date);
	Com_sprintf(message, sizeof(message), _("%i %s %02i"),
		date.year, Date_GetMonthName(date.month - 1), date.day);
	XML_AddString(node, SAVE_GAMEDATE, message);
	/* working through all subsystems. perhaps we should redesign it, order is not important anymore */
	Com_Printf("Calling subsystems\n");
	for (i = 0; i < saveSubsystemsAmount; i++) {
		if (!saveSubsystems[i].save(node))
			Com_Printf("...subsystem '%s' failed to save the data\n", saveSubsystems[i].name);
		else
			Com_Printf("...subsystem '%s' - saved\n", saveSubsystems[i].name);
	}

	/* calculate the needed buffer size */
	OBJZERO(header);
	header.compressed = LittleLong(save_compressed->integer);
	header.version = LittleLong(SAVE_FILE_VERSION);
	header.subsystems = LittleLong(saveSubsystemsAmount);
	Q_strncpyz(header.name, comment, sizeof(header.name));
	Q_strncpyz(header.gameVersion, UFO_VERSION, sizeof(header.gameVersion));
	CP_DateConvertLong(&ccs.date, &date);
	Com_sprintf(header.gameDate, sizeof(header.gameDate), _("%i %s %02i"),
		date.year, Date_GetMonthName(date.month - 1), date.day);
	Q_strncpyz(header.realDate, timeStampBuffer, sizeof(header.realDate));

	requiredBufferLength = mxmlSaveString(topNode, dummy, 2, MXML_NO_CALLBACK);

	header.xmlSize = LittleLong(requiredBufferLength);
	byte* const buf = Mem_PoolAllocTypeN(byte, requiredBufferLength + 1, cp_campaignPool);
	if (!buf) {
		mxmlDelete(topNode);
		*error = _("Could not allocate enough memory to save this game");
		Com_Printf("Error: Could not allocate enough memory to save this game\n");
		return false;
	}
	res = mxmlSaveString(topNode, (char*)buf, requiredBufferLength + 1, MXML_NO_CALLBACK);
	mxmlDelete(topNode);
	Com_Printf("XML Written to buffer (%d Bytes)\n", res);

	if (header.compressed)
		bufLen = compressBound(requiredBufferLength);
	else
		bufLen = requiredBufferLength;

	byte* const fbuf = Mem_PoolAllocTypeN(byte, bufLen + sizeof(header), cp_campaignPool);
	memcpy(fbuf, &header, sizeof(header));

	if (header.compressed) {
		res = compress(fbuf + sizeof(header), &bufLen, buf, requiredBufferLength);
		Mem_Free(buf);

		if (res != Z_OK) {
			Mem_Free(fbuf);
			*error = _("Memory error compressing save-game data - set save_compressed cvar to 0");
			Com_Printf("Memory error compressing save-game data (%s) (Error: %i)!\n", comment, res);
			return false;
		}
	} else {
		memcpy(fbuf + sizeof(header), buf, requiredBufferLength);
		Mem_Free(buf);
	}

	/* last step - write data */
	res = FS_WriteFile(fbuf, bufLen + sizeof(header), savegame);
	Mem_Free(fbuf);

	return true;
}
Exemple #28
0
static int
preparePrefsData ()
{
	xml = mxmlNewXML("1.0");
	mxmlSetWrapMargin(0); // disable line wrapping

	data = mxmlNewElement(xml, "file");
	mxmlElementSetAttr(data, "app", APPNAME);
	mxmlElementSetAttr(data, "version", APPVERSION);

	createXMLSection("File", "File Settings");

	createXMLSetting("AutoLoad", "Auto Load", toStr(GCSettings.AutoLoad));
	createXMLSetting("AutoSave", "Auto Save", toStr(GCSettings.AutoSave));
	createXMLSetting("LoadMethod", "Load Method", toStr(GCSettings.LoadMethod));
	createXMLSetting("SaveMethod", "Save Method", toStr(GCSettings.SaveMethod));
	createXMLSetting("LoadFolder", "Load Folder", GCSettings.LoadFolder);
	createXMLSetting("SaveFolder", "Save Folder", GCSettings.SaveFolder);
	createXMLSetting("CheatFolder", "Cheats Folder", GCSettings.CheatFolder);
	createXMLSetting("gamegenie", "Game Genie", toStr(GCSettings.gamegenie));

	createXMLSection("Network", "Network Settings");

	createXMLSetting("netplayIp", "Netplay IP", GCSettings.netplayIp);
	createXMLSetting("netplayPort", "Netplay Port", GCSettings.netplayPort);
	createXMLSetting("netplayPwd", "Netplay Password", GCSettings.netplayPwd);
	createXMLSetting("netplayNameX", "Netplay Player/Host Name", GCSettings.netplayNameX);
	createXMLSetting("netplayNameY", "Netplay Player Name", GCSettings.netplayNameY);
	createXMLSetting("netplayNameZ", "Netplay Player Name", GCSettings.netplayNameZ);
	createXMLSetting("smbip", "Share Computer IP", GCSettings.smbip);
	createXMLSetting("smbshare", "Share Name", GCSettings.smbshare);
	createXMLSetting("smbuser", "Share Username", GCSettings.smbuser);
	createXMLSetting("smbpwd", "Share Password", GCSettings.smbpwd);

	createXMLSection("Video", "Video Settings");

	createXMLSetting("videomode", "Video Mode", toStr(GCSettings.videomode));
	createXMLSetting("currpal", "Palette", toStr(GCSettings.currpal));
	createXMLSetting("timing", "Timing", toStr(GCSettings.timing));
	createXMLSetting("spritelimit", "Sprite Limit", toStr(GCSettings.spritelimit));
	createXMLSetting("zoomHor", "Horizontal Zoom Level", FtoStr(GCSettings.zoomHor));
	createXMLSetting("zoomVert", "Vertical Zoom Level", FtoStr(GCSettings.zoomVert));
	createXMLSetting("render", "Video Filtering", toStr(GCSettings.render));
	createXMLSetting("widescreen", "Aspect Ratio Correction", toStr(GCSettings.widescreen));
	createXMLSetting("hideoverscan", "Video Cropping", toStr(GCSettings.hideoverscan));
	createXMLSetting("xshift", "Horizontal Video Shift", toStr(GCSettings.xshift));
	createXMLSetting("yshift", "Vertical Video Shift", toStr(GCSettings.yshift));

	createXMLSection("Menu", "Menu Settings");

	createXMLSetting("WiimoteOrientation", "Wiimote Orientation", toStr(GCSettings.WiimoteOrientation));
	createXMLSetting("ExitAction", "Exit Action", toStr(GCSettings.ExitAction));
	createXMLSetting("MusicVolume", "Music Volume", toStr(GCSettings.MusicVolume));
	createXMLSetting("SFXVolume", "Sound Effects Volume", toStr(GCSettings.SFXVolume));
	createXMLSetting("Rumble", "Rumble", toStr(GCSettings.Rumble));
	createXMLSetting("language", "Language", toStr(GCSettings.language));

	createXMLSection("Controller", "Controller Settings");

	createXMLSetting("Controller", "Controller", toStr(GCSettings.Controller));
	createXMLSetting("crosshair", "Zapper Crosshair", toStr(GCSettings.crosshair));

	createXMLController(btnmap[CTRL_PAD][CTRLR_GCPAD], "btnmap_pad_gcpad", "NES Pad - GameCube Controller");
	createXMLController(btnmap[CTRL_PAD][CTRLR_WIIMOTE], "btnmap_pad_wiimote", "NES Pad - Wiimote");
	createXMLController(btnmap[CTRL_PAD][CTRLR_CLASSIC], "btnmap_pad_classic", "NES Pad - Classic Controller");
	createXMLController(btnmap[CTRL_PAD][CTRLR_NUNCHUK], "btnmap_pad_nunchuk", "NES Pad - Nunchuk + Wiimote");
	createXMLController(btnmap[CTRL_ZAPPER][CTRLR_GCPAD], "btnmap_zapper_gcpad", "Zapper - GameCube Controller");
	createXMLController(btnmap[CTRL_ZAPPER][CTRLR_WIIMOTE], "btnmap_zapper_wiimote", "Zapper - Wiimote");

	int datasize = mxmlSaveString(xml, (char *)savebuffer, SAVEBUFFERSIZE, XMLSaveCallback);

	mxmlDelete(xml);

	return datasize;
}
Exemple #29
0
void game_save(game* p_game, char* file)
{
  FILE *fp = NULL;
  fp = fopen(file, "w");

  element* p_browse;
  char buffer[10];

  mxml_node_t *mxml_xml;
  mxml_node_t *mxml_game;
  mxml_node_t *mxml_unit;
  mxml_node_t *mxml_vars;
  mxml_node_t *mxml_i;

  mxml_xml = mxmlNewXML("1.0");

  mxml_game = mxmlNewElement(mxml_xml, "game");

  mxml_unit = mxmlNewElement(mxml_game, "unit");
  mxmlElementSetAttr(mxml_unit, "src", "./res/entities/units/mana.xml");

  mxml_i = mxmlNewElement(mxml_unit, "location");
  char* attr_file = calloc(strlen("./res/maps/") + strlen(p_game->context) + 1, sizeof(char));
  strcpy(attr_file, "./res/maps/");
  strcat(attr_file, p_game->context);

  mxmlElementSetAttr(mxml_i, "file", attr_file);
  mxmlElementSetAttr(mxml_i, "name", map_get_current(p_game->p_map, p_game->cur_map)->name);
  free(attr_file);

  sprintf(buffer, "%d", p_game->p_unit->p_sprite->x);
  mxmlElementSetAttr(mxml_i, "x", buffer);
  sprintf(buffer, "%d", p_game->p_unit->p_sprite->y);
  mxmlElementSetAttr(mxml_i, "y", buffer);

  mxml_i = mxmlNewElement(mxml_unit, "HP");
  mxmlNewInteger(mxml_i, p_game->p_unit->HP);

  mxml_i = mxmlNewElement(mxml_unit, "MP");
  mxmlNewInteger(mxml_i, p_game->p_unit->MP);

  mxml_i = mxmlNewElement(mxml_unit, "XP");
  mxmlNewInteger(mxml_i, p_game->p_unit->XP);

  mxml_i = mxmlNewElement(mxml_unit, "gold");
  mxmlNewInteger(mxml_i, p_game->p_unit->gold);

  mxml_vars = mxmlNewElement(mxml_game, "vars");
  p_browse = p_game->vars;
  while(p_browse){
    var *temp = (var*)p_browse->data;
    mxml_i = mxmlNewElement(mxml_vars, "var");
    mxmlElementSetAttr(mxml_i, "name", temp->name);
    mxmlElementSetAttr(mxml_i, "value", temp->value);
    p_browse = p_browse->next;
  }

  mxmlSaveFile(mxml_xml, fp, MXML_NO_CALLBACK);

  mxmlDelete(mxml_xml);
  fclose(fp);
}
Exemple #30
0
static int
preparePrefsData ()
{
	xml = mxmlNewXML("1.0");
	mxmlSetWrapMargin(0); // disable line wrapping

	data = mxmlNewElement(xml, "file");
	mxmlElementSetAttr(data, "app", APPNAME);
	mxmlElementSetAttr(data, "version", APPVERSION);

	createXMLSection("File", "File Settings");

	createXMLSetting("AutoLoad", "Auto Load", toStr(GCSettings.AutoLoad));
	createXMLSetting("AutoSave", "Auto Save", toStr(GCSettings.AutoSave));
	createXMLSetting("LoadMethod", "Load Method", toStr(GCSettings.LoadMethod));
	createXMLSetting("SaveMethod", "Save Method", toStr(GCSettings.SaveMethod));
	createXMLSetting("LoadFolder", "Load Folder", GCSettings.LoadFolder);
	createXMLSetting("LastFileLoaded", "Last File Loaded", GCSettings.LastFileLoaded);
	createXMLSetting("SaveFolder", "Save Folder", GCSettings.SaveFolder);
	createXMLSetting("CheatFolder", "Cheats Folder", GCSettings.CheatFolder);
	createXMLSetting("ScreenshotsFolder", "Screenshots Folder", GCSettings.ScreenshotsFolder);

	createXMLSection("Network", "Network Settings");

	createXMLSetting("smbip", "Share Computer IP", GCSettings.smbip);
	createXMLSetting("smbshare", "Share Name", GCSettings.smbshare);
	createXMLSetting("smbuser", "Share Username", GCSettings.smbuser);
	createXMLSetting("smbpwd", "Share Password", GCSettings.smbpwd);

	createXMLSection("Video", "Video Settings");

	createXMLSetting("videomode", "Video Mode", toStr(GCSettings.videomode));
	createXMLSetting("zoomHor", "Horizontal Zoom Level", FtoStr(GCSettings.zoomHor));
	createXMLSetting("zoomVert", "Vertical Zoom Level", FtoStr(GCSettings.zoomVert));
	createXMLSetting("render", "Video Filtering", toStr(GCSettings.render));
	createXMLSetting("widescreen", "Aspect Ratio Correction", toStr(GCSettings.widescreen));
	createXMLSetting("crosshair", "Crosshair", toStr(GCSettings.crosshair));
	createXMLSetting("FilterMethod", "Filter Method", toStr(GCSettings.FilterMethod));
	createXMLSetting("xshift", "Horizontal Video Shift", toStr(GCSettings.xshift));
	createXMLSetting("yshift", "Vertical Video Shift", toStr(GCSettings.yshift));

	createXMLSection("Menu", "Menu Settings");

	createXMLSetting("WiimoteOrientation", "Wiimote Orientation", toStr(GCSettings.WiimoteOrientation));
	createXMLSetting("ExitAction", "Exit Action", toStr(GCSettings.ExitAction));
	createXMLSetting("MusicVolume", "Music Volume", toStr(GCSettings.MusicVolume));
	createXMLSetting("SFXVolume", "Sound Effects Volume", toStr(GCSettings.SFXVolume));
	createXMLSetting("Rumble", "Rumble", toStr(GCSettings.Rumble));
	createXMLSetting("language", "Language", toStr(GCSettings.language));

	createXMLSection("Controller", "Controller Settings");

	createXMLSetting("Controller", "Controller", toStr(GCSettings.Controller));

	createXMLController(btnmap[CTRL_PAD][CTRLR_GCPAD], "btnmap_pad_gcpad", "SNES Pad - GameCube Controller");
	createXMLController(btnmap[CTRL_PAD][CTRLR_WIIMOTE], "btnmap_pad_wiimote", "SNES Pad - Wiimote");
	createXMLController(btnmap[CTRL_PAD][CTRLR_CLASSIC], "btnmap_pad_classic", "SNES Pad - Classic Controller");
	createXMLController(btnmap[CTRL_PAD][CTRLR_NUNCHUK], "btnmap_pad_nunchuk", "SNES Pad - Nunchuk + Wiimote");
	createXMLController(btnmap[CTRL_SCOPE][CTRLR_GCPAD], "btnmap_scope_gcpad", "Superscope - GameCube Controller");
	createXMLController(btnmap[CTRL_SCOPE][CTRLR_WIIMOTE], "btnmap_scope_wiimote", "Superscope - Wiimote");
	createXMLController(btnmap[CTRL_MOUSE][CTRLR_GCPAD], "btnmap_mouse_gcpad", "Mouse - GameCube Controller");
	createXMLController(btnmap[CTRL_MOUSE][CTRLR_WIIMOTE], "btnmap_mouse_wiimote", "Mouse - Wiimote");
	createXMLController(btnmap[CTRL_JUST][CTRLR_GCPAD], "btnmap_just_gcpad", "Justifier - GameCube Controller");
	createXMLController(btnmap[CTRL_JUST][CTRLR_WIIMOTE], "btnmap_just_wiimote", "Justifier - Wiimote");

	int datasize = mxmlSaveString(xml, (char *)savebuffer, SAVEBUFFERSIZE, XMLSaveCallback);

	mxmlDelete(xml);

	return datasize;
}