|
|
|
|
@ -44,17 +44,21 @@
|
|
|
|
|
struct packages {
|
|
|
|
|
GHashTable *all_list;
|
|
|
|
|
GHashTable *installed_list;
|
|
|
|
|
GHashTable *updates_list;
|
|
|
|
|
} packages_struct;
|
|
|
|
|
|
|
|
|
|
int yon_packages_init(){
|
|
|
|
|
if (getuid()) return 0;
|
|
|
|
|
packages_struct.all_list = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
|
|
|
|
|
packages_struct.installed_list = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
|
|
|
|
|
packages_struct.updates_list = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
|
|
|
|
|
|
|
|
|
|
int size;
|
|
|
|
|
int installed_size;
|
|
|
|
|
int updates_size;
|
|
|
|
|
config_str package_list = yon_config_load("pacman -Slq",&size);
|
|
|
|
|
config_str installed = yon_config_load("pacman -Qq",&installed_size);
|
|
|
|
|
config_str updates = yon_config_load("pacman -Qqu",&updates_size);
|
|
|
|
|
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
yon_char_remove_last_symbol(package_list[i],'\n');
|
|
|
|
|
@ -65,8 +69,14 @@ int yon_packages_init(){
|
|
|
|
|
yon_char_remove_last_symbol(package_list[i],'\n');
|
|
|
|
|
g_hash_table_add(packages_struct.installed_list,installed[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i=0;i<updates_size;i++){
|
|
|
|
|
yon_char_remove_last_symbol(package_list[i],'\n');
|
|
|
|
|
g_hash_table_add(packages_struct.installed_list,updates[i]);
|
|
|
|
|
}
|
|
|
|
|
free(package_list);
|
|
|
|
|
free(installed);
|
|
|
|
|
free(updates);
|
|
|
|
|
|
|
|
|
|
if (g_hash_table_size(packages_struct.all_list)&&g_hash_table_size(packages_struct.installed_list))
|
|
|
|
|
return 1;
|
|
|
|
|
@ -82,6 +92,10 @@ int yon_packages_check_installed(char *package){
|
|
|
|
|
return g_hash_table_contains(packages_struct.installed_list,package);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int yon_packages_check_updates(char *package){
|
|
|
|
|
return g_hash_table_contains(packages_struct.updates_list,package);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void yon_packages_finish(){
|
|
|
|
|
g_hash_table_unref(packages_struct.all_list);
|
|
|
|
|
g_hash_table_unref(packages_struct.installed_list);
|
|
|
|
|
|