|
|
|
@ -63,7 +63,7 @@ int _yon_packages_get_db(){
|
|
|
|
GRegex *regex = g_regex_new("^\\[.*\\]$",G_REGEX_MULTILINE,0,NULL);
|
|
|
|
GRegex *regex = g_regex_new("^\\[.*\\]$",G_REGEX_MULTILINE,0,NULL);
|
|
|
|
GMatchInfo *match = NULL;
|
|
|
|
GMatchInfo *match = NULL;
|
|
|
|
g_regex_match(regex,pacman_config_full,G_REGEX_MATCH_DEFAULT,&match);
|
|
|
|
g_regex_match(regex,pacman_config_full,G_REGEX_MATCH_DEFAULT,&match);
|
|
|
|
|
|
|
|
|
|
|
|
while (g_match_info_matches(match)){
|
|
|
|
while (g_match_info_matches(match)){
|
|
|
|
char *iter = g_match_info_fetch(match,0);
|
|
|
|
char *iter = g_match_info_fetch(match,0);
|
|
|
|
if (iter[0]=='['){
|
|
|
|
if (iter[0]=='['){
|
|
|
|
@ -79,6 +79,43 @@ int _yon_packages_get_db(){
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alpm_list_t *_yon_packages_get_db_list(enum YON_PACKAGES_DB_TYPE type){
|
|
|
|
|
|
|
|
alpm_list_t *db_list = NULL;
|
|
|
|
|
|
|
|
switch(type){
|
|
|
|
|
|
|
|
case YON_PACKAGES_LOCAL:
|
|
|
|
|
|
|
|
alpm_db_t *database = alpm_get_localdb(packages_struct.packages_handle);
|
|
|
|
|
|
|
|
if (!db_list) db_list = alpm_list_append(&db_list,database);
|
|
|
|
|
|
|
|
else alpm_list_append(&db_list,database);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case YON_PACKAGES_SYNC:
|
|
|
|
|
|
|
|
alpm_list_t *sync_db = alpm_get_syncdbs(packages_struct.packages_handle);
|
|
|
|
|
|
|
|
for (alpm_list_t *iter=sync_db;iter;iter=alpm_list_next(iter)){
|
|
|
|
|
|
|
|
alpm_db_t *database = iter->data;
|
|
|
|
|
|
|
|
if (!db_list) db_list = alpm_list_append(&db_list,database);
|
|
|
|
|
|
|
|
else alpm_list_append(&db_list,database);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case YON_PACKAGES_ALL:{
|
|
|
|
|
|
|
|
alpm_list_t *sync_db = alpm_get_syncdbs(packages_struct.packages_handle);
|
|
|
|
|
|
|
|
for (alpm_list_t *iter=sync_db;iter;iter=alpm_list_next(iter)){
|
|
|
|
|
|
|
|
alpm_db_t *database = iter->data;
|
|
|
|
|
|
|
|
if (!db_list) db_list = alpm_list_append(&db_list,database);
|
|
|
|
|
|
|
|
else alpm_list_append(&db_list,database);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alpm_db_t *database = alpm_get_localdb(packages_struct.packages_handle);
|
|
|
|
|
|
|
|
if (!db_list) db_list = alpm_list_append(&db_list,database);
|
|
|
|
|
|
|
|
else alpm_list_append(&db_list,database);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return db_list;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int yon_packages_init(){
|
|
|
|
int yon_packages_init(){
|
|
|
|
if (packages_struct.packages_handle) return 0;
|
|
|
|
if (packages_struct.packages_handle) return 0;
|
|
|
|
|
|
|
|
|
|
|
|
@ -130,6 +167,58 @@ int yon_packages_check_updates(char *package_name){
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
config_str yon_packages_find(enum YON_PACKAGES_DB_TYPE type, const char *search_string, gsize *size){
|
|
|
|
|
|
|
|
(*size)=0;
|
|
|
|
|
|
|
|
if (yon_char_is_empty(search_string)) return NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
config_str final = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alpm_list_t *databases = _yon_packages_get_db_list(type);
|
|
|
|
|
|
|
|
alpm_list_t *iter = NULL;
|
|
|
|
|
|
|
|
for (iter = databases; iter; iter=iter->next){
|
|
|
|
|
|
|
|
alpm_db_t *database = iter->data;
|
|
|
|
|
|
|
|
alpm_list_t *packages = alpm_db_get_pkgcache(database);
|
|
|
|
|
|
|
|
alpm_list_t *iter2 = NULL;
|
|
|
|
|
|
|
|
for (iter2 = packages; iter2; iter2=iter2->next){
|
|
|
|
|
|
|
|
const char *name = alpm_pkg_get_name(iter2->data);
|
|
|
|
|
|
|
|
if (strstr(name,search_string)){
|
|
|
|
|
|
|
|
yon_char_parsed_add_or_create_if_exists(final,(int*)size,(char*)name);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return final;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char *yon_packages_get_version(enum YON_PACKAGES_DB_TYPE type, const char *package){
|
|
|
|
|
|
|
|
if (yon_char_is_empty(package)) return NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alpm_list_t *databases = _yon_packages_get_db_list(type);
|
|
|
|
|
|
|
|
alpm_list_t *iter = NULL;
|
|
|
|
|
|
|
|
for (iter = databases; iter; iter=iter->next){
|
|
|
|
|
|
|
|
alpm_pkg_t *pkg = alpm_db_get_pkg(iter->data,package);
|
|
|
|
|
|
|
|
if (!pkg) continue;
|
|
|
|
|
|
|
|
const char *name = alpm_pkg_get_name(pkg);
|
|
|
|
|
|
|
|
if (!strcmp(name,package)){
|
|
|
|
|
|
|
|
return yon_char_new(alpm_pkg_get_version(pkg));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char *yon_packages_get_description(enum YON_PACKAGES_DB_TYPE type, const char *package){
|
|
|
|
|
|
|
|
if (yon_char_is_empty(package)) return NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alpm_list_t *databases = _yon_packages_get_db_list(type);
|
|
|
|
|
|
|
|
alpm_list_t *iter = NULL;
|
|
|
|
|
|
|
|
for (iter = databases; iter; iter=iter->next){
|
|
|
|
|
|
|
|
alpm_pkg_t *pkg = alpm_db_get_pkg(iter->data,package);
|
|
|
|
|
|
|
|
if (!pkg) continue;
|
|
|
|
|
|
|
|
const char *name = alpm_pkg_get_name(pkg);
|
|
|
|
|
|
|
|
if (!strcmp(name,package)){
|
|
|
|
|
|
|
|
return yon_char_new(alpm_pkg_get_desc(pkg));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void yon_packages_update(){
|
|
|
|
void yon_packages_update(){
|
|
|
|
if (packages_struct.packages_handle) alpm_release(packages_struct.packages_handle);
|
|
|
|
if (packages_struct.packages_handle) alpm_release(packages_struct.packages_handle);
|
|
|
|
_yon_packages_get_db();
|
|
|
|
_yon_packages_get_db();
|
|
|
|
|