From a6a3257ce715d1e88f656b29def443829af1967d Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Fri, 5 Mar 2004 00:29:00 +0000 Subject: Replace filename validity check, it was making the filename invalid 2004-03-05 Christian Persch * embed/mozilla/EphyHeaderSniffer.cpp: Replace filename validity check, it was making the filename invalid UTF-16. Simply convert to UTF-8 beforehand and check for "/" chars. --- ChangeLog | 7 +++++++ embed/mozilla/EphyHeaderSniffer.cpp | 17 +++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8808291ff..d944a0226 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-03-05 Christian Persch + + * embed/mozilla/EphyHeaderSniffer.cpp: + + Replace filename validity check, it was making the filename invalid + UTF-16. Simply convert to UTF-8 beforehand and check for "/" chars. + 2004-03-05 Christian Persch * src/ephy-tab.c: (ephy_tab_address_cb), (ephy_tab_title_cb), diff --git a/embed/mozilla/EphyHeaderSniffer.cpp b/embed/mozilla/EphyHeaderSniffer.cpp index 80eca4174..68e51ca6c 100644 --- a/embed/mozilla/EphyHeaderSniffer.cpp +++ b/embed/mozilla/EphyHeaderSniffer.cpp @@ -332,26 +332,23 @@ nsresult EphyHeaderSniffer::PerformSave (nsIURI* inOriginalURI) } /* Validate the file name to ensure legality. */ - for (PRUint32 i = 0; i < defaultFileName.Length(); i++) - { - if (defaultFileName[i] == ':' || defaultFileName[i] == '/') - { - defaultFileName.SetCharAt(i, PRUnichar(' ')); - } - } + char *default_name = g_strdup (NS_ConvertUCS2toUTF8 (defaultFileName).get()); + default_name = g_strdelimit (default_name, "/", ' '); const char *key; key = ephy_embed_persist_get_persist_key (EPHY_EMBED_PERSIST (mEmbedPersist)); char *filename; - filename = gnome_vfs_unescape_string (NS_ConvertUCS2toUTF8 (defaultFileName).get(), NULL); - + filename = gnome_vfs_unescape_string (default_name, NULL); + if (!g_utf8_validate (filename, -1, NULL)) { g_free (filename); - filename = g_strdup (NS_ConvertUCS2toUTF8(defaultFileName).get()); + filename = g_strdup (default_name); } + g_free (default_name); + if (askDownloadDest) { EphyFileChooser *dialog; -- cgit v1.2.3