/** 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); }
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, §ion); 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); }
static void handle_org(char *s) { taddr addr = parse_constexpr(&s); if (rorgmode) start_rorg(addr); else set_section(new_org(addr)); eol(s); }
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, §ion); 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; }
guint gpc_queue_store_request (GPilotRequest req) { guint num; guint32 handle_num; gchar *section = NULL; GKeyFile *kfile; set_section (req.pilot_id, req.type, §ion); 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, §ion, 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; }
bool set(const std::string & key, const std::string & value) { return search_and_apply(key, value, set_section(key, value)); }
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); }
/** 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); }