diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2003-06-08 04:00:05 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2003-06-08 04:00:05 +0000 |
commit | bdad21d51ca884918396fa999fc49701086b6c45 (patch) | |
tree | 78ecdfe1533323d863426517a32e54d76471d614 /riscos/gui.c | |
parent | dfdf69fc915968192475ac447b469d7bfa3e23f4 (diff) | |
download | netsurf-bdad21d51ca884918396fa999fc49701086b6c45.tar.gz netsurf-bdad21d51ca884918396fa999fc49701086b6c45.tar.bz2 |
[project @ 2003-06-08 04:00:05 by jmb]
Cope with broken Choices file.
svn path=/import/netsurf/; revision=178
Diffstat (limited to 'riscos/gui.c')
-rw-r--r-- | riscos/gui.c | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/riscos/gui.c b/riscos/gui.c index 87c956fb7..ac6efda03 100644 --- a/riscos/gui.c +++ b/riscos/gui.c @@ -1,5 +1,5 @@ /** - * $Id: gui.c,v 1.30 2003/06/04 18:42:13 jmb Exp $ + * $Id: gui.c,v 1.31 2003/06/08 04:00:05 jmb Exp $ */ #include "netsurf/desktop/options.h" @@ -1104,6 +1104,10 @@ void gui_init(int argc, char** argv) wimp_icon_create iconbar; wimp_version_no version; char theme_fname[256]; + int *varsize; + char *var; + os_error *e; + fileswitch_object_type *ot; /* __riscosify_control = __RISCOSIFY_NO_PROCESS; */ @@ -1119,10 +1123,35 @@ void gui_init(int argc, char** argv) strcpy(iconbar.icon.data.sprite, "!netsurf"); ro_gui_iconbar_i = wimp_create_icon(&iconbar); - if (OPTIONS.theme != NULL) - sprintf(theme_fname, "<NetSurf$Dir>.Themes.%s", OPTIONS.theme); - else + if (OPTIONS.theme != NULL) { + + /* get size of <netsurf$dir> */ + e = xos_read_var_val_size ("NetSurf$Dir",0,os_VARTYPE_STRING, + &varsize, NULL, NULL); + var = xcalloc((~((int)varsize) + 10),sizeof(char)); + /* get real value of <netsurf$dir> */ + e = xos_read_var_val ("NetSurf$Dir", var, (~(int)varsize), 0, + os_VARTYPE_STRING, NULL, NULL, NULL); + strcat(var, ".Themes."); + /* check if theme directory exists */ + e = xosfile_read_stamped_path ((const char*)OPTIONS.theme, + (const char*)var, + &ot, NULL, NULL, NULL, NULL, NULL); + xfree(var); + /* yes -> use this theme */ + if (ot != fileswitch_NOT_FOUND && ot == fileswitch_IS_DIR) { + sprintf(theme_fname, "<NetSurf$Dir>.Themes.%s", OPTIONS.theme); + } + /* no -> use default theme */ + else { + OPTIONS.theme = strdup("Default"); + sprintf(theme_fname, "<NetSurf$Dir>.Themes.Default"); + } + } + else { sprintf(theme_fname, "<NetSurf$Dir>.Themes.Default"); + OPTIONS.theme = strdup("Default"); + } LOG(("Using theme '%s' - from '%s'",theme_fname, OPTIONS.theme)); current_theme = ro_theme_create(theme_fname); |