[gnome-shell] st: Canonicalize URLs in stylesheets
- From: Florian MÃllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] st: Canonicalize URLs in stylesheets
- Date: Wed, 17 Oct 2012 21:58:34 +0000 (UTC)
commit 15273c7f22d241e2bcf3b757c0008e352c51d098
Author: Florian MÃllner <fmuellner gnome org>
Date: Wed Oct 17 22:28:01 2012 +0200
st: Canonicalize URLs in stylesheets
Make _st_theme_resolve_url() a bit smarter by canonicalizing the
resulting path (e.g. resolving references to /./ and /../).
https://bugzilla.gnome.org/show_bug.cgi?id=679268
src/st/st-theme.c | 27 ++++++++++++++++++++++++++-
1 files changed, 26 insertions(+), 1 deletions(-)
---
diff --git a/src/st/st-theme.c b/src/st/st-theme.c
index f3b1c13..77076c0 100644
--- a/src/st/st-theme.c
+++ b/src/st/st-theme.c
@@ -1018,6 +1018,7 @@ _st_theme_resolve_url (StTheme *theme,
const char *base_filename = NULL;
char *dirname;
char *filename;
+ char *canonicalized_path;
/* Handle absolute file:/ URLs */
if (g_str_has_prefix (url, "file:") ||
@@ -1050,7 +1051,19 @@ _st_theme_resolve_url (StTheme *theme,
/* Assume anything else is a relative URL, and "resolve" it
*/
if (url[0] == '/')
- return g_strdup (url);
+ {
+ canonicalized_path = realpath (url, NULL);
+ if (g_mem_is_system_malloc ())
+ {
+ filename = canonicalized_path;
+ }
+ else
+ {
+ filename = g_strdup (canonicalized_path);
+ free (canonicalized_path);
+ }
+ return filename;
+ }
base_filename = g_hash_table_lookup (theme->filenames_by_stylesheet, base_stylesheet);
@@ -1062,7 +1075,19 @@ _st_theme_resolve_url (StTheme *theme,
dirname = g_path_get_dirname (base_filename);
filename = g_build_filename (dirname, url, NULL);
+ canonicalized_path = realpath (filename, NULL);
g_free (dirname);
+ g_free (filename);
+
+ if (g_mem_is_system_malloc ())
+ {
+ filename = canonicalized_path;
+ }
+ else
+ {
+ filename = g_strdup (canonicalized_path);
+ free (canonicalized_path);
+ }
return filename;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]