summaryrefslogtreecommitdiff
path: root/src/ghost/ijsgutenprint.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ghost/ijsgutenprint.c')
-rw-r--r--src/ghost/ijsgutenprint.c52
1 files changed, 30 insertions, 22 deletions
diff --git a/src/ghost/ijsgutenprint.c b/src/ghost/ijsgutenprint.c
index 80167eb..58b63ff 100644
--- a/src/ghost/ijsgutenprint.c
+++ b/src/ghost/ijsgutenprint.c
@@ -1,5 +1,5 @@
/*
- * $Id: ijsgutenprint.c,v 1.14 2006/04/19 03:24:26 rlk Exp $
+ * $Id: ijsgutenprint.c,v 1.18 2006/07/04 02:19:15 rlk Exp $
*
* IJS server for Gutenprint.
*
@@ -109,6 +109,7 @@ static int ppd_mode = 0; /* Use PPD-style margins */
static stp_string_list_t *option_remap_list = NULL;
static int print_messages_as_errors = 0;
+static double page_bytes_printed = 0;
static double total_bytes_printed = 0;
static char *
@@ -134,7 +135,7 @@ image_init(IMAGE *img, IjsPageHeader *ph)
if (img->row_buf)
stp_free(img->row_buf);
img->row_buf = (char *)stp_malloc(img->row_width);
- STP_DEBUG(fprintf(stderr, "stp_image_init\n"));
+ STP_DEBUG(fprintf(stderr, "ijsgutenprint: image_init\n"));
STP_DEBUG(fprintf(stderr,
"ijsgutenprint: ph width %d height %d bps %d n_chan %d xres %f yres %f\n",
ph->width, ph->height, ph->bps, ph->n_chan, ph->xres,
@@ -743,7 +744,7 @@ gutenprint_set_cb (void *set_cb_data, IjsServerCtx *ctx, IjsJobId jobid,
ppd_mode = 1;
if (strcmp(vbuf, version_id) != 0)
{
- fprintf(stderr, _(version_mismatch),
+ fprintf(stderr, gettext(version_mismatch),
version_id, vbuf, version_id, vbuf);
version_is_ok = 0;
gutenprint_ppd_version = c_strdup(vbuf);
@@ -895,6 +896,7 @@ gutenprint_errfunc(void *file, const char *buf, size_t bytes)
static void
gutenprint_outfunc(void *data, const char *buffer, size_t bytes)
{
+ page_bytes_printed += bytes;
total_bytes_printed += bytes;
if ((data != NULL) && (buffer != NULL) && (bytes != 0))
fwrite(buffer, 1, bytes, (FILE *)data);
@@ -1051,6 +1053,8 @@ stp_dbg(const char *msg, const stp_vars_t *v)
stp_parameter_list_t params = stp_get_parameter_list(v);
int count = stp_parameter_list_count(params);
int i;
+ if (!stp_debug && !getenv("STP_DEBUG"))
+ return;
fprintf(stderr, "DEBUG: %s\n", msg);
fprintf(stderr, "DEBUG: ijsgutenprint: Settings: Model %s\n", stp_get_driver(v));
for (i = 0; i < count; i++)
@@ -1075,8 +1079,9 @@ stp_dbg(const char *msg, const stp_vars_t *v)
break;
case STP_PARAMETER_TYPE_BOOLEAN:
if (stp_check_boolean_parameter(v, p->name, STP_PARAMETER_DEFAULTED))
- fprintf(stderr, "DEBUG: ijsgutenprint: Settings: %s %d\n",
- p->name, stp_get_boolean_parameter(v, p->name));
+ fprintf(stderr, "DEBUG: ijsgutenprint: Settings: %s %s\n",
+ p->name,
+ stp_get_boolean_parameter(v, p->name) ? "true" : "false");
break;
case STP_PARAMETER_TYPE_STRING_LIST:
if (stp_check_string_parameter(v, p->name, STP_PARAMETER_DEFAULTED))
@@ -1173,12 +1178,12 @@ validate_options(stp_image_t *image)
(desc.bounds.str, stp_get_string_parameter(v, desc.name)))
{
STP_DEBUG(fprintf(stderr, "ijsgutenprint: clearing string %s (%s)\n",
- desc.name, stp_get_string_parameter(v, desc.name)));
+ desc.name, safe_get_string_parameter(v, desc.name)));
stp_clear_string_parameter(v, desc.name);
- if (desc.is_mandatory)
+ if (!desc.read_only && desc.is_mandatory && desc.is_active)
{
STP_DEBUG(fprintf(stderr, "ijsgutenprint: setting default string %s to %s\n",
- desc.name, desc.deflt.str));
+ desc.name, desc.deflt.str ? desc.deflt.str : "(null)"));
stp_set_string_parameter(v, desc.name, desc.deflt.str);
if (strcmp(desc.name, "PageSize") == 0)
{
@@ -1286,7 +1291,7 @@ main (int argc, char **argv)
ijs_server_install_get_cb (img.ctx, gutenprint_get_cb, &img);
ijs_server_install_set_cb(img.ctx, gutenprint_set_cb, &img);
- STP_DEBUG(stp_dbg("ijsgutenprint: about to start\n", img.v));
+ stp_dbg("ijsgutenprint: about to start\n", img.v);
STP_DEBUG(fprintf(stderr, "ijsgutenprint: About to get page header\n"));
status = ijs_server_get_page_header(img.ctx, &ph);
@@ -1295,7 +1300,7 @@ main (int argc, char **argv)
stp_vars_t *old_v = NULL;
STP_DEBUG(fprintf(stderr, "ijsgutenprint: got page header, %d x %d\n",
ph.width, ph.height));
- STP_DEBUG(stp_dbg("ijsgutenprint: have page header\n", img.v));
+ stp_dbg("ijsgutenprint: have page header\n", img.v);
status = image_init(&img, &ph);
if (status)
@@ -1331,18 +1336,18 @@ main (int argc, char **argv)
/* Printer data to file */
stp_set_outdata(img.v, f);
+ }
- printer = stp_get_printer(img.v);
- if (printer == NULL)
- {
- fprintf(stderr, _("ERROR: ijsgutenprint: Unknown printer %s\n"),
- stp_get_driver(img.v));
- status = -1;
- break;
- }
- purge_unused_float_parameters(img.v);
- stp_merge_printvars(img.v, stp_printer_get_defaults(printer));
+ printer = stp_get_printer(img.v);
+ if (printer == NULL)
+ {
+ fprintf(stderr, _("ERROR: ijsgutenprint: Unknown printer %s\n"),
+ stp_get_driver(img.v));
+ status = -1;
+ break;
}
+ purge_unused_float_parameters(img.v);
+ stp_merge_printvars(img.v, stp_printer_get_defaults(printer));
img.total_bytes = (double) ((ph.n_chan * ph.bps * ph.width + 7) >> 3)
@@ -1483,7 +1488,7 @@ main (int argc, char **argv)
STP_DEBUG(fprintf(stderr, "ijsgutenprint: Duplex=%s\n", safe_get_string_parameter(img.v, "Duplex")));
validate_options(&si);
- STP_DEBUG(stp_dbg("ijsgutenprint: about to print", img.v));
+ stp_dbg("ijsgutenprint: about to print", img.v);
STP_DEBUG(fprintf(stderr, "ijsgutenprint: w %d h %d l %d t %d\n",
stp_get_width(img.v), stp_get_height(img.v),
stp_get_left(img.v), stp_get_top(img.v)));
@@ -1491,16 +1496,19 @@ main (int argc, char **argv)
print_messages_as_errors = 1;
if (!version_is_ok)
{
- fprintf(stderr, _(version_mismatch), version_id,
+ fprintf(stderr, gettext(version_mismatch), version_id,
gutenprint_ppd_version, version_id, gutenprint_ppd_version);
status = IJS_ERANGE;
break;
}
else if (stp_verify(img.v))
{
+ page_bytes_printed = 0;
if (page == 0)
stp_start_job(img.v, &si);
stp_print(img.v, &si);
+ STP_DEBUG(fprintf(stderr, "ijsgutenprint: printed page %d, %.0f bytes\n",
+ page, page_bytes_printed));
old_v = stp_vars_create_copy(img.v);
}
else