From 6fa064ec623e294ed61e050a2df12fc2cd6612a1 Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Tue, 8 Jun 2004 03:27:03 +0000 Subject: [PATCH] Fixes #140532. 2004-06-07 Federico Mena Quintero Fixes #140532. * glib/gconvert.c (is_asciialphanum): Renamed from is_escalphanum(); ensures that this is an ASCII character. (is_asciiescalpha): Renamed from is_escalpha(). (hostname_validate): Use the two functions above. (g_filename_to_uri): Don't convert the filename to UTF-8. (g_filename_from_uri): Don't convert the filename from UTF-8. --- ChangeLog | 11 +++++++++++ ChangeLog.pre-2-10 | 11 +++++++++++ ChangeLog.pre-2-12 | 11 +++++++++++ ChangeLog.pre-2-6 | 11 +++++++++++ ChangeLog.pre-2-8 | 11 +++++++++++ glib/gconvert.c | 38 +++++++++++++++----------------------- 6 files changed, 70 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1662c0465..b4d31360e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2004-06-07 Federico Mena Quintero + + Fixes #140532. + + * glib/gconvert.c (is_asciialphanum): Renamed from + is_escalphanum(); ensures that this is an ASCII character. + (is_asciiescalpha): Renamed from is_escalpha(). + (hostname_validate): Use the two functions above. + (g_filename_to_uri): Don't convert the filename to UTF-8. + (g_filename_from_uri): Don't convert the filename from UTF-8. + Mon Jun 7 22:25:24 2004 Matthias Clasen * tests/run-markup-tests.sh: Default to silence, but support diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 1662c0465..b4d31360e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,14 @@ +2004-06-07 Federico Mena Quintero + + Fixes #140532. + + * glib/gconvert.c (is_asciialphanum): Renamed from + is_escalphanum(); ensures that this is an ASCII character. + (is_asciiescalpha): Renamed from is_escalpha(). + (hostname_validate): Use the two functions above. + (g_filename_to_uri): Don't convert the filename to UTF-8. + (g_filename_from_uri): Don't convert the filename from UTF-8. + Mon Jun 7 22:25:24 2004 Matthias Clasen * tests/run-markup-tests.sh: Default to silence, but support diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 1662c0465..b4d31360e 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,14 @@ +2004-06-07 Federico Mena Quintero + + Fixes #140532. + + * glib/gconvert.c (is_asciialphanum): Renamed from + is_escalphanum(); ensures that this is an ASCII character. + (is_asciiescalpha): Renamed from is_escalpha(). + (hostname_validate): Use the two functions above. + (g_filename_to_uri): Don't convert the filename to UTF-8. + (g_filename_from_uri): Don't convert the filename from UTF-8. + Mon Jun 7 22:25:24 2004 Matthias Clasen * tests/run-markup-tests.sh: Default to silence, but support diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 1662c0465..b4d31360e 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,14 @@ +2004-06-07 Federico Mena Quintero + + Fixes #140532. + + * glib/gconvert.c (is_asciialphanum): Renamed from + is_escalphanum(); ensures that this is an ASCII character. + (is_asciiescalpha): Renamed from is_escalpha(). + (hostname_validate): Use the two functions above. + (g_filename_to_uri): Don't convert the filename to UTF-8. + (g_filename_from_uri): Don't convert the filename from UTF-8. + Mon Jun 7 22:25:24 2004 Matthias Clasen * tests/run-markup-tests.sh: Default to silence, but support diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 1662c0465..b4d31360e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,14 @@ +2004-06-07 Federico Mena Quintero + + Fixes #140532. + + * glib/gconvert.c (is_asciialphanum): Renamed from + is_escalphanum(); ensures that this is an ASCII character. + (is_asciiescalpha): Renamed from is_escalpha(). + (hostname_validate): Use the two functions above. + (g_filename_to_uri): Don't convert the filename to UTF-8. + (g_filename_from_uri): Don't convert the filename from UTF-8. + Mon Jun 7 22:25:24 2004 Matthias Clasen * tests/run-markup-tests.sh: Default to silence, but support diff --git a/glib/gconvert.c b/glib/gconvert.c index 06a6ca2ce..e16ba1e41 100644 --- a/glib/gconvert.c +++ b/glib/gconvert.c @@ -1411,15 +1411,15 @@ g_unescape_uri_string (const char *escaped, } static gboolean -is_escalphanum (gunichar c) +is_asciialphanum (gunichar c) { - return c > 0x7F || g_ascii_isalnum (c); + return c <= 0x7F && g_ascii_isalnum (c); } static gboolean -is_escalpha (gunichar c) +is_asciialpha (gunichar c) { - return c > 0x7F || g_ascii_isalpha (c); + return c <= 0x7F && g_ascii_isalpha (c); } /* allows an empty string */ @@ -1437,7 +1437,7 @@ hostname_validate (const char *hostname) /* read in a label */ c = g_utf8_get_char (p); p = g_utf8_next_char (p); - if (!is_escalphanum (c)) + if (!is_asciialphanum (c)) return FALSE; first_char = c; do @@ -1446,13 +1446,13 @@ hostname_validate (const char *hostname) c = g_utf8_get_char (p); p = g_utf8_next_char (p); } - while (is_escalphanum (c) || c == '-'); + while (is_asciialphanum (c) || c == '-'); if (last_char == '-') return FALSE; /* if that was the last label, check that it was a toplabel */ if (c == '\0' || (c == '.' && *p == '\0')) - return is_escalpha (first_char); + return is_asciialpha (first_char); } while (c == '.'); return FALSE; @@ -1460,14 +1460,14 @@ hostname_validate (const char *hostname) /** * g_filename_from_uri: - * @uri: a uri describing a filename (escaped, encoded in UTF-8). + * @uri: a uri describing a filename (escaped, encoded in ASCII). * @hostname: Location to store hostname for the URI, or %NULL. * If there is no hostname in the URI, %NULL will be * stored in this location. * @error: location to store the error occuring, or %NULL to ignore * errors. Any of the errors in #GConvertError may occur. * - * Converts an escaped UTF-8 encoded URI to a local filename in the + * Converts an escaped ASCII-encoded URI to a local filename in the * encoding used for filenames. * * Return value: a newly-allocated string holding the resulting @@ -1587,10 +1587,10 @@ g_filename_from_uri (const gchar *uri, } } #endif - - result = g_filename_from_utf8 (filename + offs, -1, NULL, NULL, error); + + result = g_strdup (filename + offs); g_free (filename); - + return result; } @@ -1602,7 +1602,7 @@ g_filename_from_uri (const gchar *uri, * @error: location to store the error occuring, or %NULL to ignore * errors. Any of the errors in #GConvertError may occur. * - * Converts an absolute filename to an escaped UTF-8 encoded URI. + * Converts an absolute filename to an escaped ASCII-encoded URI. * * Return value: a newly-allocated string holding the resulting * URI, or %NULL on an error. @@ -1613,7 +1613,6 @@ g_filename_to_uri (const gchar *filename, GError **error) { char *escaped_uri; - char *utf8_filename; g_return_val_if_fail (filename != NULL, NULL); @@ -1634,20 +1633,13 @@ g_filename_to_uri (const gchar *filename, return NULL; } - utf8_filename = g_filename_to_utf8 (filename, -1, NULL, NULL, error); - if (utf8_filename == NULL) - return NULL; - #ifdef G_OS_WIN32 /* Don't use localhost unnecessarily */ if (hostname && g_ascii_strcasecmp (hostname, "localhost") == 0) hostname = NULL; #endif - escaped_uri = g_escape_file_uri (hostname, - utf8_filename); - g_free (utf8_filename); - + escaped_uri = g_escape_file_uri (hostname, filename); + return escaped_uri; } -