# HG changeset patch # User zas_ # Date 1235922111 0 # Node ID 681e79dd0820b9cff2f99db6f5cef8e8e0987f90 # Parent 5a61fb9adc0534948b9c7cb26bc56844fecee6ca Slightly modify access_file() and use it to test profile files existence and read access. diff -r 5a61fb9adc05 -r 681e79dd0820 src/image.c --- a/src/image.c Sun Mar 01 15:28:06 2009 +0000 +++ b/src/image.c Sun Mar 01 15:41:51 2009 +0000 @@ -204,13 +204,12 @@ if (imd->color_profile_input >= COLOR_PROFILE_FILE && imd->color_profile_input < COLOR_PROFILE_FILE + COLOR_PROFILE_INPUTS) { - gint n; - - n = imd->color_profile_input - COLOR_PROFILE_FILE; - if (!options->color_profile.input_file[n] || !options->color_profile.input_file[n][0]) return FALSE; + const gchar *file = options->color_profile.input_file[imd->color_profile_input - COLOR_PROFILE_FILE]; + + if (!access_file(file, R_OK)) return FALSE; input_type = COLOR_PROFILE_FILE; - input_file = options->color_profile.input_file[n]; + input_file = file; } else if (imd->color_profile_input >= COLOR_PROFILE_SRGB && imd->color_profile_input < COLOR_PROFILE_FILE) @@ -224,8 +223,7 @@ } if (imd->color_profile_screen == 1 && - options->color_profile.screen_file && - options->color_profile.screen_file[0]) + access_file(options->color_profile.screen_file, R_OK)) { screen_type = COLOR_PROFILE_FILE; screen_file = options->color_profile.screen_file; diff -r 5a61fb9adc05 -r 681e79dd0820 src/layout.c --- a/src/layout.c Sun Mar 01 15:28:06 2009 +0000 +++ b/src/layout.c Sun Mar 01 15:41:51 2009 +0000 @@ -482,7 +482,7 @@ G_CALLBACK(layout_color_menu_input_cb), lw); g_free(buf); g_object_set_data(G_OBJECT(item), COLOR_MENU_KEY, GINT_TO_POINTER(i + COLOR_PROFILE_FILE)); - gtk_widget_set_sensitive(item, active && !from_image && file && file[0] && access_file(file, R_OK)); + gtk_widget_set_sensitive(item, active && !from_image && access_file(file, R_OK)); } menu_item_add_divider(menu); @@ -498,7 +498,7 @@ _("_Screen profile"), (screen == 1), G_CALLBACK(layout_color_menu_screen_cb), lw); g_object_set_data(G_OBJECT(item), COLOR_MENU_KEY, GINT_TO_POINTER(1)); - gtk_widget_set_sensitive(item, active && options->color_profile.screen_file && options->color_profile.screen_file[0]); + gtk_widget_set_sensitive(item, active && access_file(options->color_profile.screen_file, R_OK)); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); #endif /* HAVE_LCMS */ diff -r 5a61fb9adc05 -r 681e79dd0820 src/ui_fileops.c --- a/src/ui_fileops.c Sun Mar 01 15:28:06 2009 +0000 +++ b/src/ui_fileops.c Sun Mar 01 15:41:51 2009 +0000 @@ -424,7 +424,7 @@ gchar *sl; gint ret; - if (!s) return FALSE; + if (!s || !s[0]) return FALSE; sl = path_from_utf8(s); ret = (access(sl, mode) == 0);