View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002049 | gnunet-gtk | gnunet-fs-gtk | public | 2011-12-30 02:17 | 2012-02-28 11:06 |
Reporter | LRN | Assigned To | LRN | ||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Product Version | Git master | ||||
Target Version | 0.9.2 | Fixed in Version | 0.9.2 | ||
Summary | 0002049: [patch] UTF8ize GNUnet-gtk | ||||
Description | This is one of the UTF8ization patches. Other patches are for other libraries (plibc, libextractor, GNUnet core). The attached patch removes most of the code that was previously submitted by me to establish a UTF-8<->locale-dependent-encoding border between GNUnet-GTK and GNUnet daemon. Only LE-originated data is still not trusted to be UTF-8-encoded. | ||||
Tags | No tags attached. | ||||
Attached Files | 0001-Assume-UTF-8-remove-loc-conversion-except-for-Extrac.patch (15,504 bytes)
From 1a81a48bb8a1a355ebd227301759a993b9efc5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D1=83=D1=81=D0=BB=D0=B0=D0=BD=20=D0=98=D0=B6=D0=B1=D1?= =?UTF-8?q?=83=D0=BB=D0=B0=D1=82=D0=BE=D0=B2?= <lrn1986@gmail.com> Date: Tue, 27 Dec 2011 15:46:54 +0400 Subject: [PATCH 1/4] Assume UTF-8 (remove loc-conversion), except for Extractor-produced data --- src/fs/gnunet-fs-gtk-common.c | 6 ++-- src/fs/gnunet-fs-gtk-download.c | 9 +---- src/fs/gnunet-fs-gtk-event_handler.c | 10 +----- src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c | 7 +--- .../gnunet-fs-gtk-main_window_create_pseudonym.c | 7 +--- src/fs/gnunet-fs-gtk-main_window_file_publish.c | 33 +++++-------------- src/fs/gnunet-fs-gtk-main_window_open_directory.c | 9 ++--- 7 files changed, 22 insertions(+), 59 deletions(-) diff --git a/src/fs/gnunet-fs-gtk-common.c b/src/fs/gnunet-fs-gtk-common.c index 4d41684..c4058cd 100644 --- a/src/fs/gnunet-fs-gtk-common.c +++ b/src/fs/gnunet-fs-gtk-common.c @@ -60,9 +60,9 @@ GNUNET_FS_GTK_dubious_meta_to_utf8 (enum EXTRACTOR_MetaFormat format, if (format == EXTRACTOR_METAFORMAT_C_STRING) { if (data_len > 0) - { /* There are no guarantees that data is NULL-terminated, AFAIU, - * so let's play it safe, shall we? - */ + { /* There are no guarantees that data is NULL-terminated, AFAIU, + * so let's play it safe, shall we? + */ char *data_copy = GNUNET_malloc (data_len + 1); memcpy (data_copy, data, data_len); diff --git a/src/fs/gnunet-fs-gtk-download.c b/src/fs/gnunet-fs-gtk-download.c index ee6b192..84b8e46 100644 --- a/src/fs/gnunet-fs-gtk-download.c +++ b/src/fs/gnunet-fs-gtk-download.c @@ -74,7 +74,7 @@ GNUNET_GTK_save_as_dialog_delete_event_cb (GtkWidget * widget, GdkEvent * event, } GNUNET_free_non_null (dc->filename); dc->filename = - GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (dlc->dialog)); + GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (dlc->dialog)); dc->is_recursive = (TRUE == gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cb))) ? GNUNET_YES : @@ -177,12 +177,7 @@ GNUNET_FS_GTK_open_download_as_dialog (struct DownloadContext *dc) strcat (buf, DIR_SEPARATOR_STR); strcat (buf, dc->filename); } - buf_utf8 = GNUNET_GTK_from_loc_to_utf8 (buf); - if (buf_utf8 != NULL) - { - gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (ad), buf_utf8); - GNUNET_free (buf_utf8); - } + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (ad), buf); } } dlc = g_new0 (struct dialog_context, 1); diff --git a/src/fs/gnunet-fs-gtk-event_handler.c b/src/fs/gnunet-fs-gtk-event_handler.c index ac734af..46ab20e 100644 --- a/src/fs/gnunet-fs-gtk-event_handler.c +++ b/src/fs/gnunet-fs-gtk-event_handler.c @@ -546,7 +546,6 @@ setup_download (struct DownloadEntry *de, struct DownloadEntry *pde, GtkTreeIter iter; GtkTreePath *path; struct SearchResult *srp; - gchar *filename_utf8; if (de == NULL) { @@ -586,15 +585,13 @@ setup_download (struct DownloadEntry *de, struct DownloadEntry *pde, return de; } gtk_tree_path_free (path); - filename_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) filename); gtk_tree_store_set (de->ts, &iter, 4, (guint) ((size > 0) ? (100 * completed / size) : 100) /* progress */ , - 6, filename_utf8 /* filename/description */ , + 6, filename /* filename/description */ , 8, "blue" /* status colour: pending */ , -1); - GNUNET_free_non_null (filename_utf8); return de; } @@ -1637,7 +1634,6 @@ setup_publish (struct GNUNET_FS_PublishContext *pc, const char *fn, GtkWidget *close_button; GtkNotebook *notebook; char *size_fancy; - char *fn_utf8 = NULL; if (NULL == parent) { @@ -1705,12 +1701,10 @@ setup_publish (struct GNUNET_FS_PublishContext *pc, const char *fn, ent = GNUNET_malloc (sizeof (struct PublishEntry)); ent->is_top = (parent == NULL) ? GNUNET_YES : GNUNET_NO; ent->tab = publish_tab; - fn_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) fn); gtk_tree_store_insert_with_values (publish_tab->ts, &iter, pitrptr, G_MAXINT, - 0, fn_utf8, 1, size_fancy, 2, "white", 3, + 0, fn, 1, size_fancy, 2, "white", 3, (guint) 0 /* progress */ , 4, ent, -1); - GNUNET_free_non_null (fn_utf8); path = gtk_tree_model_get_path (GTK_TREE_MODEL (publish_tab->ts), &iter); GNUNET_assert (NULL != path); ent->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (publish_tab->ts), path); diff --git a/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c b/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c index d429694..d538239 100644 --- a/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c +++ b/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c @@ -49,15 +49,10 @@ add_to_list (void *cls, const char *name, const GNUNET_HashCode * id) { GtkListStore *ls = cls; GtkTreeIter iter; - char *name_utf8; - - name_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) name); - - gtk_list_store_insert_with_values (ls, &iter, -1, 0, name_utf8, 1, + gtk_list_store_insert_with_values (ls, &iter, -1, 0, name, 1, GNUNET_FS_namespace_create (GNUNET_FS_GTK_get_fs_handle (), name), -1); - GNUNET_free_non_null (name_utf8); } diff --git a/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c b/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c index dfa62bb..996b6ad 100644 --- a/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c +++ b/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c @@ -32,7 +32,6 @@ GNUNET_GTK_create_namespace_dialog_response_cb (GtkDialog * dialog, gpointer user_data) { const char *name; - gchar *name_loc; struct GNUNET_FS_Namespace *ns; GtkWidget *ad; GtkBuilder *builder; @@ -53,12 +52,10 @@ GNUNET_GTK_create_namespace_dialog_response_cb (GtkDialog * dialog, (builder, "GNUNET_GTK_create_namespace_name_entry"))); /* FIXME: show busy dialog while doing key creation */ - name_loc = GNUNET_GTK_from_utf8_to_loc ((char *) name); - if (NULL != name_loc) + if (NULL != name) { - ns = GNUNET_FS_namespace_create (GNUNET_FS_GTK_get_fs_handle (), name_loc); + ns = GNUNET_FS_namespace_create (GNUNET_FS_GTK_get_fs_handle (), name); GNUNET_FS_namespace_delete (ns, GNUNET_NO); - GNUNET_free (name_loc); } gtk_widget_destroy (ad); g_object_unref (G_OBJECT (builder)); diff --git a/src/fs/gnunet-fs-gtk-main_window_file_publish.c b/src/fs/gnunet-fs-gtk-main_window_file_publish.c index d214d5f..9bda67c 100644 --- a/src/fs/gnunet-fs-gtk-main_window_file_publish.c +++ b/src/fs/gnunet-fs-gtk-main_window_file_publish.c @@ -205,7 +205,6 @@ add_file_at_iter (gpointer data, const char *filename, GtkTreePath *path; uint64_t file_size; const char *short_fn; - char *short_fn_utf8; struct GNUNET_CONTAINER_MetaData *meta; struct GNUNET_FS_Uri *ksk_uri; GtkTreeStore *ts; @@ -243,11 +242,10 @@ add_file_at_iter (gpointer data, const char *filename, short_fn = filename; while (NULL != (ss = strstr (short_fn, DIR_SEPARATOR_STR))) short_fn = 1 + ss; - short_fn_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) short_fn); GNUNET_CONTAINER_meta_data_insert (meta, "<gnunet-gtk>", EXTRACTOR_METATYPE_FILENAME, EXTRACTOR_METAFORMAT_UTF8, "text/plain", - short_fn_utf8, strlen (short_fn_utf8) + 1); + short_fn, strlen (short_fn) + 1); ksk_uri = GNUNET_FS_uri_ksk_create_from_meta_data (meta); gtk_tree_store_insert_before (ts, &pos, iter, NULL); path = gtk_tree_model_get_path (GTK_TREE_MODEL (ts), &pos); @@ -264,9 +262,8 @@ add_file_at_iter (gpointer data, const char *filename, else file_size_fancy = GNUNET_STRINGS_byte_size_fancy (file_size); gtk_tree_store_set (ts, &pos, 0, file_size_fancy, 1, (gboolean) do_index, 2, - short_fn_utf8, 3, (guint) bo->anonymity_level, 4, + short_fn, 3, (guint) bo->anonymity_level, 4, (guint) bo->content_priority, 5, fi, -1); - GNUNET_free_non_null (short_fn_utf8); GNUNET_free (file_size_fancy); update_selectivity (data); } @@ -503,7 +500,6 @@ extract_file (struct AddDirContext *adc, const char *filename) GNUNET_HashCode hc; const char *short_fn; const char *ss; - char *short_fn_utf8; adc->dir_entry_count++; pd = GNUNET_malloc (sizeof (struct PublishData)); @@ -515,12 +511,10 @@ extract_file (struct AddDirContext *adc, const char *filename) short_fn = filename; while (NULL != (ss = strstr (short_fn, DIR_SEPARATOR_STR))) short_fn = 1 + ss; - short_fn_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) short_fn); GNUNET_CONTAINER_meta_data_insert (pd->meta, "<gnunet-gtk>", EXTRACTOR_METATYPE_FILENAME, EXTRACTOR_METAFORMAT_UTF8, "text/plain", - short_fn, strlen (short_fn_utf8) + 1); - GNUNET_free_non_null (short_fn_utf8); + short_fn, strlen (short_fn) + 1); gtk_tree_store_insert_before (adc->ts, &pd->iter, adc->parent, NULL); GNUNET_CRYPTO_hash (filename, strlen (filename), &hc); @@ -577,7 +571,6 @@ add_entry_to_ts (GtkTreeStore * ts, GtkTreeIter * iter, const char *filename, struct GNUNET_FS_Uri *kill_ksk; const char *ss; const char *short_fn; - char *short_fn_utf8; struct stat sbuf; if (0 != STAT (filename, &sbuf)) @@ -629,11 +622,9 @@ add_entry_to_ts (GtkTreeStore * ts, GtkTreeIter * iter, const char *filename, short_fn = filename; while (NULL != (ss = strstr (short_fn, DIR_SEPARATOR_STR))) short_fn = 1 + ss; - short_fn_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) short_fn); gtk_tree_store_set (ts, iter, 0, file_size_fancy, 1, (gboolean) do_index, 2, - short_fn_utf8, 3, (guint) bo->anonymity_level, 4, + short_fn, 3, (guint) bo->anonymity_level, 4, (guint) bo->content_priority, 5, fi, -1); - GNUNET_free_non_null (short_fn_utf8); GNUNET_free (file_size_fancy); } @@ -778,7 +769,6 @@ scan_directory (void *cls, const char *filename) } else { - char *filename_utf8; const char *ss, *short_fn; GNUNET_assert (mcm == NULL); @@ -786,13 +776,11 @@ scan_directory (void *cls, const char *filename) short_fn = filename; while (NULL != (ss = strstr (short_fn, DIR_SEPARATOR_STR))) short_fn = 1 + ss; - filename_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) short_fn); GNUNET_CONTAINER_meta_data_insert (pd->meta, "<gnunet-gtk>", EXTRACTOR_METATYPE_FILENAME, EXTRACTOR_METAFORMAT_UTF8, - "text/plain", filename_utf8, - strlen (filename_utf8) + 1); - GNUNET_free_non_null (filename_utf8); + "text/plain", filename, + strlen (filename) + 1); add_entry_to_ts (adc->ts, &pd->iter, filename, &adc->bo, adc->do_index, NULL, pd->meta); } @@ -1390,7 +1378,7 @@ GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog * dialog, (builder, "GNUNET_GTK_publish_directory_dialog")); if (response_id == -5) { - filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad)); + filename = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (ad)); sb = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "GNUNET_GTK_publish_directory_dialog_expiration_year_spin_button")); @@ -1613,15 +1601,13 @@ add_namespace_to_ts (void *cls, const char *name, const GNUNET_HashCode * id) GtkTreeStore *ts = cls; struct UpdateableContext uc; GtkTreeIter iter; - gchar *name_utf8; uc.parent = &iter; uc.namespace_name = name; uc.ts = ts; uc.ns = GNUNET_FS_namespace_create (GNUNET_FS_GTK_get_fs_handle (), name); uc.update_called = GNUNET_NO; - name_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) name); - gtk_tree_store_insert_with_values (ts, &iter, NULL, G_MAXINT, 0, name_utf8, 1, + gtk_tree_store_insert_with_values (ts, &iter, NULL, G_MAXINT, 0, name, 1, uc.ns, 2, NULL /* last-id */ , 3, NULL /* last-uri (as string!) */ , 4, NULL /* meta */ , @@ -1630,7 +1616,6 @@ add_namespace_to_ts (void *cls, const char *name, const GNUNET_HashCode * id) 7, TRUE /* update editable */ , 8, TRUE /* current editable */ , -1); - GNUNET_free_non_null (name_utf8); uc.seen = GNUNET_CONTAINER_multihashmap_create (128); GNUNET_FS_namespace_list_updateable (uc.ns, NULL, &add_updateable_to_ts, &uc); GNUNET_CONTAINER_multihashmap_destroy (uc.seen); @@ -1853,7 +1838,7 @@ GNUNET_GTK_publish_file_dialog_response_cb (GtkDialog * dialog, (builder, "GNUNET_GTK_publish_file_dialog_do_index_checkbutton"))); - filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad)); + filename = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (ad)); add_file_at_iter (user_data, filename, &bo, do_index, NULL); g_free (filename); update_selectivity (user_data); diff --git a/src/fs/gnunet-fs-gtk-main_window_open_directory.c b/src/fs/gnunet-fs-gtk-main_window_open_directory.c index 094ef67..bf28109 100644 --- a/src/fs/gnunet-fs-gtk-main_window_open_directory.c +++ b/src/fs/gnunet-fs-gtk-main_window_open_directory.c @@ -92,7 +92,7 @@ GNUNET_GTK_open_directory_dialog_response_cb (GtkDialog * dialog, { GtkBuilder *builder; GtkWidget *ad; - char *filename, *filename_utf8; + char *filename; struct AddChildContext acc; builder = GTK_BUILDER (user_data); @@ -106,15 +106,12 @@ GNUNET_GTK_open_directory_dialog_response_cb (GtkDialog * dialog, return; } - filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad)); - filename_utf8 = - GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (ad)); + filename = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (ad)); gtk_widget_destroy (ad); g_object_unref (G_OBJECT (builder)); - acc.filename = filename_utf8; + acc.filename = filename; acc.ts = NULL; GNUNET_FS_GTK_mmap_and_scan (filename, &add_child, &acc); - g_free (filename_utf8); g_free (filename); } -- 1.7.4 | ||||
Date Modified | Username | Field | Change |
---|---|---|---|
2011-12-30 02:17 | LRN | New Issue | |
2011-12-30 02:17 | LRN | File Added: 0001-Assume-UTF-8-remove-loc-conversion-except-for-Extrac.patch | |
2011-12-31 00:16 | Christian Grothoff | Summary | UTF8ize GNUnet-gtk => [patch] UTF8ize GNUnet-gtk |
2011-12-31 00:45 | Christian Grothoff | Note Added: 0005225 | |
2011-12-31 00:45 | Christian Grothoff | Status | new => resolved |
2011-12-31 00:45 | Christian Grothoff | Fixed in Version | => 0.9.2 |
2011-12-31 00:45 | Christian Grothoff | Resolution | open => fixed |
2011-12-31 00:45 | Christian Grothoff | Assigned To | => LRN |
2011-12-31 00:46 | Christian Grothoff | Target Version | => 0.9.2 |
2012-02-28 11:06 | Christian Grothoff | Status | resolved => closed |