diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2011-10-05 08:32:52 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2011-10-05 08:32:52 +0000 |
commit | d5bb9d98e7f98f0c3d706197231d58c4369d6b56 (patch) | |
tree | 8bf4f0941f6b48ced521004d0cb929ed69521dcf /riscos/gui.c | |
parent | a25f87a739943312b0a0ffa3943b584fd8265102 (diff) | |
download | netsurf-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.c | 70 |
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(); } |