Пример #1
0
/**
 * 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 */
}
Пример #2
0
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;
	}
}