Beispiel #1
0
/** Binds this RVA to the best available section from the specified file header.  The numeric value of the RVA is not changed
 *  by this operation. The section is selected to be the mapped section that most specifically includes this RVA. */
rose_rva_t&
rose_rva_t::bind(SgAsmGenericHeader *fhdr)
{
    rose_addr_t va = get_rva() + fhdr->get_base_va();
    SgAsmGenericSection *secbind = fhdr->get_best_section_by_va(va, true);
    return set_section(secbind);
}
Beispiel #2
0
void 
gpc_queue_purge_request(GPilotRequest **req) 
{
	gchar *section = NULL;
	int num;
	GKeyFile *kfile;

	LOG (("gpc_queue_purge_request()"));

	g_return_if_fail (req != NULL);
	g_return_if_fail (*req != NULL);

	kfile = get_queue_kfile ();
	set_section ((*req)->pilot_id, (*req)->type, &section);
	num = g_key_file_get_integer (kfile, section, NUMREQ, NULL);
	num--;
	g_key_file_set_integer (kfile, section, NUMREQ, num);

	g_key_file_remove_group (kfile, (*req)->queue_data.section_name, NULL);

	switch((*req)->type) {
	case GREQ_INSTALL:
		unlink((*req)->parameters.install.filename);
		g_free((*req)->parameters.install.filename);
		g_free((*req)->parameters.install.description);
		break;
	case GREQ_RESTORE:
		g_free((*req)->parameters.restore.directory);
		break;
	case GREQ_CONDUIT:
		g_free((*req)->parameters.conduit.name);
		break;
	case GREQ_GET_USERINFO: 
		break;
	case GREQ_GET_SYSINFO: 
		break;
	case GREQ_NEW_USERINFO: 
	case GREQ_SET_USERINFO: 
		g_free((*req)->parameters.set_userinfo.user_id);
		g_free((*req)->parameters.set_userinfo.password);
		break;
	default: 
		g_assert_not_reached();
		break;
	}
	g_free((*req)->cradle);
	g_free((*req)->client_id);
	g_free((*req)->queue_data.section_name);
	g_free(*req);
	*req = NULL;
  
	g_free (section);

	save_queue_kfile (kfile);
	g_key_file_free (kfile);
} 
Beispiel #3
0
static void handle_org(char *s)
{
  taddr addr = parse_constexpr(&s);

  if (rorgmode)
    start_rorg(addr);
  else
    set_section(new_org(addr));
  eol(s);
}
Beispiel #4
0
GList*
gpc_queue_load_requests (guint32 pilot_id, GPilotRequestType type, gboolean all)
{
	int num;
	GList *retval = NULL;
	gchar *section = NULL;
	GKeyFile *kfile;

	kfile = get_queue_kfile ();

	set_section (pilot_id, type, &section);
	num = g_key_file_get_integer (kfile, section, NUMREQ, NULL);
	g_free (section);

	for (;num>0;num--) {
		GPilotRequest *req;
		if (is_system_related (type)) {
			req = gpc_queue_load_request (pilot_id, TRUE, num);
		} else {
			req = gpc_queue_load_request (pilot_id, FALSE, num);
		}

		if(req==NULL) {
			continue;
		}
		if (req->type!=type && all==FALSE) {
			g_free (req);
			continue;
		}

		retval = g_list_append (retval, req);
	}

	g_key_file_free (kfile);
	return retval;
}
Beispiel #5
0
guint
gpc_queue_store_request (GPilotRequest req)
{
	guint num;
	guint32 handle_num;
	gchar *section = NULL;
	GKeyFile *kfile;

	set_section (req.pilot_id, req.type, &section);

	kfile = get_queue_kfile ();

	num = g_key_file_get_integer (kfile, section, NUMREQ, NULL);
	num++;
	g_key_file_set_integer (kfile, section, NUMREQ, num);
	g_free (section);

	section = NULL;
	handle_num = set_section_num (req.pilot_id, req.type, &section, num);
  
	switch (req.type) {
	case GREQ_INSTALL: 
		g_key_file_set_string (kfile, section, ENT_TYPE, "GREQ_INSTALL"); 
		g_key_file_set_string (kfile, section, ENT_FILENAME, req.parameters.install.filename);
		g_key_file_set_string (kfile, section, ENT_DESCRIPTION, req.parameters.install.description);
		break;
	case GREQ_RESTORE: 
		g_key_file_set_string (kfile, section, ENT_TYPE, "GREQ_RESTORE"); 
		g_key_file_set_string (kfile, section, ENT_DIRECTORY, req.parameters.restore.directory);
		break;
	case GREQ_CONDUIT: 
		g_message ("req.parameters.conduit.name = %s", req.parameters.conduit.name);
		g_key_file_set_string (kfile, section, ENT_TYPE, "GREQ_CONDUIT"); 
		g_key_file_set_string (kfile, section, ENT_CONDUIT, req.parameters.conduit.name);
		g_key_file_set_string (kfile, section, ENT_HOW,
				       gnome_pilot_conduit_sync_type_int_to_str (req.parameters.conduit.how));
		break;
	case GREQ_NEW_USERINFO: 
		g_key_file_set_string (kfile, section, ENT_TYPE, "GREQ_NEW_USERINFO"); 
		g_key_file_set_string (kfile, section, ENT_DEVICE, req.cradle);
		g_key_file_set_string (kfile, section, ENT_USER_ID, req.parameters.set_userinfo.user_id);
		g_key_file_set_integer (kfile, section, ENT_PILOT_ID, req.parameters.set_userinfo.pilot_id);
		break;
	case GREQ_SET_USERINFO: 
		g_key_file_set_string (kfile, section, ENT_TYPE, "GREQ_SET_USERINFO"); 
		g_key_file_set_string (kfile, section, ENT_DEVICE, req.cradle);
		g_key_file_set_string (kfile, section, ENT_PASSWORD, req.parameters.set_userinfo.password);
		g_key_file_set_string (kfile, section, ENT_USER_ID, req.parameters.set_userinfo.user_id);
		g_key_file_set_integer (kfile, section, ENT_PILOT_ID, req.parameters.set_userinfo.pilot_id);
		g_key_file_set_boolean (kfile, section, ENT_CONT_SYNC, req.parameters.set_userinfo.continue_sync);
		break;
	case GREQ_GET_USERINFO: 
		g_key_file_set_string (kfile, section, ENT_TYPE, "GREQ_GET_USERINFO"); 
		g_key_file_set_string (kfile, section, ENT_DEVICE,req.cradle);
		break;
	case GREQ_GET_SYSINFO: 
		g_key_file_set_string (kfile, section, ENT_TYPE, "GREQ_GET_SYSINFO"); 
		g_key_file_set_string (kfile, section, ENT_DEVICE, req.cradle);
		break;
	default: 
		g_assert_not_reached ();
		break;
	}
	g_key_file_set_integer (kfile, section, ENT_TIMEOUT, req.timeout);
	g_key_file_set_integer (kfile, section, ENT_HANDLE, handle_num);
	g_key_file_set_string (kfile, section, ENT_CLIENT_ID, req.client_id);
    
	g_free (section);
	save_queue_kfile (kfile);
	g_key_file_free (kfile);

	LOG (("assigned handle num %u",handle_num));
	return handle_num;
}
Beispiel #6
0
 bool set(const std::string & key, const std::string & value)
 {
     return search_and_apply(key, value, set_section(key, value));
 }
Beispiel #7
0
static void do_section(char *s,char *name,char *type)
{
  try_leave_rorg();  /* works like ending the last RORG-block */
  set_section(new_section(name,type,1));
  eol(s);
}
Beispiel #8
0
/** Conversion from numeric RVA. The new rose_rva_t is constructed with the specified RVA and section.  The RVA is relative to
 *  the base_va of the (possibly implied) file header.  The section is optional. */
rose_rva_t::rose_rva_t(rose_addr_t rva, SgAsmGenericSection *section/*=NULL*/)
{
    addr = rva;
    this->section = NULL;
    set_section(section);
}