summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorwl <wl>2013-02-10 08:23:50 +0000
committerwl <wl>2013-02-10 08:23:50 +0000
commit5c36fcafe5d2e65f0cc16b60d03b56925af9c4b7 (patch)
tree0ab6253121496ce7ce0302a4e26586670fab7f49 /src
parent38979e822bb14dd9e5d1bd339664af0c83d9966f (diff)
downloadgroff-5c36fcafe5d2e65f0cc16b60d03b56925af9c4b7.tar.gz
[grops] Make binary `%%BeginData' work; support `fontset' resource.
*src/devices/grops/psrm.cpp (resource_table): Add `fontset'. (resource_manager::read_resource_arg): Do a case insensitive comparison. The PostScript Reference Manual gives the following example for a CFF resource (example 5.7): %!PS-Adobe-3.0 Resource-FontSet %%DocumentNeedResources: ProcSet (FontSetInit) %%Title: (FontSet/CFFRoman27) %%Version: 1.000 %%EndComments %%IncludeResource: ProcSet (FontSetInit) %%BeginResource: FontSet (CFFRoman27) /FontSetInit /ProcSet findresource begin %%BeginData: 622532 Binary Bytes /CFFRoman27 622503 StartData ... 622,503 bytes of binary data ... %%EndData %%EndResource %%EOF Note the `ProcSet' and `FontSet' keywords. While the old DSC (Document Structure Convention) documentation doesn't cover `FontSet' at all (the DSC documentation predates the invention of CFF), it describes only `procset' (all letters downcase), and it also says that the DSC parser works in a case sensitive manner. In other words, `ProcSet' is not valid according to the DSC documentation, only `procset' is. So much about today's validity of DSC... This patch adapts grops's code to the PostScript reality. (resource_manager::do_begin_data): Fix typo (present since the beginning) which prevented correct handling of binary data.
Diffstat (limited to 'src')
-rw-r--r--src/devices/grops/psrm.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/devices/grops/psrm.cpp b/src/devices/grops/psrm.cpp
index b5c7e3b2..52c62422 100644
--- a/src/devices/grops/psrm.cpp
+++ b/src/devices/grops/psrm.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2003, 2004,
- 2009
+/* Copyright (C) 1989-1992, 2000-2004, 2009, 2013
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -89,6 +88,7 @@ const int NEXTENSIONS = sizeof(extension_table)/sizeof(extension_table[0]);
const char *resource_table[] = {
"font",
+ "fontset",
"procset",
"file",
"encoding",
@@ -566,7 +566,7 @@ resource *resource_manager::read_resource_arg(const char **ptr)
int ri;
for (ri = 0; ri < NRESOURCES; ri++)
if (strlen(resource_table[ri]) == size_t(*ptr - name)
- && memcmp(resource_table[ri], name, *ptr - name) == 0)
+ && strncasecmp(resource_table[ri], name, *ptr - name) == 0)
break;
if (ri >= NRESOURCES) {
error("unknown resource type");
@@ -840,7 +840,7 @@ int resource_manager::do_begin_data(const char *ptr, int, FILE *fp,
current_lineno++;
}
if (cc != EOF)
- ungetc(c, fp);
+ ungetc(cc, fp);
}
else if (c == '\n') {
linecount++;