|
|
|
@ -44,10 +44,15 @@ struct packages {
|
|
|
|
GHashTable *all_list;
|
|
|
|
GHashTable *all_list;
|
|
|
|
GHashTable *installed_list;
|
|
|
|
GHashTable *installed_list;
|
|
|
|
GHashTable *updates_list;
|
|
|
|
GHashTable *updates_list;
|
|
|
|
|
|
|
|
int init_status;
|
|
|
|
} packages_struct;
|
|
|
|
} packages_struct;
|
|
|
|
|
|
|
|
GThread *packages_thread = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
int yon_packages_init(){
|
|
|
|
void *_yon_packages_init(void){
|
|
|
|
if (getuid()) return 0;
|
|
|
|
if (getuid()){
|
|
|
|
|
|
|
|
packages_struct.init_status = 0;
|
|
|
|
|
|
|
|
g_thread_exit(NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
packages_struct.all_list = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
|
|
|
|
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.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);
|
|
|
|
packages_struct.updates_list = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
|
|
|
|
@ -80,10 +85,21 @@ int yon_packages_init(){
|
|
|
|
free(installed);
|
|
|
|
free(installed);
|
|
|
|
free(updates);
|
|
|
|
free(updates);
|
|
|
|
|
|
|
|
|
|
|
|
if (g_hash_table_size(packages_struct.all_list)&&g_hash_table_size(packages_struct.installed_list))
|
|
|
|
if (g_hash_table_size(packages_struct.all_list)&&g_hash_table_size(packages_struct.installed_list)){
|
|
|
|
return 1;
|
|
|
|
packages_struct.init_status = 1;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
packages_struct.init_status = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
g_thread_exit(NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
void yon_packages_init(){
|
|
|
|
|
|
|
|
packages_thread = g_thread_new("packages_thread",(GThreadFunc)_yon_packages_init,NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int yon_packages_finalize(){
|
|
|
|
|
|
|
|
g_thread_join(packages_thread);
|
|
|
|
|
|
|
|
return packages_struct.init_status;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#define install_package_command(target) yon_char_unite("pacman -S ",target,NULL)
|
|
|
|
#define install_package_command(target) yon_char_unite("pacman -S ",target,NULL)
|
|
|
|
@ -92,18 +108,22 @@ int yon_packages_init(){
|
|
|
|
#define update_package_updated_command(target) yon_char_append("pacman -Qqu ",target)
|
|
|
|
#define update_package_updated_command(target) yon_char_append("pacman -Qqu ",target)
|
|
|
|
|
|
|
|
|
|
|
|
int yon_packages_check_exist(char *package){
|
|
|
|
int yon_packages_check_exist(char *package){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return 0;
|
|
|
|
return g_hash_table_contains(packages_struct.all_list,package);
|
|
|
|
return g_hash_table_contains(packages_struct.all_list,package);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int yon_packages_check_installed(char *package){
|
|
|
|
int yon_packages_check_installed(char *package){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return 0;
|
|
|
|
return g_hash_table_contains(packages_struct.installed_list,package);
|
|
|
|
return g_hash_table_contains(packages_struct.installed_list,package);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int yon_packages_check_updates(char *package){
|
|
|
|
int yon_packages_check_updates(char *package){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return 0;
|
|
|
|
return g_hash_table_contains(packages_struct.updates_list,package);
|
|
|
|
return g_hash_table_contains(packages_struct.updates_list,package);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void yon_packages_update_package_is_installed(char *package){
|
|
|
|
void yon_packages_update_package_is_installed(char *package){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return;
|
|
|
|
char *command = update_package_installed_command(package);
|
|
|
|
char *command = update_package_installed_command(package);
|
|
|
|
if (!system(command)){
|
|
|
|
if (!system(command)){
|
|
|
|
if (!g_hash_table_contains(packages_struct.installed_list,package)){
|
|
|
|
if (!g_hash_table_contains(packages_struct.installed_list,package)){
|
|
|
|
@ -118,6 +138,7 @@ void yon_packages_update_package_is_installed(char *package){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void yon_packages_update_package_is_updated(char *package){
|
|
|
|
void yon_packages_update_package_is_updated(char *package){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return;
|
|
|
|
char *command = update_package_updated_command(package);
|
|
|
|
char *command = update_package_updated_command(package);
|
|
|
|
if (!system(command)){
|
|
|
|
if (!system(command)){
|
|
|
|
if (!g_hash_table_contains(packages_struct.updates_list,package)){
|
|
|
|
if (!g_hash_table_contains(packages_struct.updates_list,package)){
|
|
|
|
@ -132,6 +153,7 @@ void yon_packages_update_package_is_updated(char *package){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void yon_packages_update_package(char *package){
|
|
|
|
void yon_packages_update_package(char *package){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return;
|
|
|
|
char *command = update_package_installed_command(package);
|
|
|
|
char *command = update_package_installed_command(package);
|
|
|
|
if (!system(command)){
|
|
|
|
if (!system(command)){
|
|
|
|
if (!g_hash_table_contains(packages_struct.installed_list,package)){
|
|
|
|
if (!g_hash_table_contains(packages_struct.installed_list,package)){
|
|
|
|
@ -158,6 +180,7 @@ void yon_packages_update_package(char *package){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int yon_packages_install(char *package){
|
|
|
|
int yon_packages_install(char *package){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return 0;
|
|
|
|
char *command = install_package_command(package);
|
|
|
|
char *command = install_package_command(package);
|
|
|
|
yon_terminal_window_launch(NULL,command,"","");
|
|
|
|
yon_terminal_window_launch(NULL,command,"","");
|
|
|
|
|
|
|
|
|
|
|
|
@ -166,6 +189,7 @@ int yon_packages_install(char *package){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int yon_packages_remove(char *package){
|
|
|
|
int yon_packages_remove(char *package){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return 0;
|
|
|
|
char *command = remove_package_command(package);
|
|
|
|
char *command = remove_package_command(package);
|
|
|
|
yon_terminal_window_launch(NULL,command,"","");
|
|
|
|
yon_terminal_window_launch(NULL,command,"","");
|
|
|
|
|
|
|
|
|
|
|
|
@ -174,6 +198,7 @@ int yon_packages_remove(char *package){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void yon_packages_finish(){
|
|
|
|
void yon_packages_finish(){
|
|
|
|
|
|
|
|
if (!packages_struct.init_status) return;
|
|
|
|
g_hash_table_unref(packages_struct.all_list);
|
|
|
|
g_hash_table_unref(packages_struct.all_list);
|
|
|
|
g_hash_table_unref(packages_struct.installed_list);
|
|
|
|
g_hash_table_unref(packages_struct.installed_list);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -189,6 +214,45 @@ config_str yon_resource_open_file(const char *path, int *size){
|
|
|
|
return parsed;
|
|
|
|
return parsed;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct yon_combo_default_struct {
|
|
|
|
|
|
|
|
char *command;
|
|
|
|
|
|
|
|
GtkComboBoxText *target;
|
|
|
|
|
|
|
|
void *result_callback; // char*(*)(char*)
|
|
|
|
|
|
|
|
char *default_value;
|
|
|
|
|
|
|
|
char *command_value;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void _yon_combo_box_set_default_value(struct yon_combo_default_struct *target){
|
|
|
|
|
|
|
|
gtk_combo_box_text_prepend(target->target,target->command_value,target->default_value);
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(target->default_value)) free(target->command);
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(target->default_value)) free(target->command_value);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void *__yon_combo_set_default(struct yon_combo_default_struct *target){
|
|
|
|
|
|
|
|
int size;
|
|
|
|
|
|
|
|
config_str parameter = yon_config_load(yon_config_parameter_prepare_command(target->command,"default",NULL,NULL),&size);
|
|
|
|
|
|
|
|
if (size&&!yon_char_is_empty(parameter[0])&&strcmp(parameter[0],"(null)\n")){
|
|
|
|
|
|
|
|
yon_char_remove_last_symbol(parameter[0],'\n');
|
|
|
|
|
|
|
|
target->command_value = yon_char_new(parameter[0]);
|
|
|
|
|
|
|
|
target->default_value = ((char*(*)(char*))(target->result_callback))(parameter[0]);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
target->default_value = ((char*(*)(char*))(target->result_callback))(NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
g_idle_add_once((GSourceOnceFunc)_yon_combo_box_set_default_value,target);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void yon_combo_box_set_default(GtkComboBoxText *target, char *command, char*(result_callback)(char*)){
|
|
|
|
|
|
|
|
struct yon_combo_default_struct *target_struct = malloc(sizeof(struct yon_combo_default_struct));
|
|
|
|
|
|
|
|
target_struct->result_callback = result_callback;
|
|
|
|
|
|
|
|
target_struct->target = target;
|
|
|
|
|
|
|
|
target_struct->command = yon_char_new(command);
|
|
|
|
|
|
|
|
target_struct->command_value=NULL;
|
|
|
|
|
|
|
|
target_struct->default_value = NULL;
|
|
|
|
|
|
|
|
g_thread_new("combo_get_default",(GThreadFunc)__yon_combo_set_default,target_struct);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// dictionary *__yon_config_listeners = NULL;
|
|
|
|
// dictionary *__yon_config_listeners = NULL;
|
|
|
|
// typedef struct {
|
|
|
|
// typedef struct {
|
|
|
|
// GtkWidget *target;
|
|
|
|
// GtkWidget *target;
|
|
|
|
|