/** * call-seq: * servers() → an_array * * Returns an array of all server URLs for this database. */ static VALUE get_servers(VALUE self) { alpm_db_t* p_db = NULL; alpm_list_t* p_servers = NULL; alpm_list_t* p_item = NULL; VALUE result = rb_ary_new(); Data_Get_Struct(self, alpm_db_t, p_db); p_servers = alpm_db_get_servers(p_db); if (!p_servers) return result; for(p_item = p_servers; p_item; p_item = alpm_list_next(p_item)) { rb_ary_push(result, rb_str_new2((char*) p_item->data)); } return rb_obj_freeze(result); /* Modifying this in Ruby land would be nonsense */ }
static char *pkg_get_location(alpm_pkg_t *pkg) { alpm_list_t *servers; char *string = NULL; switch(config->op) { case PM_OP_SYNC: servers = alpm_db_get_servers(alpm_pkg_get_db(pkg)); if(servers) { pm_asprintf(&string, "%s/%s", servers->data, alpm_pkg_get_filename(pkg)); return string; } case PM_OP_UPGRADE: return strdup(alpm_pkg_get_filename(pkg)); default: pm_asprintf(&string, "%s-%s", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg)); return string; } }