summaryrefslogtreecommitdiff
path: root/print/ghostscript8/files/patch-src-gdevdmpr.c
blob: 2da080e7d34e58a39b28f01de730efca5088cc7f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
--- src/gdevdmpr.c.orig	Tue May 13 20:43:37 1997
+++ src/gdevdmpr.c	Thu Jun  9 02:52:25 2005
@@ -41,7 +41,7 @@
 /* include library header. */
 #include "dviprlib.h"
 
-extern FILE *lib_fopen(P1(const char *));
+extern FILE *lib_fopen(const char *);
 
 #define LOCAL_DEBUG 0
 
@@ -87,12 +87,12 @@
 private dev_proc_close_device(gdev_dmprt_close);
 
 /* declarations of sub functions to get printer properties. */
-private void gdev_dmprt_init_printer_props(P1(gx_device_dmprt *));
-private int gdev_dmprt_get_printer_props(P2(gx_device_dmprt *,char *));
-private int gdev_dmprt_check_code_props(P2(byte * ,int ));
-private FILE *gdev_dmprt_dviprt_lib_fopen(P2(const char *,char *));
+private void gdev_dmprt_init_printer_props(gx_device_dmprt *);
+private int gdev_dmprt_get_printer_props(gx_device_dmprt *,char *);
+private int gdev_dmprt_check_code_props(byte * ,int );
+private FILE *gdev_dmprt_dviprt_lib_fopen(const char *,char *);
 
-private int gdev_dmprt_error_no_dviprt_to_gs(P1(int ));
+private int gdev_dmprt_error_no_dviprt_to_gs(int );
 
 /* The device descriptor */
 gx_device_procs prn_dmprt_procs = {
@@ -833,6 +833,7 @@
   return code;
 }
 
+private const char * gp_file_name_concat_string(const char *, unsigned);
 private FILE *
 gdev_dmprt_dviprt_lib_fopen(const char *fnamebase,char *fname)
 {
@@ -845,9 +846,7 @@
     env = getenv("TEXCFG");
     if (env) {
       strcpy(fname,env);
-      strcat(fname,
-        gp_file_name_concat_string(env,strlen(env),fname,strlen(fnamebase)));
-      strcat(fname,fnamebase);
+      strcat(fname, gp_file_name_concat_string(env,strlen(env)));
       fp = fopen(fname,gp_fmode_rb);
     }
   }
@@ -867,4 +866,15 @@
   default:
     return -1;
   }
+}
+
+/* Answer the string to be used for combining a directory/device prefix */
+/* with a base file name. The prefix directory/device is examined to    */
+/* determine if a separator is needed and may return an empty string    */
+private const char *
+gp_file_name_concat_string(const char *prefix, unsigned plen)
+{
+    if (plen > 0 && prefix[plen - 1] == '/')
+        return "";
+    return "/";
 }