home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fonts 1
/
freshfonts1.bin
/
bbs
/
programs
/
amiga
/
pastex13.lha
/
DVIPS
/
dvips5519.lha
/
dvips
/
vmcms
/
dvipscms.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-01-19
|
4KB
|
154 lines
/*
* 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);
}