| From: Pranav Batra <batrapranav@chromium.org> |
| Subject: [PATCH] Remove bbox Ghostscript device |
| |
| The bbox device is used to count the number of pages in a postscript |
| file very inefficiently to make sure at least one page exists before |
| attempting to render the file. Currently we do not build ghostscript |
| with support for the bbox device hence the need for this patch. |
| |
| --- a/filter/foomatic-rip/postscript.c |
| +++ b/filter/foomatic-rip/postscript.c |
| @@ -168,42 +168,10 @@ int stream_next_line(dstr_t *line, stream_t *s) |
| return cnt; |
| } |
| |
| -int ps_pages(const char *filename) |
| -{ |
| - char gscommand[65536]; |
| - char output[31] = ""; |
| - int pagecount; |
| - size_t bytes; |
| - snprintf(gscommand, 65536, "%s -q -dNOPAUSE -dBATCH -sDEVICE=bbox %s 2>&1 | grep -c HiResBoundingBox", |
| - CUPS_GHOSTSCRIPT, filename); |
| - FILE *pd = popen(gscommand, "r"); |
| - bytes = fread(output, 1, 31, pd); |
| - pclose(pd); |
| - |
| - if (bytes <= 0 || sscanf(output, "%d", &pagecount) < 1) |
| - pagecount = -1; |
| - |
| - return pagecount; |
| -} |
| - |
| int print_ps(FILE *file, const char *alreadyread, size_t len, const char *filename) |
| { |
| stream_t stream; |
| |
| - if (file != stdin) |
| - { |
| - int pagecount = ps_pages(filename); |
| - if (pagecount < 0) { |
| - _log("Unexpected page count\n"); |
| - return 0; |
| - } |
| - if (pagecount == 0) { |
| - _log("No pages left, outputting empty file.\n"); |
| - return 1; |
| - } |
| - _log("File contains %d pages.\n", pagecount); |
| - } |
| - |
| stream.pos = 0; |
| stream.file = file; |
| stream.alreadyread = alreadyread; |
| --- a/filter/gstoraster.c |
| +++ b/filter/gstoraster.c |
| @@ -728,38 +728,6 @@ main (int argc, char **argv, char *envp[]) |
| goto out; |
| } |
| } |
| - else { |
| - char gscommand[65536]; |
| - char output[31] = ""; |
| - int pagecount; |
| - size_t bytes; |
| - snprintf(gscommand, 65536, "%s -q -dNOPAUSE -dBATCH -sDEVICE=bbox %s 2>&1 | grep -c HiResBoundingBox", |
| - CUPS_GHOSTSCRIPT, filename); |
| - |
| - FILE *pd = popen(gscommand, "r"); |
| - if (!pd) { |
| - fprintf(stderr, "Failed to execute ghostscript to determine number of input pages!\n"); |
| - goto out; |
| - } |
| - |
| - bytes = fread(output, 1, 31, pd); |
| - pclose(pd); |
| - |
| - if (bytes <= 0 || sscanf(output, "%d", &pagecount) < 1) |
| - pagecount = -1; |
| - |
| - if (pagecount == 0) { |
| - fprintf(stderr, "DEBUG: No pages left, outputting empty file.\n"); |
| - status = 0; |
| - if (outformat == OUTPUT_FORMAT_RASTER) |
| - fprintf(stdout, "RaS2"); |
| - goto out; |
| - } |
| - if (pagecount < 0) { |
| - fprintf(stderr, "DEBUG: Unexpected page count\n"); |
| - goto out; |
| - } |
| - } |
| if (argc == 6) { |
| /* input from stdin */ |
| /* remove name of temp file*/ |