From ce3d99191842ded7687dc23c3ccb5f5ccc843558 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Fri, 31 Oct 2014 00:24:57 +0000 Subject: use nsurl_nice and remove url_nice change all callers over to using new API for generating nice filenames from a url and remove the old API. --- riscos/save.c | 34 ++++++++++++++---------- riscos/save.h | 4 +-- riscos/window.c | 80 ++++++++++++++++++++++++++++----------------------------- 3 files changed, 63 insertions(+), 55 deletions(-) (limited to 'riscos') diff --git a/riscos/save.c b/riscos/save.c index 1974d9c16..bfde316d7 100644 --- a/riscos/save.c +++ b/riscos/save.c @@ -116,7 +116,7 @@ static void ro_gui_save_bounced(wimp_message *message); static bool ro_gui_save_object_native(hlcache_handle *h, char *path); static bool ro_gui_save_link(const char *url, const char *title, link_format format, char *path); static void ro_gui_save_set_state(hlcache_handle *h, gui_save_type save_type, - const char *url, char *leaf_buf, size_t leaf_len, + const nsurl *url, char *leaf_buf, size_t leaf_len, char *icon_buf, size_t icon_len); static void ro_gui_save_drag_end(wimp_dragged *drag, void *data); static bool ro_gui_save_create_thumbnail(hlcache_handle *h, const char *name); @@ -254,7 +254,7 @@ void ro_gui_saveas_quit(void) */ void ro_gui_save_prepare(gui_save_type save_type, hlcache_handle *h, - char *s, const char *url, const char *title) + char *s, const nsurl *url, const char *title) { char name_buf[FILENAME_MAX]; size_t leaf_offset = 0; @@ -271,7 +271,11 @@ void ro_gui_save_prepare(gui_save_type save_type, hlcache_handle *h, free(gui_save_selection); gui_save_selection = s; - gui_save_url = url; + if (url != NULL) { + gui_save_url = nsurl_access(url); + } else { + gui_save_url = NULL; + } gui_save_title = title; if (save_dir) { @@ -280,8 +284,11 @@ void ro_gui_save_prepare(gui_save_type save_type, hlcache_handle *h, name_buf[leaf_offset++] = '.'; } - ro_gui_save_set_state(h, save_type, - h ? nsurl_access(hlcache_handle_get_url(h)) : url, + if (h != NULL) { + url = hlcache_handle_get_url(h); + } + + ro_gui_save_set_state(h, save_type, url, name_buf + leaf_offset, FILENAME_MAX - leaf_offset, icon_buf, sizeof(icon_buf)); @@ -386,7 +393,7 @@ void gui_drag_save_object(struct gui_window *g, hlcache_handle *c, return; } - ro_gui_save_set_state(c, save_type, nsurl_access(hlcache_handle_get_url(c)), + ro_gui_save_set_state(c, save_type, hlcache_handle_get_url(c), save_leafname, LEAFNAME_MAX, icon_buf, sizeof(icon_buf)); @@ -454,7 +461,7 @@ void gui_drag_save_selection(struct gui_window *g, const char *selection) * \ */ -void ro_gui_drag_save_link(gui_save_type save_type, const char *url, +void ro_gui_drag_save_link(gui_save_type save_type, const nsurl *url, const char *title, struct gui_window *g) { wimp_pointer pointer; @@ -466,7 +473,7 @@ void ro_gui_drag_save_link(gui_save_type save_type, const char *url, xwimp_create_menu(wimp_CLOSE_MENU, 0, 0); ro_gui_dialog_close(dialog_saveas); - gui_save_url = url; + gui_save_url = nsurl_access(url); gui_save_title = title; gui_save_sourcew = g->window; saving_from_dialog = false; @@ -479,8 +486,8 @@ void ro_gui_drag_save_link(gui_save_type save_type, const char *url, return; } - ro_gui_save_set_state(NULL, save_type, url, save_leafname, LEAFNAME_MAX, - icon_buf, sizeof(icon_buf)); + ro_gui_save_set_state(NULL, save_type, url, save_leafname, + LEAFNAME_MAX, icon_buf, sizeof(icon_buf)); ro_mouse_drag_start(ro_gui_save_drag_end, NULL, NULL, NULL); @@ -1215,7 +1222,7 @@ bool ro_gui_save_link(const char *url, const char *title, link_format format, */ void ro_gui_save_set_state(hlcache_handle *h, gui_save_type save_type, - const char *url, char *leaf_buf, size_t leaf_len, + const nsurl *url, char *leaf_buf, size_t leaf_len, char *icon_buf, size_t icon_len) { /* filename */ @@ -1251,8 +1258,9 @@ void ro_gui_save_set_state(hlcache_handle *h, gui_save_type save_type, } /* leafname */ - if (url && url_nice(url, &nice, nsoption_bool(strip_extensions)) == - NSERROR_OK) { + if ((url != NULL) && + (nsurl_nice(url, &nice, nsoption_bool(strip_extensions)) == + NSERROR_OK)) { size_t i; for (i = 0; nice[i]; i++) { if (nice[i] == '.') diff --git a/riscos/save.h b/riscos/save.h index d3ca5c214..08bdc17ec 100644 --- a/riscos/save.h +++ b/riscos/save.h @@ -34,10 +34,10 @@ void gui_drag_save_selection(struct gui_window *g, const char *selection); wimp_w ro_gui_saveas_create(const char *template_name); void ro_gui_saveas_quit(void); void ro_gui_save_prepare(enum gui_save_type save_type, struct hlcache_handle *h, - char *s, const char *url, + char *s, const nsurl *url, const char *title); void ro_gui_save_start_drag(wimp_pointer *pointer); -void ro_gui_drag_save_link(enum gui_save_type save_type, const char *url, +void ro_gui_drag_save_link(enum gui_save_type save_type, const nsurl *url, const char *title, struct gui_window *g); void ro_gui_drag_icon(int x, int y, const char *sprite); void ro_gui_drag_box_cancel(void); diff --git a/riscos/window.c b/riscos/window.c index 6a62d560c..4e07293df 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -194,7 +194,7 @@ static hlcache_handle *current_menu_main = 0; /** Object under menu, or 0 if no object. */ static hlcache_handle *current_menu_object = 0; /** URL of link under menu, or 0 if no link. */ -static const char *current_menu_url = 0; +static nsurl *current_menu_url = 0; static float scale_snap_to[] = {0.10, 0.125, 0.25, 0.333, 0.5, 0.75, 1.0, @@ -1284,7 +1284,10 @@ static bool gui_window_drag_start(struct gui_window *g, gui_drag_type type, static void gui_window_save_link(struct gui_window *g, const char *url, const char *title) { - ro_gui_save_prepare(GUI_SAVE_LINK_URL, NULL, NULL, url, title); + nsurl *nurl; + nsurl_create(url, &nurl); + ro_gui_save_prepare(GUI_SAVE_LINK_URL, NULL, NULL, nurl, title); + nsurl_unref(nurl); ro_gui_dialog_open_persistent(g->window, dialog_saveas, true); } @@ -2174,7 +2177,10 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, current_menu_main = NULL; current_menu_object = NULL; - current_menu_url = NULL; + if (current_menu_url != NULL) { + nsurl_unref(current_menu_url); + current_menu_url = NULL; + } if (ro_gui_window_to_window_pos(g, pointer->pos.x, pointer->pos.y, &pos)) { @@ -2183,7 +2189,7 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, current_menu_main = cont.main; current_menu_object = cont.object; - current_menu_url = cont.link_url; + nsurl_create(cont.link_url, ¤t_menu_url); } } @@ -2444,7 +2450,7 @@ void ro_gui_window_menu_warning(wimp_w w, wimp_i i, wimp_menu *menu, case BROWSER_OBJECT_INFO: if (current_menu_object != NULL) ro_gui_window_prepare_objectinfo(current_menu_object, - current_menu_url); + nsurl_access(current_menu_url)); break; case BROWSER_OBJECT_SAVE: @@ -2463,45 +2469,45 @@ void ro_gui_window_menu_warning(wimp_w w, wimp_i i, wimp_menu *menu, case BROWSER_SAVE_URL_URI: if (h != NULL) ro_gui_save_prepare(GUI_SAVE_LINK_URI, NULL, NULL, - nsurl_access(hlcache_handle_get_url(h)), + hlcache_handle_get_url(h), content_get_title(h)); break; case BROWSER_SAVE_URL_URL: if (h != NULL) ro_gui_save_prepare(GUI_SAVE_LINK_URL, NULL, NULL, - nsurl_access(hlcache_handle_get_url(h)), + hlcache_handle_get_url(h), content_get_title(h)); break; case BROWSER_SAVE_URL_TEXT: if (h != NULL) ro_gui_save_prepare(GUI_SAVE_LINK_TEXT, NULL, NULL, - nsurl_access(hlcache_handle_get_url(h)), + hlcache_handle_get_url(h), content_get_title(h)); break; case BROWSER_OBJECT_SAVE_URL_URI: if (current_menu_object != NULL) ro_gui_save_prepare(GUI_SAVE_LINK_URI, NULL, NULL, - nsurl_access(hlcache_handle_get_url( - current_menu_object)), + hlcache_handle_get_url( + current_menu_object), content_get_title(current_menu_object)); break; case BROWSER_OBJECT_SAVE_URL_URL: if (current_menu_object != NULL) ro_gui_save_prepare(GUI_SAVE_LINK_URL, NULL, NULL, - nsurl_access(hlcache_handle_get_url( - current_menu_object)), + hlcache_handle_get_url( + current_menu_object), content_get_title(current_menu_object)); break; case BROWSER_OBJECT_SAVE_URL_TEXT: if (current_menu_object != NULL) ro_gui_save_prepare(GUI_SAVE_LINK_TEXT, NULL, NULL, - nsurl_access(hlcache_handle_get_url( - current_menu_object)), + hlcache_handle_get_url( + current_menu_object), content_get_title(current_menu_object)); break; @@ -2759,7 +2765,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu, case BROWSER_OBJECT_INFO: if (current_menu_object != NULL) { ro_gui_window_prepare_objectinfo(current_menu_object, - current_menu_url); + nsurl_access(current_menu_url)); ro_gui_dialog_open_persistent(g->window, dialog_objinfo, false); } @@ -2799,33 +2805,25 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu, case BROWSER_LINK_DOWNLOAD: if (current_menu_url != NULL) { - error = nsurl_create(current_menu_url, &url); - if (error == NSERROR_OK) { - error = browser_window_navigate(bw, - url, - browser_window_get_url(bw), - BW_NAVIGATE_DOWNLOAD, - NULL, - NULL, - NULL); - nsurl_unref(url); - } + error = browser_window_navigate(bw, + current_menu_url, + browser_window_get_url(bw), + BW_NAVIGATE_DOWNLOAD, + NULL, + NULL, + NULL); } break; case BROWSER_LINK_NEW_WINDOW: if (current_menu_url != NULL) { - error = nsurl_create(current_menu_url, &url); - if (error == NSERROR_OK) { - error = browser_window_create( - BW_CREATE_HISTORY | - BW_CREATE_CLONE, - url, - browser_window_get_url(bw), - bw, - NULL); - nsurl_unref(url); - } + error = browser_window_create( + BW_CREATE_HISTORY | + BW_CREATE_CLONE, + url, + browser_window_get_url(bw), + bw, + NULL); } break; @@ -3050,7 +3048,10 @@ void ro_gui_window_menu_close(wimp_w w, wimp_i i, wimp_menu *menu) { if (menu == ro_gui_browser_window_menu) { current_menu_object = NULL; - current_menu_url = NULL; + if (current_menu_url != NULL) { + nsurl_unref(current_menu_url); + current_menu_url = NULL; + } } else if (menu == gui_form_select_menu) { gui_form_select_control = NULL; } @@ -3579,8 +3580,7 @@ void ro_gui_window_toolbar_click(void *data, save_type = GUI_SAVE_LINK_TEXT; ro_gui_drag_save_link(save_type, - nsurl_access( - browser_window_get_url(g->bw)), + browser_window_get_url(g->bw), browser_window_get_title(g->bw), g); } break; -- cgit v1.2.3