summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipsk/vmcms/dvipscms.h
blob: d17d959027eb569143028de086637944618a2fcf (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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/*
 *  These are changes needed for the VM/CMS version of dvips as of
 *  May 21, 1991.   Revised 12/1/92.
 *  This was written by J. Hafner, E. Blanz and M. Flickner of IBM Research,
 *  Almaden Research Center.  Contact hafner@almaden.ibm.com.
 *  The changes to the rest of the code can be found by searching for
 *  "VMCMS".
 *
 *  This code can be included in dvips, subject to the same restrictions as
 *  in the copyright notice.
 */
extern char *malloc();
/*
 *  Added ascii to ebcdic conversion table for VMCMS.
 *  Only for the printable characters.  This is used by DVIPS.
*/
char ascii2ebcdic[256] = {
       0,  1,  2,  3, 53, 45, 46, 47,
      22,  5, 37, 11, 12, 64, 14, 15,
      16, 17, 18, 19, 60, 61, 50, 38,
      24, 25, 63, 39,111,111,111,111,
      64, 90,127,123, 91,108, 80,125,
      77, 93, 92, 78,107, 96, 75, 97,
     240,241,242,243,244,245,246,247,
     248,249,122, 94, 76,126,110,111,
     124,193,194,195,196,197,198,199,
     200,201,209,210,211,212,213,214,
     215,216,217,226,227,228,229,230,
     231,232,233,173,224,189, 95,109,
     121,129,130,131,132,133,134,135,
     136,137,145,146,147,148,149,150,
     151,152,153,162,163,164,165,166,
     167,168,169,192, 79,208,161,  7,
     128,129,130,131,132,133,134,135,
     136,137,138,139,140,141,142,143,
     144,145,146,147,148,149,150,151,
     152,153,154,155,156,157,158,159,
     160,161,162,163,164,165,166,167,
     168,169,170,171,172,173,174,175,
     176,177,178,179,180,181,182,183,
     184,185,186,187,188,189,190,191,
     192,193,194,195,196,197,198,199,
     200,201,202,203,204,205,206,207,
     208,209,210,211,212,213,214,215,
     216,217,218,219,220,221,222,223,
     224,225,226,227,228,229,230,231,
     232,233,234,235,236,237,238,239,
     240,241,242,243,244,245,246,247,
     248,249,250,251,252,253,254,255
};
/*
 *  Added ebcdic to ascii conversion table for VMCMS.
 *  Only for the printable characters.  This inverts the
 *  table above and is used by AFM2TFM.
*/
char ebcdic2ascii[256] = {
       0,  1,  2,  3,  4,  9,  6,127,
       8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21,  8, 23,
      24, 25, 26, 27, 28, 29, 30, 31,
      32, 33, 34, 35, 36, 10, 23, 27,
      40, 41, 42, 43, 44,  5,  6,  7,
      48, 49, 22, 51, 52,  4, 54, 55,
      56, 57, 58, 59, 20, 21, 62, 26,
      32, 65, 66, 67, 68, 69, 70, 71,
      72, 73, 74, 46, 60, 40, 43,124,
      38, 81, 82, 83, 84, 85, 86, 87,
      88, 89, 33, 36, 42, 41, 59, 94,
      45, 47, 98, 99,100,101,102,103,
     104,105,124, 44, 37, 95, 62, 63,
     112,113,114,115,116,117,118,119,
     120, 96, 58, 35, 64, 39, 61, 34,
     128, 97, 98, 99,100,101,102,103,
     104,105,138,123,140,141,142,143,
     144,106,107,108,109,110,111,112,
     113,114,154,125,156,157,158,159,
     160,161,115,116,117,118,119,120,
     121,122,170,171,172, 91,174,175,
     176,177,178,179,180,181,182,183,
     184,185,186,187,188, 93,190,191,
     192, 65, 66, 67, 68, 69, 70, 71,
      72, 73,202,203,204,205,206,207,
     208, 74, 75, 76, 77, 78, 79, 80,
      81, 82,218,219,220,221,222,223,
      92,225, 83, 84, 85, 86, 87, 88,
      89, 90,234,235,236,237,238,239,
      48, 49, 50, 51, 52, 53, 54, 55,
      56, 57,250,251,252,253,254,255
      };
/*
 *   This redefines fopen for VMCMS, truncating long filenames for
 *   portability of TeX source.
 */
#ifdef fopen
#undef fopen
#endif
FILE *cmsfopen(filename, mode)
char *filename, *mode ;
{
   char cmsfile[21] ;
   char *save_file;
   char *ptr;
   void exit() ;

   if (!(save_file =
       (char *)malloc(strlen(filename) + 1, sizeof(char)))) {
      fprintf (stderr, "sorry---out of memory\n");
      exit(10);
   }

   strcpy(save_file, filename);

   cmsfile[0] = '\0' ;

   ptr = strtok(save_file, ". ") ;
   strncat(cmsfile, ptr, 8) ;

   strcat(cmsfile, ".");

   if (!(ptr = strtok(NULL, ". "))) {
/*  Remove this, not much help anyway since most filenames are built
    internally. */
/*
     fprintf(stderr, "\n<%s> is not a legitimate VM/CMS file name\n",
             filename);
     fprintf(stderr, "...we'll try to continue...\n");
*/
     return(NULL);
   }

   strncat(cmsfile, ptr, 8);

   if (ptr = strtok(NULL, ". ")) {
      strcat(cmsfile, ".");
      strncat(cmsfile, ptr, 2);
   }

   free(save_file);

   return(fopen(cmsfile, mode));

}


/*
 * access.c for VMCMS
 */
int access (path, amode)
char *path;
int amode;
{
  return(1);
}