static void _update_info_block(List block_list, GtkTreeView *tree_view) { ListIterator itr; sview_block_info_t *block_ptr = NULL; GtkTreeModel *model = gtk_tree_view_get_model(tree_view); char *name = NULL; if (!block_list) { g_print("No block_list given"); return; } set_for_update(model, SORTID_UPDATED); /* Report the BG Blocks */ itr = list_iterator_create(block_list); while ((block_ptr = (sview_block_info_t*) list_next(itr))) { if (block_ptr->cnode_cnt == 0) block_ptr->cnode_cnt = block_ptr->size; if (!block_ptr->slurm_part_name) block_ptr->slurm_part_name = xstrdup("no part"); /* This means the tree_store changed (added new column or something). */ if (last_model != model) block_ptr->iter_set = false; if (block_ptr->iter_set) { gtk_tree_model_get(model, &block_ptr->iter_ptr, SORTID_BLOCK, &name, -1); if (xstrcmp(name, block_ptr->bg_block_name)) { /* Bad pointer */ block_ptr->iter_set = false; } g_free(name); } if (block_ptr->iter_set) _update_block_record(block_ptr, GTK_TREE_STORE(model)); else { _append_block_record(block_ptr, GTK_TREE_STORE(model)); block_ptr->iter_set = true; } } list_iterator_destroy(itr); /* remove all old blocks */ remove_old(model, SORTID_UPDATED); last_model = model; }
static void _update_info_front_end(List info_list, GtkTreeView *tree_view) { GtkTreeModel *model = gtk_tree_view_get_model(tree_view); char *name; ListIterator itr = NULL; sview_front_end_info_t *sview_front_end_info = NULL; set_for_update(model, SORTID_UPDATED); itr = list_iterator_create(info_list); while ((sview_front_end_info = list_next(itr))) { /* This means the tree_store changed (added new column or something). */ if (last_model != model) sview_front_end_info->iter_set = false; if (sview_front_end_info->iter_set) { gtk_tree_model_get(model, &sview_front_end_info->iter_ptr, SORTID_NAME, &name, -1); if (xstrcmp(name, sview_front_end_info->front_end_name)) { /* Bad pointer */ sview_front_end_info->iter_set = false; //g_print("bad front_end iter pointer\n"); } g_free(name); } if (sview_front_end_info->iter_set) _update_front_end_record(sview_front_end_info, GTK_TREE_STORE(model)); else { _append_front_end_record(sview_front_end_info, GTK_TREE_STORE(model)); sview_front_end_info->iter_set = true; } } list_iterator_destroy(itr); /* remove all old front_ends */ remove_old(model, SORTID_UPDATED); last_model = model; }
int tls_request_certificate(requiem_client_profile_t *cp, requiem_io_t *fd, gnutls_x509_privkey key, requiem_connection_permission_t permission) { ssize_t ret; ssize_t rsize; char buf[65535]; unsigned char *rbuf; gnutls_x509_crq crq; size_t size = sizeof(buf); requiem_log_debug(1, "Sending certificate request.\n"); crq = generate_certificate_request(cp, permission, key, (unsigned char *) buf, &size); if ( ! crq ) return -1; gnutls_x509_crq_deinit(crq); ret = requiem_io_write_delimited(fd, buf, size); if ( ret < 0 || (size_t) ret != size ) { requiem_perror(ret, "error sending certificate request"); return -1; } requiem_log_debug(1, "Receiving signed certificate.\n"); rsize = requiem_io_read_delimited(fd, &rbuf); if ( rsize < 0 ) { requiem_perror(rsize, "error receiving CA-signed certificate"); return -1; } requiem_client_profile_get_tls_client_keycert_filename(cp, buf, sizeof(buf)); ret = remove_old(buf, rbuf, rsize); if ( ret < 0 ) return ret; ret = save_buf(buf, requiem_client_profile_get_uid(cp), requiem_client_profile_get_gid(cp), rbuf, rsize); if ( ret < 0 ) return ret; free(rbuf); requiem_log_debug(1, "Receiving CA certificate.\n"); rsize = requiem_io_read_delimited(fd, &rbuf); if ( rsize < 0 ) { requiem_perror(rsize, "error receiving server certificate"); return rsize; } requiem_client_profile_get_tls_client_trusted_cert_filename(cp, buf, sizeof(buf)); ret = remove_old(buf, rbuf, rsize); if ( ret < 0 ) return ret; ret = save_buf(buf, requiem_client_profile_get_uid(cp), requiem_client_profile_get_gid(cp), rbuf, rsize); if ( ret < 0 ) return ret; free(rbuf); return 0; }
static void _update_info_resv(List info_list, GtkTreeView *tree_view) { GtkTreeModel *model = gtk_tree_view_get_model(tree_view); static GtkTreeModel *last_model = NULL; reserve_info_t *resv_ptr = NULL; char *name = NULL; ListIterator itr = NULL; sview_resv_info_t *sview_resv_info = NULL; set_for_update(model, SORTID_UPDATED); itr = list_iterator_create(info_list); while ((sview_resv_info = (sview_resv_info_t*) list_next(itr))) { resv_ptr = sview_resv_info->resv_ptr; /* This means the tree_store changed (added new column or something). */ if (last_model != model) sview_resv_info->iter_set = false; if (sview_resv_info->iter_set) { gtk_tree_model_get(model, &sview_resv_info->iter_ptr, SORTID_NAME, &name, -1); if (strcmp(name, resv_ptr->name)) { /* Bad pointer */ sview_resv_info->iter_set = false; //g_print("bad resv iter pointer\n"); } g_free(name); } if (sview_resv_info->iter_set) { _update_resv_record(sview_resv_info, GTK_TREE_STORE(model)); } else { GtkTreePath *path = gtk_tree_path_new_first(); /* get the iter, or find out the list is empty * goto add */ if (gtk_tree_model_get_iter( model, &sview_resv_info->iter_ptr, path)) { do { /* search for the jobid and check to see if it is in the list */ gtk_tree_model_get( model, &sview_resv_info->iter_ptr, SORTID_NAME, &name, -1); if (!strcmp(name, resv_ptr->name)) { /* update with new info */ g_free(name); _update_resv_record( sview_resv_info, GTK_TREE_STORE(model)); sview_resv_info->iter_set = 1; break; } g_free(name); } while (gtk_tree_model_iter_next( model, &sview_resv_info->iter_ptr)); } if (!sview_resv_info->iter_set) { _append_resv_record(sview_resv_info, GTK_TREE_STORE(model)); sview_resv_info->iter_set = true; } gtk_tree_path_free(path); } } list_iterator_destroy(itr); /* remove all old reservations */ remove_old(model, SORTID_UPDATED); last_model = model; }
static void _update_info_block(List block_list, GtkTreeView *tree_view) { ListIterator itr; sview_block_info_t *block_ptr = NULL; GtkTreePath *path = gtk_tree_path_new_first(); GtkTreeModel *model = gtk_tree_view_get_model(tree_view); GtkTreeIter iter; char *name = NULL; char *host = NULL; int line = 0; if (!block_list) { g_print("No block_list given"); return; } /* get the iter, or find out the list is empty goto add */ if (gtk_tree_model_get_iter(model, &iter, path)) { /* make sure all the partitions are still here */ while (1) { gtk_tree_store_set(GTK_TREE_STORE(model), &iter, SORTID_UPDATED, 0, -1); if (!gtk_tree_model_iter_next(model, &iter)) { break; } } } /* Report the BG Blocks */ itr = list_iterator_create(block_list); while ((block_ptr = (sview_block_info_t*) list_next(itr))) { if (block_ptr->cnode_cnt == 0) block_ptr->cnode_cnt = block_ptr->size; if (!block_ptr->slurm_part_name) block_ptr->slurm_part_name = xstrdup("no part"); /* get the iter, or find out the list is empty goto add */ if (!gtk_tree_model_get_iter(model, &iter, path)) { goto adding; } line = 0; while (1) { /* search for the jobid and check to see if it is in the list */ gtk_tree_model_get(model, &iter, SORTID_BLOCK, &name, -1); if (!strcmp(name, block_ptr->bg_block_name)) { /* update with new info */ g_free(name); _update_block_record(block_ptr, GTK_TREE_STORE(model), &iter); goto found; } g_free(name); line++; if (!gtk_tree_model_iter_next(model, &iter)) { break; } } adding: _append_block_record(block_ptr, GTK_TREE_STORE(model), &iter, line); found: ; } list_iterator_destroy(itr); if (host) free(host); gtk_tree_path_free(path); /* remove all old blocks */ remove_old(model, SORTID_UPDATED); }