text: /*
   *  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);
  }
  