diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 8d32628..47cffb3 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -1268,6 +1268,38 @@ config_str yon_tree_store_repo_get_archs(GtkTreeStore *target, GtkTreeIter *repo return final; } +char *yon_signature_get(GtkTreeView *target, GtkTreeIter *iter){ + GtkTreeIter itar; + GtkTreeModel *model = gtk_tree_view_get_model(target); + char *full_path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(model),iter); + int size; + config_str parsed = yon_char_parse(full_path,&size,":"); + if (size==2){ + char *storage_path = parsed[0]; + char *repo_path = yon_char_unite(parsed[0],":",parsed[1],NULL); + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&itar,storage_path); + char *path; + gtk_tree_model_get(GTK_TREE_MODEL(model),&itar,3,&path,-1); + char *repo; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&itar,repo_path); + gtk_tree_model_get(GTK_TREE_MODEL(model),&itar,2,&repo,-1); + int status_size; + config_str status = yon_config_load(yon_repo_get_signature(path,repo),&status_size); + char *final_string = NULL; + if (status_size>4){ + final_string = yon_char_unite(status[0],status[1],status[2],status[3],NULL); + } + free(full_path); + free(path); + free(repo); + yon_char_parsed_free(parsed,size); + yon_char_parsed_free(status,status_size); + + return final_string; + } + return NULL; +} + void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){ gtk_label_set_text(GTK_LABEL(widgets->InformationLabel),""); gtk_list_store_clear(widgets->RepoFileList); @@ -1304,7 +1336,8 @@ void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){ int size, arch_size; config_str archs = yon_tree_store_repo_get_archs(widgets->RepoList,&iter,&arch_size); char *archs_string = yon_char_parsed_to_string(archs,arch_size,", "); - char *info = get_repo_info_label(name,archs_string); + char *sign = yon_signature_get(GTK_TREE_VIEW(widgets->ReposTree),&iter); + char *info = get_repo_info_label(name,archs_string,sign); gtk_label_set_text(GTK_LABEL(widgets->InformationLabel),info); int lvlsize; config_str level = yon_tree_store_get_all_at_level(widgets->RepoList,&iter,&lvlsize,2,3); @@ -1323,7 +1356,7 @@ void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){ gtk_tree_model_iter_parent(GTK_TREE_MODEL(widgets->RepoList),&itor,&iter); char *trg; gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&itor,2,&trg,-1); - char *info = get_arch_info_label(trg,name,"",""); + char *info = get_arch_info_label(trg,name); gtk_label_set_text(GTK_LABEL(widgets->InformationLabel),info); char *packages; int size; diff --git a/source/ubl-settings-repomanager.h b/source/ubl-settings-repomanager.h index 8a004a5..172d71f 100644 --- a/source/ubl-settings-repomanager.h +++ b/source/ubl-settings-repomanager.h @@ -60,6 +60,8 @@ typedef char* string; #define ubl_settings_update_command "ubl-settings-update" +#define yon_repo_get_signature(path, repo) yon_char_unite("repo-manager verify --quiet -d ",path," -r ",repo," .",NULL) + #define yon_get_package_name_from_filename(path) yon_char_unite("[[ '",path,"' =~ (.*/)*(.*)-[^-]+-[^-]+-[^-]+\\.pkg\\.tar\\.[^.-]+ ]] && echo ${BASH_REMATCH[2]}",NULL) #define yon_get_filename_from_package_name(target) yon_char_unite("find ${PATH} -maxdepth 1 -regextype egrep -regex \".*/",target,"-[^-]+-[^-]+-[^-]+\\.pkg\\.tar\\.[^-.]*\"",NULL) @@ -73,9 +75,9 @@ typedef char* string; #define get_storage_info_label(path, repos, archs) yon_char_unite(STORAGE_PATH_LABEL,": ", path,"\n\n", REPOS_LABEL,": ",repos,"\n\n",ARCHS_LABEL,": ",archs,NULL) -#define get_repo_info_label(repos, archs) yon_char_unite(REPO_NAME_LABEL,": ",repos,"\n\n",ARCHS_LABEL,": ",archs,NULL) +#define get_repo_info_label(repos, archs,sign) yon_char_unite(REPO_NAME_LABEL,": ",repos,"\n\n",ARCHS_LABEL,": ",archs,"\n\n",sign,NULL) -#define get_arch_info_label(repos, archs,sign,sign_status) yon_char_unite(REPO_NAME_LABEL,": ",repos,"\n\n",ARCHS_LABEL,": ",archs,"\n\n",SIGNATURE_LABEL," ",sign,"\n\n",SIGN_STATUS_LABEL,": ",sign_status,NULL) +#define get_arch_info_label(repos, archs) yon_char_unite(REPO_NAME_LABEL,": ",repos,"\n\n",ARCHS_LABEL,": ",archs,NULL) #define yon_generate_key_command(type,name,email,strength,comment,expire,password) yon_char_unite("gpg --batch --gen-key <