home *** CD-ROM | disk | FTP | other *** search
/ Creative Computers / CreativeComputers.iso / shareware / text / dvi_3.62 / source / dvisrc.lha / dviadobe.c < prev    next >
C/C++ Source or Header  |  1993-10-26  |  1KB  |  68 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <stdarg.h>
  5. #include <ctype.h>
  6. #include "dvi.h"
  7.  
  8. struct name_table
  9. {
  10.     struct name_table *next;
  11.     char *file_name, *font_name;
  12. } *short_names = NULL;
  13.  
  14. char *adobe_name(char *name, char **tfm_name)
  15. {
  16.     register struct name_table *p;
  17.  
  18.     for (p = short_names; p!=NULL; p=p->next)
  19.     if (!strcmp(name,p->file_name) || !strcmp(name,p->font_name)) 
  20.     {
  21.         *tfm_name = p->file_name;
  22.         return p->font_name;
  23.     }
  24.     return NULL;
  25. }
  26.  
  27. static void define_name(char * tfm_name, char * ps_name)
  28. {
  29.     struct name_table *n;
  30.  
  31.     n = (struct name_table*)mem_alloc(sizeof(struct name_table),"Name-Table entry");
  32.     n->file_name = mem_strdup(tfm_name);
  33.     n->font_name = mem_strdup(ps_name);
  34.     n->next = short_names;
  35.     short_names = n;
  36. }
  37.  
  38. void init_name_table(FILE * fp)
  39. {
  40.     char line[512], *tfm_name, *ps_name;
  41.  
  42.     while(NULL!=fgets(line,511,fp))
  43.     {
  44.     tfm_name = strtok(line," \t\n=");
  45.     if (tfm_name==NULL) continue;
  46.     if (*tfm_name==';') continue;
  47.     ps_name = strtok(NULL," =\t\n");
  48.     if (ps_name==NULL)
  49.         fprintf(stderr,"No Postscript name for font %s\n",tfm_name);
  50.     else define_name(tfm_name,ps_name);
  51.     }
  52.  
  53. }
  54.  
  55. void exit_name_table(void)
  56. {
  57.     struct name_table *p, *q;
  58.  
  59.     for (p=short_names; p!=NULL; p=q)
  60.     {
  61.     q = p->next;
  62.     mem_strfree(p->file_name);
  63.     mem_strfree(p->font_name);
  64.     mem_free(p,sizeof(struct name_table));
  65.     }
  66.     short_names = NULL;
  67. }
  68.