[DVIPDFMx] dvipdfmx const

Karl Berry karl at freefriends.org
Mon Apr 5 09:35:39 KST 2010


Hello ChoF, Matthias, all,

Peter put in the effort to properly use const throughout dvipdfmx.  Here
is a patch against dvipdfmx-20100328.  I hope it's ok with you.

More in a minute.

Thanks,
Karl


diff -u1r dvipdfmx-20100328/src/agl.c dx/src/agl.c
--- dvipdfmx-20100328/src/agl.c	2009-09-19 01:56:02.000000000 +0200
+++ dx/src/agl.c	2010-04-05 02:13:52.000000000 +0200
@@ -145,3 +145,3 @@
 static int
-skip_capital (char **p, char *endptr)
+skip_capital (const char **p, const char *endptr)
 {
@@ -180,3 +180,3 @@
 static int
-skip_modifier (char **p, char *endptr)
+skip_modifier (const char **p, const char *endptr)
 {
@@ -203,3 +203,3 @@
   long  len, slen;
-  char *p, *endptr;
+  const char *p, *endptr;
 
@@ -208,3 +208,3 @@
 
-  p   = (char *) glyphname;
+  p   = glyphname;
   len = strlen(glyphname);
@@ -397,3 +397,4 @@
   int   count = 0;
-  char *p, *endptr, *nextptr;
+  const char *p, *endptr;
+  char *nextptr;
   char  wbuf[WBUF_SIZE];
@@ -560,3 +561,3 @@
   long  ucv = -1;
-  char *p;
+  const char *p;
 
@@ -571,5 +572,5 @@
   if (glyphname[1] == 'n')
-    p = (char *) (glyphname + 3);
+    p = glyphname + 3;
   else
-    p = (char *) (glyphname + 1);
+    p = glyphname + 1;
   ucv = 0;
@@ -628,6 +629,6 @@
 {
-  char *p;
+  const char *p;
   long  len = 0, ucv;
 
-  p   = (char *) name;
+  p   = name;
   ucv = 0;
@@ -657,3 +658,3 @@
   int   count = 0;
-  char *p, *endptr;
+  const char *p, *endptr;
 
@@ -661,3 +662,3 @@
 
-  p      = (char *) glyphstr;
+  p      =  glyphstr;
   endptr = strchr(p, '.');
@@ -667,3 +668,4 @@
   while (p < endptr) {
-    char     *name, *delim;
+    char     *name;
+    const char *delim;
     long      sub_len;
@@ -738,5 +740,5 @@
   int   count = 0;
-  char *p, *endptr;
+  const char *p, *endptr;
 
-  p      = (char *) glyphstr;
+  p      = glyphstr;
   endptr = strchr(p, '.');
@@ -746,3 +748,4 @@
   while (p < endptr) {
-    char     *name, *delim;
+    char     *name;
+    const char *delim;
     long      sub_len;
diff -u1r dvipdfmx-20100328/src/cff.c dx/src/cff.c
--- dvipdfmx-20100328/src/cff.c	2009-03-24 08:55:52.000000000 +0100
+++ dx/src/cff.c	2010-04-05 02:13:52.000000000 +0200
@@ -500,3 +500,3 @@
 
-long cff_get_sid (cff_font *cff, char *str)
+long cff_get_sid (cff_font *cff, const char *str)
 {
diff -u1r dvipdfmx-20100328/src/cff.h dx/src/cff.h
--- dvipdfmx-20100328/src/cff.h	2008-10-13 21:42:48.000000000 +0200
+++ dx/src/cff.h	2010-04-05 02:13:52.000000000 +0200
@@ -138,3 +138,3 @@
 extern char *cff_get_string    (cff_font *cff, s_SID id);
-extern long  cff_get_sid       (cff_font *cff, char *str);
+extern long  cff_get_sid       (cff_font *cff, const char *str);
 extern s_SID cff_add_string    (cff_font *cff, const char *str, int unique);
diff -u1r dvipdfmx-20100328/src/cff_dict.c dx/src/cff_dict.c
--- dvipdfmx-20100328/src/cff_dict.c	2008-10-13 21:42:48.000000000 +0200
+++ dx/src/cff_dict.c	2010-04-05 02:13:52.000000000 +0200
@@ -314,3 +314,3 @@
   (dict->entries)[dict->count].id = id;
-  (dict->entries)[dict->count].key = (char *) dict_operator[id].opname;
+  (dict->entries)[dict->count].key = dict_operator[id].opname;
   if (argtype == CFF_TYPE_NUMBER ||
@@ -605,3 +605,3 @@
   (dict->entries)[dict->count].id    = id;
-  (dict->entries)[dict->count].key   = (char *) dict_operator[id].opname;
+  (dict->entries)[dict->count].key   = dict_operator[id].opname;
   (dict->entries)[dict->count].count = count;
diff -u1r dvipdfmx-20100328/src/cff_types.h dx/src/cff_types.h
--- dvipdfmx-20100328/src/cff_types.h	2002-10-30 03:27:05.000000000 +0100
+++ dx/src/cff_types.h	2010-04-05 02:13:52.000000000 +0200
@@ -70,3 +70,3 @@
   int     id;     /* encoded data value (as card8 or card16) */
-  char   *key;    /* opname                                  */
+  const char *key; /* opname                                 */
   int     count;  /* number of values                        */
diff -u1r dvipdfmx-20100328/src/cid.c dx/src/cid.c
--- dvipdfmx-20100328/src/cid.c	2009-05-06 03:50:55.000000000 +0200
+++ dx/src/cid.c	2010-04-05 02:13:52.000000000 +0200
@@ -430,6 +430,6 @@
     end   = start + strlen(start);
-    fontdict   = parse_pdf_dict((char **)&start, (char *)end, NULL);
+    fontdict   = parse_pdf_dict(&start, end, NULL);
     start = cid_basefont[idx].descriptor;
     end   = start + strlen(start);
-    descriptor = parse_pdf_dict((char **)&start, (char *)end, NULL);
+    descriptor = parse_pdf_dict(&start, end, NULL);
 
diff -u1r dvipdfmx-20100328/src/cidtype0.c dx/src/cidtype0.c
--- dvipdfmx-20100328/src/cidtype0.c	2008-10-13 21:42:48.000000000 +0200
+++ dx/src/cidtype0.c	2010-04-05 02:13:52.000000000 +0200
@@ -1074,5 +1074,5 @@
   cff_dict_set(cffont->topdict, "ROS", 0,
-	       (double) cff_get_sid(cffont, (char *)"Adobe"));
+	       (double) cff_get_sid(cffont, "Adobe"));
   cff_dict_set(cffont->topdict, "ROS", 1,
-	       (double) cff_get_sid(cffont, (char *)"Identity"));
+	       (double) cff_get_sid(cffont, "Identity"));
   cff_dict_set(cffont->topdict, "ROS", 2, 0.0);
@@ -2011,5 +2011,5 @@
   cff_dict_set(cffont->topdict, "ROS", 0,
-	       (double) cff_get_sid(cffont, (char *)"Adobe"));
+	       (double) cff_get_sid(cffont, "Adobe"));
   cff_dict_set(cffont->topdict, "ROS", 1,
-	       (double) cff_get_sid(cffont, (char *)"Identity"));
+	       (double) cff_get_sid(cffont, "Identity"));
   cff_dict_set(cffont->topdict, "ROS", 2, 0.0);
diff -u1r dvipdfmx-20100328/src/cidtype2.c dx/src/cidtype2.c
--- dvipdfmx-20100328/src/cidtype2.c	2010-03-21 14:16:12.000000000 +0100
+++ dx/src/cidtype2.c	2010-04-05 02:13:52.000000000 +0200
@@ -186,3 +186,3 @@
   char *cmap_name;
-  char *append;
+  const char *append;
 
@@ -197,3 +197,3 @@
   for (i = 0; cmap_id < 0 && i < 5; i++) {
-    append = (char *) known_encodings[select].pdfnames[i];
+    append = known_encodings[select].pdfnames[i];
     if (!append)
@@ -209,3 +209,3 @@
     for (i = 0; i < 5; i++) {
-      append = (char *) known_encodings[select].pdfnames[i];
+      append = known_encodings[select].pdfnames[i];
       if (!append)
diff -u1r dvipdfmx-20100328/src/cmap.c dx/src/cmap.c
--- dvipdfmx-20100328/src/cmap.c	2007-12-03 04:10:43.000000000 +0100
+++ dx/src/cmap.c	2010-04-05 02:13:52.000000000 +0200
@@ -256,6 +256,7 @@
   mapDef *t;
-  unsigned char *p, c = 0, *save;
+  const unsigned char *p, *save;
+  unsigned char c = 0;
   long    count = 0;
 
-  p = save = (unsigned char *) *inbuf;
+  p = save = *inbuf;
   /*
diff -u1r dvipdfmx-20100328/src/cmap_write.c dx/src/cmap_write.c
--- dvipdfmx-20100328/src/cmap_write.c	2004-09-05 15:30:05.000000000 +0200
+++ dx/src/cmap_write.c	2010-04-05 02:13:52.000000000 +0200
@@ -346,3 +346,3 @@
   /* Start CMap */
-  pdf_add_stream(stream, (void *) CMAP_BEGIN, strlen(CMAP_BEGIN));
+  pdf_add_stream(stream, (const void *) CMAP_BEGIN, strlen(CMAP_BEGIN));
 
diff -u1r dvipdfmx-20100328/src/dpxcrypt.c dx/src/dpxcrypt.c
--- dvipdfmx-20100328/src/dpxcrypt.c	2004-07-27 14:08:46.000000000 +0200
+++ dx/src/dpxcrypt.c	2010-04-05 02:13:52.000000000 +0200
@@ -89,3 +89,3 @@
 /* transform n*64 bytes */
-static void transform (MD5_CONTEXT *ctx, unsigned char *data)
+static void transform (MD5_CONTEXT *ctx, const unsigned char *data)
 {
@@ -99,3 +99,3 @@
 #ifdef WORDS_BIGENDIAN
-  { int i; unsigned char *p1, *p2;
+  { int i; const unsigned char *p1; unsigned char *p2;
     for (i = 0, p1 = data, p2 = (unsigned char *)correct_words; i < 16; i++, p2 += 4 ) {
@@ -203,3 +203,3 @@
  * in the message whose digest is being computed. */
-void MD5_write (MD5_CONTEXT *hd, unsigned char *inbuf, unsigned long inlen)
+void MD5_write (MD5_CONTEXT *hd, const unsigned char *inbuf, unsigned long inlen)
 {
diff -u1r dvipdfmx-20100328/src/dpxcrypt.h dx/src/dpxcrypt.h
--- dvipdfmx-20100328/src/dpxcrypt.h	2003-08-05 09:09:09.000000000 +0200
+++ dx/src/dpxcrypt.h	2010-04-05 02:13:52.000000000 +0200
@@ -36,3 +36,3 @@
 void MD5_init (MD5_CONTEXT *ctx);
-void MD5_write (MD5_CONTEXT *ctx, unsigned char *inbuf, unsigned long inlen);
+void MD5_write (MD5_CONTEXT *ctx, const unsigned char *inbuf, unsigned long inlen);
 void MD5_final (unsigned char *outbuf, MD5_CONTEXT *ctx);
diff -u1r dvipdfmx-20100328/src/dpxfile.c dx/src/dpxfile.c
--- dvipdfmx-20100328/src/dpxfile.c	2009-03-12 20:29:48.000000000 +0100
+++ dx/src/dpxfile.c	2010-04-05 02:13:52.000000000 +0200
@@ -189,4 +189,3 @@
 }
-#else /* TEXK */
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
+#else /* !MIKTEX */
 #  define TDS11DOC "http://www.tug.org/ftp/tex/tds-1.1/tds.html#Fonts"
@@ -216,3 +215,2 @@
 }
-#endif /* TDS 1.1 */
 
@@ -358,3 +356,2 @@
     fqpn = dpx_find__app__xyz(q, ".map", 1);
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
     if (fqpn)
@@ -362,3 +359,2 @@
                    kpse_program_text_format, kpse_fontmap_format); 
-#endif
   }
@@ -384,3 +380,2 @@
     fqpn = dpx_find__app__xyz(q, ".txt", 1);
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
     if (fqpn)
@@ -388,3 +383,2 @@
                    kpse_program_text_format, kpse_fontmap_format); 
-#endif
   }
@@ -435,5 +429,3 @@
 #else
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L  
   fqpn = kpse_find_file(filename, kpse_cmap_format, 0); 
-#endif  
 #endif
@@ -447,3 +439,2 @@
 #ifndef  MIKTEX
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
       insistupdate(filename, fqpn, fools[i],
@@ -451,3 +442,2 @@
 #endif
-#endif
       if (!qcheck_filetype(fqpn, DPX_RES_TYPE_CMAP)) {
@@ -482,5 +472,3 @@
 #ifndef  MIKTEX
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
   fqpn = kpse_find_file(q, kpse_sfd_format, 0);
-#endif
 #endif /* !MIKTEX */
@@ -490,3 +478,2 @@
 #ifndef  MIKTEX
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
     if (fqpn)
@@ -495,3 +482,2 @@
 #endif
-#endif
   }
@@ -520,7 +506,3 @@
 #else
-# if defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
   fqpn = kpse_find_file(q, kpse_enc_format, 0);
-# else
-  fqpn = kpse_find_file(q, kpse_tex_ps_header_format, 0);
-# endif
 #endif /* MIKTEX */
@@ -530,3 +512,2 @@
 #ifndef  MIKTEX
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
     if (fqpn)
@@ -535,3 +516,2 @@
 #endif
-#endif
   }
@@ -581,3 +561,2 @@
 #ifndef MIKTEX
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
   fqpn = kpse_find_file(q, kpse_opentype_format, 0);
@@ -585,6 +564,4 @@
 #endif
-#endif
     fqpn = dpx_foolsearch(PACKAGE, q, 0);
 #ifndef  MIKTEX
-#if  defined(__TDS_VERSION__) && __TDS_VERSION__ >= 0x200406L
     if (fqpn)
@@ -594,3 +571,2 @@
 #endif
-#endif
   RELEASE(q);
@@ -649,5 +625,5 @@
 #  define __TMPDIR     "/tmp"
-#  define TEMPLATE     "/dvipdfmx.XXXXXX"
+#  define TEMPLATE     "/dvipdfmx.XXXXXXX"
   {
-    char *_tmpd;
+    const char *_tmpd;
     int   _fd = -1;
@@ -656,5 +632,5 @@
     if (!_tmpd)
-      _tmpd = (char *) __TMPDIR;
+      _tmpd = __TMPDIR;
 #  else
-    _tmpd = (char *) __TMPDIR;
+    _tmpd = __TMPDIR;
 #  endif /* HAVE_GETENV */
@@ -712,3 +688,3 @@
   char   *cmd = NULL;
-  char   *p, *q;
+  const char   *p, *q;
   size_t  n, size;
@@ -724,3 +700,3 @@
   memset(cmd, 0, size);
-  for (n = 0, p = (char *) cmdtmpl; *p != 0; p++) {
+  for (n = 0, p = cmdtmpl; *p != 0; p++) {
 #define need(s,l,m,n) \
diff -u1r dvipdfmx-20100328/src/dpxutil.c dx/src/dpxutil.c
--- dvipdfmx-20100328/src/dpxutil.c	2009-09-20 16:52:41.000000000 +0200
+++ dx/src/dpxutil.c	2010-04-05 02:13:52.000000000 +0200
@@ -220,3 +220,3 @@
   for (i = 0; i < keylen; i++) {
-    hkey = (hkey << 5) + hkey + ((char *)key)[i];
+    hkey = (hkey << 5) + hkey + ((const char *)key)[i];
   }
@@ -419,6 +419,6 @@
 static int
-read_c_escchar (char *r, char **pp, char *endptr)
+read_c_escchar (char *r, const char **pp, const char *endptr)
 {
   int   c = 0, l = 1;
-  char *p = *pp;
+  const char *p = *pp;
 
@@ -481,5 +481,5 @@
 static int
-read_c_litstrc (char *q, int len, char **pp, char *endptr)
+read_c_litstrc (char *q, int len, const char **pp, const char *endptr)
 {
-  char  *p;
+  const char *p;
   int    l = 0;
@@ -534,6 +534,6 @@
 char *
-parse_c_string (char **pp, char *endptr)
+parse_c_string (const char **pp, const char *endptr)
 {
   char  *q = NULL;
-  char  *p = *pp;
+  const char *p = *pp;
   int    l = 0;
@@ -566,6 +566,6 @@
 char *
-parse_c_ident (char **pp, char *endptr)
+parse_c_ident (const char **pp, const char *endptr)
 {
   char  *q = NULL;
-  char  *p = *pp;
+  const char *p = *pp;
   int    n;
@@ -584,6 +584,6 @@
 char *
-parse_float_decimal (char **pp, char *endptr)
+parse_float_decimal (const char **pp, const char *endptr)
 {
   char  *q = NULL;
-  char  *p = *pp;
+  const char *p = *pp;
   int    s = 0, n = 0;
diff -u1r dvipdfmx-20100328/src/dpxutil.h dx/src/dpxutil.h
--- dvipdfmx-20100328/src/dpxutil.h	2009-09-20 16:24:51.000000000 +0200
+++ dx/src/dpxutil.h	2010-04-05 02:13:52.000000000 +0200
@@ -108,5 +108,5 @@
 
-extern char *parse_float_decimal (char **pp, char *endptr);
-extern char *parse_c_string      (char **pp, char *endptr);
-extern char *parse_c_ident       (char **pp, char *endptr);
+extern char *parse_float_decimal (const char **pp, const char *endptr);
+extern char *parse_c_string      (const char **pp, const char *endptr);
+extern char *parse_c_ident       (const char **pp, const char *endptr);
 
diff -u1r dvipdfmx-20100328/src/dvi.c dx/src/dvi.c
--- dvipdfmx-20100328/src/dvi.c	2010-03-28 08:03:57.000000000 +0200
+++ dx/src/dvi.c	2010-04-05 02:13:52.000000000 +0200
@@ -461,3 +461,3 @@
   double x_user, y_user, mag;
-  char   *p;
+  const char *p;
 
@@ -470,3 +470,3 @@
 
-  p = (char *) buffer;
+  p = (const char *) buffer;
 
@@ -1636,5 +1636,6 @@
 static int
-read_length (double *vp, double mag, char **pp, char *endptr)
+read_length (double *vp, double mag, const char **pp, const char *endptr)
 {
-  char   *q, *p = *pp;
+  char   *q;
+  const char *p = *pp;
   double  v, u = 1.0;
@@ -1691,4 +1692,4 @@
 {
-  char  *q, *p = (char *) buf;
-  char  *endptr;
+  char  *q;
+  const char *p = buf, *endptr;
   int    ns_pdf = 0, error = 0;
diff -u1r dvipdfmx-20100328/src/dvipdfmx.c dx/src/dvipdfmx.c
--- dvipdfmx-20100328/src/dvipdfmx.c	2010-03-28 08:03:57.000000000 +0200
+++ dx/src/dvipdfmx.c	2010-04-05 02:13:52.000000000 +0200
@@ -194,5 +194,6 @@
 static int
-read_length (double *vp, char **pp, char *endptr)
+read_length (double *vp, const char **pp, const char *endptr)
 {
-  char   *q, *p = *pp;
+  char   *q;
+  const char *p = *pp;
   double  v, u = 1.0;
@@ -254,3 +255,3 @@
   } else {
-    char  *p = (char *) paperspec, *endptr, *comma;
+    const char  *p = paperspec, *endptr, *comma;
     comma  = strchr(p, ',');
@@ -278,3 +279,4 @@
 {
-  char  *q, *p = (char *) pagespec;
+  char  *q;
+  const char *p = pagespec;
 
@@ -415,3 +417,3 @@
         nextptr = argv[1];
-        read_length(&annot_grow, &nextptr, nextptr + strlen(nextptr));
+        read_length(&annot_grow, (const char **) &nextptr, nextptr + strlen(nextptr));
         POP_ARG();
@@ -421,3 +423,3 @@
         nextptr = argv[1];
-        read_length(&x_offset, &nextptr, nextptr + strlen(nextptr));
+        read_length(&x_offset, (const char **) &nextptr, nextptr + strlen(nextptr));
         POP_ARG();
@@ -427,3 +429,3 @@
         nextptr = argv[1];
-        read_length(&y_offset, &nextptr, nextptr + strlen(nextptr));
+        read_length(&y_offset, (const char **) &nextptr, nextptr + strlen(nextptr));
         POP_ARG();
@@ -612,3 +614,4 @@
 {
-  char *start, *end, *option;
+  const char *start, *end;
+  char *option;
   FILE *fp;
diff -u1r dvipdfmx-20100328/src/fontmap.c dx/src/fontmap.c
--- dvipdfmx-20100328/src/fontmap.c	2009-09-19 01:56:02.000000000 +0200
+++ dx/src/fontmap.c	2010-04-05 02:13:52.000000000 +0200
@@ -224,5 +224,5 @@
 static void
-skip_blank (char **pp, char *endptr)
+skip_blank (const char **pp, const char *endptr)
 {
-  char  *p = *pp;
+  const char  *p = *pp;
   if (!p || p >= endptr)
@@ -234,5 +234,6 @@
 static char *
-parse_string_value (char **pp, char *endptr)
+parse_string_value (const char **pp, const char *endptr)
 {
-  char  *q = NULL, *p = *pp;
+  char  *q = NULL;
+  const char *p = *pp;
   int    n;
@@ -257,5 +258,6 @@
 static char *
-parse_integer_value (char **pp, char *endptr, int base)
+parse_integer_value (const char **pp, const char *endptr, int base)
 {
-  char  *q, *p = *pp;
+  char  *q;
+  const char *p = *pp;
   int    has_sign = 0, has_prefix = 0, n;
@@ -310,5 +312,5 @@
 fontmap_parse_mapdef_dpm (fontmap_rec *mrec,
-                          const char *mapdef, char *endptr)
+                          const char *mapdef, const char *endptr)
 {
-  char  *p = (char *) mapdef;
+  const char  *p = mapdef;
 
@@ -487,3 +489,3 @@
         }
-        *r = 0; r++; skip_blank(&r, r + strlen(r));
+        *r = 0; r++; skip_blank((const char **)&r, r + strlen(r));
         if (*r == '\0') {
@@ -558,5 +560,6 @@
 fontmap_parse_mapdef_dps (fontmap_rec *mrec,
-                          const char *mapdef, char *endptr)
+                          const char *mapdef, const char *endptr)
 {
-  char *p = (char *)mapdef, *q;
+  const char *p = mapdef;
+  char *q;
 
@@ -594,3 +597,4 @@
       if ((q = parse_string_value(&p, endptr))) {
-        char *r = q, *e = q+strlen(q), *s, *t;
+        const char *r = q, *e = q+strlen(q);
+        char *s, *t;
         skip_blank(&r, e);
@@ -646,3 +650,3 @@
 
-  p = strchr((char *) tex_name, '@');
+  p = strchr(tex_name, '@');
   if (!p ||
@@ -871,3 +875,4 @@
   int    error;
-  char  *q, *p, *endptr;
+  char  *q;
+  const char *p, *endptr;
 
@@ -875,3 +880,3 @@
 
-  p      = (char *) mline;
+  p      = mline;
   endptr = p + mline_len;
@@ -926,3 +931,3 @@
   int   n = 0;
-  char *p, *endptr;
+  const char *p, *endptr;
 
@@ -931,3 +936,3 @@
 
-  p      = (char *) mline;
+  p      = mline;
   endptr = p + strlen(mline);
@@ -953,3 +958,3 @@
   FILE        *fp;
-  char        *p = NULL, *endptr;
+  const char  *p = NULL, *endptr;
   long         llen, lpos  = 0;
@@ -1130,5 +1135,6 @@
 static char *
-substr (char **str, char stop)
+substr (const char **str, char stop)
 {
-  char *sstr, *endptr;
+  char *sstr;
+  const char *endptr;
 
@@ -1152,3 +1158,4 @@
   char *font_name;
-  char *p, *next = NULL;
+  const char *p;
+  char *next = NULL;
   int   have_csi = 0, have_style = 0;
@@ -1157,3 +1164,3 @@
 
-  p = (char *) map_name;
+  p = map_name;
   font_name      = NULL;
diff -u1r dvipdfmx-20100328/src/mfileio.c dx/src/mfileio.c
--- dvipdfmx-20100328/src/mfileio.c	2002-10-30 03:27:11.000000000 +0100
+++ dx/src/mfileio.c	2010-04-05 02:13:52.000000000 +0200
@@ -66,3 +66,3 @@
 
-static void os_error()
+static void os_error(void)
 {
diff -u1r dvipdfmx-20100328/src/mpost.c dx/src/mpost.c
--- dvipdfmx-20100328/src/mpost.c	2008-12-11 17:03:04.000000000 +0100
+++ dx/src/mpost.c	2010-04-05 02:13:52.000000000 +0200
@@ -72,3 +72,3 @@
 
-static int mp_parse_body (char **start, char *end, double x_user, double y_user);
+static int mp_parse_body (const char **start, const char *end, double x_user, double y_user);
 
@@ -209,3 +209,3 @@
 int
-mps_scan_bbox (char **pp, char *endptr, pdf_rect *bbox)
+mps_scan_bbox (const char **pp, const char *endptr, pdf_rect *bbox)
 {
@@ -255,6 +255,6 @@
 static void
-skip_prolog (char **start, char *end)
+skip_prolog (const char **start, const char *end)
 {
   int   found_prolog = 0;
-  char *save;
+  const char *save;
 
@@ -835,5 +835,5 @@
   int   error = 0;
-  char *start, *end;
+  const char *start, *end;
 
-  start = (char *) ps_code;
+  start = ps_code;
   end   = start + strlen(start);
@@ -1399,3 +1399,3 @@
 static int
-mp_parse_body (char **start, char *end, double x_user, double y_user)
+mp_parse_body (const char **start, const char *end, double x_user, double y_user)
 {
@@ -1469,3 +1469,3 @@
 int
-mps_exec_inline (char **p, char *endptr,
+mps_exec_inline (const char **p, const char *endptr,
 		 double x_user, double y_user)
@@ -1520,3 +1520,4 @@
   int        st_depth, gs_depth;
-  char      *buffer, *p, *endptr;
+  char      *buffer;
+  const char *p, *endptr;
   long       length, nb_read;
@@ -1533,5 +1534,5 @@
   buffer = NEW(length + 1, char);
+  buffer[length] = '\0';
   p      = buffer;
   endptr = p + length;
-  endptr[0] = '\0';
 
@@ -1597,3 +1598,4 @@
   pdf_rect  bbox;
-  char     *buffer, *start, *end;
+  char     *buffer;
+  const char *start, *end;
   long      size;
diff -u1r dvipdfmx-20100328/src/mpost.h dx/src/mpost.h
--- dvipdfmx-20100328/src/mpost.h	2004-09-11 16:50:28.000000000 +0200
+++ dx/src/mpost.h	2010-04-05 02:13:52.000000000 +0200
@@ -33,3 +33,3 @@
 
-extern int  mps_scan_bbox    (char **pp, char *endptr, pdf_rect *bbox);
+extern int  mps_scan_bbox    (const char **pp, const char *endptr, pdf_rect *bbox);
 
@@ -38,3 +38,3 @@
 
-extern int  mps_exec_inline  (char **buffer, char *endptr,
+extern int  mps_exec_inline  (const char **buffer, const char *endptr,
 			      double x_user, double y_user);
diff -u1r dvipdfmx-20100328/src/otl_conf.c dx/src/otl_conf.c
--- dvipdfmx-20100328/src/otl_conf.c	2008-05-18 14:05:22.000000000 +0200
+++ dx/src/otl_conf.c	2010-04-05 02:13:52.000000000 +0200
@@ -48,3 +48,3 @@
 static pdf_obj *
-parse_uc_coverage (pdf_obj *gclass, char **pp, char *endptr)
+parse_uc_coverage (pdf_obj *gclass, const char **pp, const char *endptr)
 {
@@ -128,3 +128,3 @@
 
-static pdf_obj *parse_block (pdf_obj *gclass, char **pp, char *endptr);
+static pdf_obj *parse_block (pdf_obj *gclass, const char **pp, const char *endptr);
 
@@ -236,3 +236,3 @@
 static pdf_obj *
-parse_substrule (pdf_obj *gclass, char **pp, char *endptr)
+parse_substrule (pdf_obj *gclass, const char **pp, const char *endptr)
 {
@@ -321,3 +321,3 @@
 static pdf_obj *
-parse_block (pdf_obj *gclass, char **pp, char *endptr)
+parse_block (pdf_obj *gclass, const char **pp, const char *endptr)
 {
@@ -497,3 +497,3 @@
   gclass = pdf_new_dict();
-  rule   = parse_block(gclass, &p, endptr);
+  rule   = parse_block(gclass, (const char **) &p, endptr);
   pdf_release_obj(gclass);
diff -u1r dvipdfmx-20100328/src/otl_opt.c dx/src/otl_opt.c
--- dvipdfmx-20100328/src/otl_opt.c	2004-08-22 12:26:24.000000000 +0200
+++ dx/src/otl_opt.c	2010-04-05 02:13:52.000000000 +0200
@@ -113,3 +113,3 @@
 static struct bt_node *
-parse_expr (char **pp, char *endptr)
+parse_expr (const char **pp, const char *endptr)
 {
@@ -320,3 +320,3 @@
 {
-  char  *p, *endptr;
+  const char *p, *endptr;
 
@@ -325,3 +325,3 @@
   if (optstr) {
-    p      = (char *) optstr;
+    p      = optstr;
     endptr = p + strlen(optstr);
diff -u1r dvipdfmx-20100328/src/pdfcolor.c dx/src/pdfcolor.c
--- dvipdfmx-20100328/src/pdfcolor.c	2008-12-11 17:03:04.000000000 +0100
+++ dx/src/pdfcolor.c	2010-04-05 02:13:52.000000000 +0200
@@ -519,5 +519,5 @@
 {
-  char  *p;
+  const char  *p;
 
-  p = (char *) s;
+  p = (const char *) s;
 
@@ -685,3 +685,3 @@
   iccSig  colorspace;
-  unsigned char  *p;
+  const unsigned char  *p;
 
@@ -690,3 +690,3 @@
 
-  p = (unsigned char *) profile;
+  p = (const unsigned char *) profile;
 
@@ -724,3 +724,3 @@
   pdf_obj       *ri = NULL;
-  unsigned char *p;
+  const unsigned char *p;
   long           intent;
@@ -730,3 +730,3 @@
 
-  p = (unsigned char *) profile;
+  p = (const unsigned char *) profile;
 
@@ -762,3 +762,3 @@
 {
-  unsigned char *p, *endptr;
+  const unsigned char *p, *endptr;
 
@@ -772,3 +772,3 @@
 
-  p      = (unsigned char *) profile;
+  p      = (const unsigned char *) profile;
   endptr = p + 128;
@@ -855,6 +855,6 @@
 {
-  unsigned char *p;
+  const unsigned char *p;
   MD5_CONTEXT    md5;
 
-  p = (unsigned char *) profile;
+  p = (const unsigned char *) profile;
 
diff -u1r dvipdfmx-20100328/src/pdfdev.c dx/src/pdfdev.c
--- dvipdfmx-20100328/src/pdfdev.c	2009-03-16 23:26:40.000000000 +0100
+++ dx/src/pdfdev.c	2010-04-05 02:13:52.000000000 +0200
@@ -892,5 +892,5 @@
 handle_multibyte_string (struct dev_font *font,
-                         unsigned char **str_ptr, int *str_len, int ctype)
+                         const unsigned char **str_ptr, int *str_len, int ctype)
 {
-  unsigned char *p;
+  const unsigned char *p;
   int            i, length;
@@ -950,3 +950,4 @@
   if (font->enc_id >= 0) {
-    unsigned char *inbuf, *outbuf;
+    const unsigned char *inbuf;
+    unsigned char *outbuf;
     long           inbytesleft, outbytesleft;
@@ -961,3 +962,3 @@
     CMap_decode(cmap,
-                (const unsigned char **) &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+                &inbuf, &inbytesleft, &outbuf, &outbytesleft);
     if (inbytesleft != 0) {
@@ -1023,3 +1024,3 @@
   struct dev_font *font;
-  unsigned char   *str_ptr; /* Pointer to the reencoded string. */
+  const unsigned char *str_ptr; /* Pointer to the reencoded string. */
   int              length, i, len = 0;
@@ -1046,3 +1047,3 @@
 
-  str_ptr = (unsigned char *) instr_ptr;
+  str_ptr = instr_ptr;
   length  = instr_len;
diff -u1r dvipdfmx-20100328/src/pdfdoc.c dx/src/pdfdoc.c
--- dvipdfmx-20100328/src/pdfdoc.c	2010-03-28 08:42:59.000000000 +0200
+++ dx/src/pdfdoc.c	2010-04-05 02:13:52.000000000 +0200
@@ -195,3 +195,3 @@
 {
-  char  *category;
+  const char  *category;
   struct ht_table *data;
@@ -1413,3 +1414,3 @@
   for (i = 0; i < NUM_NAME_CATEGORY; i++) {
-    p->names[i].category = (char *) name_dict_categories[i];
+    p->names[i].category = name_dict_categories[i];
     p->names[i].data     = strcmp(name_dict_categories[i], "Dests") ?
@@ -1457,3 +1458,3 @@
   pdf_obj *subtype = NULL, *A = NULL, *S = NULL, *D = NULL, *D_new, *dict;
-  char *dest, *key;
+  const char *dest, *key;
 
diff -u1r dvipdfmx-20100328/src/pdfencoding.c dx/src/pdfencoding.c
--- dvipdfmx-20100328/src/pdfencoding.c	2009-03-24 08:55:52.000000000 +0100
+++ dx/src/pdfencoding.c	2010-04-05 02:13:52.000000000 +0200
@@ -94,3 +94,3 @@
 					   const char **encoding_vec,
-					   char *baseenc_name,
+					   const char *baseenc_name,
 					   int flags);
@@ -287,3 +287,4 @@
   pdf_obj *encoding_array = NULL;
-  char    *wbuf, *p, *endptr;
+  char    *wbuf;
+  const char *p, *endptr;
   char    *enc_vec[256];
@@ -308,2 +309,3 @@
   wbuf = NEW(fsize + 1, char); 
+  wbuf[fsize] = '\0';
   fread(wbuf, sizeof(char), fsize, fp);
@@ -313,3 +315,2 @@
   endptr   = wbuf + fsize;
-  p[fsize] = '\0';
 
@@ -406,3 +407,3 @@
 			   const char **encoding_vec,
-			   char *baseenc_name, int flags)
+			   const char *baseenc_name, int flags)
 {
@@ -459,3 +460,3 @@
  */
-void pdf_encoding_complete ()
+void pdf_encoding_complete (void)
 {
@@ -508,3 +509,3 @@
 int
-pdf_encoding_findresource (char *enc_name)
+pdf_encoding_findresource (const char *enc_name)
 {
diff -u1r dvipdfmx-20100328/src/pdfencoding.h dx/src/pdfencoding.h
--- dvipdfmx-20100328/src/pdfencoding.h	2007-11-14 04:12:21.000000000 +0100
+++ dx/src/pdfencoding.h	2010-04-05 02:13:52.000000000 +0200
@@ -42,3 +42,3 @@
  */
-extern int       pdf_encoding_findresource   (char *enc_name);
+extern int       pdf_encoding_findresource   (const char *enc_name);
 
diff -u1r dvipdfmx-20100328/src/pdfencrypt.c dx/src/pdfencrypt.c
--- dvipdfmx-20100328/src/pdfencrypt.c	2010-02-07 13:58:48.000000000 +0100
+++ dx/src/pdfencrypt.c	2010-04-05 02:13:52.000000000 +0200
@@ -325,3 +325,3 @@
     MD5_init(&md5_ctx);
-    MD5_write(&md5_ctx, (unsigned char *)padding_string, MAX_STR_LEN);
+    MD5_write(&md5_ctx, padding_string, MAX_STR_LEN);
 
diff -u1r dvipdfmx-20100328/src/pdfnames.c dx/src/pdfnames.c
--- dvipdfmx-20100328/src/pdfnames.c	2009-09-19 01:56:02.000000000 +0200
+++ dx/src/pdfnames.c	2010-04-05 02:13:52.000000000 +0200
@@ -253,7 +253,7 @@
 {
-  struct named_object *sd1, *sd2;
+  const struct named_object *sd1, *sd2;
   int    keylen, cmp;
 
-  sd1 = (struct named_object *) d1;
-  sd2 = (struct named_object *) d2;
+  sd1 = (const struct named_object *) d1;
+  sd2 = (const struct named_object *) d2;
 
diff -u1r dvipdfmx-20100328/src/pdfobj.c dx/src/pdfobj.c
--- dvipdfmx-20100328/src/pdfobj.c	2010-02-07 13:53:44.000000000 +0100
+++ dx/src/pdfobj.c	2010-04-05 02:13:52.000000000 +0200
@@ -562,3 +562,3 @@
       if (length > 0 &&
-	((char *)buffer)[length-1] == '\n')
+	((const char *)buffer)[length-1] == '\n')
         pdf_output_line_position = 0;
@@ -2195,3 +2195,4 @@
   {
-    char *start, *end, *number;
+    const char *start, *end;
+    char *number;
 
@@ -2227,3 +2228,3 @@
   } else {
-    char *p = work_buffer + strlen("trailer");
+    const char *p = work_buffer + strlen("trailer");
     skip_white(&p, work_buffer + WORK_BUFFER_SIZE);
@@ -2287,3 +2288,4 @@
   long     length;
-  char    *buffer, *p, *endptr;
+  char    *buffer;
+  const char *p, *endptr;
   pdf_obj *result;
@@ -2305,3 +2307,3 @@
   {
-    char         *q = p; /* <== p */
+    const char   *q = p; /* <== p */
     char         *sp;
@@ -2364,3 +2366,4 @@
   long limit = next_object_offset(pf, num), n, first, *header = NULL;
-  char *data, data1, *p, *q;
+  char *data = NULL, *q;
+  const char *p, *endptr;
   int i;
@@ -2407,9 +2410,9 @@
 
-  data = (char *) pdf_stream_dataptr(objstm);
-
-  /* hack to avoid parsing beyond offset table */
-  data1 = data[first];
+  /* avoid parsing beyond offset table */
+  data = NEW(first + 1, char);
+  memcpy(data, pdf_stream_dataptr(objstm), first);
   data[first] = 0;
 
-  p = data;
+  p      = data;
+  endptr = p + first;
   i = 2*n;
@@ -2421,8 +2424,8 @@
   }
-  data[first] = data1;
 
   /* Any garbage after last entry? */
-  skip_white(&p, data+first);
-  if (p != data+first)
+  skip_white(&p, endptr);
+  if (p != endptr)
     goto error;
+  RELEASE(data);
   
@@ -2432,2 +2435,4 @@
   WARN("Cannot parse object stream.");
+  if (data)
+    RELEASE(data);
   if (objstm)
@@ -2469,3 +2474,3 @@
     long *data, n, first, length;
-    char *p, *q;
+    const char *p, *q;
 
@@ -2485,3 +2490,3 @@
     length = pdf_stream_length(objstm);
-    p = (char *) pdf_stream_dataptr(objstm) + first + data[2*index+1];
+    p = (const char *) pdf_stream_dataptr(objstm) + first + data[2*index+1];
     q = p + (index == n-1 ? length : first+data[2*index+3]);
@@ -2685,3 +2690,3 @@
 {
-  pdf_obj *xrefstm, *size_obj, *W_obj, *index;
+  pdf_obj *xrefstm, *size_obj, *W_obj, *index_obj;
   unsigned long size;
@@ -2725,7 +2730,7 @@
 
-  index = pdf_lookup_dict(*trailer, "Index");
-  if (index) {
+  index_obj = pdf_lookup_dict(*trailer, "Index");
+  if (index_obj) {
     unsigned int index_len;
-    if (!PDF_OBJ_ARRAYTYPE(index) ||
-	((index_len = pdf_array_length(index)) % 2 ))
+    if (!PDF_OBJ_ARRAYTYPE(index_obj) ||
+	((index_len = pdf_array_length(index_obj)) % 2 ))
       goto error;
@@ -2734,9 +2739,9 @@
     while (i < index_len) {
-      pdf_obj *first = pdf_get_array(index, i++);
-      pdf_obj *size  = pdf_get_array(index, i++);
+      pdf_obj *first = pdf_get_array(index_obj, i++);
+      size_obj  = pdf_get_array(index_obj, i++);
       if (!PDF_OBJ_NUMBERTYPE(first) ||
-	  !PDF_OBJ_NUMBERTYPE(size) ||
+	  !PDF_OBJ_NUMBERTYPE(size_obj) ||
 	  parse_xrefstm_subsec(pf, &p, &length, W, wsum,
 			       (long) pdf_number_value(first),
-			       (long) pdf_number_value(size)))
+			       (long) pdf_number_value(size_obj)))
 	goto error;
@@ -2839,3 +2844,3 @@
 
-pdf_file *
+static pdf_file *
 pdf_file_new (FILE *file)
diff -u1r dvipdfmx-20100328/src/pdfparse.c dx/src/pdfparse.c
--- dvipdfmx-20100328/src/pdfparse.c	2009-04-29 13:20:21.000000000 +0200
+++ dx/src/pdfparse.c	2010-04-05 02:13:52.000000000 +0200
@@ -71,3 +71,3 @@
 
-static char *save = NULL;
+static const char *save = NULL;
 
@@ -96,3 +96,3 @@
 void
-skip_line (char **start, char *end)
+skip_line (const char **start, const char *end)
 {
@@ -112,3 +112,3 @@
 void
-skip_white (char **start, char *end)
+skip_white (const char **start, const char *end)
 {
@@ -146,5 +146,6 @@
 char *
-parse_number (char **start, char *end)
+parse_number (const char **start, const char *end)
 {
-  char *number, *p;
+  char *number;
+  const char *p;
 
@@ -168,5 +169,6 @@
 char *
-parse_unsigned (char **start, char *end)
+parse_unsigned (const char **start, const char *end)
 {
-  char *number, *p;
+  char *number;
+  const char *p;
 
@@ -184,5 +186,6 @@
 static char *
-parse_gen_ident (char **start, char *end, const char *valid_chars)
+parse_gen_ident (const char **start, const char *end, const char *valid_chars)
 {
-  char *ident, *p;
+  char *ident;
+  const char *p;
 
@@ -200,3 +203,3 @@
 char *
-parse_ident (char **start, char *end)
+parse_ident (const char **start, const char *end)
 {
@@ -209,3 +212,3 @@
 char *
-parse_val_ident (char **start, char *end)
+parse_val_ident (const char **start, const char *end)
 {
@@ -218,3 +221,3 @@
 char *
-parse_opt_ident (char **start, char *end)
+parse_opt_ident (const char **start, const char *end)
 {
@@ -230,5 +233,5 @@
 pdf_obj *
-parse_pdf_number (char **pp, char *endptr)
+parse_pdf_number (const char **pp, const char *endptr)
 {
-  char    *p;
+  const char *p;
   unsigned long ipart = 0, dpart = 0;
@@ -311,6 +314,6 @@
 static int
-pn_getc (char **pp, char *endptr)
+pn_getc (const char **pp, const char *endptr)
 {
   int   ch = 0;
-  char *p;
+  const char *p;
 
@@ -350,3 +353,3 @@
 pdf_obj *
-parse_pdf_name (char **pp, char *endptr)
+parse_pdf_name (const char **pp, const char *endptr)
 {
@@ -388,3 +391,3 @@
 pdf_obj *
-parse_pdf_boolean (char **pp, char *endptr)
+parse_pdf_boolean (const char **pp, const char *endptr)
 {
@@ -413,3 +416,3 @@
 pdf_obj *
-parse_pdf_null (char **pp, char *endptr)
+parse_pdf_null (const char **pp, const char *endptr)
 {
@@ -440,6 +443,6 @@
 static int
-ps_getescc (char **pp, char *endptr)
+ps_getescc (const char **pp, const char *endptr)
 {
   int   ch, i;
-  char  *p;
+  const char *p;
 
@@ -491,6 +494,6 @@
 static pdf_obj *
-parse_pdf_literal_string (char **pp, char *endptr)
+parse_pdf_literal_string (const char **pp, const char *endptr)
 {
   int    ch, op_count = 0, len = 0;
-  char  *p;
+  const char  *p;
 
@@ -596,5 +599,5 @@
 static pdf_obj *
-parse_pdf_hex_string (char **pp, char *endptr)
+parse_pdf_hex_string (const char **pp, const char *endptr)
 {
-  char  *p;
+  const char  *p;
   long   len;
@@ -645,3 +648,3 @@
 pdf_obj *
-parse_pdf_string (char **pp, char *endptr)
+parse_pdf_string (const char **pp, const char *endptr)
 {
@@ -664,3 +667,3 @@
 pdf_obj *
-parse_pdf_tainted_dict (char **pp, char *endptr)
+parse_pdf_tainted_dict (const char **pp, const char *endptr)
 {
@@ -676,3 +679,3 @@
 pdf_obj *
-parse_pdf_tainted_dict (char **pp, char *endptr)
+parse_pdf_tainted_dict (const char **pp, const char *endptr)
 {
@@ -683,6 +686,6 @@
 pdf_obj *
-parse_pdf_dict (char **pp, char *endptr, pdf_file *pf)
+parse_pdf_dict (const char **pp, const char *endptr, pdf_file *pf)
 {
   pdf_obj *result = NULL;
-  char    *p;
+  const char *p;
 
@@ -740,6 +743,6 @@
 pdf_obj *
-parse_pdf_array (char **pp, char *endptr, pdf_file *pf)
+parse_pdf_array (const char **pp, const char *endptr, pdf_file *pf)
 {
   pdf_obj *result;
-  char    *p;
+  const char *p;
 
@@ -783,6 +786,6 @@
 static pdf_obj *
-parse_pdf_stream (char **pp, char *endptr, pdf_obj *dict, pdf_file *pf)
+parse_pdf_stream (const char **pp, const char *endptr, pdf_obj *dict, pdf_file *pf)
 {
   pdf_obj *result = NULL;
-  char    *p;
+  const char *p;
   pdf_obj *stream_dict;
@@ -888,3 +891,3 @@
 static pdf_obj *
-parse_pdf_reference (char **start, char *end)
+parse_pdf_reference (const char **start, const char *end)
 {
@@ -915,3 +918,3 @@
 static pdf_obj *
-try_pdf_reference (char *start, char *end, char **endptr, pdf_file *pf)
+try_pdf_reference (const char *start, const char *end, const char **endptr, pdf_file *pf)
 {
@@ -961,3 +964,3 @@
 pdf_obj *
-parse_pdf_object (char **pp, char *endptr, pdf_file *pf)
+parse_pdf_object (const char **pp, const char *endptr, pdf_file *pf)
 /* If pf is NULL, then indirect references are not allowed */
@@ -965,3 +968,3 @@
   pdf_obj *result = NULL;
-  char    *nextptr;
+  const char *nextptr;
 
diff -u1r dvipdfmx-20100328/src/pdfparse.h dx/src/pdfparse.h
--- dvipdfmx-20100328/src/pdfparse.h	2008-05-13 14:23:45.000000000 +0200
+++ dx/src/pdfparse.h	2010-04-05 02:13:52.000000000 +0200
@@ -33,22 +33,22 @@
 
-extern void skip_line  (char **start, char *end);
-extern void skip_white (char **start, char *end);
+extern void skip_line  (const char **start, const char *end);
+extern void skip_white (const char **start, const char *end);
 
-extern char *parse_number   (char **start, char *end);
-extern char *parse_unsigned (char **start, char *end);
+extern char *parse_number   (const char **start, const char *end);
+extern char *parse_unsigned (const char **start, const char *end);
 
-extern char *parse_ident     (char **start, char *end);
-extern char *parse_val_ident (char **start, char *end);
-extern char *parse_opt_ident (char **start, char *end);
-
-extern pdf_obj *parse_pdf_name    (char **pp, char *endptr);
-extern pdf_obj *parse_pdf_boolean (char **pp, char *endptr);
-extern pdf_obj *parse_pdf_number  (char **pp, char *endptr);
-extern pdf_obj *parse_pdf_null    (char **pp, char *endptr);
-extern pdf_obj *parse_pdf_string  (char **pp, char *endptr);
-extern pdf_obj *parse_pdf_dict    (char **pp, char *endptr, pdf_file *pf);
-extern pdf_obj *parse_pdf_array   (char **pp, char *endptr, pdf_file *pf);
-extern pdf_obj *parse_pdf_object  (char **pp, char *endptr, pdf_file *pf);
+extern char *parse_ident     (const char **start, const char *end);
+extern char *parse_val_ident (const char **start, const char *end);
+extern char *parse_opt_ident (const char **start, const char *end);
+
+extern pdf_obj *parse_pdf_name    (const char **pp, const char *endptr);
+extern pdf_obj *parse_pdf_boolean (const char **pp, const char *endptr);
+extern pdf_obj *parse_pdf_number  (const char **pp, const char *endptr);
+extern pdf_obj *parse_pdf_null    (const char **pp, const char *endptr);
+extern pdf_obj *parse_pdf_string  (const char **pp, const char *endptr);
+extern pdf_obj *parse_pdf_dict    (const char **pp, const char *endptr, pdf_file *pf);
+extern pdf_obj *parse_pdf_array   (const char **pp, const char *endptr, pdf_file *pf);
+extern pdf_obj *parse_pdf_object  (const char **pp, const char *endptr, pdf_file *pf);
 
-extern pdf_obj *parse_pdf_tainted_dict (char **pp, char *endptr);
+extern pdf_obj *parse_pdf_tainted_dict (const char **pp, const char *endptr);
 
diff -u1r dvipdfmx-20100328/src/pdfximage.h dx/src/pdfximage.h
--- dvipdfmx-20100328/src/pdfximage.h	2009-09-19 20:43:04.000000000 +0200
+++ dx/src/pdfximage.h	2010-04-05 02:13:52.000000000 +0200
@@ -61,2 +61,3 @@
 extern char    *pdf_ximage_get_resname    (int xobj_id);
+extern int      pdf_ximage_get_subtype    (int xobj_id);
 extern pdf_obj *pdf_ximage_get_reference  (int xobj_id);
Only in dx/src: pngimage.c.rej
diff -u1r dvipdfmx-20100328/src/pst_obj.c dx/src/pst_obj.c
--- dvipdfmx-20100328/src/pst_obj.c	2008-11-30 22:12:27.000000000 +0100
+++ dx/src/pst_obj.c	2010-04-05 02:13:59.000000000 +0200
@@ -125,3 +125,7 @@
 {
-  return pst_new_obj(PST_TYPE_MARK, (void *)pst_const_mark);
+  char *q;
+
+  q = NEW(strlen(pst_const_mark)+1, char);
+  strcpy(q, pst_const_mark);
+  return pst_new_obj(PST_TYPE_MARK, (void *)q);
 }
@@ -140,3 +144,2 @@
   case PST_TYPE_MARK:
-    break;
   case PST_TYPE_UNKNOWN:
@@ -390,4 +393,8 @@
       PST_TOKEN_END(*inbuf+4, inbufend)) {
+    char *q;
+
     *inbuf += 4;
-    return pst_new_obj(PST_TYPE_NULL, (void*)pst_const_null);
+    q = NEW(strlen(pst_const_null)+1, char);
+    strcpy(q, pst_const_null);
+    return pst_new_obj(PST_TYPE_NULL, (void*)q);
   } else
diff -u1r dvipdfmx-20100328/src/sfnt.h dx/src/sfnt.h
--- dvipdfmx-20100328/src/sfnt.h	2008-05-08 20:51:59.000000000 +0200
+++ dx/src/sfnt.h	2010-04-05 02:13:59.000000000 +0200
@@ -29,2 +29,5 @@
 
+/* Acoid conflict with CHAR from <winnt.h>.  */
+#define CHAR SFNT_CHAR
+
 /* Data Types as described in Apple's TTRefMan */
diff -u1r dvipdfmx-20100328/src/spc_color.c dx/src/spc_color.c
--- dvipdfmx-20100328/src/spc_color.c	2009-04-29 13:22:19.000000000 +0200
+++ dx/src/spc_color.c	2010-04-05 02:13:59.000000000 +0200
@@ -111,5 +111,5 @@
 static void 
-skip_blank (char **pp, char *endptr)
+skip_blank (const char **pp, const char *endptr)
 {
-  char  *p = *pp;
+  const char  *p = *pp;
   for ( ; p < endptr && ISBLANK(*p); p++);
@@ -122,5 +122,6 @@
   int   r = 0;
-  char *q, *p, *endptr;
+  const char *p, *endptr;
+  char *q;
 
-  p      = (char *) buf;
+  p      = buf;
   endptr = p + len;
@@ -145,3 +146,4 @@
 {
-  char  *p, *q;
+  const char *p;
+  char *q;
 
@@ -156,3 +158,3 @@
   if (!strcmp(q, "background")) {
-    ap->command = (char *) "background";
+    ap->command = "background";
     sph->exec   = &spc_handler_background;
@@ -167,3 +169,3 @@
     else if (!strcmp(q, "push")) {
-      ap->command = (char *) "push";
+      ap->command = "push";
       sph->exec   = &spc_handler_color_push;
@@ -171,3 +173,3 @@
     } else if (!strcmp(q, "pop")) {
-      ap->command = (char *) "pop";
+      ap->command = "pop";
       sph->exec   = &spc_handler_color_pop;
@@ -175,3 +177,3 @@
     } else { /* cmyk, rgb, ... */
-      ap->command = (char *) "";
+      ap->command = "";
       sph->exec   = &spc_handler_color_default;
diff -u1r dvipdfmx-20100328/src/spc_dvips.c dx/src/spc_dvips.c
--- dvipdfmx-20100328/src/spc_dvips.c	2009-11-28 23:41:44.000000000 +0100
+++ dx/src/spc_dvips.c	2010-04-05 02:13:59.000000000 +0200
@@ -59,5 +59,6 @@
 static char *
-parse_filename (char **pp, char *endptr)
+parse_filename (const char **pp, const char *endptr)
 {
-  char  *r, *q = NULL, *p = *pp;
+  char  *r;
+  const char *q = NULL, *p = *pp;
   char   qchar;
@@ -303,7 +304,7 @@
 {
-  char *p, *endptr;
+  const char *p, *endptr;
   int   i;
 
-  p      = (char *) buf;
-  endptr =  p + len;
+  p      = buf;
+  endptr = p + len;
 
@@ -330,3 +331,3 @@
 {
-  char *key;
+  const char *key;
   int   i, keylen;
@@ -368,5 +369,5 @@
 
-      args->command = (char *) dvips_handlers[i].key;
+      args->command = dvips_handlers[i].key;
 
-      handle->key  = (char *) "ps:";
+      handle->key  = "ps:";
       handle->exec = dvips_handlers[i].exec;
diff -u1r dvipdfmx-20100328/src/spc_html.c dx/src/spc_html.c
--- dvipdfmx-20100328/src/spc_html.c	2009-03-16 23:26:40.000000000 +0100
+++ dx/src/spc_html.c	2010-04-05 02:13:59.000000000 +0200
@@ -74,3 +74,3 @@
 #ifdef  ENABLE_HTML_SVG_TRANSFORM
-static int cvt_a_to_tmatrix (pdf_tmatrix *M, const char *ptr, char **nextptr);
+static int cvt_a_to_tmatrix (pdf_tmatrix *M, const char *ptr, const char **nextptr);
 #endif /* ENABLE_HTML_SVG_TRANSFORM */
@@ -90,5 +90,6 @@
 static int
-parse_key_val (char **pp, char *endptr, char **kp, char **vp)
+parse_key_val (const char **pp, const char *endptr, char **kp, char **vp)
 {
-  char  *q, *p, *k, *v;
+  const char *q, *p;
+  char  *k, *v;
   int    n, error = 0;
@@ -159,5 +160,5 @@
 static int
-read_html_tag (char *name, pdf_obj *attr, int *type, char **pp, char *endptr)
+read_html_tag (char *name, pdf_obj *attr, int *type, const char **pp, const char *endptr)
 {
-  char  *p = *pp;
+  const char *p = *pp;
   int    n = 0, error = 0;
@@ -479,3 +480,4 @@
 {
-  char   *q, *p = (char *) a;
+  char   *q;
+  const char *p = a;
   double  v, u = 1.0;
@@ -615,3 +617,3 @@
   if (obj) {
-    char  *p = (char *) pdf_string_value(obj);
+    const char *p = pdf_string_value(obj);
     pdf_tmatrix  N;
@@ -762,5 +764,6 @@
 static int
-cvt_a_to_tmatrix (pdf_tmatrix *M, const char *ptr, char **nextptr)
+cvt_a_to_tmatrix (pdf_tmatrix *M, const char *ptr, const char **nextptr)
 {
-  char        *q, *p = (char *) ptr;
+  char        *q;
+  const char  *p = ptr;
   int          n;
@@ -901,5 +904,5 @@
 {
-  char  *p, *endptr;
+  const char *p, *endptr;
 
-  p      = (char *) buffer;
+  p      = buffer;
   endptr = p + size;
@@ -929,5 +932,5 @@
 
-  ap->command = (char *) "";
+  ap->command = "";
 
-  sph->key    = (char *) "html:";
+  sph->key    = "html:";
   sph->exec   = &spc_handler_html_default;
diff -u1r dvipdfmx-20100328/src/spc_misc.c dx/src/spc_misc.c
--- dvipdfmx-20100328/src/spc_misc.c	2008-11-30 22:17:58.000000000 +0100
+++ dx/src/spc_misc.c	2010-04-05 02:13:59.000000000 +0200
@@ -103,3 +103,3 @@
   for (;;) {
-    char  *p = mfgets(buf, 512, fp);
+    const char *p = mfgets(buf, 512, fp);
     if (!p)
@@ -145,6 +145,6 @@
 {
-  char  *p, *endptr;
+  const char *p, *endptr;
   int    i;
 
-  p      = (char *) buffer;
+  p      = buffer;
   endptr = p + size;
@@ -169,3 +169,3 @@
 {
-  char  *key;
+  const char *key;
   int    i, keylen;
@@ -199,5 +199,5 @@
 
-      args->command = (char *) misc_handlers[i].key;
+      args->command = misc_handlers[i].key;
 
-      handle->key   = (char *) "???:";
+      handle->key   = "???:";
       handle->exec  = misc_handlers[i].exec;
diff -u1r dvipdfmx-20100328/src/spc_pdfm.c dx/src/spc_pdfm.c
--- dvipdfmx-20100328/src/spc_pdfm.c	2010-03-28 08:03:57.000000000 +0200
+++ dx/src/spc_pdfm.c	2010-04-05 02:13:59.000000000 +0200
@@ -484,3 +484,3 @@
 static pdf_obj *
-my_parse_pdf_dict (char **pp, char *endptr, struct tounicode *cd)
+my_parse_pdf_dict (const char **pp, const char *endptr, struct tounicode *cd)
 {
@@ -1961,5 +1961,5 @@
   int    r = 0;
-  char  *p, *endptr;
+  const char *p, *endptr;
 
-  p      = (char *) buf;
+  p      = buf;
   endptr = p + len;
@@ -1998,4 +1998,4 @@
       if (!strcmp(q, pdfm_handlers[i].key)) {
-        ap->command = (char *) pdfm_handlers[i].key;
-        sph->key   = (char *) "pdf:";
+        ap->command = pdfm_handlers[i].key;
+        sph->key   = "pdf:";
         sph->exec  = pdfm_handlers[i].exec;
diff -u1r dvipdfmx-20100328/src/spc_tpic.c dx/src/spc_tpic.c
--- dvipdfmx-20100328/src/spc_tpic.c	2009-03-16 23:26:40.000000000 +0100
+++ dx/src/spc_tpic.c	2010-04-05 02:13:59.000000000 +0200
@@ -69,5 +69,5 @@
 static void
-skip_blank (char **pp, char *endptr)
+skip_blank (const char **pp, const char *endptr)
 {
-  char  *p = *pp;
+  const char  *p = *pp;
   for ( ; p < endptr && ISBLANK(*p); p++);
@@ -986,6 +986,7 @@
   int    istpic = 0;
-  char  *q, *p, *endptr;
+  char  *q;
+  const char *p, *endptr;
   int    i, hasnsp = 0;
 
-  p      = (char *) buf;
+  p      = buf;
   endptr = p + len;
@@ -1049,4 +1050,4 @@
 #if  DEBUG
-    ap->command = (char *) "__setopt__";
-    sph->key    = (char *) "tpic:";
+    ap->command = "__setopt__";
+    sph->key    = "tpic:";
     sph->exec   = spc_handler_tpic__setopts;
@@ -1060,4 +1061,4 @@
       if (!strcmp(q, tpic_handlers[i].key)) {
-        ap->command = (char *) tpic_handlers[i].key;
-        sph->key    = (char *) "tpic:";
+        ap->command = tpic_handlers[i].key;
+        sph->key    = "tpic:";
         sph->exec   = tpic_handlers[i].exec;
diff -u1r dvipdfmx-20100328/src/spc_util.c dx/src/spc_util.c
--- dvipdfmx-20100328/src/spc_util.c	2009-04-29 13:30:51.000000000 +0200
+++ dx/src/spc_util.c	2010-04-05 02:13:59.000000000 +0200
@@ -47,5 +47,5 @@
 static void
-skip_blank (char **pp, char *endptr)
+skip_blank (const char **pp, const char *endptr)
 {
-  char  *p = *pp;
+  const char  *p = *pp;
   for ( ; p < endptr && ISBLANK(*p); p++);
diff -u1r dvipdfmx-20100328/src/specials.c dx/src/specials.c
--- dvipdfmx-20100328/src/specials.c	2009-04-26 23:23:29.000000000 +0200
+++ dx/src/specials.c	2010-04-05 02:13:59.000000000 +0200
@@ -334,3 +334,3 @@
 
-  args->curptr = (char *) p;
+  args->curptr = p;
   args->endptr = args->curptr + size;
@@ -497,3 +497,4 @@
 {
-  char      *p, ebuf[64];
+  const char *p;
+  char      ebuf[64];
   int       i;
@@ -555,3 +556,3 @@
   if (verbose > 3) {
-    dump((char *) buffer, (char *) buffer + size);
+    dump(buffer, buffer + size);
   }
diff -u1r dvipdfmx-20100328/src/specials.h dx/src/specials.h
--- dvipdfmx-20100328/src/specials.h	2007-01-21 00:53:20.000000000 +0100
+++ dx/src/specials.h	2010-04-05 02:13:59.000000000 +0200
@@ -34,7 +34,7 @@
 struct spc_arg {
-  char  *curptr;
-  char  *endptr;
-  char  *base;
+  const char  *curptr;
+  const char  *endptr;
+  const char  *base;
 
-  char  *command;
+  const char  *command;
 };
diff -u1r dvipdfmx-20100328/src/subfont.c dx/src/subfont.c
--- dvipdfmx-20100328/src/subfont.c	2008-01-13 22:25:31.000000000 +0100
+++ dx/src/subfont.c	2010-04-05 02:13:59.000000000 +0200
@@ -170,3 +170,4 @@
 {
-  char  *p = (char *) lbuf, *q;
+  const char *p = lbuf, *q;
+  char  *r;
   int    repos  = 0;
@@ -180,3 +181,4 @@
     repos = 0; q = p;
-    v1    = strtol(p, &q, 0);
+    v1    = strtol(p, &r, 0);
+    q = r;
     if (q == p ||
@@ -198,3 +200,4 @@
       p  = q + 1;
-      v2 = strtol(p, &q, 0);
+      v2 = strtol(p, &r, 0);
+      q = r;
       if (v1 < 0 || v1 > 0xffffL ||
diff -u1r dvipdfmx-20100328/src/t1_char.c dx/src/t1_char.c
--- dvipdfmx-20100328/src/t1_char.c	2005-07-17 11:53:38.000000000 +0200
+++ dx/src/t1_char.c	2010-04-05 02:13:59.000000000 +0200
@@ -267,6 +267,6 @@
   int cmp = 0;
-  t1_stem *s1, *s2;
+  const t1_stem *s1, *s2;
 
-  s1 = (t1_stem *) v1;
-  s2 = (t1_stem *) v2;
+  s1 = (const t1_stem *) v1;
+  s2 = (const t1_stem *) v2;
   if (s1->dir == s2->dir) {
diff -u1r dvipdfmx-20100328/src/t1_load.c dx/src/t1_load.c
--- dvipdfmx-20100328/src/t1_load.c	2009-04-08 05:10:58.000000000 +0200
+++ dx/src/t1_load.c	2010-04-05 02:13:59.000000000 +0200
@@ -1075,3 +1075,3 @@
 
-char *
+const char *
 t1_get_standard_glyph (int code)
@@ -1081,3 +1081,3 @@
 
-  return (char *) StandardEncoding[code];
+  return StandardEncoding[code];
 }
diff -u1r dvipdfmx-20100328/src/t1_load.h dx/src/t1_load.h
--- dvipdfmx-20100328/src/t1_load.h	2004-08-07 11:52:34.000000000 +0200
+++ dx/src/t1_load.h	2010-04-05 02:13:59.000000000 +0200
@@ -8,3 +8,3 @@
 extern int   t1_get_fontname (FILE *fp, char *fontname);
-extern char *t1_get_standard_glyph (int code);
+extern const char *t1_get_standard_glyph (int code);
 
diff -u1r dvipdfmx-20100328/src/truetype.c dx/src/truetype.c
--- dvipdfmx-20100328/src/truetype.c	2009-08-28 02:26:17.000000000 +0200
+++ dx/src/truetype.c	2010-04-05 02:13:59.000000000 +0200
@@ -446,2 +446,3 @@
   char  *s, *q, t[5];
+  const char *r;
   int    n, error = 0;
@@ -458,5 +459,5 @@
    */
-  q = (char *) agl_suffix_to_otltag(s);
-  if (q) { /* We found feature tag for 'suffix'. */
-    error = select_gsub(q, gm); /* no fallback for this */
+  r = agl_suffix_to_otltag(s);
+  if (r) { /* We found feature tag for 'suffix'. */
+    error = select_gsub(r, gm); /* no fallback for this */
     if (!error)
diff -u1r dvipdfmx-20100328/src/tt_glyf.c dx/src/tt_glyf.c
--- dvipdfmx-20100328/src/tt_glyf.c	2008-05-08 20:51:59.000000000 +0200
+++ dx/src/tt_glyf.c	2010-04-05 02:13:59.000000000 +0200
@@ -169,6 +169,6 @@
   int cmp = 0;
-  struct tt_glyph_desc *sv1, *sv2;
+  const struct tt_glyph_desc *sv1, *sv2;
 
-  sv1 = (struct tt_glyph_desc *) v1;
-  sv2 = (struct tt_glyph_desc *) v2;
+  sv1 = (const struct tt_glyph_desc *) v1;
+  sv2 = (const struct tt_glyph_desc *) v2;
 
diff -u1r dvipdfmx-20100328/src/tt_post.c dx/src/tt_post.c
--- dvipdfmx-20100328/src/tt_post.c	2009-08-17 02:49:45.000000000 +0200
+++ dx/src/tt_post.c	2010-04-05 02:13:59.000000000 +0200
@@ -32,3 +32,3 @@
 
-static const char *const macglyphorder[258];
+static const char *macglyphorder[258];
 
@@ -76,3 +76,3 @@
 
-  post->glyphNamePtr = NEW(post->numberOfGlyphs, char *);
+  post->glyphNamePtr = NEW(post->numberOfGlyphs, const char *);
   for (i = 0; i < post->numberOfGlyphs; i++) {
@@ -80,3 +80,3 @@
     if (idx < 258) {
-      post->glyphNamePtr[i] = (char *) macglyphorder[idx];
+      post->glyphNamePtr[i] = macglyphorder[idx];
     } else if (idx - 258 < post->count) {
@@ -122,3 +122,3 @@
     post->numberOfGlyphs  = 258; /* wrong */
-    post->glyphNamePtr    = (char **) macglyphorder;
+    post->glyphNamePtr    = macglyphorder;
     post->count           = 0;
@@ -194,3 +194,3 @@
 /* Macintosh glyph order - from apple's TTRefMan */
-static const char *const
+static const char *
 macglyphorder[258] = {
diff -u1r dvipdfmx-20100328/src/tt_post.h dx/src/tt_post.h
--- dvipdfmx-20100328/src/tt_post.h	2004-09-11 16:50:29.000000000 +0200
+++ dx/src/tt_post.h	2010-04-05 02:13:59.000000000 +0200
@@ -41,3 +41,3 @@
 
-  char   **glyphNamePtr; /* Glyph names (pointer to C string) */
+  const char **glyphNamePtr; /* Glyph names (pointer to C string) */
   char   **names;        /* Non-standard glyph names */
diff -u1r dvipdfmx-20100328/src/type1.c dx/src/type1.c
--- dvipdfmx-20100328/src/type1.c	2010-02-08 08:06:35.000000000 +0100
+++ dx/src/type1.c	2010-04-05 02:13:59.000000000 +0200
@@ -709,3 +709,3 @@
 	long  bchar_gid, achar_gid, i;
-	char *bchar_name, *achar_name;
+	const char *bchar_name, *achar_name;
 
diff -u1r dvipdfmx-20100328/src/xbb.c dx/src/xbb.c
--- dvipdfmx-20100328/src/xbb.c	2009-10-10 11:58:48.000000000 +0200
+++ dx/src/xbb.c	2010-04-05 02:13:59.000000000 +0200
@@ -92,3 +92,3 @@
 
-char *extensions[] = {
+const char *extensions[] = {
   ".jpeg", ".JPEG", ".jpg", ".JPG", ".pdf", ".PDF", ".png", ".PNG"


More information about the dvipdfmx mailing list