summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2009-03-22 17:43:06 +0100
committerCarlos Garcia Campos <carlosgc@gnome.org>2009-03-22 17:43:06 +0100
commit38d9d955cf7a6baed877331d60837d9ce1b853c3 (patch)
treef7ed995d90e92b12fcaf454b6868f9b92fb63c5c
parent6bc295778c964e320e126b5d20f701a1e21c9847 (diff)
Fix error handling of gsapi_run_* functions
-rw-r--r--libspectre/spectre-gs.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/libspectre/spectre-gs.c b/libspectre/spectre-gs.c
index ef68a36..27e477b 100644
--- a/libspectre/spectre-gs.c
+++ b/libspectre/spectre-gs.c
@@ -86,7 +86,7 @@ spectre_gs_process (SpectreGS *gs,
int error;
static char buf[BUFFER_SIZE];
unsigned int read;
- int wrote;
+ int exit_code;
size_t left = end - begin;
void *ghostscript_instance = gs->ghostscript_instance;
@@ -97,7 +97,7 @@ spectre_gs_process (SpectreGS *gs,
fseek (fd, begin, SEEK_SET);
- gsapi_run_string_begin (ghostscript_instance, 0, &error);
+ error = gsapi_run_string_begin (ghostscript_instance, 0, &exit_code);
if (critic_error_code (error)) {
fclose (fd);
return FALSE;
@@ -107,10 +107,11 @@ spectre_gs_process (SpectreGS *gs,
char *set;
set = _spectre_strdup_printf ("%d %d translate\n", -x, -y);
- gsapi_run_string_continue (ghostscript_instance, set, strlen (set),
- 0, &error);
+ error = gsapi_run_string_continue (ghostscript_instance, set, strlen (set),
+ 0, &exit_code);
+ error = error == e_NeedInput ? 0 : error;
free (set);
- if (critic_error_code (error)) {
+ if (error != e_NeedInput && critic_error_code (error)) {
fclose (fd);
return FALSE;
}
@@ -123,8 +124,9 @@ spectre_gs_process (SpectreGS *gs,
to_read = left;
read = fread (buf, sizeof (char), to_read, fd);
- wrote = gsapi_run_string_continue (ghostscript_instance,
- buf, read, 0, &error);
+ error = gsapi_run_string_continue (ghostscript_instance,
+ buf, read, 0, &exit_code);
+ error = error == e_NeedInput ? 0 : error;
left -= read;
}
@@ -132,7 +134,7 @@ spectre_gs_process (SpectreGS *gs,
if (critic_error_code (error))
return FALSE;
- gsapi_run_string_end (ghostscript_instance, 0, &error);
+ error = gsapi_run_string_end (ghostscript_instance, 0, &exit_code);
if (critic_error_code (error))
return FALSE;
@@ -195,9 +197,10 @@ spectre_gs_send_string (SpectreGS *gs,
const char *str)
{
int error;
+ int exit_code;
- gsapi_run_string_with_length (gs->ghostscript_instance,
- str, strlen (str), 0, &error);
+ error = gsapi_run_string_with_length (gs->ghostscript_instance,
+ str, strlen (str), 0, &exit_code);
return !critic_error_code (error);
}