summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvi2tty/dvi2tty-5.3.1-PATCHES/patch-50-kpathsea
blob: 9ca1eb8f22b553e0777ab054ddd05f95b9a400be (plain)
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
diff -ur dvi2tty-5.3.1.orig/disdvi.c dvi2tty-5.3.1/disdvi.c
--- dvi2tty-5.3.1.orig/disdvi.c	2010-10-21 08:07:43.000000000 +0200
+++ dvi2tty-5.3.1/disdvi.c	2010-10-22 09:08:02.000000000 +0200
@@ -60,6 +60,11 @@
 # include "macintosh.h"
 #endif
 
+#if defined(KPATHSEA)
+#define NO_DEBUG 1
+#include <kpathsea/config.h>
+#include <kpathsea/lib.h>
+#endif
 
 
 /*
@@ -181,7 +150,7 @@
     else
         dvifp = stdin;
 
-#if defined(MSDOS)
+#if defined(MSDOS) || defined(WIN32)
     setmode(fileno(dvifp), O_BINARY);
 #endif
 
diff -ur dvi2tty-5.3.1.orig/dvi2tty.c dvi2tty-5.3.1/dvi2tty.c
--- dvi2tty-5.3.1.orig/dvi2tty.c	2010-10-21 11:15:43.000000000 +0200
+++ dvi2tty-5.3.1/dvi2tty.c	2010-10-22 14:10:28.000000000 +0200
@@ -301,7 +301,7 @@
 #if defined(THINK_C)
     if (inputfromfile) {
 #endif
-#if defined(MSDOS)
+#if defined(MSDOS) || defined(WIN32)
         if ((DVIfile = fopen(DVIfilename, "rb")) == NULL)
 #else
 # if defined(VMS)
@@ -648,6 +648,48 @@
 } /* plcnxt */
 
 
+#ifdef KPATHSEA
+#ifdef __DJGPP__
+/* `stat' is way too expensive for such a simple job.  */
+#define READABLE(fn, st) \
+  (access (fn, R_OK) == 0 && access (fn, D_OK) == -1)
+#else
+#define READABLE(fn, st) \
+  (access (fn, R_OK) == 0 && stat (fn, &(st)) == 0 && !S_ISDIR (st.st_mode))
+#endif
+
+static char *
+readable_file(char *name)
+{
+  char *ret;
+
+#ifdef WIN32
+  unsigned int fa;
+
+  fa = GetFileAttributes(name);
+  if (fa == 0xFFFFFFFF) {
+    ret = NULL;
+  }
+  else if ((fa & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) {
+      ret = NULL;
+  }
+  else {
+    ret = name;
+  }
+#else /* ! WIN32 */
+  struct stat st;
+  
+  if (READABLE (name, st)) {
+    ret = name;
+
+  } else { /* Some other error.  */
+    ret = NULL;
+  }
+#endif  
+  return ret;
+
+}
+#endif
 
 /*
  * GETFNAME -- {Make sure we have a .dvi filename.
@@ -661,7 +704,11 @@
     if (i == 0)
         usage(ign);
     strcpy(DVIfilename, str);
+#ifdef KPATHSEA
+    if (!readable_file(DVIfilename))
+#else
     if ((i < 5) || strcmp(str+i-4, ".dvi"))
+#endif
         strcat(DVIfilename, ".dvi");
 
     return;
diff -ur dvi2tty-5.3.1.orig/dvi2tty.h dvi2tty-5.3.1/dvi2tty.h
--- dvi2tty-5.3.1.orig/dvi2tty.h	2003-01-23 04:01:04.000000000 +0100
+++ dvi2tty-5.3.1/dvi2tty.h	2010-10-22 15:08:40.000000000 +0200
@@ -32,8 +32,15 @@
 # endif
 #endif
 
+#if defined(KPATHSEA)
+#define NO_DEBUG 1
+#include <kpathsea/config.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#else
 #define TRUE        1
 #define FALSE       0
+#endif
 #define nil         NULL
 
 /*