aboutsummaryrefslogtreecommitdiff
path: root/src/gns/gnunet-gns-gtk_zone.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gns/gnunet-gns-gtk_zone.c')
-rw-r--r--src/gns/gnunet-gns-gtk_zone.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/gns/gnunet-gns-gtk_zone.c b/src/gns/gnunet-gns-gtk_zone.c
index 25d2982d..08748ce6 100644
--- a/src/gns/gnunet-gns-gtk_zone.c
+++ b/src/gns/gnunet-gns-gtk_zone.c
@@ -93,7 +93,7 @@ check_name_validity_and_commit_remove_proc (void *cls,
93} 93}
94 94
95static void 95static void
96check_name_validity_and_commit (struct GNUNET_GNS_Context *gns, gchar *path) 96check_name_validity_and_commit (struct GNUNET_GNS_Context *gns, gchar *path, char * oldname)
97{ 97{
98 GtkTreeIter it; 98 GtkTreeIter it;
99 GtkTreeIter parent; 99 GtkTreeIter parent;
@@ -255,7 +255,10 @@ check_name_validity_and_commit (struct GNUNET_GNS_Context *gns, gchar *path)
255 uc->rd = rd; 255 uc->rd = rd;
256 uc->rd_count = records; 256 uc->rd_count = records;
257 uc->name = strdup (name); 257 uc->name = strdup (name);
258 GNUNET_NAMESTORE_record_remove(gns->ns, gns->pkey, name, NULL, &check_name_validity_and_commit_remove_proc, uc); 258 if (oldname != NULL)
259 GNUNET_NAMESTORE_record_remove(gns->ns, gns->pkey, oldname, NULL, &check_name_validity_and_commit_remove_proc, uc);
260 else
261 GNUNET_NAMESTORE_record_remove(gns->ns, gns->pkey, name, NULL, &check_name_validity_and_commit_remove_proc, uc);
259 g_free (name); 262 g_free (name);
260 } 263 }
261} 264}
@@ -459,8 +462,6 @@ GNUNET_GNS_GTK_type_cellrenderercombo_changed_cb (GtkCellRendererCombo *combo,
459 462
460 } 463 }
461 GNUNET_free (type_str); 464 GNUNET_free (type_str);
462 GNUNET_free_non_null (name_str);
463
464 465
465 /* check if value is still valid */ 466 /* check if value is still valid */
466 gtk_tree_model_get(gns->tm, &it, TREE_COL_VAL_AS_STR, &value_str, -1); 467 gtk_tree_model_get(gns->tm, &it, TREE_COL_VAL_AS_STR, &value_str, -1);
@@ -484,7 +485,8 @@ GNUNET_GNS_GTK_type_cellrenderercombo_changed_cb (GtkCellRendererCombo *combo,
484 gtk_tree_store_set (gns->ts, &child, TREE_COL_VAL_COLOR, "red", -1); 485 gtk_tree_store_set (gns->ts, &child, TREE_COL_VAL_COLOR, "red", -1);
485 } 486 }
486 487
487 check_name_validity_and_commit (gns, path); 488 check_name_validity_and_commit (gns, path, NULL);
489 GNUNET_free_non_null (name_str);
488} 490}
489 491
490 492
@@ -509,7 +511,7 @@ GNUNET_GNS_GTK_ispublic_cellrenderertoggle_toggled_cb (GtkCellRendererToggle *ce
509 gtk_tree_model_get(gns->tm, &it, TREE_COL_IS_PUBLIC, &value, -1); 511 gtk_tree_model_get(gns->tm, &it, TREE_COL_IS_PUBLIC, &value, -1);
510 gtk_tree_store_set(gns->ts, &it, TREE_COL_IS_PUBLIC, !value, -1); 512 gtk_tree_store_set(gns->ts, &it, TREE_COL_IS_PUBLIC, !value, -1);
511 513
512 check_name_validity_and_commit (gns, path); 514 check_name_validity_and_commit (gns, path, NULL);
513} 515}
514 516
515static 517static
@@ -664,7 +666,7 @@ GNUNET_GNS_GTK_expiration_cellrenderertext_edited_cb (GtkCellRendererText *rende
664 TREE_COL_EXP_TIME, abstime.abs_value, 666 TREE_COL_EXP_TIME, abstime.abs_value,
665 TREE_COL_EXP_TIME_COLOR, NULL, 667 TREE_COL_EXP_TIME_COLOR, NULL,
666 -1); 668 -1);
667 check_name_validity_and_commit (gns, path); 669 check_name_validity_and_commit (gns, path, NULL);
668 } 670 }
669} 671}
670 672
@@ -718,7 +720,7 @@ GNUNET_GNS_GTK_value_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
718 { 720 {
719 gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_COLOR, NULL, -1); 721 gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_COLOR, NULL, -1);
720 gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_AS_STR, new_text, -1); 722 gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_AS_STR, new_text, -1);
721 check_name_validity_and_commit (gns, path); 723 check_name_validity_and_commit (gns, path, NULL);
722 } 724 }
723 else 725 else
724 { 726 {
@@ -749,6 +751,7 @@ GNUNET_GNS_GTK_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
749 GtkTreeIter child; 751 GtkTreeIter child;
750 GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts); 752 GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
751 int not_dummy; 753 int not_dummy;
754 char *name;
752 755
753 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "New text for `%s' is `%s'\n", path, new_text); 756 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "New text for `%s' is `%s'\n", path, new_text);
754 if ((0 == strcmp (new_text, NEW_NAME_STR)) || (0 == strcmp (new_text, ""))) 757 if ((0 == strcmp (new_text, NEW_NAME_STR)) || (0 == strcmp (new_text, "")))
@@ -756,6 +759,7 @@ GNUNET_GNS_GTK_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
756 759
757 gtk_tree_model_get_iter_from_string(tm, &it, path); 760 gtk_tree_model_get_iter_from_string(tm, &it, path);
758 gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1); 761 gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
762 gtk_tree_model_get(tm, &it, TREE_COL_NAME, &name, -1);
759 763
760 if (not_dummy == GNUNET_NO) 764 if (not_dummy == GNUNET_NO)
761 { 765 {
@@ -766,7 +770,7 @@ GNUNET_GNS_GTK_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
766 TREE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR), 770 TREE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
767 TREE_COL_NOT_DUMMY_ROW, GNUNET_YES, 771 TREE_COL_NOT_DUMMY_ROW, GNUNET_YES,
768 -1); 772 -1);
769 check_name_validity_and_commit (gns, gtk_tree_model_get_string_from_iter(gns->tm, &it)); 773 check_name_validity_and_commit (gns, gtk_tree_model_get_string_from_iter(gns->tm, &it), name);
770 774
771 /* add a new dummy line */ 775 /* add a new dummy line */
772 gtk_tree_store_insert_with_values (gns->ts, &it,NULL, 0, 776 gtk_tree_store_insert_with_values (gns->ts, &it,NULL, 0,
@@ -794,7 +798,7 @@ GNUNET_GNS_GTK_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
794 while (TRUE == gtk_tree_model_iter_next (gns->tm, &child)); 798 while (TRUE == gtk_tree_model_iter_next (gns->tm, &child));
795 } 799 }
796 800
797 check_name_validity_and_commit (gns, gtk_tree_model_get_string_from_iter(gns->tm, &it)); 801 check_name_validity_and_commit (gns, gtk_tree_model_get_string_from_iter(gns->tm, &it), name);
798 } 802 }
799 803
800 if (GNUNET_SYSERR == GNUNET_NAMESTORE_check_name (new_text)) 804 if (GNUNET_SYSERR == GNUNET_NAMESTORE_check_name (new_text))