Exemplo n.º 1
0
Arquivo: ch.c Projeto: PDXostc/navit
static void
ch_setup(char *suffix)
{
	int i;
	if (!sgr) {
		int *data,size,offset=0;
		char *filename=tempfile_name(suffix,"sgr");
		printf("filename=%s\n",filename);
		sgr=file_create(filename,0);
		g_free(filename);
		dbg_assert(sgr != NULL);
		file_mmap(sgr);

		size=sizeof(int);
		data=(int *)file_data_read(sgr, offset, size);
		node_count=*data;
		offset+=size;

		size=node_count*sizeof(struct node);
		nodes=(struct node *)file_data_read(sgr, offset, size);
		offset+=size;

		size=sizeof(int);
		data=(int *)file_data_read(sgr, offset, size);
		edge_count=*data;
		offset+=size;

		size=edge_count*sizeof(struct edge);
		edges=(struct edge *)file_data_read(sgr, offset, size);
		offset+=size;

		size=sizeof(int);
		data=(int *)file_data_read(sgr, offset, size);
		newnode_count=*data;
		offset+=size;

		size=edge_count*sizeof(struct newnode);
		newnodes=(struct newnode *)file_data_read(sgr, offset, size);
		offset+=size;

		newnode_hash=g_hash_table_new(NULL, NULL);

		for (i = 0 ; i < newnode_count ; i++) {
			g_hash_table_insert(newnode_hash, GINT_TO_POINTER(newnodes[i].newnode), GINT_TO_POINTER(i));
        	}
	}
	if (!ddsg_node_index) {
		char *filename=tempfile_name(suffix,"ddsg_coords");
		ddsg_node_index=file_create(filename,0);
		g_free(filename);
		dbg_assert(ddsg_node_index != NULL);
		file_mmap(ddsg_node_index);
		node_index=(struct coord *)file_data_read(ddsg_node_index, 0, file_size(ddsg_node_index));
	}
}
Exemplo n.º 2
0
inline void tempfile_dump (pid_t pid, const T & t)
{
    std::string filename = tempfile_name(pid);
    std::ofstream file(filename.c_str(), std::ios::out | std::ios::trunc);
    POMAGMA_ASSERT(file, "failed to open tempfile " << filename);
    file << t << std::endl;
}
Exemplo n.º 3
0
inline void tempfile_load (pid_t pid, T & t)
{
    std::string filename = tempfile_name(pid);
    {
        std::ifstream file(filename.c_str(), std::ios::in);
        POMAGMA_ASSERT(file, "failed to open tempfile " << filename);
        file >> t;
    }
    remove(filename.c_str());
}
Exemplo n.º 4
0
static void node_createimage(struct imgtooltest_state *state, xml_data_node *node)
{
	imgtoolerr_t err;
	xml_data_node *child_node;
	xml_attribute_node *attr_node;
	option_resolution *opts = NULL;
	const imgtool_module *module;
	const char *driver;
	const char *param_name;
	const char *param_value;

	attr_node = xml_get_attribute(node, "driver");
	if (!attr_node)
	{
		error_missingattribute("driver");
		return;
	}
	driver = attr_node->value;

	/* does image creation support options? */
	module = imgtool_find_module(attr_node->value);
	if (module && module->createimage_optguide && module->createimage_optspec)
		opts = option_resolution_create(module->createimage_optguide, module->createimage_optspec);

	report_message(MSG_INFO, "Creating image (module '%s')", driver);

	for (child_node = xml_get_sibling(node->child, "param"); child_node; child_node = xml_get_sibling(child_node->next, "param"))
	{
		if (!opts)
		{
			report_message(MSG_FAILURE, "Cannot specify creation options with this module");
			return;
		}

		attr_node = xml_get_attribute(child_node, "name");
		if (!attr_node)
		{
			error_missingattribute("name");
			return;
		}
		param_name = attr_node->value;

		attr_node = xml_get_attribute(child_node, "value");
		if (!attr_node)
		{
			error_missingattribute("value");
			return;
		}
		param_value = attr_node->value;

		option_resolution_add_param(opts, param_name, param_value);
	}

	err = imgtool_image_create_byname(driver, tempfile_name(), opts, &state->m_image);
	if (opts)
	{
		option_resolution_close(opts);
		opts = NULL;
	}
	if (err)
	{
		state->m_failed = 1;
		report_imgtoolerr(err);
		return;
	}

	err = imgtool_partition_open(state->m_image, 0, &state->m_partition);
	if (err)
	{
		state->m_failed = 1;
		report_imgtoolerr(err);
		return;
	}
}