From 3979c5c5ca307cad84b417b0d350aa205fdc422f Mon Sep 17 00:00:00 2001 From: Nickolay V. Shmyrev Date: Sun, 12 Feb 2006 23:02:46 +0000 Subject: Runtime check for gs interpreter. Fix for the bug #320868. Thanks to * configure.ac: * ps/gsdefaults.c: (gtk_gs_defaults_get_paper_sizes): * ps/gsdefaults.h: * ps/ps-document.c: (start_interpreter), (ps_document_load): Runtime check for gs interpreter. Fix for the bug #320868. Thanks to Antoine Dopffer antoine.dopffer@free.fr --- (limited to 'ps') diff --git a/ps/gsdefaults.c b/ps/gsdefaults.c index a0c61d5..2263fca 100644 --- a/ps/gsdefaults.c +++ b/ps/gsdefaults.c @@ -51,13 +51,7 @@ GtkGSPaperSize gtk_gs_paper_sizes[] = { GtkGSPaperSize * gtk_gs_defaults_get_paper_sizes() { - return gtk_gs_paper_sizes; -} - -const gchar * -gtk_gs_defaults_get_interpreter_cmd() -{ - return GS_PATH; + return gtk_gs_paper_sizes; } const gchar * diff --git a/ps/gsdefaults.h b/ps/gsdefaults.h index 08431ff..2f50f6f 100644 --- a/ps/gsdefaults.h +++ b/ps/gsdefaults.h @@ -31,7 +31,6 @@ G_BEGIN_DECLS /* defaults accessors */ GtkGSPaperSize *gtk_gs_defaults_get_paper_sizes(void); -const gchar *gtk_gs_defaults_get_interpreter_cmd(void); const gchar *gtk_gs_defaults_get_ungzip_cmd(void); const gchar *gtk_gs_defaults_get_unbzip2_cmd(void); diff --git a/ps/ps-document.c b/ps/ps-document.c index 3ce591f..75009dc 100644 --- a/ps/ps-document.c +++ b/ps/ps-document.c @@ -616,7 +616,7 @@ start_interpreter (PSDocument *gs) #define NUM_GS_ARGS (NUM_ARGS - 20) #define NUM_ALPHA_ARGS 10 - char *argv[NUM_ARGS], *dir, *gv_env; + char *argv[NUM_ARGS], *dir, *gv_env, *gs_path; char **gs_args, **alpha_args = NULL; int argc = 0, i; @@ -628,7 +628,9 @@ start_interpreter (PSDocument *gs) stop_interpreter(gs); /* set up the args... */ - gs_args = g_strsplit (gtk_gs_defaults_get_interpreter_cmd (), " ", NUM_GS_ARGS); + gs_path = g_find_program_in_path ("gs"); + gs_args = g_strsplit (gs_path, " ", NUM_GS_ARGS); + g_free (gs_path); for(i = 0; i < NUM_GS_ARGS && gs_args[i]; i++, argc++) { argv[argc] = gs_args[i]; } @@ -1056,27 +1058,39 @@ ps_document_load (EvDocument *document, const char *uri, GError **error) { - gboolean result; char *filename; + char *gs_path; + gboolean result; filename = g_filename_from_uri (uri, NULL, error); if (!filename) return FALSE; - result = document_load (PS_DOCUMENT (document), filename); - if (!result) { - gchar *filename_dsp; - - filename_dsp = g_filename_display_name (filename); - - g_set_error (error, G_FILE_ERROR, - G_FILE_ERROR_FAILED, - _("Failed to load document '%s'"), - filename_dsp); - - g_free (filename_dsp); + gs_path = g_find_program_in_path ("gs"); + if (!gs_path) { + gchar *filename_dsp; + filename_dsp = g_filename_display_name (filename); + g_set_error(error, + G_FILE_ERROR, + G_FILE_ERROR_NOENT, + _("Failed to load document '%s'. Ghostscript interpreter was not found in path"), + filename); + g_free (filename_dsp); + result = FALSE; + } else { + result = document_load (PS_DOCUMENT (document), filename); + if (!result) { + gchar *filename_dsp; + filename_dsp = g_filename_display_name (filename); + + g_set_error (error, G_FILE_ERROR, + G_FILE_ERROR_FAILED, + _("Failed to load document '%s'"), + filename_dsp); + g_free (filename_dsp); + } + g_free (gs_path); } - g_free (filename); return result; -- cgit v0.9.1