File ghostscript-9.00-dmpr.dif of Package ghostscript-library.887

--- contrib/japanese/gdevdmpr.c
+++ contrib/japanese/gdevdmpr.c	2007-09-03 17:13:01.000000000 +0000
@@ -41,7 +41,11 @@
 /* include library header. */
 #include "dviprlib.h"
 
-extern FILE *lib_fopen(const char *);
+#include "gxalloc.h"
+#include "stream.h"
+#include "files.h"
+#include "iref.h"
+#include "main.h"
 
 #define LOCAL_DEBUG 0
 
@@ -405,7 +409,7 @@ gdev_dmprt_put_params(gx_device *pdev, g
   if (pddev->dmprt.max_height>0 && pddev->dmprt.max_height<pddev->height)
     pddev->height = pddev->dmprt.max_height;
   
-  dviprt_setmessagestream(pddev->dmprt.debug_f ? stderr : NULL);
+  dviprt_setmessagestream(pddev->dmprt.debug_f);
   
   return code;
 }
@@ -425,7 +429,7 @@ gdev_dmprt_put_dmprt_params(gx_device *p
   if (code < 0) return code;
   if (code == 0) pddev->dmprt.debug_f = vbool;
   
-  dviprt_setmessagestream(pddev->dmprt.debug_f ? stderr : NULL);
+  dviprt_setmessagestream(pddev->dmprt.debug_f);
   
   code = param_read_bool(plist, "Verbose", &vbool);
   if (code < 0) return code;
@@ -837,13 +841,16 @@ static const char * gp_file_name_concat_
 static FILE *
 gdev_dmprt_dviprt_lib_fopen(const char *fnamebase,char *fname)
 {
-  FILE *fp;
-  char *env;
+  const gs_main_instance * minst = get_minst_from_memory(gs_lib_ctx_get_non_gc_memory_t());
+  const gs_file_path_ptr path = &minst->lib_path;
+  const gs_memory_t *imem = minst->heap;
+  FILE *fp = (FILE*)0;
 
   strcpy(fname,fnamebase);
-  fp = lib_fopen(fname);
+  if (minst && path && imem)
+    fp = lib_fopen(path,imem,fname);
   if (fp == NULL) {
-    env = getenv("TEXCFG");
+    const char *env = getenv("TEXCFG");
     if (env) {
       strcpy(fname,env);
       strcat(fname, gp_file_name_concat_string(env,strlen(env)));
--- contrib/japanese/dviprlib.c
+++ contrib/japanese/dviprlib.c	2007-09-04 09:30:51.000000000 +0000
@@ -1433,15 +1433,11 @@ char *dviprt_stringsname[] = { CFG_STRIN
 char *dviprt_prtcodename[] = { CFG_PRTCODE_NAME, NULL };
 char *dviprt_encodename[] = { CFG_ENCODE_NAME, NULL };
 
-#if 0
-static FILE *dviprt_messagestream = stderr;
-#else  /* patch for glibc 2.1.x by Shin Fukui <shita@april.co.jp> */
-static FILE *dviprt_messagestream;
-#endif
+static int dviprt_messagestream;
 
 /*--- library functions ---*/
 int
-dviprt_setmessagestream(FILE *fp)
+dviprt_setmessagestream(int fp)
 {
   dviprt_messagestream = fp;
   return 0;
@@ -1510,9 +1506,10 @@ static int
 dviprt_printmessage(char *str,int len)
 {
   if (dviprt_messagestream && str) {
-    if (len >= 0) fwrite(str,len,1,dviprt_messagestream);
-    else fputs(str,dviprt_messagestream);
-    fflush(dviprt_messagestream);
+    if (len == 0)
+      len = strlen(str);
+    if (len >= 0) errwrite_nomem(str,len);
+    errflush_nomem();
   }
   return 0;
 }
--- contrib/japanese/dviprlib.h
+++ contrib/japanese/dviprlib.h	2007-09-03 17:10:47.000000000 +0000
@@ -255,7 +255,7 @@ extern int dviprt_outputscanlines(dviprt
 extern int dviprt_output(dviprt_print *,unsigned char far *,long );
 extern int dviprt_unsetbuffer(dviprt_print *);
 
-extern int dviprt_setmessagestream(FILE *);
+extern int dviprt_setmessagestream(int);
 extern int dviprt_writesrc(char *,char *,dviprt_cfg_t *,unsigned char *,int );
 extern int dviprt_writecfg(char *,char *,dviprt_cfg_t *,unsigned char *,int );
 extern int dviprt_writec(char *,char *,dviprt_cfg_t *,unsigned char *,int );
openSUSE Build Service is sponsored by