summaryrefslogtreecommitdiff
path: root/riscos/gui.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2011-10-05 08:32:52 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2011-10-05 08:32:52 +0000
commitd5bb9d98e7f98f0c3d706197231d58c4369d6b56 (patch)
tree8bf4f0941f6b48ced521004d0cb929ed69521dcf /riscos/gui.c
parenta25f87a739943312b0a0ffa3943b584fd8265102 (diff)
downloadnetsurf-d5bb9d98e7f98f0c3d706197231d58c4369d6b56.tar.gz
netsurf-d5bb9d98e7f98f0c3d706197231d58c4369d6b56.tar.bz2
Build resource: map at start time
Remove stylesheet url globals -- the core will always use resource:{default,quirks,adblock}.css as appropriate svn path=/trunk/netsurf/; revision=12949
Diffstat (limited to 'riscos/gui.c')
-rw-r--r--riscos/gui.c70
1 files changed, 37 insertions, 33 deletions
diff --git a/riscos/gui.c b/riscos/gui.c
index e39538c8d..9a6494c3e 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -169,10 +169,6 @@ extern int __dynamic_num;
const char * NETSURF_DIR;
-char *default_stylesheet_url;
-char *quirks_stylesheet_url;
-char *adblock_stylesheet_url;
-
static const char *task_name = "NetSurf";
#define CHOICES_PREFIX "<Choices$Write>.WWW.NetSurf."
@@ -285,31 +281,50 @@ static void ro_msg_save_desktop(wimp_message *message);
static void ro_msg_window_info(wimp_message *message);
static void ro_gui_view_source_bounce(wimp_message *message);
-char* gui_get_resource_url(const char *filename)
+nsurl *gui_get_resource_url(const char *path)
{
- const char base_url[] = "file:///NetSurf:/Resources/";
- size_t filename_len = strlen(filename);
+ static const char base_url[] = "file:///NetSurf:/Resources/";
+ size_t path_len, length;
+ char *raw;
+ nsurl *url = NULL;
- /* Find max URL length */
- size_t length = SLEN(base_url) + SLEN("xx/") + filename_len + 1;
+ /* Map paths first */
+ if (strcmp(path, "adblock.css") == 0)
+ path = "AdBlock";
+ else if (strcmp(path, "default.css") == 0)
+ path = "CSS";
+ else if (strcmp(path, "quirks.css") == 0)
+ path = "Quirks";
- /* Allocate memory for URL (will be owned and freed by the core) */
- char *resource_url = malloc(length);
- if (resource_url == NULL)
- return NULL;
+ path_len = strlen(path);
+
+ /* Find max URL length */
+ length = SLEN(base_url) + SLEN("xx/") + path_len + 1;
+
+ raw = malloc(length);
+ if (raw != NULL) {
+ /* Insert base URL */
+ char *ptr = memcpy(raw, base_url, SLEN(base_url));
+ ptr += SLEN(base_url);
+
+ /* Add language directory to URL, for translated files */
+ /* TODO: handle non-en langauages
+ * handle non-html translated files */
+ if (path_len > SLEN(".html") &&
+ strncmp(path + path_len - SLEN(".html"),
+ ".html", SLEN(".html")) == 0) {
+ memcpy(ptr, "en/", SLEN("en/"));
+ ptr += SLEN("en/");
+ }
- /* Insert base URL */
- resource_url = strcpy(resource_url, base_url);
+ /* Add filename to URL */
+ memcpy(ptr, path, path_len);
- /* Add language directory to URL, for translated files */
- /* TODO: handle non-en langauages
- * handle non-html translated files */
- if (strncmp(filename + filename_len - 5, ".html", 5) == 0) {
- resource_url = strcat(resource_url, "en/");
+ nsurl_create(raw, &url);
+ free(raw);
}
- /* Add filename to URL */
- return strcat(resource_url, filename);
+ return url;
}
/**
@@ -429,14 +444,6 @@ static void gui_init(int argc, char** argv)
if (!NETSURF_DIR)
die("Failed duplicating NetSurf directory string");
- /* Initialise stylesheet URLs */
- default_stylesheet_url = strdup("resource:CSS");
- quirks_stylesheet_url = strdup("resource:Quirks");
- adblock_stylesheet_url = strdup("resource:AdBlock");
- if (!default_stylesheet_url || !quirks_stylesheet_url ||
- !adblock_stylesheet_url)
- die("Failed initialising string constants.");
-
/* Initialise filename allocator */
filename_initialise();
@@ -823,9 +830,6 @@ void gui_quit(void)
rufl_quit();
free(gui_sprites);
xwimp_close_down(task_handle);
- free(default_stylesheet_url);
- free(quirks_stylesheet_url);
- free(adblock_stylesheet_url);
xhourglass_off();
}